Browse Source

订单调整

v1.0
Yen 2 years ago
parent
commit
70e9351819
  1. 116
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  2. 19
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  3. 2
      src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java
  4. 9
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuMapper.java
  5. 4
      src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java
  6. 13
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java
  7. 11
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java
  8. 2
      src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java
  9. 46
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  10. 1
      src/main/resources/mapper/goods/GoodsSkuMapper.xml
  11. 103
      src/main/resources/mapper/goods/GoodsSpuMapper.xml

116
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -28,6 +28,7 @@ import io.netty.util.internal.StringUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
@ -83,11 +84,11 @@ public class GoodsSpuController {
}
/**
* 翻页搜索(组件接口),拓展SKU数据
* spu下单查询(已弃用)
* @param param
* @return
*/
@GetMapping("/shelfPageToSku")
//@GetMapping("/shelfPageToSku")
public R<PageVo<GoodsSpu>> shelfPageToSku(GoodsSpu param){
PageVo<GoodsSpu> result = this.getShelfPage(param).getData();
List<GoodsSpu> goodsSpuList = this.buildGoodsSpuInfo(param.getSupplierCode(),param.getSelectSpecialFlag(), result.getList());
@ -95,6 +96,45 @@ public class GoodsSpuController {
return R.ok(result);
}
/**
* spu下单查询
* @param param
* @return
*/
@GetMapping("/getSkuJoinSpuList")
public R<PageVo<GoodsSpu>> getSkuJoinSpuList(GoodsSpu param){
Long total = goodsSpuService.selectCountSkuJoinSpuList(param);
if(total<1){
return R.byEmptyList();
}
List<GoodsSpu> list = goodsSpuService.selectSkuJoinSpuList(param);
for (GoodsSpu spu : list) {
spu.setUuid(spu.getId()+"_"+spu.getSkuId());
}
List<String> skuCodes = list.stream().map(GoodsSpu::getSkuCode).collect(Collectors.toList());
this.initSpuWithCustomerPrice(param.getSupplierCode(), list, skuCodes);
return R.byPageList(total,list);
}
/**
* 初始化spu的客户价格
* @param cusCode
* @param list
* @param skuCodes
*/
private void initSpuWithCustomerPrice(String cusCode, List<GoodsSpu> list, List<String> skuCodes) {
List<InventoryCusPrice> cusPriceList = this.getInventoryCusPrices(cusCode, skuCodes);
if(cusPriceList!=null){
for (InventoryCusPrice cusPrice : cusPriceList) {
for (GoodsSpu spu : list) {
if(cusPrice.getInvCode().equals(spu.getSkuCode())){
spu.setSkuPrice(cusPrice.getPrice());
break;
}
}
}
}
}
/**
@ -108,13 +148,26 @@ public class GoodsSpuController {
List<String> invCodes = dispatchDataMapper.selectLast2MonthInvCode(date,query.getSupplierCode());
if(CollectionUtil.isNotEmpty(invCodes)){
List<GoodsSku> goodsSkus = goodsSkuService.getByCodes(invCodes);
List<Long> goodsSpuIds = goodsSkus.stream().map(GoodsSku::getSpuId).distinct().collect(Collectors.toList());
GoodsSpu param = new GoodsSpu();
param.setSelectIds(goodsSpuIds);
param.setSelectCateIds(query.getCateIds());
param.setShelf(1);
List<GoodsSpu> list = goodsSpuService.selectSpuList(param);
List<GoodsSpu> goodsSpuList = this.buildGoodsSpuInfo(query.getSupplierCode(),0, list);
List<GoodsSpu> goodsSpuList = new ArrayList<>();
for (GoodsSku sku : goodsSkus) {
GoodsSpu spu = goodsSpuService.getById(sku.getSpuId());
GoodsCategory cate1 = goodsCategoryService.getById(spu.getCategoryFirst());
if(cate1!=null){
spu.setCateFirstLabel(cate1.getName());
}
GoodsCategory cate2 = goodsCategoryService.getById(spu.getCategorySecond());
if(cate2!=null){
spu.setCateSecondLabel(cate2.getName());
}
GoodsCategory cate3 = goodsCategoryService.getById(spu.getCategoryThird());
if(cate3!=null){
spu.setCateThirdLabel(cate3.getName());
}
spu.toSetSkuInfo(sku);
goodsSpuList.add(spu);
}
this.initSpuWithCustomerPrice(query.getSupplierCode(), goodsSpuList,invCodes);
return R.ok(goodsSpuList);
}
return R.ok(new ArrayList<>());
@ -423,30 +476,19 @@ public class GoodsSpuController {
private List<GoodsSpu> buildGoodsSpuInfo(String supplierCode,Integer selectSpecialFlag, List<GoodsSpu> goodsSpuList) {
List<String> spuCodes = goodsSpuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList());
List<OmsSpuToSkuKey> toSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodes);
List<InventoryCusPrice> inventoryCusPrices = null;
try {
List<String> skuCodes = toSkuKeys.stream().map(OmsSpuToSkuKey::getInvCode).collect(Collectors.toList());
if(skuCodes.size()>0){
InventoryCusPriceQuery query = new InventoryCusPriceQuery();
query.setCusCode(supplierCode);
query.setInvCodes(skuCodes);
R<String> res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
}
}
} catch (Exception e) {
log.error("客户特殊价异常:{}",e.getMessage());
}
List<InventoryCusPrice> inventoryCusPrices = getInventoryCusPrices(supplierCode, skuCodes);
for (GoodsSpu spu : goodsSpuList) {
spu.setUuid(spu.getId()+"_"+spu.getSkuId());
//兼容特殊sku
if(selectSpecialFlag!=null&& selectSpecialFlag.equals(1)){
if(!spu.getSpecialSkuId().equals(0L)){
GoodsSku goodsSku = goodsSkuService.getById(spu.getSpecialSkuId());
spu.setSkuId(goodsSku.getId());
spu.setSkuCode(goodsSku.getSkuCode());
spu.setSkuName(goodsSku.getSkuName());
spu.setSkuPrice(goodsSku.getSalesPrice());
spu.setVolume(goodsSku.getVolume().toString());
spu.setWeight(goodsSku.getWeight().toString());
@ -458,6 +500,7 @@ public class GoodsSpuController {
GoodsSku goodsSku = goodsSkuService.getByCode(skuKey.getInvCode());
spu.setSkuCode(goodsSku.getSkuCode());
spu.setSkuId(goodsSku.getId());
spu.setSkuName(goodsSku.getSkuName());
spu.setSkuPrice(goodsSku.getSalesPrice());
spu.setVolume(goodsSku.getVolume().toString());
spu.setWeight(goodsSku.getWeight().toString());
@ -476,5 +519,30 @@ public class GoodsSpuController {
return goodsSpuList;
}
/**
* 获取客户特殊价格
* @param supplierCode
* @param skuCodes
* @return
*/
@Nullable
private List<InventoryCusPrice> getInventoryCusPrices(String supplierCode, List<String> skuCodes) {
List<InventoryCusPrice> inventoryCusPrices = null;
try {
if(skuCodes.size()>0){
InventoryCusPriceQuery query = new InventoryCusPriceQuery();
query.setCusCode(supplierCode);
query.setInvCodes(skuCodes);
R<String> res = seeYonRequestBaseService.postBase(TbsSeeYonConst.ERP_CUS_INV_PRICE,query,"查询客户特殊价");
if(res.getStatus().equals(200)){
inventoryCusPrices = JsonUtil.jsonToList(res.getData(), InventoryCusPrice.class);
}
}
} catch (Exception e) {
log.error("客户特殊价异常:{}",e.getMessage());
}
return inventoryCusPrices;
}
}

19
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -162,6 +162,9 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false)
private String skuCode;
@TableField(exist = false)
private String skuName;
/** 重量(kg) */
@TableField(exist = false)
@NotNull(message = "重量(kg)不能为空")
@ -176,5 +179,21 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false)
private String supplierCode;
@TableField(exist = false)
private String uuid;
@TableField(exist = false)
private String keyword;
public void toSetSkuInfo(GoodsSku goodsSku){
this.setSkuId(goodsSku.getId());
this.setSkuName(goodsSku.getSkuName());
this.setSkuCode(goodsSku.getSkuCode());
this.setSkuPrice(goodsSku.getSalesPrice());
this.setWeight(goodsSku.getWeight()==null?"0":goodsSku.getWeight().toString());
this.setVolume(goodsSku.getVolume()==null?"0":goodsSku.getVolume().toString());
this.setUuid(goodsSku.getSpuId()+"_"+goodsSku.getId());
}
}

2
src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsSkuBo.java

@ -30,6 +30,8 @@ public class GoodsSkuBo implements Serializable {
/** sku编码 */
private String skuCode;
private String skuName;
/** 商品Id */
@NotNull(message = "商品Id不能为空")
private Long spuId;

9
src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuMapper.java

@ -1,6 +1,8 @@
package com.qs.serve.modules.goods.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.common.model.dto.RowParam;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import org.apache.ibatis.annotations.Param;
@ -15,5 +17,12 @@ public interface GoodsSpuMapper extends BaseMapper<GoodsSpu> {
List<GoodsSpu> selectSpuList(@Param("query") GoodsSpu goodsSpu);
@InterceptorIgnore(tenantLine = "1")
Long selectCountSkuJoinSpuList(@Param("query") GoodsSpu goodsSpu);
@InterceptorIgnore(tenantLine = "1")
List<GoodsSpu> selectSkuJoinSpuList(@Param("query") GoodsSpu goodsSpu, @Param("pageInfo")RowParam rowParam);
}

4
src/main/java/com/qs/serve/modules/goods/service/GoodsSpuService.java

@ -22,6 +22,10 @@ public interface GoodsSpuService extends IService<GoodsSpu> {
List<GoodsSpu> selectSpuList(GoodsSpu goodsSpu);
Long selectCountSkuJoinSpuList(GoodsSpu goodsSpu);
List<GoodsSpu> selectSkuJoinSpuList(GoodsSpu goodsSpu);
GoodsSpuVo getVoById(Long id,String supplierCode);
GoodsSpu getByCode(String code);

13
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java

@ -242,7 +242,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
if(dbGoodSku!=null){
skuCheckLqw.ne(GoodsSku::getId,dbGoodSku.getId());
}
skuCheckLqw.eq(GoodsSku::getSpuId,goodSkuVo.getSkuId());
skuCheckLqw.eq(GoodsSku::getBelong,goodSkuVo.getBelong());
skuCheckLqw.eq(GoodsSku::getOrderFlag,1);
if(this.count(skuCheckLqw)>0){
@ -259,15 +258,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
goodsSku.setId(dbGoodSku.getId());
}
if(goodSkuVo.getSpecValueIds()!=null){
if(goodSkuVo.getSpecValueIds().size()!= GoodsConst.SPEC_COUNT){
Assert.throwEx("规格值数量缺失");
}
List<GoodsSpecValue> goodsSpecValues = goodsSpecValueService.listByIds(goodSkuVo.getSpecValueIds());
Set<Long> specIds = goodsSpecValues.stream().map(GoodsSpecValue::getSpecId).collect(Collectors.toSet());
if(specIds.size()!=GoodsConst.SPEC_COUNT){
Assert.throwEx("规格数量缺失");
}
//校验规格值
String specInfos = goodsSku.getBelong().trim()+";"+goodsSku.getTasteVal().trim()+";"+goodsSku.getWrapVal().trim();
LambdaQueryWrapper<GoodsSku> checkSkuSpec = new LambdaQueryWrapper<>();
@ -283,9 +273,6 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
goodsSku.setSpecInfos(specInfos);
this.saveOrUpdate(goodsSku);
}else {
this.updateById(goodsSku);
}
//更新特殊标识
LambdaQueryWrapper<GoodsSku> specialSkuLqw = new LambdaQueryWrapper<>();
specialSkuLqw.eq(GoodsSku::getSpecialFlag,1);

11
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.goods.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.config.properties.ProjectApisProperties;
import com.qs.serve.common.model.dto.RowParam;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.HttpUtil;
import com.qs.serve.common.util.JsonUtil;
@ -53,6 +54,16 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
return baseMapper.selectSpuList(goodsSpu);
}
@Override
public Long selectCountSkuJoinSpuList(GoodsSpu goodsSpu) {
return baseMapper.selectCountSkuJoinSpuList(goodsSpu);
}
@Override
public List<GoodsSpu> selectSkuJoinSpuList(GoodsSpu goodsSpu) {
return baseMapper.selectSkuJoinSpuList(goodsSpu,new RowParam(true));
}
@Override
public GoodsSpu getByCode(String code) {
LambdaQueryWrapper<GoodsSpu> lqw = new LambdaQueryWrapper<>();

2
src/main/java/com/qs/serve/modules/oms/entity/OmsOrderItem.java

@ -49,6 +49,8 @@ public class OmsOrderItem implements Serializable {
@Length(max = 30,message = "商品名称长度不能超过30字")
private String spuTitle;
private String skuTitle;
/** skuId */
private Long skuId;

46
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -243,11 +243,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
goodsSpuMap.put(goodsSpu.getId(),goodsSpu);
}
List<String> spuCodeList = spuList.stream().map(GoodsSpu::getSpuCode).collect(Collectors.toList());
List<OmsSpuToSkuKey> spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodeList);
/*List<OmsSpuToSkuKey> spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodeList);
Map<String,String> spuGetSkuMap = new HashMap<>(spuToSkuKeys.size());
for (OmsSpuToSkuKey toSkuKey : spuToSkuKeys) {
spuGetSkuMap.put(toSkuKey.getSkuCode(),toSkuKey.getInvCode());
}
}*/
//构建新的item
List<OmsOrderItem> newOrderItemList = new ArrayList<>();
@ -266,8 +266,9 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
if(modifyItem.getSkuId()!=null){
goodsSku = goodsSkuService.getById(modifyItem.getSkuId());
}else {
String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode());
goodsSku = goodsSkuService.getByCode(skuCode);
// String skuCode = spuGetSkuMap.get(goodsSpu.getSpuCode());
// goodsSku = goodsSkuService.getByCode(skuCode);
Assert.throwEx("订单无货或下架了");
}
}
OmsOrderItem orderItem = new OmsOrderItem();
@ -276,6 +277,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setSpuId(goodsSpu.getId());
orderItem.setSpuCode(goodsSpu.getSpuCode());
orderItem.setSpuTitle(goodsSpu.getName());
orderItem.setSkuTitle(goodsSku.getSkuName());
orderItem.setWeight(modifyItem.getWeight());
orderItem.setVolume(modifyItem.getVolume());
if(goodsSku!=null){
@ -354,7 +356,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
order.setSupplierId(Long.parseLong(supplier.getId()));
order.setSupplierCode(supplier.getCode());
order.setSupplierName(supplier.getName());
order.setSupplierAddrId(address.getId());
order.setSupplierAddrId(address!=null?address.getId():0);
order.setBrandRuleId(confirmOrder.getBrandRuleId());
order.setUserId(user.getId());
order.setUserName(user.getName());
@ -368,18 +370,18 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
this.save(order);
//兼容转换
List<OmsSpuToSkuKey> spuToSkuKeys = null;
if(confirmOrder.getLatitudeFrom()!=null&&confirmOrder.getLatitudeFrom().equals("SPU")){
List<String> spuCodes = shoppingCarts.stream().map(OmsShoppingCart::getSpuCode).collect(Collectors.toList());
spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodes);
for (OmsSpuToSkuKey skuKey : spuToSkuKeys) {
for (OmsShoppingCart cart : shoppingCarts) {
if(skuKey.getSkuCode().equals(cart.getSpuCode())){
cart.setSkuCode(skuKey.getInvCode());
}
}
}
}
// List<OmsSpuToSkuKey> spuToSkuKeys = null;
// if(confirmOrder.getLatitudeFrom()!=null&&confirmOrder.getLatitudeFrom().equals("SPU")){
// List<String> spuCodes = shoppingCarts.stream().map(OmsShoppingCart::getSpuCode).collect(Collectors.toList());
// spuToSkuKeys = goodsSpuService.getSpuToSkuInfo(GoodsConst.DEFAULT_PlaCE,spuCodes);
// for (OmsSpuToSkuKey skuKey : spuToSkuKeys) {
// for (OmsShoppingCart cart : shoppingCarts) {
// if(skuKey.getSkuCode().equals(cart.getSpuCode())){
// cart.setSkuCode(skuKey.getInvCode());
// }
// }
// }
// }
List<OmsOrderItem> orderItems = new ArrayList<>();
@ -391,24 +393,27 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
orderItem.setVolume(shoppingCart.getVolume());
if(confirmOrder.getLatitudeFrom()!=null&&confirmOrder.getLatitudeFrom().equals("SPU")){
// spu维度
GoodsSku goodsSku = goodsSkuService.getByCode(orderItem.getSkuCode());
orderItem.setSpuId(shoppingCart.getSpuId());
orderItem.setSpuTitle(shoppingCart.getSpecInfo());
orderItem.setSkuTitle(goodsSku.getSkuName());
orderItem.setSkuId(shoppingCart.getId());
orderItem.setSkuCode(shoppingCart.getSkuCode());
orderItem.setSkuUnit(null);
orderItem.setSkuImg(shoppingCart.getPicUrl());
orderItem.setSpecValues(shoppingCart.getSpecInfo());
orderItem.setSpuCode(shoppingCart.getSpuCode());
GoodsSku goodsSku = goodsSkuService.getByCode(orderItem.getSkuCode());
orderItem.setMarketPrice(goodsSku.getMarketPrice());
orderItem.setSalesPrice(goodsSku.getSalesPrice());
orderItem.setCusPrice(goodsSku.getSalesPrice());
}else {
// 默认sku
GoodSkuVo goodSkuVo = shoppingCart.getGoodSkuVo();
GoodsSpu goodsSpu = goodsSpuService.getByCode(goodSkuVo.getSpuCode());
orderItem.setSpuId(goodSkuVo.getSpuId());
orderItem.setSpuCode(goodSkuVo.getSpuCode());
orderItem.setSpuTitle(goodSkuVo.getName());
orderItem.setSpuTitle(goodsSpu.getName());
orderItem.setSkuTitle(goodsSpu.getSkuName());
orderItem.setSkuId(goodSkuVo.getId());
orderItem.setSkuCode(goodSkuVo.getSkuCode());
orderItem.setSkuUnit(goodSkuVo.getUnitName());
@ -503,6 +508,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
public void buildPriceOrder(String id,String amount) {
OmsOrder omsOrder = super.getById(id);
String userId = AuthContextUtils.getSysUserId();
SysUser sysUser = sysUserService.getById(userId);
if(omsOrder==null || !omsOrder.getUserId().equals(userId)){
Assert.throwEx("订单不存在或被移除");
}
@ -545,7 +551,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
xltOrder.setKeHuBianHao(omsOrder.getSupplierCode());
xltOrder.setShouHuoDiZhi(supplierAddress.getDetail());
xltOrder.setRenYuanBianHao(omsOrder.getUserCode());
xltOrder.setZhuYiShiXian(omsOrder.getRemark());
xltOrder.setZhuYiShiXian(sysUser.getName()+"("+sysUser.getMobile()+")"+omsOrder.getRemark());
xltOrder.setXieRuShiJian(nowTime);
xltOrder.setChuLiShiJian(null);
xltOrder.setRowCreateDate(nowTime);

1
src/main/resources/mapper/goods/GoodsSkuMapper.xml

@ -35,6 +35,7 @@
<sql id="goodsSkuSql">
goods_sku.`id`,
goods_sku.`sku_code`,
goods_sku.`sku_name`,
goods_sku.`spu_id`,
goods_sku.`pic_url`,
goods_sku.`sales_price`,

103
src/main/resources/mapper/goods/GoodsSpuMapper.xml

@ -30,6 +30,15 @@
<result property="belong" column="belong"/>
</resultMap>
<sql id="goodsSkuSql">
goods_sku.volume,
goods_sku.weight,
goods_sku.sales_price as sku_price,
goods_sku.sku_name as sku_name,
goods_sku.id as sku_id,
goods_sku.sku_code as sku_code
</sql>
<sql id="goodsSpuSql">
goods_spu.`id`,
goods_spu.`spu_code`,
@ -55,17 +64,28 @@
goods_spu.`belong`
</sql>
<select id="selectSpuList" parameterType="com.qs.serve.modules.goods.entity.GoodsSpu" resultMap="goodsSpuMap">
SELECT
`cate1`.`name` AS `cate_first_label`,
`cate2`.`name` AS `cate_second_label`,
`cate3`.`name` AS `cate_third_label`,
<include refid="goodsSpuSql"/>
FROM `goods_spu` `goods_spu`
LEFT JOIN `goods_category` `cate1` ON `cate1`.`id` = `goods_spu`.`category_first`
LEFT JOIN `goods_category` `cate2` ON `cate2`.`id` = `goods_spu`.`category_second`
LEFT JOIN `goods_category` `cate3` ON `cate3`.`id` = `goods_spu`.`category_third`
<where>
<sql id="skuWherePart">
<if test="query.belong != null"> and (`goods_sku`.`belong` = #{query.belong} or goods_sku.special_flag=1) </if>
<if test="query.selectSpecialFlag != null and query.selectSpecialFlag == 1">
and `goods_sku`.`special_flag` = 1
and `goods_sku`.id = goods_spu.special_sku_id
</if>
<if test="query.selectSpecialFlag != null and query.selectSpecialFlag == 0">
and `goods_sku`.`special_flag` = 0
</if>
<if test="query.orderFlag != null"> and `goods_sku`.`order_flag` = #{query.orderFlag}</if>
<if test="query.keyword != null and query.keyword != '' ">
and (
`goods_spu`.`name` like concat('%', #{query.keyword},'%') or
`goods_spu`.`spu_code` like concat('%', #{query.keyword},'%') or
`goods_sku`.`sku_code` like concat('%', #{query.keyword},'%') or
`goods_sku`.`sku_name` like concat('%', #{query.keyword},'%')
)
</if>
</sql>
<sql id="spuWherePart">
and `goods_spu`.`del_flag` = 0
<if test="query.id != null"> and `goods_spu`.`id` = #{query.id}</if>
<if test="query.spuCode != null and query.spuCode != ''"> and `goods_spu`.`spu_code` like concat('%', #{query.spuCode},'%')</if>
@ -80,7 +100,6 @@
<if test="query.shelf != null and query.shelf != ''"> and `goods_spu`.`shelf` = #{query.shelf}</if>
<if test="query.sort != null"> and `goods_spu`.`sort` = #{query.sort}</if>
<if test="query.saleNum != null"> and `goods_spu`.`sale_num` = #{query.saleNum}</if>
<if test="query.belong != null"> and `goods_spu`.`belong` = #{query.belong}</if>
<if test="query.tasteValue != null and query.tasteValue != ''"> and `goods_spu`.`taste_value` like concat('%',#{query.tasteValue},'%') </if>
<if test="query.createTime != null"> and `goods_spu`.`create_time` = #{query.createTime}</if>
<if test="query.updateTime != null"> and `goods_spu`.`update_time` = #{query.updateTime}</if>
@ -88,13 +107,13 @@
<if test="query.updateBy != null and query.updateBy != ''"> and `goods_spu`.`update_by` = #{query.updateBy}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `goods_spu`.`tenant_id` = #{query.tenantId}</if>
<if test="query.delFlag != null and query.delFlag != ''"> and `goods_spu`.`del_flag` = #{query.delFlag}</if>
<if test="query.orderFlag != null"> and `goods_spu`.`order_flag` = #{query.orderFlag}</if>
<if test="query.selectSpecialFlag != null and query.selectSpecialFlag == 1">
<!--<if test="query.selectSpecialFlag != null and query.selectSpecialFlag == 1">
and `goods_spu`.`special_sku_id` is not null and `goods_spu`.`special_sku_id` != '0'
</if>
<if test="query.selectSpecialFlag != null and query.selectSpecialFlag == 0">
and (`goods_spu`.`special_sku_id` is null or `goods_spu`.`special_sku_id` = '0')
</if>
</if>-->
<if test="query.searchValue != null and query.searchValue != ''"> and (`goods_spu`.`name` like concat('%',#{query.searchValue},'%') or `goods_spu`.`goods_spu` like concat('%',#{query.searchValue},'%')) </if>
<if test="query.selectIds!=null and query.selectIds.size > 0">
and `goods_spu`.`id` in
@ -116,6 +135,60 @@
#{selectId}
</foreach>)
</if>
</sql>
<select id="selectSpuList" parameterType="com.qs.serve.modules.goods.entity.GoodsSpu" resultMap="goodsSpuMap">
SELECT
`cate1`.`name` AS `cate_first_label`,
`cate2`.`name` AS `cate_second_label`,
`cate3`.`name` AS `cate_third_label`,
<include refid="goodsSpuSql"/>
FROM `goods_spu` `goods_spu`
LEFT JOIN `goods_category` `cate1` ON `cate1`.`id` = `goods_spu`.`category_first`
LEFT JOIN `goods_category` `cate2` ON `cate2`.`id` = `goods_spu`.`category_second`
LEFT JOIN `goods_category` `cate3` ON `cate3`.`id` = `goods_spu`.`category_third`
<where>
<include refid="spuWherePart"></include>
</where>
</select>
<select id="selectSkuJoinSpuList" resultType="com.qs.serve.modules.goods.entity.GoodsSpu">
SELECT
`cate1`.`name` AS `cate_first_label`,
`cate2`.`name` AS `cate_second_label`,
`cate3`.`name` AS `cate_third_label`,
<include refid="goodsSpuSql"/>,
<include refid="goodsSkuSql"/>
FROM (
(SELECT sku.*,ROW_NUMBER() OVER(PARTITION BY sku.spu_id ORDER BY sku.belong_sort) AS rn FROM goods_sku sku WHERE sku.order_flag = 1 AND sku.special_flag = 0)
UNION ALL
SELECT sku.*,1 as rn FROM goods_sku sku WHERE sku.order_flag = 1 AND sku.special_flag = 1
) AS goods_sku
left join goods_spu on goods_sku.spu_id = goods_spu.id
LEFT JOIN `goods_category` `cate1` ON `cate1`.`id` = `goods_spu`.`category_first`
LEFT JOIN `goods_category` `cate2` ON `cate2`.`id` = `goods_spu`.`category_second`
LEFT JOIN `goods_category` `cate3` ON `cate3`.`id` = `goods_spu`.`category_third`
<where>
and rn = 1
<include refid="spuWherePart"></include>
<include refid="skuWherePart"></include>
</where>
limit #{pageInfo.startIndex},#{pageInfo.size}
</select>
<select id="selectCountSkuJoinSpuList" resultType="java.lang.Long">
SELECT
count(1)
FROM (
(SELECT sku.*,ROW_NUMBER() OVER(PARTITION BY sku.spu_id ORDER BY sku.belong_sort) AS rn FROM goods_sku sku WHERE sku.order_flag = 1 AND sku.special_flag = 0)
UNION ALL
SELECT sku.*,1 as rn FROM goods_sku sku WHERE sku.order_flag = 1 AND sku.special_flag = 1
) AS goods_sku
left join goods_spu on goods_sku.spu_id = goods_spu.id
<where>
and rn = 1
<include refid="spuWherePart"></include>
<include refid="skuWherePart"></include>
</where>
</select>

Loading…
Cancel
Save