|
|
@ -10,14 +10,20 @@ import com.qs.serve.common.model.enums.SystemModule; |
|
|
|
import com.qs.serve.common.util.PageUtil; |
|
|
|
import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue; |
|
|
|
import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo; |
|
|
|
import com.qs.serve.modules.goods.entity.bo.GoodsSkuImportBo; |
|
|
|
import com.qs.serve.modules.goods.entity.bo.GoodsSpuImportBo; |
|
|
|
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; |
|
|
|
import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo; |
|
|
|
import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService; |
|
|
|
import com.qs.serve.modules.sale.entity.SalePlanGoods; |
|
|
|
import com.qs.serve.modules.sale.service.SalePlanGoodsService; |
|
|
|
import com.qs.serve.modules.tbs.common.TbsGoodsType; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsActivityGoods; |
|
|
|
import com.qs.serve.modules.tbs.entity.TbsBudgetCondition; |
|
|
|
import com.qs.serve.modules.tbs.service.TbsActivityGoodsService; |
|
|
|
import com.qs.serve.modules.tbs.service.TbsBudgetConditionService; |
|
|
|
import com.qs.serve.modules.tzc.entity.TzcPolicyGoods; |
|
|
|
import com.qs.serve.modules.tzc.service.TzcPolicyGoodsService; |
|
|
|
import lombok.AllArgsConstructor; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.security.access.prepost.PreAuthorize; |
|
|
@ -28,6 +34,7 @@ import com.qs.serve.modules.goods.service.GoodsSkuService; |
|
|
|
|
|
|
|
import javax.validation.Valid; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Random; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
@ -46,6 +53,8 @@ public class GoodsSkuController { |
|
|
|
private GoodsSkuSpecValueService goodsSkuSpecValueService; |
|
|
|
private TbsActivityGoodsService activityGoodsService; |
|
|
|
private TbsBudgetConditionService budgetConditionService; |
|
|
|
private SalePlanGoodsService salePlanGoodsService; |
|
|
|
private TzcPolicyGoodsService policyGoodsService; |
|
|
|
|
|
|
|
/** |
|
|
|
* 列表(传入spuId获取spu规格列表) |
|
|
@ -161,7 +170,7 @@ public class GoodsSkuController { |
|
|
|
@PreAuthorize("hasRole('goods:sku:delete')") |
|
|
|
public R<?> deleteById(@PathVariable("id") Long id){ |
|
|
|
QueryWrapper lqw1 = new QueryWrapper<>(); |
|
|
|
lqw1.in("target_type", TbsGoodsType.sku.name()); |
|
|
|
lqw1.eq("target_type", TbsGoodsType.sku.name()); |
|
|
|
lqw1.eq("target_id",id); |
|
|
|
if(activityGoodsService.count(lqw1)>0){ |
|
|
|
return R.error("活动含有当前商品,删除失败"); |
|
|
@ -169,6 +178,12 @@ public class GoodsSkuController { |
|
|
|
if(budgetConditionService.count(lqw1)>0){ |
|
|
|
return R.error("预算含有当前商品,删除失败"); |
|
|
|
} |
|
|
|
if(salePlanGoodsService.count(lqw1)>0){ |
|
|
|
return R.error("销售计划含有当前商品,删除失败"); |
|
|
|
} |
|
|
|
if(policyGoodsService.count(lqw1)>0){ |
|
|
|
return R.error("政策含有当前商品,删除失败"); |
|
|
|
} |
|
|
|
boolean result = goodsSkuService.removeById(id); |
|
|
|
if(result){ |
|
|
|
//删除商品规格值
|
|
|
@ -176,7 +191,6 @@ public class GoodsSkuController { |
|
|
|
lqw2.eq(GoodsSkuSpecValue::getSkuId,id); |
|
|
|
goodsSkuSpecValueService.remove(lqw2); |
|
|
|
} |
|
|
|
|
|
|
|
return R.isTrue(result); |
|
|
|
} |
|
|
|
|
|
|
@ -187,15 +201,64 @@ public class GoodsSkuController { |
|
|
|
*/ |
|
|
|
@PostMapping("/importSku") |
|
|
|
@SysLog(module = SystemModule.GOODS, title = "import", biz = BizType.INSERT) |
|
|
|
public R<?> importSpu(@RequestBody @Valid GoodsSpuImportBo param){ |
|
|
|
public R<?> importSpu(@RequestBody @Valid GoodsSkuImportBo param){ |
|
|
|
final String UPDATE = "update"; |
|
|
|
final String DELETE = "delete"; |
|
|
|
final String SAVE = "save"; |
|
|
|
Map<String,List<GoodsSkuImportBo.SkuItem>> skuItemList = param.getSkuList().stream().collect(Collectors.groupingBy(GoodsSkuImportBo.SkuItem::getOpt)); |
|
|
|
//处理删除
|
|
|
|
List<GoodsSkuImportBo.SkuItem> delList = skuItemList.get(DELETE); |
|
|
|
List<String> delSkuCodes = delList.stream().map(GoodsSkuImportBo.SkuItem::getSkuCode).collect(Collectors.toList()); |
|
|
|
QueryWrapper lqw1 = new QueryWrapper<>(); |
|
|
|
lqw1.eq("target_type", TbsGoodsType.sku.name()); |
|
|
|
lqw1.eq("target_code",delSkuCodes); |
|
|
|
lqw1.select("target_code"); |
|
|
|
List<TbsActivityGoods> activityGoodsList = activityGoodsService.list(lqw1); |
|
|
|
List<TbsBudgetCondition> budgetConditionList = budgetConditionService.list(lqw1); |
|
|
|
List<SalePlanGoods> salePlanGoodsList = salePlanGoodsService.list(lqw1); |
|
|
|
for (TbsActivityGoods item : activityGoodsList) { |
|
|
|
for (GoodsSkuImportBo.SkuItem skuItem : param.getSkuList()) { |
|
|
|
if(item.getTargetCode().equals(skuItem.getSkuCode())&&DELETE.equals(skuItem.getOpt())){ |
|
|
|
skuItem.setErrMsg(skuItem.getErrMsg()==null?"活动含有当前商品,删除失败;":skuItem.getErrMsg()+"活动含有当前商品,删除失败;"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
for (TbsBudgetCondition item : budgetConditionList) { |
|
|
|
for (GoodsSkuImportBo.SkuItem skuItem : param.getSkuList()) { |
|
|
|
if(item.getTargetCode().equals(skuItem.getSkuCode())&&DELETE.equals(skuItem.getOpt())){ |
|
|
|
skuItem.setErrMsg(skuItem.getErrMsg()==null?"预算含有当前商品,删除失败;":skuItem.getErrMsg()+"预算含有当前商品,删除失败;"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
for (SalePlanGoods item : salePlanGoodsList) { |
|
|
|
for (GoodsSkuImportBo.SkuItem skuItem : param.getSkuList()) { |
|
|
|
if(item.getTargetCode().equals(skuItem.getSkuCode())&&DELETE.equals(skuItem.getOpt())){ |
|
|
|
skuItem.setErrMsg(skuItem.getErrMsg()==null?"销售计划含有当前商品,删除失败;":skuItem.getErrMsg()+"销售计划含有当前商品,删除失败;"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
//执行删除
|
|
|
|
List<String> skuCodeToDelList = param.getSkuList().stream() |
|
|
|
.filter(a->a.getErrMsg()==null) |
|
|
|
.map(GoodsSkuImportBo.SkuItem::getSkuCode) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
if(skuCodeToDelList.size()>0){ |
|
|
|
LambdaQueryWrapper<GoodsSku> delLqw = new LambdaQueryWrapper<>(); |
|
|
|
delLqw.in(GoodsSku::getSkuCode,skuCodeToDelList); |
|
|
|
goodsSkuService.remove(delLqw); |
|
|
|
} |
|
|
|
|
|
|
|
for (GoodsSpuImportBo.SpuItem spuItem : param.getSpuList()) { |
|
|
|
//处理更新和新增
|
|
|
|
for (GoodsSkuImportBo.SkuItem skuItem : param.getSkuList()) { |
|
|
|
String opt = skuItem.getOpt(); |
|
|
|
if(UPDATE.equals(opt)){ |
|
|
|
|
|
|
|
} |
|
|
|
//TODO 更新
|
|
|
|
}else if (SAVE.equals(opt)){ |
|
|
|
//TODO 更新
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
return R.ok(param); |
|
|
|
} |
|
|
|
|
|
|
|