|
|
@@ -1,10 +1,11 @@
|
|
|
package com.cyksj.service.order.impl;
|
|
|
|
|
|
import cn.hutool.core.date.DateField;
|
|
|
-import cn.hutool.core.date.DateUnit;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.cyksj.common.EnvCommonService;
|
|
|
+import com.cyksj.common.constant.TemplateEnum;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.common.snowflake.Sequence;
|
|
|
import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
|
|
|
@@ -14,6 +15,8 @@ import com.cyksj.config.WeChatConfig;
|
|
|
import com.cyksj.dto.RedisKey;
|
|
|
import com.cyksj.mapper.*;
|
|
|
import com.cyksj.model.dto.H5JsPayParams;
|
|
|
+import com.cyksj.model.dto.WxMpTemplateData;
|
|
|
+import com.cyksj.model.dto.WxMpTemplateMessage;
|
|
|
import com.cyksj.model.entity.*;
|
|
|
import com.cyksj.model.manage.views.OrderDonView;
|
|
|
import com.cyksj.model.request.OrderAttach;
|
|
|
@@ -36,7 +39,8 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.Optional;
|
|
|
|
|
|
-import static com.cyksj.enums.GatewayApiCode.*;
|
|
|
+import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_ALREADY_BE_USER;
|
|
|
+import static com.cyksj.enums.GatewayApiCode.GROUP_INDEX_NOT_FIND;
|
|
|
|
|
|
/**
|
|
|
* @author chan
|
|
|
@@ -83,6 +87,10 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
private final OrderDonMapper orderDonMapper;
|
|
|
|
|
|
+ private final EnvCommonService envCommonService;
|
|
|
+
|
|
|
+ private static final GlobalThreadPoolTaskExecutor TASK_POOL = GlobalThreadPoolTaskExecutor.getInstance();
|
|
|
+
|
|
|
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
@Override
|
|
|
@@ -286,6 +294,49 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
|
|
|
this.updateById(order);
|
|
|
|
|
|
+ //新订单产生 发送模板消息给用户、客服
|
|
|
+ User user = userMapper.selectById(order.getUserId());
|
|
|
+ THREAD_POOL_TASK_EXECUTOR.execute(() -> {
|
|
|
+ try {
|
|
|
+ //发送至用户消息
|
|
|
+ newOderSendMsgByType(order, goodsDon, sku, user, user.getOpenId());
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("向用户发送新订单{}通知消息失败:{}", order.getOrderNo(), e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+// THREAD_POOL_TASK_EXECUTOR.execute(() -> {
|
|
|
+// try {
|
|
|
+// //发送至客服消息
|
|
|
+// //TODO 客服openId
|
|
|
+// newOderSendMsgByType(order, goodsDon, sku, user, "customer service OpenId");
|
|
|
+// } catch (Exception e) {
|
|
|
+// log.error("向客服发送新订单{}通知消息失败:{}", order.getOrderNo(), e);
|
|
|
+// }
|
|
|
+// });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void newOderSendMsgByType(OrderDon order, GoodsDon goodsDon, GoodsDonSku sku, User user, String toPeople) throws Exception {
|
|
|
+ TemplateEnum templateEnum = null;
|
|
|
+ if (EnvCommonService.active.equals(envCommonService.getEnv())) {
|
|
|
+ templateEnum = TemplateEnum.ORDER_TRANSPORT_ENV_TEMPLATE;
|
|
|
+ }else {
|
|
|
+ templateEnum = TemplateEnum.ORDER_TRANSPORT_PRD_TEMPLATE;
|
|
|
+ }
|
|
|
+ WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
|
|
|
+ .toUser(toPeople)
|
|
|
+ .templateId(templateEnum.getTemplateId())
|
|
|
+ //TODO
|
|
|
+ .url(" ")
|
|
|
+ .build();
|
|
|
+ templateMessage.addData(new WxMpTemplateData("first", "新订单通知!"))
|
|
|
+ .addData(new WxMpTemplateData("keyword1", order.getOrderNo()))
|
|
|
+ .addData(new WxMpTemplateData("keyword2", String.format("%s,%s", goodsDon.getTitle(), sku.getSpecVal())))
|
|
|
+ .addData(new WxMpTemplateData("keyword3", user.getNickname()))
|
|
|
+ .addData(new WxMpTemplateData("keyword4", order.getMoney().divide(BigDecimal.valueOf(100)).toString()))
|
|
|
+ .addData(new WxMpTemplateData("keyword5", DateUtil.format(order.getCreatedTime(),"yyyy-MM-dd")))
|
|
|
+ .addData(new WxMpTemplateData("remark", "点击查看详情"));
|
|
|
+
|
|
|
+ weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Throwable.class)
|
|
|
@@ -310,12 +361,48 @@ public class OrderDonServiceImpl extends ServiceImpl<OrderDonMapper, OrderDon> i
|
|
|
groupsRelation.setStatus(GroupsRelation.Status.none);
|
|
|
groupsRelationMapper.updateById(groupsRelation);
|
|
|
delRelation(groupsRelation.getId());
|
|
|
+
|
|
|
+ //车位空余发送模板消息
|
|
|
+// TASK_POOL.execute(()->{
|
|
|
+// try {
|
|
|
+// //TODO 客服openId
|
|
|
+// emptySendMsgNotify(orderDon,"customer service openId");
|
|
|
+// } catch (Exception e) {
|
|
|
+// log.error("发送{}空车位模板消息至客服失败:{}", orderDon.getGoodsId(), e);
|
|
|
+// }
|
|
|
+// });
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void emptySendMsgNotify(OrderDon orderDon, String toPeople) throws Exception {
|
|
|
+ TemplateEnum templateEnum = null;
|
|
|
+ if (EnvCommonService.active.equals(envCommonService.getEnv())) {
|
|
|
+ templateEnum = TemplateEnum.EMPTY_ENV_TEMPLATE;
|
|
|
+ }else {
|
|
|
+ templateEnum = TemplateEnum.EMPTY_PRD_TEMPLATE;
|
|
|
+ }
|
|
|
+ User u = userMapper.selectById(orderDon.getUserId());
|
|
|
+ WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
|
|
|
+ .toUser(toPeople)
|
|
|
+ .templateId(templateEnum.getTemplateId())
|
|
|
+ //TODO
|
|
|
+ .url(" ")
|
|
|
+ .build();
|
|
|
+ GoodsDon goodsDon = goodsDonMapper.selectById(orderDon.getGoodsId());
|
|
|
+ GoodsDonSku goodsDonSku = goodsDonSkuMapper.selectById(orderDon.getSkuId());
|
|
|
+ templateMessage.addData(new WxMpTemplateData("first", "空车位通知!"))
|
|
|
+ .addData(new WxMpTemplateData("keyword1", orderDon.getOrderNo()))
|
|
|
+ .addData(new WxMpTemplateData("keyword2", String.format("%s,%s", goodsDon.getTitle(), goodsDonSku.getSpecVal())))
|
|
|
+ .addData(new WxMpTemplateData("keyword3", u == null ? " " : u.getNickname()))
|
|
|
+ .addData(new WxMpTemplateData("keyword4", DateUtil.format(orderDon.getCreatedTime(), "yyyy-MM-dd")))
|
|
|
+ .addData(new WxMpTemplateData("remark", "请尽快关联账号信息"));
|
|
|
+
|
|
|
+ weChatService.sendTemplateMessage(weChatService.getAccessToken(), Jsons.toJson(templateMessage));
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public OrderDon renewal(OrderPayRequest payRequest) {
|
|
|
User user = userMapper.selectById(payRequest.getUserId());
|