|
@@ -20,6 +20,7 @@ import cn.newfeifan.mall.module.distri.enums.CaclEnum;
|
|
|
import cn.newfeifan.mall.module.distri.service.integral.IntegralService;
|
|
|
import cn.newfeifan.mall.module.member.api.address.MemberAddressApi;
|
|
|
import cn.newfeifan.mall.module.member.api.address.dto.MemberAddressRespDTO;
|
|
|
+import cn.newfeifan.mall.module.member.service.user.MemberUserService;
|
|
|
import cn.newfeifan.mall.module.pay.api.order.PayOrderApi;
|
|
|
import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderCreateReqDTO;
|
|
|
import cn.newfeifan.mall.module.pay.api.order.dto.PayOrderRespDTO;
|
|
@@ -32,6 +33,7 @@ import cn.newfeifan.mall.module.product.dal.dataobject.sku.ProductSkuDO;
|
|
|
import cn.newfeifan.mall.module.product.dal.mysql.sku.ProductSkuMapper;
|
|
|
import cn.newfeifan.mall.module.sale.dal.dataobject.shop.ShopDO;
|
|
|
import cn.newfeifan.mall.module.sale.dal.mysql.shop.ShopMapper;
|
|
|
+import cn.newfeifan.mall.module.system.service.user.AdminUserService;
|
|
|
import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO;
|
|
|
import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
|
|
|
import cn.newfeifan.mall.module.trade.controller.admin.order.vo.TradeOrderUpdateAddressReqVO;
|
|
@@ -50,6 +52,7 @@ import cn.newfeifan.mall.module.trade.dal.mysql.order.TradeOrderMapper;
|
|
|
import cn.newfeifan.mall.module.trade.dal.redis.no.TradeNoRedisDAO;
|
|
|
import cn.newfeifan.mall.module.trade.enums.delivery.DeliveryTypeEnum;
|
|
|
import cn.newfeifan.mall.module.trade.enums.order.*;
|
|
|
+import cn.newfeifan.mall.module.trade.enums.wxmessage.WcChatMessageTemplateIdEnum;
|
|
|
import cn.newfeifan.mall.module.trade.framework.order.config.TradeOrderProperties;
|
|
|
import cn.newfeifan.mall.module.trade.framework.order.core.annotations.TradeOrderLog;
|
|
|
import cn.newfeifan.mall.module.trade.framework.order.core.utils.TradeOrderLogUtils;
|
|
@@ -63,6 +66,7 @@ import cn.newfeifan.mall.module.trade.service.price.TradePriceService;
|
|
|
import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateReqBO;
|
|
|
import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateRespBO;
|
|
|
import cn.newfeifan.mall.module.trade.service.price.calculator.TradePriceCalculatorHelper;
|
|
|
+import cn.newfeifan.mall.module.trade.utils.wechat.WcChatMessageUtils;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.jetbrains.annotations.NotNull;
|
|
@@ -73,8 +77,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
|
+import java.text.DecimalFormat;
|
|
|
import java.time.LocalDateTime;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
import static cn.newfeifan.mall.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.*;
|
|
@@ -145,6 +152,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
@Resource
|
|
|
private OrderPercentageMapper orderPercentageMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private MemberUserService memberUserService;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private WcChatMessageUtils wcChatMessageUtils;
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private AdminUserService adminUserService;
|
|
|
+
|
|
|
// =================== Order ===================
|
|
|
|
|
|
|
|
@@ -954,11 +970,42 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
|
|
|
String OrderNum =order.getNo();
|
|
|
integralService.updateUserIntegral(tradeOrderDO.getUserId(), CaclEnum.ORDER_GET_FREEZE_INTEGRAL, 0l,totalFreezeAmount,tradeOrderId,OrderNum);
|
|
|
|
|
|
+
|
|
|
+ // 发送给微信消息给系统用户待发货消息
|
|
|
+ sentWcChatMessage(order);
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private void sentWcChatMessage(TradeOrderDO order){
|
|
|
+ List<String> params = new ArrayList<>();
|
|
|
+ DecimalFormat df = new DecimalFormat("0.00");
|
|
|
+ String formattedPrice = df.format((double) order.getPayPrice() / 100);
|
|
|
+
|
|
|
+ params.add("¥ " + formattedPrice);
|
|
|
+ params.add(order.getNo());
|
|
|
+ params.add(memberUserService.getUser(order.getUserId()).getNickname());
|
|
|
+
|
|
|
+ List<TradeOrderItemDO> tradeOrderItemDOS = tradeOrderItemMapper.selectListByOrderId(order.getId());
|
|
|
+ List<String> productNames = tradeOrderItemDOS.stream().map(TradeOrderItemDO::getSpuName).collect(Collectors.toList());
|
|
|
+ String name = productNames.toString();
|
|
|
+
|
|
|
+ // 去除首尾的括号,并去除空格
|
|
|
+ name = name.substring(1, name.length() - 1).trim();
|
|
|
+
|
|
|
+ params.add(name);
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ params.add(LocalDateTime.now().format(formatter));
|
|
|
+
|
|
|
+ List<Long> adminUsers = adminUserService.getUserIdsByShop(order.getShopId());
|
|
|
+ for (Long aUserId : adminUsers) {
|
|
|
+ //发送信息
|
|
|
+ wcChatMessageUtils.sendWcChatMessage(order.getUserId(), WcChatMessageTemplateIdEnum.ORDER_NO_DELIVERY.getTemplateId(),
|
|
|
+ params, aUserId, order.getUserId(), order.getId());
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 校验交易订单满足被支付的条件
|
|
|
* <p>
|