Commit 6ad67b28 by caiyt

Merge remote-tracking branch 'origin/v2' into v2

parents 9c2bc2b2 7a544c1c
...@@ -12,6 +12,7 @@ import com.soss.system.domain.GoodsCategory; ...@@ -12,6 +12,7 @@ import com.soss.system.domain.GoodsCategory;
import com.soss.system.domain.Shop; import com.soss.system.domain.Shop;
import com.soss.system.service.IGoodsService; import com.soss.system.service.IGoodsService;
import com.soss.system.service.IShopService; import com.soss.system.service.IShopService;
import com.soss.system.service.impl.ShopGoodsServiceImpl;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
...@@ -35,6 +36,8 @@ public class ShopController extends BaseController { ...@@ -35,6 +36,8 @@ public class ShopController extends BaseController {
private IShopService shopService; private IShopService shopService;
@Autowired @Autowired
private IGoodsService goodsService; private IGoodsService goodsService;
@Autowired
private ShopGoodsServiceImpl shopGoodsService;
@GetMapping(value = "/turn") @GetMapping(value = "/turn")
public AjaxResult turn(@RequestParam Long shopId, @RequestParam Long goodsId, @RequestParam String pointer) { public AjaxResult turn(@RequestParam Long shopId, @RequestParam Long goodsId, @RequestParam String pointer) {
...@@ -45,8 +48,7 @@ public class ShopController extends BaseController { ...@@ -45,8 +48,7 @@ public class ShopController extends BaseController {
* 查询店铺列表 * 查询店铺列表
*/ */
@GetMapping("/list") @GetMapping("/list")
public TableDataInfo list(Shop shop) public TableDataInfo list(Shop shop) {
{
startPage(); startPage();
List<Shop> list = shopService.selectShopList(shop); List<Shop> list = shopService.selectShopList(shop);
return getDataTable(list); return getDataTable(list);
...@@ -123,8 +125,7 @@ public class ShopController extends BaseController { ...@@ -123,8 +125,7 @@ public class ShopController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:shop:remove')") @PreAuthorize("@ss.hasPermi('system:shop:remove')")
@Log(title = "店铺", businessType = BusinessType.DELETE) @Log(title = "店铺", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable String[] ids) public AjaxResult remove(@PathVariable String[] ids) {
{
return toAjax(shopService.deleteShopByIds(ids)); return toAjax(shopService.deleteShopByIds(ids));
} }
...@@ -133,10 +134,10 @@ public class ShopController extends BaseController { ...@@ -133,10 +134,10 @@ public class ShopController extends BaseController {
*/ */
@PreAuthorize("@ss.hasPermi('system:shop:addGoods')") @PreAuthorize("@ss.hasPermi('system:shop:addGoods')")
@GetMapping(value = "/addGoods") @GetMapping(value = "/addGoods")
public AjaxResult addGoods(Long shopId,String goodsIds) public AjaxResult addGoods(Long shopId, String goodsIds) {
{ return AjaxResult.success(shopService.addGoods(shopId, goodsIds));
return AjaxResult.success(shopService.addGoods(shopId,goodsIds));
} }
@PostMapping(value = "/offGoods") @PostMapping(value = "/offGoods")
public AjaxResult offGoods(@RequestBody String body) { public AjaxResult offGoods(@RequestBody String body) {
JSONObject jsonObject = JSON.parseObject(body); JSONObject jsonObject = JSON.parseObject(body);
...@@ -209,5 +210,15 @@ public class ShopController extends BaseController { ...@@ -209,5 +210,15 @@ public class ShopController extends BaseController {
return getDataTable(list); return getDataTable(list);
} }
@GetMapping("/getShopGoodsSpecs")
public AjaxResult getShopGoodsSpecs(Long shopId, Long goodsId) {
return AjaxResult.success(shopGoodsService.getShopGoodsSpecs(shopId, goodsId));
}
@GetMapping("/updateShopGoodsSpecState")
public AjaxResult getShopGoodsSpecs(Long shopId, Long goodsId, Long ruleId, Integer state) {
return AjaxResult.success(shopGoodsService.updateShopGoodsSpecState(shopId, goodsId, ruleId, state));
}
} }
...@@ -52,8 +52,7 @@ public class ShopRecommendController extends BaseController { ...@@ -52,8 +52,7 @@ public class ShopRecommendController extends BaseController {
*/ */
@PreAuthorize("@ss.hasPermi('system:recommend:query')") @PreAuthorize("@ss.hasPermi('system:recommend:query')")
@GetMapping(value = "/{id}") @GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") String id) public AjaxResult getInfo(@PathVariable("id") String id) {
{
return AjaxResult.success(shopRecommendService.selectShopRecommendById(id)); return AjaxResult.success(shopRecommendService.selectShopRecommendById(id));
} }
...@@ -63,8 +62,7 @@ public class ShopRecommendController extends BaseController { ...@@ -63,8 +62,7 @@ public class ShopRecommendController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:recommend:add')") @PreAuthorize("@ss.hasPermi('system:recommend:add')")
@Log(title = "推荐和今日特惠", businessType = BusinessType.INSERT) @Log(title = "推荐和今日特惠", businessType = BusinessType.INSERT)
@PostMapping @PostMapping
public AjaxResult add(@RequestBody ShopRecommend shopRecommend) public AjaxResult add(@RequestBody ShopRecommend shopRecommend) {
{
return toAjax(shopRecommendService.insertShopRecommend(shopRecommend)); return toAjax(shopRecommendService.insertShopRecommend(shopRecommend));
} }
...@@ -74,8 +72,7 @@ public class ShopRecommendController extends BaseController { ...@@ -74,8 +72,7 @@ public class ShopRecommendController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:recommend:edit')") @PreAuthorize("@ss.hasPermi('system:recommend:edit')")
@Log(title = "推荐和今日特惠", businessType = BusinessType.UPDATE) @Log(title = "推荐和今日特惠", businessType = BusinessType.UPDATE)
@PutMapping @PutMapping
public AjaxResult edit(@RequestBody ShopRecommend shopRecommend) public AjaxResult edit(@RequestBody ShopRecommend shopRecommend) {
{
return toAjax(shopRecommendService.updateShopRecommend(shopRecommend)); return toAjax(shopRecommendService.updateShopRecommend(shopRecommend));
} }
...@@ -85,9 +82,8 @@ public class ShopRecommendController extends BaseController { ...@@ -85,9 +82,8 @@ public class ShopRecommendController extends BaseController {
@PreAuthorize("@ss.hasPermi('system:recommend:remove')") @PreAuthorize("@ss.hasPermi('system:recommend:remove')")
@Log(title = "推荐和今日特惠", businessType = BusinessType.DELETE) @Log(title = "推荐和今日特惠", businessType = BusinessType.DELETE)
@GetMapping("/remove") @GetMapping("/remove")
public AjaxResult remove(@RequestParam("goodsId")String goodsId, @RequestParam("shopId")String shopId, @RequestParam("type")String type) public AjaxResult remove(@RequestParam("goodsId") String goodsId, @RequestParam("shopId") String shopId, @RequestParam("type") String type) {
{ return toAjax(shopRecommendService.deleteShopRecommend(goodsId, shopId, type));
return toAjax(shopRecommendService.deleteShopRecommend(goodsId,shopId,type));
} }
......
...@@ -107,8 +107,8 @@ public class WeixinController { ...@@ -107,8 +107,8 @@ public class WeixinController {
public AjaxResult getShop(HttpServletRequest request, @RequestParam(required = false) String lng, @RequestParam(required = false) String lat) { public AjaxResult getShop(HttpServletRequest request, @RequestParam(required = false) String lng, @RequestParam(required = false) String lat) {
LoginUser loginUser = tokenService.getLoginUser(request); LoginUser loginUser = tokenService.getLoginUser(request);
Shop shop; Shop shop;
if (loginUser == null || StringUtils.isEmpty(loginUser.getOpenId())) { if (StringUtils.isEmpty(lng) || StringUtils.isEmpty(lat)) {
shop = appService.getShop(lng, lat, false); shop = appService.getShop(loginUser);
} else { } else {
Customer customer = customerService.selectCustById(loginUser.getOpenId()); Customer customer = customerService.selectCustById(loginUser.getOpenId());
shop = appService.getShop(lng, lat, customer.getTestFlag()); shop = appService.getShop(lng, lat, customer.getTestFlag());
......
package com.soss.web.controller.system;
import com.alibaba.fastjson.JSONObject;
import com.soss.common.core.controller.BaseController;
import com.soss.common.core.domain.AjaxResult;
import com.soss.common.core.page.TableDataInfo;
import com.soss.common.exception.ServiceException;
import com.soss.system.domain.SysBanner;
import com.soss.system.service.ISysBannerService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 轮播图Controller
*
* @author zxq
* @date 2022-04-28
*/
@RestController
@RequestMapping("/system/banner")
public class BannerController extends BaseController {
@Autowired
private ISysBannerService bannerService;
@PostMapping("/list")
public TableDataInfo list(@RequestBody SysBanner banner) {
startPage();
List<SysBanner> list = bannerService.selectBanner(banner);
return getDataTable(list);
}
/**
* 创建轮播图
*
* @param banner
* @return
*/
@PostMapping("/create")
public AjaxResult create(@RequestBody SysBanner banner) {
try {
return AjaxResult.success(bannerService.createBanner(banner));
} catch (ServiceException serviceException) {
return AjaxResult.error(99, serviceException.getMessage());
}
}
/**
* 修改轮播图
*
* @param banner
* @return
*/
@PostMapping("/update")
public AjaxResult update(@RequestBody SysBanner banner) {
try {
return AjaxResult.success(bannerService.updateBanner(banner));
} catch (ServiceException serviceException) {
return AjaxResult.error(99, serviceException.getMessage());
}
}
/**
* 修改轮播图状态
*
* @param bannerId
* @param state
* @return
*/
@GetMapping("/state/update")
public AjaxResult update(@RequestParam("bannerId") Long bannerId, @RequestParam("state") Integer state) {
try {
return AjaxResult.success(bannerService.updateState(bannerId, state));
} catch (ServiceException serviceException) {
return AjaxResult.error(99, serviceException.getMessage());
}
}
/**
* 删除轮播图
*
* @param bannerId
* @return
*/
@GetMapping("/delete")
public AjaxResult update(@RequestParam("bannerId") Long bannerId) {
try {
return AjaxResult.success(bannerService.delete(bannerId));
} catch (ServiceException serviceException) {
return AjaxResult.error(99, serviceException.getMessage());
}
}
/**
* App获取轮播图
*
* @param shopId
* @return
*/
@GetMapping("/getShopBanners")
public AjaxResult getShopBanners(@RequestParam("shopId") Long shopId) {
try {
List<SysBanner> homeBanners = bannerService.getBannersByShopId(shopId, 1, 1);
List<SysBanner> mineBanners = bannerService.getBannersByShopId(shopId, 1, 2);
JSONObject jsonObject = new JSONObject();
jsonObject.put("home", homeBanners);
jsonObject.put("mine", mineBanners);
return AjaxResult.success(jsonObject);
} catch (ServiceException serviceException) {
return AjaxResult.error(99, serviceException.getMessage());
}
}
}
import java.util.Calendar;
public class JavaTest {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
System.out.println(calendar.get(Calendar.DAY_OF_WEEK) - 1);
}
}
...@@ -57,6 +57,18 @@ public class Goods extends BaseEntity { ...@@ -57,6 +57,18 @@ public class Goods extends BaseEntity {
private BigDecimal discount; private BigDecimal discount;
/** /**
* 特惠折扣价
*/
@Excel(name = "特惠折扣价")
private BigDecimal recommendPrice;
/**
* 特惠标签
*/
@Excel(name = "特惠标签")
private BigDecimal recommendTag;
/**
* 制作用时 单位 秒 * 制作用时 单位 秒
*/ */
@Excel(name = "制作用时 单位 秒") @Excel(name = "制作用时 单位 秒")
...@@ -118,6 +130,12 @@ public class Goods extends BaseEntity { ...@@ -118,6 +130,12 @@ public class Goods extends BaseEntity {
private String preferential; private String preferential;
/** 商品sku数量 */
private Integer skuCount;
/** 商品售罄sku数量 */
private Integer selloutCount;
/** /**
* 总销量 * 总销量
*/ */
......
package com.soss.system.domain; package com.soss.system.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.soss.common.annotation.Excel; import com.soss.common.annotation.Excel;
import com.soss.common.core.domain.BaseEntity; import com.soss.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
/** /**
* 从店铺到sku关联对象 shop_goods_sku * 从店铺到sku关联对象 shop_goods_sku
...@@ -54,6 +56,32 @@ public class ShopGoodsSku extends BaseEntity ...@@ -54,6 +56,32 @@ public class ShopGoodsSku extends BaseEntity
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updatedAt; private Date updatedAt;
/**
* sku原始折扣价
*/
private BigDecimal origDiscount;
/**
* 本店铺价格(根据特惠价格计算,如果不是特惠商品原折扣价)
*/
private BigDecimal discount;
public BigDecimal getOrigDiscount() {
return origDiscount;
}
public void setOrigDiscount(BigDecimal origDiscount) {
this.origDiscount = origDiscount;
}
public BigDecimal getDiscount() {
return discount;
}
public void setDiscount(BigDecimal discount) {
this.discount = discount;
}
public void setId(String id) public void setId(String id)
{ {
this.id = id; this.id = id;
......
package com.soss.system.domain; package com.soss.system.domain;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.soss.common.annotation.Excel; import com.soss.common.annotation.Excel;
import com.soss.common.core.domain.BaseEntity; import com.soss.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
/** /**
* 推荐和今日特惠对象 shop_recommend * 推荐和今日特惠对象 shop_recommend
...@@ -44,13 +46,15 @@ public class ShopRecommend extends BaseEntity ...@@ -44,13 +46,15 @@ public class ShopRecommend extends BaseEntity
@Excel(name = "推荐排序") @Excel(name = "推荐排序")
private String turn; private String turn;
public String getName() { /**
return name; * 特惠价格
} */
private BigDecimal recommendPrice;
public void setName(String name) { /**
this.name = name; * 特惠标签
} */
private String recommendTag;
/** 描述 */ /** 描述 */
@Excel(name = "描述") @Excel(name = "描述")
...@@ -199,6 +203,30 @@ public class ShopRecommend extends BaseEntity ...@@ -199,6 +203,30 @@ public class ShopRecommend extends BaseEntity
return updatedAt; return updatedAt;
} }
public BigDecimal getRecommendPrice() {
return recommendPrice;
}
public void setRecommendPrice(BigDecimal recommendPrice) {
this.recommendPrice = recommendPrice;
}
public String getRecommendTag() {
return recommendTag;
}
public void setRecommendTag(String recommendTag) {
this.recommendTag = recommendTag;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
......
package com.soss.system.domain; package com.soss.system.domain;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.soss.common.annotation.Excel; import com.soss.common.annotation.Excel;
import com.soss.common.core.domain.BaseEntity; import com.soss.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
/** /**
* 规格选项对象 spec_rule * 规格选项对象 spec_rule
...@@ -16,8 +16,7 @@ import com.soss.common.core.domain.BaseEntity; ...@@ -16,8 +16,7 @@ import com.soss.common.core.domain.BaseEntity;
* @author zxq * @author zxq
* @date 2022-04-28 * @date 2022-04-28
*/ */
public class SpecRule extends BaseEntity public class SpecRule extends BaseEntity {
{
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
/** 主键 */ /** 主键 */
...@@ -61,6 +60,16 @@ public class SpecRule extends BaseEntity ...@@ -61,6 +60,16 @@ public class SpecRule extends BaseEntity
@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd") @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date updatedAt; private Date updatedAt;
private Integer state;
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
private List<SpecRuleMaterial> specRuleMaterials; private List<SpecRuleMaterial> specRuleMaterials;
public List<SpecRuleMaterial> getSpecRuleMaterials() { public List<SpecRuleMaterial> getSpecRuleMaterials() {
...@@ -71,100 +80,89 @@ public class SpecRule extends BaseEntity ...@@ -71,100 +80,89 @@ public class SpecRule extends BaseEntity
this.specRuleMaterials = specRuleMaterials; this.specRuleMaterials = specRuleMaterials;
} }
public void setId(long id) public void setId(long id) {
{
this.id = id; this.id = id;
} }
public long getId() public long getId() {
{
return id; return id;
} }
public void setName(String name)
{ public void setName(String name) {
this.name = name; this.name = name;
} }
public String getName() public String getName() {
{
return name; return name;
} }
public void setSpecId(long specId)
{ public void setSpecId(long specId) {
this.specId = specId; this.specId = specId;
} }
public long getSpecId() public long getSpecId() {
{
return specId; return specId;
} }
public void setAmount(BigDecimal amount)
{ public void setAmount(BigDecimal amount) {
this.amount = amount; this.amount = amount;
} }
public BigDecimal getAmount() public BigDecimal getAmount() {
{
return amount; return amount;
} }
public void setTurn(String turn)
{ public void setTurn(String turn) {
this.turn = turn; this.turn = turn;
} }
public String getTurn() public String getTurn() {
{
return turn; return turn;
} }
public void setIsRecommend(String isRecommend)
{ public void setIsRecommend(String isRecommend) {
this.isRecommend = isRecommend; this.isRecommend = isRecommend;
} }
public String getIsRecommend() public String getIsRecommend() {
{
return isRecommend; return isRecommend;
} }
public void setIsDefault(Long isDefault)
{ public void setIsDefault(Long isDefault) {
this.isDefault = isDefault; this.isDefault = isDefault;
} }
public Long getIsDefault() public Long getIsDefault() {
{
return isDefault; return isDefault;
} }
public void setIsDeleted(int isDeleted)
{ public void setIsDeleted(int isDeleted) {
this.isDeleted = isDeleted; this.isDeleted = isDeleted;
} }
public int getIsDeleted() public int getIsDeleted() {
{
return isDeleted; return isDeleted;
} }
public void setCreatedAt(Date createdAt)
{ public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt; this.createdAt = createdAt;
} }
public Date getCreatedAt() public Date getCreatedAt() {
{
return createdAt; return createdAt;
} }
public void setUpdatedAt(Date updatedAt)
{ public void setUpdatedAt(Date updatedAt) {
this.updatedAt = updatedAt; this.updatedAt = updatedAt;
} }
public Date getUpdatedAt() public Date getUpdatedAt() {
{
return updatedAt; return updatedAt;
} }
@Override @Override
public String toString() { public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId()) .append("id", getId())
.append("name", getName()) .append("name", getName())
.append("specId", getSpecId()) .append("specId", getSpecId())
......
package com.soss.system.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.soss.common.core.domain.BaseEntity;
import lombok.Data;
import java.util.Date;
/**
* 轮播图对象 banner
*
* @author zxq
* @date 2022-04-28
*/
@Data
public class SysBanner extends BaseEntity {
private static final long serialVersionUID = 1L;
/** 主键 */
private Long id;
/**
* 图片url
*/
private String image;
/**
* 页面url
*/
private String page;
/**
* 类型:1-小程序,2-KDS,3-点单屏
*/
private Integer type;
/**
* 目标:1-小程序首页,2-小程序我的
*/
private Integer target;
/**
* 省份列表
*/
private String province;
/**
* 城市列表
*/
private String city;
/**
* 区域列表
*/
private String area;
/**
* 店铺id列表
*/
private String shopIds;
/**
* 排序
*/
private Integer sort;
/**
* 状态:0-在线,1-下线
*/
private Integer state;
/**
* 创建时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createdAt;
/**
* 更新时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updatedAt;
}
...@@ -4,9 +4,12 @@ import com.alibaba.fastjson.JSONArray; ...@@ -4,9 +4,12 @@ import com.alibaba.fastjson.JSONArray;
import lombok.Data; import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal;
@Data @Data
public class SkuVo implements Serializable { public class SkuVo implements Serializable {
private Long id;
private Long skuId; private Long skuId;
private String state; private String state;
...@@ -22,7 +25,8 @@ public class SkuVo implements Serializable { ...@@ -22,7 +25,8 @@ public class SkuVo implements Serializable {
private String rulesString; private String rulesString;
private String discount;
private Integer isDelete; private Integer isDelete;
private BigDecimal discount;
private BigDecimal origDiscount;
} }
...@@ -7,6 +7,22 @@ public class SpecRuleVo implements Serializable { ...@@ -7,6 +7,22 @@ public class SpecRuleVo implements Serializable {
private String ruleName; private String ruleName;
private String price;
private String isDefault;
private String isRecommend;
private Integer state;
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
public String getRuleId() { public String getRuleId() {
return ruleId; return ruleId;
} }
...@@ -31,8 +47,6 @@ public class SpecRuleVo implements Serializable { ...@@ -31,8 +47,6 @@ public class SpecRuleVo implements Serializable {
this.price = price; this.price = price;
} }
private String price;
public String getIsDefault() { public String getIsDefault() {
return isDefault; return isDefault;
} }
...@@ -48,8 +62,4 @@ public class SpecRuleVo implements Serializable { ...@@ -48,8 +62,4 @@ public class SpecRuleVo implements Serializable {
public void setIsRecommend(String isRecommend) { public void setIsRecommend(String isRecommend) {
this.isRecommend = isRecommend; this.isRecommend = isRecommend;
} }
private String isDefault;
private String isRecommend;
} }
...@@ -6,6 +6,10 @@ import java.util.List; ...@@ -6,6 +6,10 @@ import java.util.List;
public class SpecVo implements Serializable { public class SpecVo implements Serializable {
private String specId; private String specId;
private String specName;
private List<SpecRuleVo> rules;
public String getSpecId() { public String getSpecId() {
return specId; return specId;
} }
...@@ -29,8 +33,4 @@ public class SpecVo implements Serializable { ...@@ -29,8 +33,4 @@ public class SpecVo implements Serializable {
public void setRules(List<SpecRuleVo> rules) { public void setRules(List<SpecRuleVo> rules) {
this.rules = rules; this.rules = rules;
} }
private String specName;
private List<SpecRuleVo> rules;
} }
package com.soss.system.mapper; package com.soss.system.mapper;
import java.util.List;
import com.soss.system.domain.GoodsSku; import com.soss.system.domain.GoodsSku;
import com.soss.system.domain.ShopGoodsSku; import com.soss.system.domain.ShopGoodsSku;
import com.soss.system.domain.vo.orderTaking.SkuVo; import com.soss.system.domain.vo.orderTaking.SkuVo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/** /**
* 从店铺到sku关联Mapper接口 * 从店铺到sku关联Mapper接口
* *
* @author zxq * @author zxq
* @date 2022-04-28 * @date 2022-04-28
*/ */
public interface ShopGoodsSkuMapper public interface ShopGoodsSkuMapper {
{
/** /**
* 查询从店铺到sku关联 * 查询从店铺到sku关联
* *
...@@ -31,6 +31,9 @@ public interface ShopGoodsSkuMapper ...@@ -31,6 +31,9 @@ public interface ShopGoodsSkuMapper
*/ */
public List<ShopGoodsSku> selectShopGoodsSkuList(ShopGoodsSku shopGoodsSku); public List<ShopGoodsSku> selectShopGoodsSkuList(ShopGoodsSku shopGoodsSku);
Integer getSellinSkuCount(@Param("shopId") Long shopId, @Param("goodsId") Long goodsId);
Integer getSelloutSkuCount(@Param("shopId") Long shopId, @Param("goodsId") Long goodsId);
/** /**
* 新增从店铺到sku关联 * 新增从店铺到sku关联
* *
...@@ -65,11 +68,15 @@ public interface ShopGoodsSkuMapper ...@@ -65,11 +68,15 @@ public interface ShopGoodsSkuMapper
List<GoodsSku> selectSkuByShopAndGoods(@Param("shopId") long shopId, @Param("goodsId") long goodsId); List<GoodsSku> selectSkuByShopAndGoods(@Param("shopId") long shopId, @Param("goodsId") long goodsId);
List<SkuVo> selectSkuByGoodAndShop(@Param("shopId") Long shopId,@Param("goodsId") String goodId); List<SkuVo> selectSkuByGoodAndShop(@Param("shopId") Long shopId, @Param("goodsId") String goodId);
void deleteShopGoodsSkuByGoodsId(@Param("goodsId") Long goodsId); void deleteShopGoodsSkuByGoodsId(@Param("goodsId") Long goodsId);
int updateSkuStatus(@Param("skuIds") List<String> skuIds, @Param("machineCode") String robotID,@Param("shopId") String shopID,@Param("status") String status); int updateSkuStatus(@Param("skuIds") List<String> skuIds, @Param("machineCode") String robotID, @Param("shopId") String shopID, @Param("status") String status);
void deleteByGoodsIds(@Param("shopId") Long shopId, @Param("goodsIds") List<String> goodsIds); void deleteByGoodsIds(@Param("shopId") Long shopId, @Param("goodsIds") List<String> goodsIds);
void updateSkuDiscount(@Param("id") Long id, @Param("discount") BigDecimal discount);
void restoreSkuDiscount(@Param("shopId") Long shopId, @Param("goodsId") Long goodsId);
} }
package com.soss.system.mapper; package com.soss.system.mapper;
import java.util.List;
import com.soss.system.domain.Spec; import com.soss.system.domain.Spec;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/** /**
* 规格Mapper接口 * 规格Mapper接口
...@@ -18,6 +20,13 @@ public interface SpecMapper ...@@ -18,6 +20,13 @@ public interface SpecMapper
* @return 规格 * @return 规格
*/ */
public Spec selectSpecById(String id); public Spec selectSpecById(String id);
/**
* 查询规格
*
* @param ids 规格主键
* @return 规格
*/
public List<Spec> selectSpecByIds(@Param("ids") List<Long> ids);
/** /**
* 查询规格列表 * 查询规格列表
......
package com.soss.system.mapper;
import com.soss.system.domain.SysBanner;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 轮播图Mapper接口
*
* @author zxq
* @date 2022-04-28
*/
public interface SysBannerMapper {
List<SysBanner> selectBanner(SysBanner banner);
Long createBanner(SysBanner banner);
Integer updateBanner(SysBanner banner);
Integer updateState(SysBanner banner);
Integer delete(Long bannerId);
List<SysBanner> selectBanners(@Param("type") Integer type, @Param("target") Integer target);
}
package com.soss.system.service; package com.soss.system.service;
import java.util.List;
import com.soss.system.domain.ShopGoods; import com.soss.system.domain.ShopGoods;
import com.soss.system.domain.Spec;
import java.util.List;
/** /**
* 店铺和商品关联Service接口 * 店铺和商品关联Service接口
...@@ -9,8 +11,7 @@ import com.soss.system.domain.ShopGoods; ...@@ -9,8 +11,7 @@ import com.soss.system.domain.ShopGoods;
* @author zxq * @author zxq
* @date 2022-04-28 * @date 2022-04-28
*/ */
public interface IShopGoodsService public interface IShopGoodsService {
{
/** /**
* 查询店铺和商品关联 * 查询店铺和商品关联
* *
...@@ -58,4 +59,8 @@ public interface IShopGoodsService ...@@ -58,4 +59,8 @@ public interface IShopGoodsService
* @return 结果 * @return 结果
*/ */
public int deleteShopGoodsById(String id); public int deleteShopGoodsById(String id);
List<Spec> getShopGoodsSpecs(Long shopId, Long goodsId);
Boolean updateShopGoodsSpecState(Long shopId, Long goodsId, Long ruleId, Integer state);
} }
package com.soss.system.service; package com.soss.system.service;
import java.util.List;
import com.soss.system.domain.ShopGoodsSku; import com.soss.system.domain.ShopGoodsSku;
import org.apache.ibatis.annotations.Param;
import java.math.BigDecimal;
import java.util.List;
/** /**
* 从店铺到sku关联Service接口 * 从店铺到sku关联Service接口
...@@ -58,4 +61,7 @@ public interface IShopGoodsSkuService ...@@ -58,4 +61,7 @@ public interface IShopGoodsSkuService
* @return 结果 * @return 结果
*/ */
public int deleteShopGoodsSkuById(String id); public int deleteShopGoodsSkuById(String id);
void updateShopGoodsSkuDiscount(String shopId, String goodsId, BigDecimal discount);
void restoreSkuDiscount(Long shopId, Long goodsId);
} }
package com.soss.system.service; package com.soss.system.service;
import java.util.List;
import com.soss.system.domain.Goods; import com.soss.system.domain.Goods;
import com.soss.system.domain.ShopRecommend; import com.soss.system.domain.ShopRecommend;
import java.util.List;
/** /**
* 推荐和今日特惠Service接口 * 推荐和今日特惠Service接口
* *
...@@ -45,21 +45,21 @@ public interface IShopRecommendService ...@@ -45,21 +45,21 @@ public interface IShopRecommendService
*/ */
public int updateShopRecommend(ShopRecommend shopRecommend); public int updateShopRecommend(ShopRecommend shopRecommend);
/** // /**
* 批量删除推荐和今日特惠 // * 批量删除推荐和今日特惠
* // *
* @param ids 需要删除的推荐和今日特惠主键集合 // * @param ids 需要删除的推荐和今日特惠主键集合
* @return 结果 // * @return 结果
*/ // */
public int deleteShopRecommendByIds(String[] ids); // public int deleteShopRecommendByIds(String[] ids);
//
/** // /**
* 删除推荐和今日特惠信息 // * 删除推荐和今日特惠信息
* // *
* @param id 推荐和今日特惠主键 // * @param id 推荐和今日特惠主键
* @return 结果 // * @return 结果
*/ // */
public int deleteShopRecommendById(String id); // public int deleteShopRecommendById(String id);
String turn(Long shopId, String fistId, String lastId, String type); String turn(Long shopId, String fistId, String lastId, String type);
......
package com.soss.system.service;
import com.soss.system.domain.SysBanner;
import java.util.List;
/**
* 轮播图Service接口
*
* @author zxq
* @date 2022-04-28
*/
public interface ISysBannerService {
List<SysBanner> selectBanner(SysBanner banner);
Long createBanner(SysBanner banner);
Boolean updateBanner(SysBanner banner);
Boolean updateState(Long bannerId, Integer state);
Boolean delete(Long bannerId);
List<SysBanner> getBannersByShopId(Long shopId, Integer type, Integer target);
}
package com.soss.system.service.impl; package com.soss.system.service.impl;
import com.soss.common.core.domain.model.LoginUser;
import com.soss.common.enums.ShopState; import com.soss.common.enums.ShopState;
import com.soss.common.utils.StringUtils; import com.soss.system.domain.Order;
import com.soss.system.domain.Shop; import com.soss.system.domain.Shop;
import com.soss.system.mapper.ShopMapper; import com.soss.system.mapper.ShopMapper;
import com.soss.system.utils.DistanceUtil; import com.soss.system.utils.DistanceUtil;
...@@ -18,6 +19,35 @@ import java.util.List; ...@@ -18,6 +19,35 @@ import java.util.List;
public class AppServiceImpl { public class AppServiceImpl {
@Autowired @Autowired
private ShopMapper shopMapper; private ShopMapper shopMapper;
@Autowired
private ShopServiceImpl shopService;
@Autowired
private OrderServiceImpl orderService;
public Shop getShop(LoginUser loginUser) {
if (loginUser == null) {
// 未登录,返回默认店铺
return getDefaultShop();
} else {
// 已登录
List<Order> myOrder = orderService.getMyOrder(loginUser.getOpenId());
if (CollectionUtils.isEmpty(myOrder)) {
// 未下过单返回默认店铺
return getDefaultShop();
}
// 返回最后下单店铺
Order order = myOrder.get(0);
Shop shop = shopService.selectShopById(order.getShopId());
return shop == null ? new Shop() : shop;
}
}
public Shop getDefaultShop() {
Shop shop = new Shop();
shop.setIsDefault(1L);
List<Shop> shops = shopMapper.selectShopList(shop);
return CollectionUtils.isEmpty(shops) ? new Shop() : shops.get(0);
}
/** /**
* 授权了地理位置的用户都展示距离最近的营业中的店铺; * 授权了地理位置的用户都展示距离最近的营业中的店铺;
...@@ -25,12 +55,9 @@ public class AppServiceImpl { ...@@ -25,12 +55,9 @@ public class AppServiceImpl {
*/ */
public Shop getShop(String lng, String lat, Boolean testFlag) { public Shop getShop(String lng, String lat, Boolean testFlag) {
Shop shop = new Shop(); Shop shop = new Shop();
boolean unAuthed = StringUtils.isEmpty(lng) || StringUtils.isEmpty(lat);
Comparator<Shop> shopComparator = Comparator.comparing(Shop::getRealDistance); Comparator<Shop> shopComparator = Comparator.comparing(Shop::getRealDistance);
if (unAuthed) { if (BooleanUtils.isTrue(testFlag)) {
shop.setIsDefault(1L);
} else if (BooleanUtils.isTrue(testFlag)) {
shop.setStates(Arrays.asList(ShopState.TESTING.getState(), ShopState.OPEN.getState())); shop.setStates(Arrays.asList(ShopState.TESTING.getState(), ShopState.OPEN.getState()));
} else { } else {
shop.setStates(Arrays.asList(ShopState.OPEN.getState(), ShopState.CLOSE.getState())); shop.setStates(Arrays.asList(ShopState.OPEN.getState(), ShopState.CLOSE.getState()));
...@@ -42,13 +69,8 @@ public class AppServiceImpl { ...@@ -42,13 +69,8 @@ public class AppServiceImpl {
return new Shop(); return new Shop();
} }
if (unAuthed) {
return shops.get(0);
}
shops.forEach(sp -> { shops.forEach(sp -> {
double realDistance = DistanceUtil.getRealDistance(Double.parseDouble(lng), Double.parseDouble(lat), double realDistance = DistanceUtil.getRealDistance(Double.parseDouble(lng), Double.parseDouble(lat), Double.parseDouble(sp.getLng()), Double.parseDouble(sp.getLat()));
Double.parseDouble(sp.getLng()), Double.parseDouble(sp.getLat()));
sp.setRealDistance(realDistance); sp.setRealDistance(realDistance);
String distanceDesc = DistanceUtil.getDistanceDesc(realDistance); String distanceDesc = DistanceUtil.getDistanceDesc(realDistance);
sp.setDistance(distanceDesc); sp.setDistance(distanceDesc);
......
...@@ -108,8 +108,7 @@ public class MachineApiServiceImpl { ...@@ -108,8 +108,7 @@ public class MachineApiServiceImpl {
* @param map * @param map
*/ */
private void push(Machine machine, String status, Map<Long, List<Long>> map) { public void push(Machine machine, String status, Map<Long, List<Long>> map) {
for (Long aLong : map.keySet()) { for (Long aLong : map.keySet()) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("action", "SKU_STATE_CHANGED"); jsonObject.put("action", "SKU_STATE_CHANGED");
......
...@@ -513,7 +513,8 @@ public class OrderServiceImpl implements IOrderService { ...@@ -513,7 +513,8 @@ public class OrderServiceImpl implements IOrderService {
*/ */
private String getOrderNum(Long shopId) { private String getOrderNum(Long shopId) {
Calendar calendar = Calendar.getInstance(); Calendar calendar = Calendar.getInstance();
String key = calendar.getTime().toString().substring(0, 3); // String key = calendar.getTime().toString().substring(0, 3);
String key = String.valueOf(calendar.get(Calendar.DAY_OF_WEEK) - 1);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format = simpleDateFormat.format(calendar.getTime()); String format = simpleDateFormat.format(calendar.getTime());
String redisKey = "shopId" + format + shopId; String redisKey = "shopId" + format + shopId;
......
...@@ -78,31 +78,31 @@ public class OrderTakingServiceImpl { ...@@ -78,31 +78,31 @@ public class OrderTakingServiceImpl {
orderTakingVo.setCountOfOrder(sysConfigService.selectConfigByKey("goods.limit")); orderTakingVo.setCountOfOrder(sysConfigService.selectConfigByKey("goods.limit"));
orderTakingVo.setTips(sysConfigService.selectConfigByKey("tips.address")); orderTakingVo.setTips(sysConfigService.selectConfigByKey("tips.address"));
List<CategoryVo> categoryVos = new ArrayList<>(); List<CategoryVo> categoryVos = new ArrayList<>();
CategoryVo preferentialCategoryVo = new CategoryVo(); // CategoryVo preferentialCategoryVo = new CategoryVo();
categoryVos.add(preferentialCategoryVo); // categoryVos.add(preferentialCategoryVo);
preferentialCategoryVo.setId(0L); // preferentialCategoryVo.setId(0L);
preferentialCategoryVo.setName("今日特惠"); // preferentialCategoryVo.setName("今日特惠");
//查询出该店铺今日特惠的商品 // //查询出该店铺今日特惠的商品
List<GoodsVo> goodsVos = shopRecommendMapper.selectShopGoodsByTyepe("2", shopId); // List<GoodsVo> goodsVos = shopRecommendMapper.selectShopGoodsByTyepe("2", shopId);
preferentialCategoryVo.setGoods(goodsVos); // preferentialCategoryVo.setGoods(goodsVos);
if(!CollectionUtils.isEmpty(goodsVos)){ // if(!CollectionUtils.isEmpty(goodsVos)){
for (GoodsVo goodsVo : goodsVos) { // for (GoodsVo goodsVo : goodsVos) {
GoodsTag goodsTag = new GoodsTag(); // GoodsTag goodsTag = new GoodsTag();
goodsTag.setState("1"); // goodsTag.setState("1");
goodsVo.setSpecs(buildGoodsSpec(goodsVo.getSpecString())); // goodsVo.setSpecs(buildGoodsSpec(goodsVo.getSpecString()));
goodsVo.setSpecString(null); // goodsVo.setSpecString(null);
goodsTag.setGoodsId(Long.parseLong(goodsVo.getGoodsId())); // goodsTag.setGoodsId(Long.parseLong(goodsVo.getGoodsId()));
goodsVo.setPics(JSONObject.parseObject(goodsVo.getPictures())); // goodsVo.setPics(JSONObject.parseObject(goodsVo.getPictures()));
goodsVo.setPictures(null); // goodsVo.setPictures(null);
List<GoodsTag> goodsTags = goodsTagMapper.selectGoodsTagList(goodsTag); // List<GoodsTag> goodsTags = goodsTagMapper.selectGoodsTagList(goodsTag);
List<String> tags = goodsTags.stream().map(GoodsTag::getTag).collect(Collectors.toList()); // List<String> tags = goodsTags.stream().map(GoodsTag::getTag).collect(Collectors.toList());
goodsVo.setTags(tags); // goodsVo.setTags(tags);
//获取产品信息 // //获取产品信息
List<SkuVo> skuVos = shopGoodsSkuMapper.selectSkuByGoodAndShop(shopId, goodsVo.getGoodsId()); // List<SkuVo> skuVos = shopGoodsSkuMapper.selectSkuByGoodAndShop(shopId, goodsVo.getGoodsId());
buildSkuRules(skuVos); // buildSkuRules(skuVos);
goodsVo.setSkus(skuVos); // goodsVo.setSkus(skuVos);
} // }
} // }
//推荐 //推荐
List<String> recommendGoodsId = new ArrayList<>(); List<String> recommendGoodsId = new ArrayList<>();
List<RecommendVo> recommendVos = new ArrayList<>(); List<RecommendVo> recommendVos = new ArrayList<>();
......
package com.soss.system.service.impl; package com.soss.system.service.impl;
import java.util.List; import com.alibaba.fastjson.JSON;
import com.soss.common.exception.ServiceException;
import com.soss.system.domain.Machine;
import com.soss.system.domain.ShopGoods;
import com.soss.system.domain.Spec;
import com.soss.system.domain.SpecRule;
import com.soss.system.domain.vo.orderTaking.SkuVo;
import com.soss.system.mapper.*;
import com.soss.system.service.IShopGoodsService; import com.soss.system.service.IShopGoodsService;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.soss.system.mapper.ShopGoodsMapper; import org.springframework.util.CollectionUtils;
import com.soss.system.domain.ShopGoods;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/** /**
* 店铺和商品关联Service业务层处理 * 店铺和商品关联Service业务层处理
...@@ -15,10 +26,19 @@ import com.soss.system.domain.ShopGoods; ...@@ -15,10 +26,19 @@ import com.soss.system.domain.ShopGoods;
* @date 2022-04-28 * @date 2022-04-28
*/ */
@Service @Service
public class ShopGoodsServiceImpl implements IShopGoodsService public class ShopGoodsServiceImpl implements IShopGoodsService {
{
@Autowired @Autowired
private ShopGoodsMapper shopGoodsMapper; private ShopGoodsMapper shopGoodsMapper;
@Autowired
private ShopGoodsSkuMapper shopGoodsSkuMapper;
@Autowired
private GoodsMapper goodsMapper;
@Autowired
private SpecMapper specMapper;
@Autowired
private MachineMapper machineMapper;
@Autowired
private MachineApiServiceImpl machineApiService;
/** /**
* 查询店铺和商品关联 * 查询店铺和商品关联
...@@ -27,8 +47,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService ...@@ -27,8 +47,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService
* @return 店铺和商品关联 * @return 店铺和商品关联
*/ */
@Override @Override
public ShopGoods selectShopGoodsById(String id) public ShopGoods selectShopGoodsById(String id) {
{
return shopGoodsMapper.selectShopGoodsById(id); return shopGoodsMapper.selectShopGoodsById(id);
} }
...@@ -39,8 +58,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService ...@@ -39,8 +58,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService
* @return 店铺和商品关联 * @return 店铺和商品关联
*/ */
@Override @Override
public List<ShopGoods> selectShopGoodsList(ShopGoods shopGoods) public List<ShopGoods> selectShopGoodsList(ShopGoods shopGoods) {
{
return shopGoodsMapper.selectShopGoodsList(shopGoods); return shopGoodsMapper.selectShopGoodsList(shopGoods);
} }
...@@ -51,8 +69,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService ...@@ -51,8 +69,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertShopGoods(ShopGoods shopGoods) public int insertShopGoods(ShopGoods shopGoods) {
{
return shopGoodsMapper.insertShopGoods(shopGoods); return shopGoodsMapper.insertShopGoods(shopGoods);
} }
...@@ -63,8 +80,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService ...@@ -63,8 +80,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int updateShopGoods(ShopGoods shopGoods) public int updateShopGoods(ShopGoods shopGoods) {
{
return shopGoodsMapper.updateShopGoods(shopGoods); return shopGoodsMapper.updateShopGoods(shopGoods);
} }
...@@ -75,8 +91,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService ...@@ -75,8 +91,7 @@ public class ShopGoodsServiceImpl implements IShopGoodsService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteShopGoodsByIds(String[] ids) public int deleteShopGoodsByIds(String[] ids) {
{
return shopGoodsMapper.deleteShopGoodsByIds(ids); return shopGoodsMapper.deleteShopGoodsByIds(ids);
} }
...@@ -87,8 +102,170 @@ public class ShopGoodsServiceImpl implements IShopGoodsService ...@@ -87,8 +102,170 @@ public class ShopGoodsServiceImpl implements IShopGoodsService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteShopGoodsById(String id) public int deleteShopGoodsById(String id) {
{
return shopGoodsMapper.deleteShopGoodsById(id); return shopGoodsMapper.deleteShopGoodsById(id);
} }
@Override
public List<Spec> getShopGoodsSpecs(Long shopId, Long goodsId) {
List<SkuVo> skuVos = shopGoodsSkuMapper.selectSkuByGoodAndShop(shopId, goodsId.toString());
if (CollectionUtils.isEmpty(skuVos)) {
return null;
}
Map<String, List<SkuVo>> skuMap = skuVos.stream().collect(Collectors.groupingBy(SkuVo::getState));
if (CollectionUtils.isEmpty(skuMap)) {
return null;
}
Map<Long, SpecRule> selloutRules = new HashMap<>();
Map<Long, SpecRule> sellinRules = new HashMap<>();
List<SkuVo> selloutSkus = skuMap.get("2");
if (!CollectionUtils.isEmpty(selloutSkus)) {
selloutSkus.forEach(skuVo -> {
List<SpecRule> rules = JSON.parseArray(skuVo.getRulesString(), SpecRule.class);
if (!CollectionUtils.isEmpty(rules)) {
rules.forEach(rule -> {
rule.setState(2);
selloutRules.put(rule.getId(), rule);
});
}
});
}
List<SkuVo> sellinSkus = skuMap.get("1");
if (!CollectionUtils.isEmpty(sellinSkus)) {
sellinSkus.forEach(skuVo -> {
List<SpecRule> rules = JSON.parseArray(skuVo.getRulesString(), SpecRule.class);
if (!CollectionUtils.isEmpty(rules)) {
rules.forEach(rule -> {
rule.setState(1);
sellinRules.put(rule.getId(), rule);
});
}
});
}
// 从售罄sku选项列表中删除 未售罄sku选项
sellinRules.values().forEach(rule -> selloutRules.remove(rule.getId()));
Map<Long, List<SpecRule>> selloutRulesBySpec = selloutRules.values().stream().collect(Collectors.groupingBy(SpecRule::getSpecId));
Map<Long, List<SpecRule>> sellinRulesBySpec = sellinRules.values().stream().collect(Collectors.groupingBy(SpecRule::getSpecId));
List<Long> specIds = new ArrayList<>();
specIds.addAll(sellinRules.values().stream().map(SpecRule::getSpecId).collect(Collectors.toList()));
specIds.addAll(selloutRules.values().stream().map(SpecRule::getSpecId).collect(Collectors.toList()));
// 构建返回数据
List<Spec> specVos = specMapper.selectSpecByIds(specIds);
if (CollectionUtils.isEmpty(specVos)) {
return null;
}
specVos.forEach(spec -> {
if (CollectionUtils.isEmpty(spec.getSpecRules())) {
spec.setSpecRules(new ArrayList<>());
}
if (!CollectionUtils.isEmpty(sellinRulesBySpec.get(spec.getId()))) {
spec.getSpecRules().addAll(sellinRulesBySpec.get(spec.getId()));
}
if (!CollectionUtils.isEmpty(selloutRulesBySpec.get(spec.getId()))) {
spec.getSpecRules().addAll(selloutRulesBySpec.get(spec.getId()));
}
});
return specVos;
}
public Boolean updateShopGoodsSpecState(Long shopId, Long goodsId, Long ruleId, Integer state) {
if (shopId == null || shopId <= 0) {
throw new ServiceException("店铺id错误");
}
if (goodsId == null || goodsId <= 0) {
throw new ServiceException("商品id错误");
}
if (ruleId == null || ruleId <= 0) {
throw new ServiceException("选项id错误");
}
if (state == null) {
throw new ServiceException("状态不能为空");
}
if (state != 1 && state != 2) {
throw new ServiceException("状态错误,1-2");
}
List<SkuVo> skuVos = shopGoodsSkuMapper.selectSkuByGoodAndShop(shopId, goodsId.toString());
if (CollectionUtils.isEmpty(skuVos)) {
return false;
}
// 本店铺本商品 所有规格,选项状态
List<Spec> specs = getShopGoodsSpecs(shopId, goodsId);
if (CollectionUtils.isEmpty(specs)) {
return false;
}
// 包含本次修改选项的sku列表
List<String> skuIds = new ArrayList<>();
skuVos.forEach(skuVo -> {
List<SpecRule> rules = JSON.parseArray(skuVo.getRulesString(), SpecRule.class);
if (CollectionUtils.isEmpty(rules)) {
return;
}
rules.forEach(rule -> {
// 判断本sku是否包含本次修改的选项
if (rule.getId() == ruleId) {
if (existsOtherSellout(skuVo, specs, ruleId)) {
// 除本次修改选项外,本商品还有其它售罄选项
return;
}
skuIds.add(skuVo.getSkuId().toString());
}
});
});
int i = shopGoodsSkuMapper.updateSkuStatus(skuIds, "0", String.valueOf(shopId), String.valueOf(state));
//推送给极光
List<Machine> machines = machineMapper.selectMachineByShopId(shopId);
if (CollectionUtils.isEmpty(machines)) {
return true;
}
List<Long> longSkuIds = skuIds.stream().map(x -> Long.parseLong(x)).collect(Collectors.toList());
Machine machine = machines.get(0);
Map<Long, List<Long>> map = new HashMap<>();
map.put(goodsId, longSkuIds);
machineApiService.push(machine, String.valueOf(state), map);
return true;
}
/** 判断除本次修改选项外,本商品还有其它售罄选项 */
private boolean existsOtherSellout(SkuVo skuVo, List<Spec> specs, long ruleId) {
List<Long> selloutRuleIds = new ArrayList<>();
for (Spec spec : specs) {
for (SpecRule rule : spec.getSpecRules()) {
if (rule.getState() == 1) {
continue;
}
if (rule.getId() == ruleId) {
continue;
}
selloutRuleIds.add(rule.getId());
}
}
// 没有其它售罄选项
if (CollectionUtils.isEmpty(selloutRuleIds)) {
return false;
}
// 有其它售罄选项,判断本商品是否包含其它售罄选项
List<SpecRule> rules = JSON.parseArray(skuVo.getRulesString(), SpecRule.class);
for (SpecRule rule : rules) {
if (selloutRuleIds.contains(rule.getId())) {
return true;
}
}
return false;
}
} }
package com.soss.system.service.impl; package com.soss.system.service.impl;
import java.util.List; import com.soss.common.exception.ServiceException;
import org.springframework.beans.factory.annotation.Autowired; import com.soss.system.domain.Goods;
import org.springframework.stereotype.Service;
import com.soss.system.mapper.ShopGoodsSkuMapper;
import com.soss.system.domain.ShopGoodsSku; import com.soss.system.domain.ShopGoodsSku;
import com.soss.system.domain.vo.orderTaking.SkuVo;
import com.soss.system.mapper.GoodsMapper;
import com.soss.system.mapper.ShopGoodsSkuMapper;
import com.soss.system.service.IShopGoodsSkuService; import com.soss.system.service.IShopGoodsSkuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.List;
/** /**
* 从店铺到sku关联Service业务层处理 * 从店铺到sku关联Service业务层处理
...@@ -14,10 +21,11 @@ import com.soss.system.service.IShopGoodsSkuService; ...@@ -14,10 +21,11 @@ import com.soss.system.service.IShopGoodsSkuService;
* @date 2022-04-28 * @date 2022-04-28
*/ */
@Service @Service
public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService {
{
@Autowired @Autowired
private ShopGoodsSkuMapper shopGoodsSkuMapper; private ShopGoodsSkuMapper shopGoodsSkuMapper;
@Autowired
private GoodsMapper goodsMapper;
/** /**
* 查询从店铺到sku关联 * 查询从店铺到sku关联
...@@ -26,8 +34,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService ...@@ -26,8 +34,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService
* @return 从店铺到sku关联 * @return 从店铺到sku关联
*/ */
@Override @Override
public ShopGoodsSku selectShopGoodsSkuById(String id) public ShopGoodsSku selectShopGoodsSkuById(String id) {
{
return shopGoodsSkuMapper.selectShopGoodsSkuById(id); return shopGoodsSkuMapper.selectShopGoodsSkuById(id);
} }
...@@ -38,8 +45,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService ...@@ -38,8 +45,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService
* @return 从店铺到sku关联 * @return 从店铺到sku关联
*/ */
@Override @Override
public List<ShopGoodsSku> selectShopGoodsSkuList(ShopGoodsSku shopGoodsSku) public List<ShopGoodsSku> selectShopGoodsSkuList(ShopGoodsSku shopGoodsSku) {
{
return shopGoodsSkuMapper.selectShopGoodsSkuList(shopGoodsSku); return shopGoodsSkuMapper.selectShopGoodsSkuList(shopGoodsSku);
} }
...@@ -50,8 +56,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService ...@@ -50,8 +56,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertShopGoodsSku(ShopGoodsSku shopGoodsSku) public int insertShopGoodsSku(ShopGoodsSku shopGoodsSku) {
{
return shopGoodsSkuMapper.insertShopGoodsSku(shopGoodsSku); return shopGoodsSkuMapper.insertShopGoodsSku(shopGoodsSku);
} }
...@@ -62,8 +67,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService ...@@ -62,8 +67,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int updateShopGoodsSku(ShopGoodsSku shopGoodsSku) public int updateShopGoodsSku(ShopGoodsSku shopGoodsSku) {
{
return shopGoodsSkuMapper.updateShopGoodsSku(shopGoodsSku); return shopGoodsSkuMapper.updateShopGoodsSku(shopGoodsSku);
} }
...@@ -74,8 +78,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService ...@@ -74,8 +78,7 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteShopGoodsSkuByIds(String[] ids) public int deleteShopGoodsSkuByIds(String[] ids) {
{
return shopGoodsSkuMapper.deleteShopGoodsSkuByIds(ids); return shopGoodsSkuMapper.deleteShopGoodsSkuByIds(ids);
} }
...@@ -86,8 +89,36 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService ...@@ -86,8 +89,36 @@ public class ShopGoodsSkuServiceImpl implements IShopGoodsSkuService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteShopGoodsSkuById(String id) public int deleteShopGoodsSkuById(String id) {
{
return shopGoodsSkuMapper.deleteShopGoodsSkuById(id); return shopGoodsSkuMapper.deleteShopGoodsSkuById(id);
} }
@Override
public void updateShopGoodsSkuDiscount(String shopId, String goodsId, BigDecimal discount) {
Goods goods = goodsMapper.selectGoodsById(Long.parseLong(goodsId));
if (goods == null) {
throw new ServiceException("商品不存在");
}
List<SkuVo> skus = shopGoodsSkuMapper.selectSkuByGoodAndShop(Long.parseLong(shopId), goodsId);
if (CollectionUtils.isEmpty(skus)) {
throw new ServiceException("sku不存在");
}
if (discount.compareTo(goods.getDiscount()) > 0) {
throw new ServiceException("特惠价格不能大于原折扣价");
}
BigDecimal subtract = goods.getDiscount().subtract(discount); // 商品原折扣价和特惠价格差额
if (subtract.floatValue() == 0) { // 金额没变化
return;
}
skus.forEach(sku -> {
// 重新计算店铺商品sku特惠价格
BigDecimal newDiscount = sku.getOrigDiscount().subtract(subtract);
shopGoodsSkuMapper.updateSkuDiscount(sku.getId(), newDiscount);
});
}
@Override
public void restoreSkuDiscount(Long shopId, Long goodsId) {
shopGoodsSkuMapper.restoreSkuDiscount(shopId, goodsId);
}
} }
package com.soss.system.service.impl; package com.soss.system.service.impl;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.soss.common.exception.ServiceException;
import com.soss.common.utils.StringUtils;
import com.soss.system.domain.Goods; import com.soss.system.domain.Goods;
import com.soss.system.domain.Machine; import com.soss.system.domain.Machine;
import com.soss.system.domain.ShopRecommend; import com.soss.system.domain.ShopRecommend;
...@@ -24,11 +26,12 @@ import java.util.stream.Collectors; ...@@ -24,11 +26,12 @@ import java.util.stream.Collectors;
* @date 2022-04-28 * @date 2022-04-28
*/ */
@Service @Service
public class ShopRecommendServiceImpl implements IShopRecommendService public class ShopRecommendServiceImpl implements IShopRecommendService {
{
@Autowired @Autowired
private ShopRecommendMapper shopRecommendMapper; private ShopRecommendMapper shopRecommendMapper;
@Autowired @Autowired
private ShopGoodsSkuServiceImpl shopGoodsSkuService;
@Autowired
private MachineMapper machineMapper; private MachineMapper machineMapper;
@Autowired @Autowired
private OrderMapper orderMapper; private OrderMapper orderMapper;
...@@ -44,8 +47,7 @@ public class ShopRecommendServiceImpl implements IShopRecommendService ...@@ -44,8 +47,7 @@ public class ShopRecommendServiceImpl implements IShopRecommendService
* @return 推荐和今日特惠 * @return 推荐和今日特惠
*/ */
@Override @Override
public ShopRecommend selectShopRecommendById(String id) public ShopRecommend selectShopRecommendById(String id) {
{
return shopRecommendMapper.selectShopRecommendById(id); return shopRecommendMapper.selectShopRecommendById(id);
} }
...@@ -56,9 +58,8 @@ public class ShopRecommendServiceImpl implements IShopRecommendService ...@@ -56,9 +58,8 @@ public class ShopRecommendServiceImpl implements IShopRecommendService
* @return 推荐和今日特惠 * @return 推荐和今日特惠
*/ */
@Override @Override
public List<Goods> selectShopRecommendList(ShopRecommend shopRecommend) public List<Goods> selectShopRecommendList(ShopRecommend shopRecommend) {
{ List<Goods> goodsList = shopRecommendMapper.selectShopRecommendGoods(shopRecommend.getShopId(), shopRecommend.getType());
List<Goods> goodsList = shopRecommendMapper.selectShopRecommendGoods(shopRecommend.getShopId(),shopRecommend.getType());
goodsList = goodsList.stream().distinct().collect(Collectors.toList()); goodsList = goodsList.stream().distinct().collect(Collectors.toList());
/*for (Goods goods : goodsList) { /*for (Goods goods : goodsList) {
goods.setCategoryName(goodsCategoryMapper.selectGoodsCategoryById(String.valueOf(goods.getCategory())).getName()); goods.setCategoryName(goodsCategoryMapper.selectGoodsCategoryById(String.valueOf(goods.getCategory())).getName());
...@@ -74,8 +75,14 @@ public class ShopRecommendServiceImpl implements IShopRecommendService ...@@ -74,8 +75,14 @@ public class ShopRecommendServiceImpl implements IShopRecommendService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertShopRecommend(ShopRecommend shopRecommend) public int insertShopRecommend(ShopRecommend shopRecommend) {
{ if (!StringUtils.isEmpty(shopRecommend.getType()) && shopRecommend.getType().equals("2")) {
// 特惠
if (shopRecommend.getRecommendPrice() == null || shopRecommend.getRecommendPrice().floatValue() < 0) {
throw new ServiceException("特惠价格不正确");
}
shopGoodsSkuService.updateShopGoodsSkuDiscount(shopRecommend.getShopId(), shopRecommend.getGoodsId(), shopRecommend.getRecommendPrice());
}
Machine machine = new Machine(); Machine machine = new Machine();
machine.setShopId(Long.parseLong(shopRecommend.getShopId())); machine.setShopId(Long.parseLong(shopRecommend.getShopId()));
shopRecommend.setCreatedAt(new Date()); shopRecommend.setCreatedAt(new Date());
...@@ -86,11 +93,11 @@ public class ShopRecommendServiceImpl implements IShopRecommendService ...@@ -86,11 +93,11 @@ public class ShopRecommendServiceImpl implements IShopRecommendService
return shopRecommendMapper.updateShopRecommend(shopRecommend); return shopRecommendMapper.updateShopRecommend(shopRecommend);
} }
public void updateApplication(long shopId){ public void updateApplication(long shopId) {
Machine machine = new Machine(); Machine machine = new Machine();
machine.setShopId(shopId); machine.setShopId(shopId);
List<Machine> machines = machineMapper.selectMachineList(machine); List<Machine> machines = machineMapper.selectMachineList(machine);
if(!machines.isEmpty()){ if (!machines.isEmpty()) {
JSONObject jsonObject = new JSONObject(); JSONObject jsonObject = new JSONObject();
jsonObject.put("action", "GOODS_CHANGED"); jsonObject.put("action", "GOODS_CHANGED");
jsonObject.put("timestamp", System.currentTimeMillis()); jsonObject.put("timestamp", System.currentTimeMillis());
...@@ -106,34 +113,31 @@ public class ShopRecommendServiceImpl implements IShopRecommendService ...@@ -106,34 +113,31 @@ public class ShopRecommendServiceImpl implements IShopRecommendService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int updateShopRecommend(ShopRecommend shopRecommend) public int updateShopRecommend(ShopRecommend shopRecommend) {
{
return shopRecommendMapper.updateShopRecommend(shopRecommend); return shopRecommendMapper.updateShopRecommend(shopRecommend);
} }
/** // /**
* 批量删除推荐和今日特惠 // * 批量删除推荐和今日特惠
* // *
* @param ids 需要删除的推荐和今日特惠主键 // * @param ids 需要删除的推荐和今日特惠主键
* @return 结果 // * @return 结果
*/ // */
@Override // @Override
public int deleteShopRecommendByIds(String[] ids) // public int deleteShopRecommendByIds(String[] ids) {
{ // return shopRecommendMapper.deleteShopRecommendByIds(ids);
return shopRecommendMapper.deleteShopRecommendByIds(ids); // }
} //
// /**
/** // * 删除推荐和今日特惠信息
* 删除推荐和今日特惠信息 // *
* // * @param id 推荐和今日特惠主键
* @param id 推荐和今日特惠主键 // * @return 结果
* @return 结果 // */
*/ // @Override
@Override // public int deleteShopRecommendById(String id) {
public int deleteShopRecommendById(String id) // return shopRecommendMapper.deleteShopRecommendById(id);
{ // }
return shopRecommendMapper.deleteShopRecommendById(id);
}
@Override @Override
public String turn(Long shopId, String goodsId, String pointer, String type) { public String turn(Long shopId, String goodsId, String pointer, String type) {
...@@ -144,21 +148,21 @@ public class ShopRecommendServiceImpl implements IShopRecommendService ...@@ -144,21 +148,21 @@ public class ShopRecommendServiceImpl implements IShopRecommendService
List<ShopRecommend> shopRecommends = shopRecommendMapper.selectShopRecommendList(shopRecommend); List<ShopRecommend> shopRecommends = shopRecommendMapper.selectShopRecommendList(shopRecommend);
int size = shopRecommends.size(); int size = shopRecommends.size();
String lastGoodsId = null; String lastGoodsId = null;
for(int i =0;i<size;i++){ for (int i = 0; i < size; i++) {
ShopRecommend shopGood = shopRecommends.get(i); ShopRecommend shopGood = shopRecommends.get(i);
if(goodsId.equals(shopGood.getGoodsId())){ if (goodsId.equals(shopGood.getGoodsId())) {
if("1".equals(pointer)){ if ("1".equals(pointer)) {
int index = i-1; int index = i - 1;
if(index<0){ if (index < 0) {
lastGoodsId =shopGood.getGoodsId(); lastGoodsId = shopGood.getGoodsId();
}else{ } else {
lastGoodsId = shopRecommends.get(index).getGoodsId(); lastGoodsId = shopRecommends.get(index).getGoodsId();
} }
}else if("2".equals(pointer)){ } else if ("2".equals(pointer)) {
int index=i+1; int index = i + 1;
if(index>=size){ if (index >= size) {
lastGoodsId =shopGood.getGoodsId(); lastGoodsId = shopGood.getGoodsId();
}else{ } else {
lastGoodsId = shopRecommends.get(index).getGoodsId(); lastGoodsId = shopRecommends.get(index).getGoodsId();
} }
} }
...@@ -185,6 +189,9 @@ public class ShopRecommendServiceImpl implements IShopRecommendService ...@@ -185,6 +189,9 @@ public class ShopRecommendServiceImpl implements IShopRecommendService
shopRecommend.setGoodsId(goodsId); shopRecommend.setGoodsId(goodsId);
ShopRecommend frist = shopRecommendMapper.selectShopRecommendList(shopRecommend).get(0); ShopRecommend frist = shopRecommendMapper.selectShopRecommendList(shopRecommend).get(0);
updateApplication(Long.parseLong(shopRecommend.getShopId())); updateApplication(Long.parseLong(shopRecommend.getShopId()));
if (!StringUtils.isEmpty(type) && type.equals("2")) {
shopGoodsSkuService.restoreSkuDiscount(Long.parseLong(shopId), Long.parseLong(goodsId));
}
return shopRecommendMapper.deleteShopRecommendById(frist.getId()); return shopRecommendMapper.deleteShopRecommendById(frist.getId());
} }
......
...@@ -33,8 +33,7 @@ import java.util.stream.Collectors; ...@@ -33,8 +33,7 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@Slf4j @Slf4j
public class ShopServiceImpl implements IShopService public class ShopServiceImpl implements IShopService {
{
@Autowired @Autowired
private ShopMapper shopMapper; private ShopMapper shopMapper;
@Autowired @Autowired
...@@ -65,8 +64,7 @@ public class ShopServiceImpl implements IShopService ...@@ -65,8 +64,7 @@ public class ShopServiceImpl implements IShopService
* @return 店铺 * @return 店铺
*/ */
@Override @Override
public Shop selectShopById(Long id) public Shop selectShopById(Long id) {
{
Shop shop = shopMapper.selectShopById(id); Shop shop = shopMapper.selectShopById(id);
if (shop.getDistanceLimit() != null && shop.getDistanceLimit().equals(0.0)) { if (shop.getDistanceLimit() != null && shop.getDistanceLimit().equals(0.0)) {
shop.setDistanceLimit(null); shop.setDistanceLimit(null);
...@@ -81,8 +79,7 @@ public class ShopServiceImpl implements IShopService ...@@ -81,8 +79,7 @@ public class ShopServiceImpl implements IShopService
* @return 店铺 * @return 店铺
*/ */
@Override @Override
public List<Shop> selectShopList(Shop shop) public List<Shop> selectShopList(Shop shop) {
{
List<Shop> shops = shopMapper.selectShopList(shop); List<Shop> shops = shopMapper.selectShopList(shop);
for (Shop shop1 : shops) { for (Shop shop1 : shops) {
Machine machine = new Machine(); Machine machine = new Machine();
...@@ -180,8 +177,7 @@ public class ShopServiceImpl implements IShopService ...@@ -180,8 +177,7 @@ public class ShopServiceImpl implements IShopService
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteShopByIds(String[] ids) public int deleteShopByIds(String[] ids) {
{
for (String id : ids) { for (String id : ids) {
Shop shop = new Shop(); Shop shop = new Shop();
shop.setId(Long.parseLong(id)); shop.setId(Long.parseLong(id));
...@@ -197,7 +193,7 @@ public class ShopServiceImpl implements IShopService ...@@ -197,7 +193,7 @@ public class ShopServiceImpl implements IShopService
String[] goodsIdString = goodsIds.split(","); String[] goodsIdString = goodsIds.split(",");
for (String s : goodsIdString) { for (String s : goodsIdString) {
Long goodsId = Long.parseLong(s); Long goodsId = Long.parseLong(s);
addGoods(shopId,goodsId); addGoods(shopId, goodsId);
} }
return null; return null;
...@@ -220,7 +216,7 @@ public class ShopServiceImpl implements IShopService ...@@ -220,7 +216,7 @@ public class ShopServiceImpl implements IShopService
Machine machine = new Machine(); Machine machine = new Machine();
machine.setShopId(shopId); machine.setShopId(shopId);
List<Machine> machines = machineMapper.selectMachineList(machine); List<Machine> machines = machineMapper.selectMachineList(machine);
if(machines==null ||machines.isEmpty()){ if (machines == null || machines.isEmpty()) {
throw new ServiceException("请先绑定机器"); throw new ServiceException("请先绑定机器");
} }
for (Machine machine1 : machines) { for (Machine machine1 : machines) {
...@@ -233,6 +229,8 @@ public class ShopServiceImpl implements IShopService ...@@ -233,6 +229,8 @@ public class ShopServiceImpl implements IShopService
shopGoodsSku.setIsDeleted("0"); shopGoodsSku.setIsDeleted("0");
shopGoodsSku.setCreatedAt(new Date()); shopGoodsSku.setCreatedAt(new Date());
shopGoodsSku.setUpdatedAt(new Date()); shopGoodsSku.setUpdatedAt(new Date());
shopGoodsSku.setOrigDiscount(skus.getDiscount());
shopGoodsSku.setDiscount(skus.getDiscount());
shopGoodsSkuMapper.insertShopGoodsSku(shopGoodsSku); shopGoodsSkuMapper.insertShopGoodsSku(shopGoodsSku);
} }
updateApplication(Integer.parseInt(machine1.getId())); updateApplication(Integer.parseInt(machine1.getId()));
...@@ -280,6 +278,11 @@ public class ShopServiceImpl implements IShopService ...@@ -280,6 +278,11 @@ public class ShopServiceImpl implements IShopService
} }
} }
Integer selloutCount = shopGoodsSkuMapper.getSelloutSkuCount(shopId, goods.getId());
Integer sellinCount = shopGoodsSkuMapper.getSellinSkuCount(shopId, goods.getId());
goods.setSelloutCount(selloutCount);
goods.setSkuCount(sellinCount + selloutCount);
ShopRecommend shopRecommend = new ShopRecommend(); ShopRecommend shopRecommend = new ShopRecommend();
shopRecommend.setShopId(String.valueOf(shopId)); shopRecommend.setShopId(String.valueOf(shopId));
shopRecommend.setGoodsId(String.valueOf(goods.getId())); shopRecommend.setGoodsId(String.valueOf(goods.getId()));
...@@ -287,15 +290,15 @@ public class ShopServiceImpl implements IShopService ...@@ -287,15 +290,15 @@ public class ShopServiceImpl implements IShopService
goods.setPreferential("1"); goods.setPreferential("1");
goods.setRecommend("1"); goods.setRecommend("1");
List<ShopRecommend> shopRecommends = shopRecommendMapper.selectShopRecommendList(shopRecommend); List<ShopRecommend> shopRecommends = shopRecommendMapper.selectShopRecommendList(shopRecommend);
if(shopRecommends.size()>0){ if (shopRecommends.size() > 0) {
goods.setRecommend("0"); goods.setRecommend("0");
} }
shopRecommend.setType("2"); shopRecommend.setType("2");
shopRecommends = shopRecommendMapper.selectShopRecommendList(shopRecommend); shopRecommends = shopRecommendMapper.selectShopRecommendList(shopRecommend);
if(shopRecommends.size()>0){ if (shopRecommends.size() > 0) {
goods.setPreferential("0"); goods.setPreferential("0");
} }
goods.setSalesVolume(orderMapper.selectSalesVolume(shopId,goods.getId())); goods.setSalesVolume(orderMapper.selectSalesVolume(shopId, goods.getId()));
} }
category.setGoodsList(goodsList); category.setGoodsList(goodsList);
} }
...@@ -304,7 +307,7 @@ public class ShopServiceImpl implements IShopService ...@@ -304,7 +307,7 @@ public class ShopServiceImpl implements IShopService
@Override @Override
public List<GoodsSku> getSkuByGoodsId(long shopId, long goodsId) { public List<GoodsSku> getSkuByGoodsId(long shopId, long goodsId) {
return shopGoodsSkuMapper.selectSkuByShopAndGoods(shopId,goodsId); return shopGoodsSkuMapper.selectSkuByShopAndGoods(shopId, goodsId);
} }
...@@ -358,8 +361,8 @@ public class ShopServiceImpl implements IShopService ...@@ -358,8 +361,8 @@ public class ShopServiceImpl implements IShopService
Machine machine = new Machine(); Machine machine = new Machine();
machine.setShopId(shopId); machine.setShopId(shopId);
List<Machine> machines = machineMapper.selectMachineList(machine); List<Machine> machines = machineMapper.selectMachineList(machine);
if(!machines.isEmpty()){ if (!machines.isEmpty()) {
Machine machine1 =machines .get(0); Machine machine1 = machines.get(0);
updateApplication(Integer.parseInt(machine1.getId())); updateApplication(Integer.parseInt(machine1.getId()));
} }
return null; return null;
...@@ -404,10 +407,10 @@ public class ShopServiceImpl implements IShopService ...@@ -404,10 +407,10 @@ public class ShopServiceImpl implements IShopService
List<Goods> goodsList = shopGoodsMapper.selectShopNoAddGoods(goodsName, category, shopId); List<Goods> goodsList = shopGoodsMapper.selectShopNoAddGoods(goodsName, category, shopId);
for (Goods goods1 : goodsList) { for (Goods goods1 : goodsList) {
GoodsCategory goodsCategory = goodsCategoryMapper.selectGoodsCategoryById(goods1.getCategory()); GoodsCategory goodsCategory = goodsCategoryMapper.selectGoodsCategoryById(goods1.getCategory());
if(goodsCategory !=null){ if (goodsCategory != null) {
goods1.setCategoryName(goodsCategory.getName()); goods1.setCategoryName(goodsCategory.getName());
} }
int count = orderMapper.selectSalesVolume(null,goods1.getId()); int count = orderMapper.selectSalesVolume(null, goods1.getId());
goods1.setSalesVolume(count); goods1.setSalesVolume(count);
} }
return goodsList; return goodsList;
...@@ -473,7 +476,7 @@ public class ShopServiceImpl implements IShopService ...@@ -473,7 +476,7 @@ public class ShopServiceImpl implements IShopService
} }
private JSONArray buildGoodsSpec(String specs) { private JSONArray buildGoodsSpec(String specs) {
List<Spec> specList = JSONObject.parseArray(specs,Spec.class); List<Spec> specList = JSONObject.parseArray(specs, Spec.class);
List<SpecVo> specVos = new ArrayList<>(); List<SpecVo> specVos = new ArrayList<>();
for (Spec spec : specList) { for (Spec spec : specList) {
SpecVo specVo = new SpecVo(); SpecVo specVo = new SpecVo();
...@@ -521,7 +524,7 @@ public class ShopServiceImpl implements IShopService ...@@ -521,7 +524,7 @@ public class ShopServiceImpl implements IShopService
} }
} }
skuVo.setIsDefault("0"); skuVo.setIsDefault("0");
if(boo){ if (boo) {
skuVo.setIsDefault("1"); skuVo.setIsDefault("1");
} }
skuVo.setRules(JSONObject.parseArray(JSONObject.toJSONString(skuRuleVos))); skuVo.setRules(JSONObject.parseArray(JSONObject.toJSONString(skuRuleVos)));
......
package com.soss.system.service.impl;
import com.soss.common.exception.ServiceException;
import com.soss.common.utils.StringUtils;
import com.soss.system.domain.Shop;
import com.soss.system.domain.SysBanner;
import com.soss.system.mapper.SysBannerMapper;
import com.soss.system.service.ISysBannerService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* 轮播图Service业务层处理
*
* @author zxq
* @date 2022-04-28
*/
@Service
@Slf4j
public class SysBannerServiceImpl implements ISysBannerService {
@Autowired
private SysBannerMapper sysBannerMapper;
@Autowired
private ShopServiceImpl shopService;
@Override
public List<SysBanner> selectBanner(SysBanner banner) {
return sysBannerMapper.selectBanner(banner);
}
@Override
public Long createBanner(SysBanner banner) {
if (StringUtils.isEmpty(banner.getImage())) {
throw new ServiceException("图片地址不能为空");
}
if (StringUtils.isEmpty(banner.getPage())) {
throw new ServiceException("链接地址不能为空");
}
if (banner.getType() == null || banner.getType() < 1 || banner.getType() > 3) {
throw new ServiceException("类型不正确,1-小程序,2-KDS,3-点单屏");
}
if (banner.getTarget() == null || banner.getTarget() < 1 || banner.getTarget() > 2) {
throw new ServiceException("轮播位置不正确,1-小程序首页,2-小程序我的");
}
if (banner.getSort() == null) {
throw new ServiceException("轮播顺序不能为空");
}
if (StringUtils.isEmpty(banner.getProvince()) && StringUtils.isEmpty(banner.getCity()) && StringUtils.isEmpty(banner.getArea()) && StringUtils.isEmpty(banner.getShopIds())) {
throw new ServiceException("适用范围不能为空");
}
banner.setCreatedAt(new Date());
banner.setUpdatedAt(new Date());
banner.setState(0);
long i = sysBannerMapper.createBanner(banner);
return banner.getId();
}
@Override
public Boolean updateBanner(SysBanner banner) {
if (banner.getId() == null || banner.getId() <= 0) {
throw new ServiceException("id不能为空");
}
if (StringUtils.isEmpty(banner.getImage())) {
throw new ServiceException("图片地址不能为空");
}
if (StringUtils.isEmpty(banner.getPage())) {
throw new ServiceException("链接地址不能为空");
}
if (banner.getType() == null || banner.getType() < 1 || banner.getType() > 3) {
throw new ServiceException("类型不正确,1-小程序,2-KDS,3-点单屏");
}
if (banner.getTarget() == null || banner.getTarget() < 1 || banner.getTarget() > 2) {
throw new ServiceException("轮播位置不正确,1-小程序首页,2-小程序我的");
}
if (banner.getSort() == null) {
throw new ServiceException("轮播顺序不能为空");
}
if (StringUtils.isEmpty(banner.getProvince()) && StringUtils.isEmpty(banner.getCity()) && StringUtils.isEmpty(banner.getArea()) && StringUtils.isEmpty(banner.getShopIds())) {
throw new ServiceException("适用范围不能为空");
}
banner.setUpdatedAt(new Date());
long i = sysBannerMapper.updateBanner(banner);
return i > 0 ? true : false;
}
@Override
public Boolean updateState(Long bannerId, Integer state) {
SysBanner banner = new SysBanner();
banner.setId(bannerId);
banner.setState(state);
banner.setUpdatedAt(new Date());
if (banner.getId() == null || banner.getId() <= 0) {
throw new ServiceException("id不能为空");
}
if (banner.getState() == null || banner.getState() < 0 || banner.getState() > 1) {
throw new ServiceException("状态不正确,0-上线,1-下线");
}
long i = sysBannerMapper.updateState(banner);
return i > 0 ? true : false;
}
@Override
public Boolean delete(Long bannerId) {
long i = sysBannerMapper.delete(bannerId);
return i > 0 ? true : false;
}
@Override
public List<SysBanner> getBannersByShopId(Long shopId, Integer type, Integer target) {
List<SysBanner> banners = sysBannerMapper.selectBanners(type, target);
if (CollectionUtils.isEmpty(banners)) {
log.info("banner list is empty");
return null;
}
Shop shop = shopService.selectShopById(shopId);
if (shop == null) {
log.info("shop is null");
return null;
}
List<SysBanner> list = new ArrayList<>();
banners.forEach(banner -> {
if (!StringUtils.isEmpty(banner.getProvince())) {
Arrays.stream(banner.getProvince().split(",")).forEach(p -> {
if (p.equals(shop.getProvince())) {
list.add(banner);
return;
}
});
}
if (!StringUtils.isEmpty(banner.getCity())) {
Arrays.stream(banner.getCity().split(",")).forEach(p -> {
if (p.equals(shop.getCity())) {
list.add(banner);
return;
}
});
}
if (!StringUtils.isEmpty(banner.getArea())) {
Arrays.stream(banner.getArea().split(",")).forEach(p -> {
if (p.equals(shop.getZone())) {
list.add(banner);
return;
}
});
}
if (!StringUtils.isEmpty(banner.getShopIds())) {
Arrays.stream(banner.getShopIds().split(",")).forEach(p -> {
if (p.equals(String.valueOf(shop.getId()))) {
list.add(banner);
return;
}
});
}
});
return list;
}
}
...@@ -50,7 +50,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -50,7 +50,6 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createdAt != null "> and created_at = #{createdAt}</if> <if test="createdAt != null "> and created_at = #{createdAt}</if>
<if test="updatedAt != null "> and updated_at = #{updatedAt}</if> <if test="updatedAt != null "> and updated_at = #{updatedAt}</if>
<if test="code != null and code != ''"> and code = #{code}</if> <if test="code != null and code != ''"> and code = #{code}</if>
</where> </where>
order by created_at desc order by created_at desc
</select> </select>
......
...@@ -93,9 +93,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -93,9 +93,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
g.shelf_at as shelfAt, g.shelf_at as shelfAt,
g.code, g.code,
'1' as state '1' as state
from shop_goods sg, goods g where sg.goods_id = g.id and g.state ='3' and g.is_deleted = 0
from shop_goods sg ,goods g where sg.goods_id =g.id and g.state ='3' and g.is_deleted =0 and shop_id = #{shopId} and category like concat('%,', #{categoryId}, ',%')
and shop_id =#{shopId} and category like concat('%,', #{categoryId}, ',%')
order by sg.turn order by sg.turn
</select> </select>
<select id="selectShopNoAddGoods" resultType="com.soss.system.domain.Goods"> <select id="selectShopNoAddGoods" resultType="com.soss.system.domain.Goods">
......
...@@ -34,6 +34,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -34,6 +34,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</where> </where>
</select> </select>
<select id="getSelloutSkuCount" resultType="Integer">
select count(1) from shop_goods_sku where shop_id=#{shopId} and goods_id=#{goodsId} and `state`!=1
</select>
<select id="getSellinSkuCount" resultType="Integer">
select count(1) from shop_goods_sku where shop_id=#{shopId} and goods_id=#{goodsId} and `state`=1
</select>
<select id="selectShopGoodsSkuById" parameterType="String" resultMap="ShopGoodsSkuResult"> <select id="selectShopGoodsSkuById" parameterType="String" resultMap="ShopGoodsSkuResult">
<include refid="selectShopGoodsSkuVo"/> <include refid="selectShopGoodsSkuVo"/>
where id = #{id} where id = #{id}
...@@ -50,6 +58,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -50,6 +58,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="isDeleted != null and isDeleted != ''">is_deleted,</if> <if test="isDeleted != null and isDeleted != ''">is_deleted,</if>
<if test="createdAt != null">created_at,</if> <if test="createdAt != null">created_at,</if>
<if test="updatedAt != null">updated_at,</if> <if test="updatedAt != null">updated_at,</if>
<if test="origDiscount != null">orig_discount,</if>
<if test="discount != null">discount,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="shopId != null and shopId != ''">#{shopId},</if> <if test="shopId != null and shopId != ''">#{shopId},</if>
...@@ -60,6 +70,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -60,6 +70,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="isDeleted != null and isDeleted != ''">#{isDeleted},</if> <if test="isDeleted != null and isDeleted != ''">#{isDeleted},</if>
<if test="createdAt != null">#{createdAt},</if> <if test="createdAt != null">#{createdAt},</if>
<if test="updatedAt != null">#{updatedAt},</if> <if test="updatedAt != null">#{updatedAt},</if>
<if test="origDiscount != null">#{origDiscount},</if>
<if test="discount != null">#{discount},</if>
</trim> </trim>
</insert> </insert>
...@@ -96,23 +108,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -96,23 +108,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select> </select>
<select id="selectSkuByGoodAndShop" resultType="com.soss.system.domain.vo.orderTaking.SkuVo"> <select id="selectSkuByGoodAndShop" resultType="com.soss.system.domain.vo.orderTaking.SkuVo">
select select
sgs.id as id,
gs.id as skuId, gs.id as skuId,
sgs.state as state , sgs.state as state ,
gs.price as price, gs.price as price,
gs.discount as discount,
gs.rule_list as rulesString, gs.rule_list as rulesString,
gs.is_deleted isDelete gs.is_deleted isDelete,
sgs.state,
case when sgs.discount>0 then sgs.discount else gs.discount end discount,
case when sgs.orig_discount>0 then sgs.orig_discount else gs.discount end orig_discount
from from
goods_sku gs , goods_sku gs ,
shop_goods_sku sgs shop_goods_sku sgs
where where
gs.id = sgs.sku_id gs.id = sgs.sku_id
<!-- and gs.is_deleted = '0' -->
and gs.is_deleted in (0, 2) and gs.is_deleted in (0, 2)
and sgs.goods_id =#{goodsId} and sgs.goods_id =#{goodsId}
and sgs.shop_id =#{shopId} and sgs.shop_id =#{shopId}
</select> </select>
<update id="updateSkuDiscount">
update shop_goods_sku set discount = #{discount} where id = #{id}
</update>
<update id="restoreSkuDiscount">
update shop_goods_sku set discount = orig_discount where shop_id = #{shopId} and goods_id = #{goodsId}
</update>
<update id="updateSkuStatus"> <update id="updateSkuStatus">
update shop_goods_sku set state =#{status} update shop_goods_sku set state =#{status}
<where> <where>
......
...@@ -67,6 +67,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -67,6 +67,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createdAt != null">created_at,</if> <if test="createdAt != null">created_at,</if>
<if test="updatedAt != null">updated_at,</if> <if test="updatedAt != null">updated_at,</if>
<if test="name != null">name,</if> <if test="name != null">name,</if>
<if test="recommendPrice != null">recommend_price,</if>
<if test="recommendTag != null">recommend_tag,</if>
</trim> </trim>
<trim prefix="values (" suffix=")" suffixOverrides=","> <trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="shopId != null and shopId != ''">#{shopId},</if> <if test="shopId != null and shopId != ''">#{shopId},</if>
...@@ -82,6 +84,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -82,6 +84,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="createdAt != null">#{createdAt},</if> <if test="createdAt != null">#{createdAt},</if>
<if test="updatedAt != null">#{updatedAt},</if> <if test="updatedAt != null">#{updatedAt},</if>
<if test="name != null">#{name},</if> <if test="name != null">#{name},</if>
<if test="recommendPrice != null">#{recommendPrice},</if>
<if test="recommendTag != null">#{recommendTag},</if>
</trim> </trim>
</insert> </insert>
...@@ -132,7 +136,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -132,7 +136,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and sr.shop_id =#{shopId} and sr.shop_id =#{shopId}
and sr.state ='1' and g.is_deleted ='0' and sr.state ='1' and g.is_deleted ='0'
order by order by
sr.turn sr.recommend_price desc,sr.turn
</select> </select>
<select id="selectShopRecommendGoods" resultType="com.soss.system.domain.Goods"> <select id="selectShopRecommendGoods" resultType="com.soss.system.domain.Goods">
select select
...@@ -147,7 +151,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -147,7 +151,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
g.`desc`, g.`desc`,
g.remarks, g.remarks,
g.code, g.code,
sr.rec_date as recommendDate sr.rec_date as recommendDate,
sr.recommend_price,
sr.recommend_tag
from from
shop s , shop s ,
shop_recommend sr, shop_recommend sr,
......
...@@ -43,6 +43,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ...@@ -43,6 +43,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
and is_deleted = 0 and is_deleted = 0
</select> </select>
<select id="selectSpecByIds" resultMap="SpecResult">
<include refid="selectSpecVo"/>
where id in
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</select>
<insert id="insertSpec" parameterType="Spec" useGeneratedKeys="true" keyProperty="id"> <insert id="insertSpec" parameterType="Spec" useGeneratedKeys="true" keyProperty="id">
insert into spec insert into spec
<trim prefix="(" suffix=")" suffixOverrides=","> <trim prefix="(" suffix=")" suffixOverrides=",">
......
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.soss.system.mapper.SysBannerMapper">
<resultMap type="SysBanner" id="BannerResult">
<result property="id" column="id"/>
<result property="image" column="image"/>
<result property="page" column="page"/>
<result property="type" column="type"/>
<result property="target" column="target"/>
<result property="province" column="province"/>
<result property="city" column="city"/>
<result property="area" column="area"/>
<result property="shopIds" column="shop_ids"/>
<result property="sort" column="sort"/>
<result property="state" column="state"/>
<result property="createdAt" column="created_at"/>
<result property="updatedAt" column="updated_at"/>
</resultMap>
<select id="selectBanner" resultMap="BannerResult" parameterType="SysBanner">
select * from sys_banner
<where>
<if test="type != null ">type = #{type}</if>
<if test="target != null ">and target = #{target}</if>
<if test="province != null and province != ''">and province like concat('%', #{province}, '%')</if>
<if test="city != null and city != ''">and city like concat('%', #{city}, '%')</if>
<if test="area != null and area != ''">and area like concat('%', #{area}, '%')</if>
<if test="shopIds != null and shopIds != ''">and shop_ids like concat('%', #{shopIds}, '%')</if>
<if test="state != null ">and state = #{state}</if>
</where>
order by created_at desc
</select>
<insert id="createBanner" parameterType="SysBanner" useGeneratedKeys="true" keyProperty="id">
insert into sys_banner(image, page, `type`, target, province, city, area, shop_ids, `sort`, `state`, created_at, updated_at)
values (#{image},#{page},#{type},#{target},#{province},#{city},#{area},#{shopIds},#{sort},#{state},#{createdAt},#{updatedAt})
</insert>
<insert id="updateBanner" parameterType="SysBanner" useGeneratedKeys="true" keyProperty="id">
update sys_banner set
image = #{image},
page = #{page},
`type` = #{type},
target = #{target},
province = #{province},
city = #{city},
area = #{area},
shop_ids = #{shopIds},
`sort` = #{sort},
updated_at = #{updatedAt}
where id = #{id}
</insert>
<insert id="updateState" parameterType="SysBanner" useGeneratedKeys="true" keyProperty="id">
update sys_banner set `state` = #{state}, updated_at = #{updatedAt} where id = #{id}
</insert>
<insert id="delete" parameterType="Long" useGeneratedKeys="true" keyProperty="id">
delete from sys_banner where id = #{id}
</insert>
<select id="selectBanners" resultMap="BannerResult">
select * from sys_banner where `type` = #{type} and `target` = #{target} and `state` = 0 order by sort, created_at
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment