!244 fix: 修复商品模版/商品草稿,保存批发规则无效问题

Merge pull request !244 from OceansDeep/feature/pg
This commit is contained in:
OceansDeep 2022-10-14 07:47:57 +00:00 committed by Gitee
commit 07d9cfe5bc
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
3 changed files with 46 additions and 18 deletions

View File

@ -2,11 +2,14 @@ package cn.lili.event.impl;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.text.CharSequenceUtil;
import cn.lili.event.AfterSaleStatusChangeEvent;
import cn.lili.event.OrderStatusChangeEvent;
import cn.lili.modules.order.aftersale.entity.dos.AfterSale;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dto.OrderMessage;
import cn.lili.modules.order.order.entity.enums.OrderStatusEnum;
import cn.lili.modules.order.order.service.OrderService;
import cn.lili.modules.order.trade.entity.enums.AfterSaleStatusEnum;
import cn.lili.modules.promotion.service.MemberCouponService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -18,7 +21,7 @@ import org.springframework.stereotype.Service;
* @since 2022/8/12
**/
@Service
public class MemberCouponExecute implements OrderStatusChangeEvent {
public class MemberCouponExecute implements OrderStatusChangeEvent, AfterSaleStatusChangeEvent {
/**
* 订单
@ -33,15 +36,30 @@ public class MemberCouponExecute implements OrderStatusChangeEvent {
public void orderChange(OrderMessage orderMessage) {
// 订单取消返还优惠券
if (orderMessage.getNewStatus() == OrderStatusEnum.CANCELLED) {
Order order = orderService.getBySn(orderMessage.getOrderSn());
if (CharSequenceUtil.isNotEmpty(order.getUseStoreMemberCouponIds())) {
memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUseStoreMemberCouponIds().split(",")));
}
if (CharSequenceUtil.isNotEmpty(order.getUsePlatformMemberCouponId())) {
memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUsePlatformMemberCouponId().split(",")));
}
this.refundCoupon(orderMessage.getOrderSn());
}
}
@Override
public void afterSaleStatusChange(AfterSale afterSale) {
// 售后完成返还优惠券
if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) {
this.refundCoupon(afterSale.getOrderSn());
}
}
/**
* 退款返还优惠券
* @param orderSn 订单编号
*/
private void refundCoupon(String orderSn) {
Order order = orderService.getBySn(orderSn);
if (CharSequenceUtil.isNotEmpty(order.getUseStoreMemberCouponIds())) {
memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUseStoreMemberCouponIds().split(",")));
}
if (CharSequenceUtil.isNotEmpty(order.getUsePlatformMemberCouponId())) {
memberCouponService.recoveryMemberCoupon(ListUtil.toList(order.getUsePlatformMemberCouponId().split(",")));
}
}
}

View File

@ -5,15 +5,13 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONUtil;
import cn.lili.modules.goods.entity.dos.*;
import cn.lili.modules.goods.entity.dto.DraftGoodsDTO;
import cn.lili.modules.goods.entity.dto.DraftGoodsSearchParams;
import cn.lili.modules.goods.entity.dto.GoodsOperationDTO;
import cn.lili.modules.goods.entity.dto.GoodsParamsDTO;
import cn.lili.modules.goods.entity.dto.*;
import cn.lili.modules.goods.entity.vos.DraftGoodsVO;
import cn.lili.modules.goods.mapper.DraftGoodsMapper;
import cn.lili.modules.goods.service.*;
import cn.lili.modules.goods.sku.GoodsSkuBuilder;
import cn.lili.mybatis.util.PageUtil;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
@ -75,13 +73,23 @@ public class DraftGoodsServiceImpl extends ServiceImpl<DraftGoodsMapper, DraftGo
draftGoods.setSmall(goodsGallery.getSmall());
draftGoods.setThumbnail(goodsGallery.getThumbnail());
}
// 商品图片
draftGoods.setGoodsGalleryListJson(JSONUtil.toJsonStr(draftGoods.getGoodsGalleryList()));
// 检查是否需要生成索引
List<GoodsSku> goodsSkus = GoodsSkuBuilder.buildBatch(new Goods(draftGoods), draftGoods.getSkuList());
goodsSkuService.renderGoodsSkuList(goodsSkus, GoodsOperationDTO.builder().goodsTemplateFlag(true).wholesaleList(draftGoods.getWholesaleList()).salesModel(draftGoods.getSalesModel()).build());
draftGoods.setSkuListJson(JSONUtil.toJsonStr(goodsSkus));
// 商品参数
draftGoods.setGoodsParamsListJson(JSONUtil.toJsonStr(draftGoods.getGoodsParamsDTOList()));
this.saveOrUpdate(draftGoods);
boolean result = this.saveOrUpdate(draftGoods);
if (result) {
// 商品sku
List<GoodsSku> goodsSkus = GoodsSkuBuilder.buildBatch(new Goods(draftGoods), draftGoods.getSkuList());
for (WholesaleDTO wholesaleDTO : draftGoods.getWholesaleList()) {
wholesaleDTO.setTemplateId(draftGoods.getId());
}
goodsSkuService.renderGoodsSkuList(goodsSkus, GoodsOperationDTO.builder().goodsTemplateFlag(true).wholesaleList(draftGoods.getWholesaleList()).salesModel(draftGoods.getSalesModel()).build());
LambdaUpdateWrapper<DraftGoods> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(DraftGoods::getId, draftGoods.getId());
updateWrapper.set(DraftGoods::getSkuListJson, JSONUtil.toJsonStr(goodsSkus));
this.update(updateWrapper);
}
}
@Override

View File

@ -55,7 +55,9 @@ public class WholesaleSaleModelRenderImpl implements SalesModelRender {
skus.setPrice(collect.get(0).getPrice());
skus.setCost(collect.get(0).getPrice());
}
if (Boolean.FALSE.equals(goodsOperationDTO.getGoodsTemplateFlag())) {
if (Boolean.TRUE.equals(goodsOperationDTO.getGoodsTemplateFlag())) {
wholesaleService.removeByTemplateId(goodsSkus.get(0).getGoodsId());
} else {
wholesaleService.removeByGoodsId(goodsSkus.get(0).getGoodsId());
}
wholesaleService.saveOrUpdateBatch(collect);