优化订单商品类型

This commit is contained in:
lifenlong 2021-07-07 16:17:38 +08:00
parent 6235faba96
commit 00e93c91f5
7 changed files with 87 additions and 61 deletions

View File

@ -144,6 +144,7 @@ ignored:
- /buyer/promotion/pintuan/**
- /buyer/promotion/seckill/**
- /buyer/promotion/pointsGoods/**
- /buyer/promotion/coupon
- /buyer/memberEvaluation/**/goodsEvaluation
- /buyer/memberEvaluation/**/evaluationNumber
- /buyer/appVersion/**
@ -163,6 +164,7 @@ ignored:
- /v2/api-docs
- /configuration/ui
- /boot-admin
- /manager/promotion/seckill/init
statics:
- /**/*.js
- /**/*.css
@ -295,6 +297,8 @@ lili:
notice-send-group: lili_send_notice_group
rocketmq:
name-server: 192.168.0.116:9876
namesrvAddr: 192.168.0.116:9876
isVIPChannel: false
producer:
group: lili_group
send-message-timeout: 30000

View File

@ -61,40 +61,35 @@ public class StudioServiceImpl extends ServiceImpl<StudioMapper, Studio> impleme
@Override
public Boolean create(Studio studio) {
try {
//创建小程序直播
Map<String, String> roomMap = wechatLivePlayerUtil.create(studio);
studio.setRoomId(Convert.toInt(roomMap.get("roomId")));
studio.setQrCodeUrl(roomMap.get("qrcodeUrl"));
studio.setStoreId(UserContext.getCurrentUser().getStoreId());
studio.setStatus(StudioStatusEnum.NEW.name());
//直播间添加成功发送直播间开启关闭延时任务
if (this.save(studio)) {
//直播开启延时任务
BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.START.name());
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getStartTime()) * 1000L,
broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
//创建小程序直播
Map<String, String> roomMap = wechatLivePlayerUtil.create(studio);
studio.setRoomId(Convert.toInt(roomMap.get("roomId")));
studio.setQrCodeUrl(roomMap.get("qrcodeUrl"));
studio.setStoreId(UserContext.getCurrentUser().getStoreId());
studio.setStatus(StudioStatusEnum.NEW.name());
//直播间添加成功发送直播间开启关闭延时任务
if (this.save(studio)) {
//直播开启延时任务
BroadcastMessage broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.START.name());
TimeTriggerMsg timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getStartTime()) * 1000L,
broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
//直播结束延时任务
broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.END.name());
timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getEndTime()) * 1000L, broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
}
return true;
} catch (Exception e) {
throw new ServiceException(ResultCode.ERROR);
}
//直播结束延时任务
broadcastMessage = new BroadcastMessage(studio.getId(), StudioStatusEnum.END.name());
timeTriggerMsg = new TimeTriggerMsg(TimeExecuteConstant.BROADCAST_EXECUTOR,
Long.parseLong(studio.getEndTime()) * 1000L, broadcastMessage,
DelayQueueTools.wrapperUniqueKey(DelayTypeEnums.BROADCAST, studio.getId()),
rocketmqCustomProperties.getPromotionTopic());
//发送促销活动开始的延时任务
this.timeTrigger.addDelay(timeTriggerMsg);
}
return true;
}

View File

@ -37,7 +37,7 @@ public class WechatLivePlayerUtil {
* @param studio 小程序直播
* @return 房间ID
*/
public Map<String, String> create(Studio studio) throws Exception {
public Map<String, String> create(Studio studio) {
//发送url
String url = "https://api.weixin.qq.com/wxaapi/broadcast/room/create?access_token=";
//添加直播间

View File

@ -4,6 +4,7 @@ import cn.hutool.json.JSONUtil;
import cn.lili.base.BaseEntity;
import cn.lili.common.utils.BeanUtil;
import cn.lili.modules.base.entity.enums.ClientTypeEnum;
import cn.lili.modules.goods.entity.enums.GoodsTypeEnum;
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum;
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
@ -14,10 +15,7 @@ import cn.lili.modules.order.order.entity.enums.PayStatusEnum;
import cn.lili.modules.promotion.entity.dos.PromotionGoods;
import cn.lili.modules.promotion.entity.enums.PromotionTypeEnum;
import cn.lili.modules.order.cart.entity.dto.TradeDTO;
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum;
import cn.lili.modules.order.cart.entity.vo.CartVO;
import cn.lili.modules.order.order.entity.dto.PriceDetailDTO;
import cn.lili.modules.order.order.entity.enums.*;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -172,7 +170,7 @@ public class Order extends BaseEntity {
private Boolean needReceipt;
@ApiModelProperty(value = "是否为其他订单下的订单如果是则为依赖订单的sn否则为空")
private String parentOrderSn;
private String parentOrderSn="";
@ApiModelProperty(value = "是否为某订单类型的订单如果是则为订单类型的id否则为空")
private String promotionId;
@ -219,25 +217,9 @@ public class Order extends BaseEntity {
BeanUtil.copyProperties(tradeDTO, this);
BeanUtil.copyProperties(cartVO.getPriceDetailDTO(), this);
BeanUtil.copyProperties(cartVO, this);
//订单类型判断--普通订单虚拟订单
if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.CART) || tradeDTO.getCartTypeEnum().equals(CartTypeEnum.BUY_NOW)) {
this.setOrderType(OrderTypeEnum.NORMAL.name());
} else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.VIRTUAL)) {
this.setOrderType(tradeDTO.getCartTypeEnum().name());
}
this.setId(oldId);
//促销信息填充
// if (cartVO.getSkuList().get(0).getPromotions() != null && tradeDTO.getCartTypeEnum().equals(CartTypeEnum.PINTUAN)) {
// Optional<String> pintuanId = cartVO.getSkuList().get(0).getPromotions().stream().filter(i -> i.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())).map(PromotionGoods::getPromotionId).findFirst();
// if (pintuanId.isPresent()) {
// promotionId = pintuanId.get();
// this.setOrderType(OrderTypeEnum.PINTUAN.name());
// if (tradeDTO.getParentOrderSn() == null) {
// this.setParentOrderSn("");
// }
// }
// }
//填写订单类型
this.setTradeType(cartVO,tradeDTO);
setId(oldId);
//设置默认支付状态
this.setOrderStatus(OrderStatusEnum.UNPAID.name());
@ -264,8 +246,46 @@ public class Order extends BaseEntity {
}
this.setUseStoreMemberCouponIds(storeCouponIds.toString());
}
}
/**
* 填写交易订单类型
* 1.判断是普通促销订单
* 2.普通订单进行区分实物订单虚拟订单
* 3.促销订单判断货物进行区分实物虚拟商品
* 4.拼团订单需要填写父订单ID
* @param cartVO 购物车VO
* @param tradeDTO 交易DTO
*/
private void setTradeType(CartVO cartVO, TradeDTO tradeDTO){
//判断是否为普通订单促销订单
if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.CART) || tradeDTO.getCartTypeEnum().equals(CartTypeEnum.BUY_NOW)) {
this.setOrderType(OrderTypeEnum.NORMAL.name());
}else if (tradeDTO.getCartTypeEnum().equals(CartTypeEnum.VIRTUAL)) {
this.setOrderType(OrderTypeEnum.VIRTUAL.name());
}else{
//促销订单拼团积分-判断购买的是虚拟商品还是实物商品
String goodsType=cartVO.getSkuList().get(0).getGoodsSku().getGoodsType();
if(goodsType.equals(GoodsTypeEnum.PHYSICAL_GOODS.name())){
this.setOrderType(OrderTypeEnum.NORMAL.name());
}else{
this.setOrderType(OrderTypeEnum.VIRTUAL.name());
}
//填写订单的促销类型
this.setOrderPromotionType(tradeDTO.getCartTypeEnum().name());
//判断是否为拼团订单如果为拼团订单获取拼团ID判断是否为主订单
if (tradeDTO.getCartTypeEnum().name().equals(PromotionTypeEnum.PINTUAN.name())) {
Optional<String> pintuanId = cartVO.getSkuList().get(0).getPromotions().stream().filter(i -> i.getPromotionType().equals(PromotionTypeEnum.PINTUAN.name())).map(PromotionGoods::getPromotionId).findFirst();
promotionId = pintuanId.get();
}
}
}
public PriceDetailDTO getPriceDetailDTO() {
try {
@ -279,4 +299,5 @@ public class Order extends BaseEntity {
this.priceDetail = JSONUtil.toJsonStr(priceDetail);
}
}

View File

@ -666,16 +666,16 @@ public class OrderServiceImpl extends ServiceImpl<OrderMapper, Order> implements
* 根据提供的拼团订单列表更新拼团状态为拼团成功
* 循环订单列表根据不同的订单类型进行确认订单
*
* @param list 需要更新拼团状态为成功的拼团订单列表
* @param orderList 需要更新拼团状态为成功的拼团订单列表
*/
private void pintuanOrderSuccess(List<Order> list) {
list.forEach(order -> {
private void pintuanOrderSuccess(List<Order> orderList) {
for (Order order:orderList) {
if (order.getOrderType().equals(OrderTypeEnum.VIRTUAL.name())) {
this.virtualOrderConfirm(order.getSn());
} else if (order.getOrderType().equals(OrderTypeEnum.NORMAL.name())) {
this.normalOrderConfirm(order.getSn());
}
});
}
}
/**

View File

@ -63,6 +63,12 @@ public class PromotionGoods extends BaseEntity {
@ApiModelProperty(value = "促销工具类型")
private String promotionType;
/**
* @see cn.lili.modules.goods.entity.enums.GoodsTypeEnum
*/
@ApiModelProperty(value = "商品类型")
private String goodsType;
@ApiModelProperty(value = "活动标题")
private String title;

View File

@ -56,7 +56,7 @@ public class StudioStoreController {
@ApiOperation(value = "修改直播间")
@PutMapping("/edit")
public ResultMessage<Object> edit(@Validated Studio studio) {
public ResultMessage<Object> edit(Studio studio) {
if (studioService.edit(studio)) {
return ResultUtil.success(ResultCode.SUCCESS);
}