diff --git a/play-admin/src/main/java/com/starry/admin/modules/order/controller/PlayOrderInfoController.java b/play-admin/src/main/java/com/starry/admin/modules/order/controller/PlayOrderInfoController.java index 2c744c2..73073fe 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/order/controller/PlayOrderInfoController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/order/controller/PlayOrderInfoController.java @@ -92,7 +92,7 @@ public class PlayOrderInfoController { /** - * 跟换店员 + * 更换店员 */ //@PreAuthorize("@customSs.hasPermission('order:order:update')") @PostMapping("/orderEditAcceptBy") @@ -101,7 +101,7 @@ public class PlayOrderInfoController { PlayClerkUserInfoEntity clerkUserInfo = playClerkUserInfoService.selectById(vo.getAcceptBy()); PlayOrderInfoEntity orderInfo = orderInfoService.selectOrderInfoById(vo.getOrderId()); PlayCommodityInfoVo commodityInfo = playCommodityInfoService.queryCommodityInfo(orderInfo.getCommodityId(), clerkUserInfo.getLevelId()); - wxCustomMpService.sendCreateOrderMessage(clerkUserInfo.getTenantId(), clerkUserInfo.getOpenid(), clerkUserInfo.getNickname(), orderInfo.getOrderNo(), orderInfo.getId(), String.valueOf(orderInfo.getPurchaserTime()), orderInfo.getOrderMoney().toString(), commodityInfo.getCommodityName()); + wxCustomMpService.sendCreateOrderMessage(clerkUserInfo.getTenantId(), clerkUserInfo.getOpenid(), orderInfo.getOrderNo(), orderInfo.getOrderMoney().toString(), commodityInfo.getCommodityName()); return R.ok("操作成功"); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderComplaintInfoServiceImpl.java b/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderComplaintInfoServiceImpl.java index 6206ed8..fa27b8a 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderComplaintInfoServiceImpl.java +++ b/play-admin/src/main/java/com/starry/admin/modules/order/service/impl/PlayOrderComplaintInfoServiceImpl.java @@ -17,6 +17,7 @@ import com.starry.admin.modules.order.module.vo.PlayOrderComplaintQueryVo; import com.starry.admin.modules.order.module.vo.PlayOrderComplaintReturnVo; import com.starry.admin.modules.order.service.IPlayOrderComplaintInfoService; import com.starry.admin.modules.personnel.service.IPlayPersonnelGroupInfoService; +import com.starry.admin.modules.weichat.service.WxCustomMpService; import com.starry.admin.utils.SecurityUtils; import com.starry.common.utils.IdUtils; import org.springframework.stereotype.Service; @@ -41,7 +42,8 @@ public class PlayOrderComplaintInfoServiceImpl extends ServiceImpl images) { PlayOrderInfoEntity orderInfo = this.selectOrderInfoById(orderId); if ("0".equals(operatorByType) && !operatorBy.equals(orderInfo.getPurchaserBy())) { - throw new CustomException("只能操作本人订单"); + throw new CustomException("只能操作本人订单"); } if ("1".equals(operatorByType) && !operatorBy.equals(orderInfo.getAcceptBy())) { - throw new CustomException("只能操作本人订单"); + throw new CustomException("只能操作本人订单"); } // 取消订单(必须订单未接单或者为开始状态) if (!orderInfo.getOrderStatus().equals(OrderConstant.ORDER_STATUS_0) && !orderInfo.getOrderStatus().equals(OrderConstant.ORDER_STATUS_1)) { @@ -772,9 +772,8 @@ public class PlayOrderInfoServiceImpl extends ServiceImpl { private String dingdantousuchuliTemplateId; private String jiedanchenggongtongzhiTemplateId; - private String dingdanzhifuchenggongtongzhiTemplateId; private String quxiaodingdantongzhiTemplateId; private String dingdanwanchengtongzhiTemplateId; private String chongzhichenggongTemplateId; diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java index 866b10e..ed3e1f1 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/controller/WxCustomController.java @@ -1,7 +1,6 @@ package com.starry.admin.modules.weichat.controller; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -302,7 +301,7 @@ public class WxCustomController { // 顾客减少余额 customUserInfoService.updateAccountBalanceById(customUserInfo.getId(), customUserInfo.getAccountBalance(), customUserInfo.getAccountBalance().subtract(money), "1", "下单-指定单", money, BigDecimal.ZERO, orderId); // 发送通知给店员 - wxCustomMpService.sendCreateOrderMessage(clerkUserInfo.getTenantId(), clerkUserInfo.getOpenid(), clerkUserInfo.getNickname(), orderNo, orderId, DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"), money.toString(), commodityInfo.getCommodityName()); + wxCustomMpService.sendCreateOrderMessage(clerkUserInfo.getTenantId(), clerkUserInfo.getOpenid(), orderNo, money.toString(), commodityInfo.getCommodityName()); return R.ok("成功"); } diff --git a/play-admin/src/main/java/com/starry/admin/modules/weichat/service/WxCustomMpService.java b/play-admin/src/main/java/com/starry/admin/modules/weichat/service/WxCustomMpService.java index f0c1e27..86e00d1 100644 --- a/play-admin/src/main/java/com/starry/admin/modules/weichat/service/WxCustomMpService.java +++ b/play-admin/src/main/java/com/starry/admin/modules/weichat/service/WxCustomMpService.java @@ -12,6 +12,7 @@ import com.starry.admin.modules.clerk.module.entity.PlayClerkUserReviewInfoEntit import com.starry.admin.modules.clerk.service.IPlayClerkUserInfoService; import com.starry.admin.modules.custom.module.entity.PlayCustomUserInfoEntity; import com.starry.admin.modules.custom.service.IPlayCustomUserInfoService; +import com.starry.admin.modules.order.module.entity.PlayOrderComplaintInfoEntity; import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity; import com.starry.admin.modules.personnel.module.entity.PlayPersonnelAdminInfoEntity; import com.starry.admin.modules.personnel.service.IPlayPersonnelAdminInfoService; @@ -28,7 +29,6 @@ import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; -import java.time.LocalDate; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -54,7 +54,6 @@ public class WxCustomMpService { private IPlayClerkUserInfoService clerkUserInfoService; - /** * 支付成功回调地址 */ @@ -113,9 +112,9 @@ public class WxCustomMpService { public void sendBalanceMessage(PlayOrderInfoEntity order) { PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(order.getPurchaserBy()); SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(order.getTenantId()); - WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getCzcgtzTemplateId(), customUserInfo.getOpenid(), "http://" + tenant.getTenantKey() + ".july.hucs.top/user/"); + WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getChongzhichenggongTemplateId(), customUserInfo.getOpenid(), "http://" + tenant.getTenantKey() + ".july.hucs.top/user/"); List data = new ArrayList<>(); - data.add(new WxMpTemplateData("time4", LocalDate.now().toString())); + data.add(new WxMpTemplateData("time4", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); data.add(new WxMpTemplateData("amount2", order.getOrderMoney().toString())); data.add(new WxMpTemplateData("amount17", "0")); data.add(new WxMpTemplateData("thing10", tenant.getTenantName())); @@ -134,71 +133,58 @@ public class WxCustomMpService { * * @param tenantId 租户ID * @param openId 消息接收人openID - * @param nickName 消息内容-消息接收人昵称 * @param orderNo 消息内容-订单编号 - * @param orderId 消息内容-订单ID - * @param orderTime 消息内容-下单时间 - * @param orderAmount 消息内容-订单金额 - * @param commodityName 消息内容-服务项目名称 + * @param money + * @param commodityName */ - public void sendCreateOrderMessage(String tenantId, String openId, String nickName, String orderNo, String orderId, String orderTime, String orderAmount, String commodityName) { + public void sendCreateOrderMessage(String tenantId, String openId, String orderNo, String money, String commodityName) { + SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(tenantId); - String template_id = tenant.getSdxddtzTemplateId(); - String tenantKey = tenant.getTenantKey(); - String url = "http://" + tenantKey + ".july.hucs.top/clerk/#/orderDetail/" + orderId; - WxMpTemplateMessage templateMessage = new WxMpTemplateMessage(); - templateMessage.setTemplateId(template_id); - templateMessage.setToUser(openId); - templateMessage.setUrl(url); + WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getXindingdanshoulitongzhiTemplateId(), openId, "http://" + tenant.getTenantKey() + ".july.hucs.top/clerk/#/orderDetail/"); List data = new ArrayList<>(); - data.add(new WxMpTemplateData("time5", orderTime)); - data.add(new WxMpTemplateData("thing6", commodityName)); - data.add(new WxMpTemplateData("amount8", orderAmount)); - data.add(new WxMpTemplateData("thing12", nickName)); - data.add(new WxMpTemplateData("character_string2", orderNo)); - data.add(new WxMpTemplateData("time7", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); + data.add(new WxMpTemplateData("time6", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); + data.add(new WxMpTemplateData("character_string9", orderNo)); + data.add(new WxMpTemplateData("short_thing5", "陪聊下单")); + data.add(new WxMpTemplateData("thing11", commodityName)); + data.add(new WxMpTemplateData("amount8", money)); templateMessage.setData(data); try { proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage); } catch (WxErrorException e) { - log.error(e.getMessage(), e); - + log.error("接单成功发送消息异常", e); } + } /** * 店员接单后,通过微信公众号发送消息 * - * @param tenantId 租户ID - * @param openId 消息接收人openID - * @param userType 用户类型,0:顾客,1:店员 - * @param nickName 消息内容-消息接收人昵称 - * @param orderNo 消息内容-订单编号 - * @param orderId 消息内容-订单ID - * @param orderAmount 消息内容-订单金额 + * @param orderInfo * @author admin * @since 2024/7/31 10:51 **/ - public void sendOrderMessage(String tenantId, String openId, String userType, String nickName, String orderNo, String orderId, String orderAmount) { - SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(tenantId); - String template_id = tenant.getXdcgtzTemplateId(); - String tenantKey = tenant.getTenantKey(); - String url = "http://" + tenantKey + ".july.hucs.top/" + ("0".equals(userType) ? "user/#/orderDetail/" : "clerk/#/orderDetail/") + orderId; - WxMpTemplateMessage templateMessage = new WxMpTemplateMessage(); - templateMessage.setTemplateId(template_id); - templateMessage.setToUser(openId); - templateMessage.setUrl(url); + public void sendOrderMessage(PlayOrderInfoEntity orderInfo) { + SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(orderInfo.getTenantId()); + PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(orderInfo.getAcceptBy()); + PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(orderInfo.getPurchaserBy()); + + WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getJiedanchenggongtongzhiTemplateId(), clerkUserInfo.getOpenid(), "http://" + tenant.getTenantKey() + ".july.hucs.top/clerk/#/orderDetail/" + orderInfo.getId()); List data = new ArrayList<>(); - data.add(new WxMpTemplateData("amount2", orderAmount)); - data.add(new WxMpTemplateData("thing12", nickName)); - data.add(new WxMpTemplateData("character_string5", orderNo)); - data.add(new WxMpTemplateData("time4", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); + data.add(new WxMpTemplateData("character_string1", orderInfo.getOrderNo())); + data.add(new WxMpTemplateData("time2", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); templateMessage.setData(data); try { proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage); } catch (WxErrorException e) { log.error(e.getMessage(), e); + } + templateMessage.setToUser(customUserInfo.getOpenid()); + templateMessage.setUrl("http://" + tenant.getTenantKey() + ".july.hucs.top/user/#/orderDetail/" + orderInfo.getId()); + try { + proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage); + } catch (WxErrorException e) { + log.error(e.getMessage(), e); } } @@ -275,4 +261,75 @@ public class WxCustomMpService { templateMessage.setUrl(url); return templateMessage; } + + public void sendComplaintMessage(PlayOrderComplaintInfoEntity info, PlayOrderInfoEntity orderInfo) { + + SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(info.getTenantId()); + List adminInfoEntityList = playPersonnelAdminInfoService.list(Wrappers.lambdaQuery(PlayPersonnelAdminInfoEntity.class).select(PlayPersonnelAdminInfoEntity::getSysUserId)); + + for (PlayPersonnelAdminInfoEntity adminInfo : adminInfoEntityList) { + PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.getOne(Wrappers.lambdaQuery(PlayClerkUserInfoEntity.class).eq(PlayClerkUserInfoEntity::getSysUserId, adminInfo.getSysUserId()), false); + if (Objects.isNull(clerkUserInfo)) { + continue; + } + WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getDingdantousuchuliTemplateId(), clerkUserInfo.getOpenid(), "http://" + tenant.getTenantKey() + ".july.hucs.top/clerk/#/admin/order/complain-list"); + List data = new ArrayList<>(); + data.add(new WxMpTemplateData("character_string", orderInfo.getOrderNo())); + data.add(new WxMpTemplateData("time2", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); + templateMessage.setData(data); + try { + proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage); + } catch (WxErrorException e) { + log.error("发送投诉消息异常", e); + } + } + + + } + + public void sendOrderFinishMessage(PlayOrderInfoEntity order) { + if (order.getPlaceType().equals("1") || order.getPlaceType().equals("2")) { + SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(order.getTenantId()); + PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(order.getPurchaserBy()); + WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getDingdanwanchengtongzhiTemplateId(), customUserInfo.getOpenid(), "http://" + tenant.getTenantKey() + ".july.hucs.top/user/#/orderDetail/" + order.getId()); + List data = new ArrayList<>(); + data.add(new WxMpTemplateData("time18", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); + data.add(new WxMpTemplateData("character_string8", order.getOrderNo())); + data.add(new WxMpTemplateData("thing13", order.getCommodityName())); + templateMessage.setData(data); + try { + proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage); + } catch (WxErrorException e) { + log.error("订单完成发送消息异常", e); + } + } + + } + + public void sendOrderCancelMessage(PlayOrderInfoEntity orderInfo, String refundReason) { + SysTenantEntity tenant = tenantService.selectSysTenantByTenantId(orderInfo.getTenantId()); + PlayClerkUserInfoEntity clerkUserInfo = clerkUserInfoService.selectById(orderInfo.getAcceptBy()); + PlayCustomUserInfoEntity customUserInfo = customUserInfoService.selectById(orderInfo.getPurchaserBy()); + + WxMpTemplateMessage templateMessage = getWxMpTemplateMessage(tenant.getQuxiaodingdantongzhiTemplateId(), clerkUserInfo.getOpenid(), "http://" + tenant.getTenantKey() + ".july.hucs.top/clerk/#/orderDetail/" + orderInfo.getId()); + List data = new ArrayList<>(); + data.add(new WxMpTemplateData("character_string2", orderInfo.getOrderNo())); + data.add(new WxMpTemplateData("thing5", StringUtils.isEmpty(refundReason) ? "已取消" : refundReason)); + data.add(new WxMpTemplateData("time18", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"))); + templateMessage.setData(data); + try { + proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage); + } catch (WxErrorException e) { + log.error(e.getMessage(), e); + } + + templateMessage.setToUser(customUserInfo.getOpenid()); + templateMessage.setUrl("http://" + tenant.getTenantKey() + ".july.hucs.top/user/#/orderDetail/" + orderInfo.getId()); + try { + proxyWxMpService().getTemplateMsgService().sendTemplateMsg(templateMessage); + } catch (WxErrorException e) { + log.error(e.getMessage(), e); + } + } + }