diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java index 50cd8500..a5f3fa65 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java @@ -473,23 +473,20 @@ public class OrderController extends BaseController { // 通知师傅新订单 try { - Map params = new HashMap<>(); - params.put("thing1", "新订单通知"); - params.put("thing5", "收到师傅派单,请及时处理!"); - // 推送公众号通知数据。 // 消息组装。 Map paramsNew = new HashMap<>(); // 订单编号 - paramsNew.put("character_string6", om.getCode()); + paramsNew.put("thing10", "您帐号收到1条新订单"); // 名称 - paramsNew.put("thing14", acceptWorker.getName()); + paramsNew.put("thing18", "请进入【我的订单--新订单】操作处理"); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(om.getAddressId()); + paramsNew.put("thing14", address.getName()); // 预约时间 paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", om.getExpectTimeStart())); // 非自己承接的订单需要通知 if (!om.getWorkerId().equals(request.getWorkerId())) { - wxMsgService.sendWxMsg(acceptWorker.getOpenId(), WxMsgEnum.ORDER_PLAN, params); - WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), acceptWorker.getWxOpenId(), WxMsgEnum.TEXT, paramsNew); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), acceptWorker.getWxOpenId(), WxMsgEnum.NORMAL_ORDER, paramsNew); } } catch (Exception e) { @@ -591,20 +588,20 @@ public class OrderController extends BaseController { } // 通知师傅新订单 try { - Worker assignWorker = workerService.selectById(orderMaster.getWorkerId()); + // 推送公众号通知数据。 // 消息组装。 Map paramsNew = new HashMap<>(); // 订单编号 - paramsNew.put("character_string6", orderMaster.getCode()); + paramsNew.put("thing10", "您帐号收到1条新订单"); // 名称 - paramsNew.put("thing14", "新订单通知,请及时接单!"); + paramsNew.put("thing18", "请进入【我的订单--新订单】操作处理"); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing14", address.getName()); // 预约时间 - paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", orderMaster.getExpectTimeStart())); - // 消息推送 - WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), assignWorker.getWxOpenId(), WxMsgEnum.TEXT, paramsNew); + paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.NORMAL_ORDER, paramsNew); } catch (Exception e) { - logger.error(e.getMessage()); - e.printStackTrace(); + logger.error(e.getMessage(), e); } return AjaxResult.success(orderMaster); } diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java index 953c2def..fe08ee1f 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java @@ -1204,30 +1204,23 @@ public class OrderDetailController extends BaseController { .setBehavior(OrderBehaviorEnum.REFUSE_ORDER); orderBehaviorService.insert(orderBehavior); - // 通知师傅新订单 + // 拒单 try { - Map params = new HashMap<>(); - params.put("thing1", "订单被拒通知"); - params.put("thing5", "订单被拒绝,请及时处理!"); - wxMsgService.sendWxMsg(masterWorker.getOpenId(), WxMsgEnum.ORDER_PLAN, params); - - Worker assignWorker = workerService.selectById(om.getWorkerId()); + // 推送公众号通知数据。 // 消息组装。 Map paramsNew = new HashMap<>(); // 订单编号 - paramsNew.put("character_string1", om.getCode()); + paramsNew.put("thing10", "您有派出的订单被拒接/退单,已退回"); // 名称 - paramsNew.put("thing2", "订单被拒通知"); + paramsNew.put("thing18", "请进入【我的订单--未约未排】查看"); + CustomerAddress address = addressService.selectByCustomerAddressId(om.getAddressId()); + paramsNew.put("thing14", address.getName()); // 预约时间 - paramsNew.put("data8", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", om.getExpectTimeStart())); - // 师傅姓名 - paramsNew.put("name3", assignWorker.getName()); - // 服务区域 - paramsNew.put("thing4", om.getAddress()); - // 消息推送 - WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), assignWorker.getWxOpenId(), WxMsgEnum.TEXT, paramsNew); + paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.NORMAL_ORDER, paramsNew); + } catch (Exception e) { - e.printStackTrace(); + logger.error(e.getMessage(), e); } return AjaxResult.success(); } diff --git a/ghy-common/src/main/java/com/ghy/common/enums/WxMsgEnum.java b/ghy-common/src/main/java/com/ghy/common/enums/WxMsgEnum.java index 80f423cd..4308bed4 100644 --- a/ghy-common/src/main/java/com/ghy/common/enums/WxMsgEnum.java +++ b/ghy-common/src/main/java/com/ghy/common/enums/WxMsgEnum.java @@ -16,6 +16,9 @@ public enum WxMsgEnum { /** 测试 **/ TEXT("", "dnjTqmqr7OsnOXJR_SikVNNQOPSZLJ6pcDoysOksjNQ"), + NORMAL_ORDER("", "dnjTqmqr7OsnOXJR_SikVEOPNFGmDgtLpNDm5VzwrLA"), + TIMEOUT_ORDER("", "dnjTqmqr7OsnOXJR_SikVFa-walminp2qVeUZgNfw6M"), + /** 急报 **/ WARN_ORDER("", "0RSuVHHP_okErJ1acQmIirBU7TrQYR0xPBgBHyt_azA") ; diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java index faf79c48..4617d367 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/AfterServiceRecordServiceImpl.java @@ -7,9 +7,13 @@ import com.ghy.common.core.text.Convert; import com.ghy.common.enums.OrderStatus; import com.ghy.common.enums.PayStatus; import com.ghy.common.enums.RefundType; +import com.ghy.common.enums.WxMsgEnum; import com.ghy.common.exception.base.BaseException; import com.ghy.common.utils.AdapayUtils; import com.ghy.common.utils.ObjectUtils; +import com.ghy.common.utils.WechatMsgUtils; +import com.ghy.customer.domain.CustomerAddress; +import com.ghy.customer.service.CustomerAddressService; import com.ghy.order.domain.AfterServiceImgs; import com.ghy.order.domain.AfterServiceRecord; import com.ghy.order.domain.OrderDetail; @@ -24,8 +28,11 @@ import com.ghy.payment.domain.FinancialMaster; import com.ghy.payment.service.AdapayService; import com.ghy.payment.service.FinancialDetailService; import com.ghy.payment.service.FinancialMasterService; +import com.ghy.worker.domain.Worker; +import com.ghy.worker.service.WorkerService; import com.huifu.adapay.core.exception.BaseAdaPayException; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.Assert; @@ -33,7 +40,9 @@ import org.springframework.util.Assert; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * 售后记录Service业务层处理 @@ -58,6 +67,10 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService private AdapayService adapayService; @Resource private OrderDetailService orderDetailService; + @Resource + private WorkerService workerService; + @Autowired + private CustomerAddressService customerAddressService; /** * 查询售后记录 @@ -108,7 +121,28 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService throw new BaseException("存在未完成的售后记录,请勿重复申请!"); } int result = afterServiceRecordMapper.insertAfterServiceRecord(afterServiceRecord); + // 发一起一次售后发起通知 + // 通知师傅新订单 + try { + OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.getOrderDetailId()); + OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); + Worker worker = workerService.selectById(orderDetail.getWorkerId()); + // 推送公众号通知数据。 + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing10", "您有订单被申请售后/投诉"); + // 名称 + paramsNew.put("thing18", "请进入【我的订单--售后单】操作处理"); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing14", address.getName()); + // 预约时间 + paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.NORMAL_ORDER, paramsNew); + } catch (Exception e) { + log.error(e.getMessage(), e); + } if (afterServiceRecord.getImgsList() != null && afterServiceRecord.getImgsList().size() > 0) { afterServiceRecord.getImgsList().forEach(imgUrl -> { imgUrl.setAfterServiceRecordId(Long.valueOf(afterServiceRecord.getId())); @@ -152,7 +186,26 @@ public class AfterServiceRecordServiceImpl implements IAfterServiceRecordService // 师傅同意 且 客户同意退款 afterServiceRecord.setCustomerFinalCheck(1L); afterServiceRecord.setRefundApplyTime(new Date()); - + // 售后客户回复通知 + // 通知师傅新订单 + try { + Worker worker = workerService.selectById(orderDetail.getWorkerId()); + OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); + // 推送公众号通知数据。 + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing10", "您有售后/投诉单,客户已回复您方案"); + // 名称 + paramsNew.put("thing18", "请进入【我的订单--售后单】查看处理"); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing14", address.getName()); + // 预约时间 + paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.NORMAL_ORDER, paramsNew); + } catch (Exception e) { + log.error(e.getMessage(), e); + } // DrawCashTime不为空说明已经发起过分账 if (drawCash) { log.warn("子单[{}]已发起分账,不能退款", afterServiceRecord.getOrderDetailId()); diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderAlertTaskServiceImpl.java b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderAlertTaskServiceImpl.java index 3cbb2a7b..5f123887 100644 --- a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderAlertTaskServiceImpl.java +++ b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderAlertTaskServiceImpl.java @@ -72,17 +72,17 @@ public class OrderAlertTaskServiceImpl implements OrderAlertTaskService { workIds.forEach(model->{ // 通知师傅新订单 try { - Worker assignWorker = workerService.selectById(model); + Worker worker = workerService.selectById(model); // 消息组装。 Map paramsNew = new HashMap<>(); // 订单编号 - paramsNew.put("character_string6", "newOrder"); + paramsNew.put("thing10", "需求大厅有新订单"); // 名称 - paramsNew.put("thing14", "需求大厅有新订单哦,请尽快查看"); + paramsNew.put("thing18", "请进入【需求大厅】查看或操作处理"); + paramsNew.put("thing14", "newOrer"); // 预约时间 paramsNew.put("time4", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); - // 消息推送 - WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), assignWorker.getWxOpenId(), WxMsgEnum.TEXT, paramsNew); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.NORMAL_ORDER, paramsNew); } catch (Exception e) { e.printStackTrace(); } diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java index d93e6fce..598494e3 100644 --- a/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java +++ b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderServiceImpl.java @@ -2,6 +2,10 @@ package com.ghy.quartz.service.impl; import cn.hutool.core.collection.CollectionUtil; import com.ghy.common.enums.OrderStatus; +import com.ghy.common.enums.WxMsgEnum; +import com.ghy.common.utils.WechatMsgUtils; +import com.ghy.customer.domain.CustomerAddress; +import com.ghy.customer.service.CustomerAddressService; import com.ghy.order.domain.AfterServiceRecord; import com.ghy.order.domain.OrderDetail; import com.ghy.order.domain.OrderMaster; @@ -17,8 +21,12 @@ import com.ghy.payment.service.FinancialMasterService; import com.ghy.quartz.service.OrderService; import com.ghy.system.domain.SysDeptConfig; import com.ghy.system.service.ISysDeptConfigService; +import com.ghy.system.service.IWxMsgService; +import com.ghy.worker.domain.Worker; +import com.ghy.worker.service.WorkerService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.time.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import org.springframework.stereotype.Service; @@ -65,6 +73,12 @@ public class OrderServiceImpl implements OrderService { private ISysDeptConfigService sysDeptConfigService; @Resource private IAfterServiceRecordService afterServiceRecordService; + @Resource + private IWxMsgService wxMsgService; + @Resource + private WorkerService workerService; + @Autowired + private CustomerAddressService customerAddressService; @Override public void overTimeOrder(String orderStatus) { @@ -124,6 +138,26 @@ public class OrderServiceImpl implements OrderService { log.info("主订单[{}]超时30分钟", order.getId()); orderMasterService.updateTimeout(order.getId(), 1); timeout = true; + // 通知一次超时 + // 通知师傅新订单 + try { + // 推送公众号通知数据。 + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing10", "您帐号有1条新订单超时未接"); + // 名称 + paramsNew.put("thing18", "请进入【我的订单--新订单】操作处理"); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(order.getAddressId()); + paramsNew.put("thing14", address.getName()); + // 预约时间 + paramsNew.put("time12", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + // 查师傅信息 + Worker worker = workerService.selectById(order.getWorkerId()); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TIMEOUT_ORDER, paramsNew); + } catch (Exception e) { + log.error(e.getMessage(), e); + } } } if (flag && order.getWorkerId() != null) { @@ -203,6 +237,27 @@ public class OrderServiceImpl implements OrderService { if (afterTime.before(now)) { log.info("售后订单[{}]超时30分钟", order.getId()); orderDetailService.updateAfterTimeout(order.getId(), 1, 0); + // 售后超时通知 + OrderDetail orderDetail = orderDetailService.selectById(afterServiceRecord.get(0).getOrderDetailId()); + // 通知师傅新订单 + try { + Worker worker = workerService.selectById(orderDetail.getWorkerId()); + OrderMaster orderMaster = orderMasterService.selectById(orderDetail.getOrderMasterId()); + // 推送公众号通知数据。 + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing10", "您有售后/投诉单超时未处理"); + // 名称 + paramsNew.put("thing18", "进入【我的订单--售后单】操作处理"); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing14", address.getName()); + // 预约时间 + paramsNew.put("time12", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TIMEOUT_ORDER, paramsNew); + } catch (Exception e) { + log.error(e.getMessage(), e); + } } } if (!timeout) { @@ -218,6 +273,27 @@ public class OrderServiceImpl implements OrderService { record.setFineStatus(0); // orderFineRecordMapper.insert(record); orderDetailService.updateTimeout(order.getId(), 1, 1); + // 超时未上门通知 + // 通知师傅新订单 + try { + // 推送公众号通知数据。 + Worker worker = workerService.selectById(order.getWorkerId()); + OrderMaster orderMaster = orderMasterService.selectById(order.getOrderMasterId()); + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing10", "您有订单超时未上门/未服务"); + // 名称 + paramsNew.put("thing18", "请进入【我的订单--待上门--立即上门】处理"); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing14", address.getName()); + // 预约时间 + paramsNew.put("time12", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TIMEOUT_ORDER, paramsNew); + + } catch (Exception e) { + log.error(e.getMessage(), e); + } } } // 未超时的单 @@ -231,6 +307,27 @@ public class OrderServiceImpl implements OrderService { record.setFineStatus(0); // orderFineRecordMapper.insert(record); orderDetailService.updateTimeout(order.getId(), 1, 1); + // 超时未上门通知 + // 通知师傅新订单 + try { + // 推送公众号通知数据。 + Worker worker = workerService.selectById(order.getWorkerId()); + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing10", "您有订单超时未完单"); + // 名称 + paramsNew.put("thing18", "请进入【我的订单--服务中--报价/完单】"); + OrderMaster orderMaster = orderMasterService.selectById(order.getOrderMasterId()); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing14", address.getName()); + // 预约时间 + paramsNew.put("time12", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TIMEOUT_ORDER, paramsNew); + + } catch (Exception e) { + log.error(e.getMessage(), e); + } } } else if (timeoutOrderStatus.contains(order.getOrderStatus())) { // 其它状态用update_time判断30min超时 @@ -238,6 +335,54 @@ public class OrderServiceImpl implements OrderService { if (overTime.before(now)) { log.info("订单[{}]超时30分钟", order.getId()); orderDetailService.updateTimeout(order.getId(), 1, 0); + // 超时预约通知 + if("01".equals(order.getIsCall())){ + // 通知师傅新订单 + try { + // 推送公众号通知数据。 + Worker worker = workerService.selectById(order.getWorkerId()); + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing10", "您有订单超时未联系客户"); + // 名称 + paramsNew.put("thing18", "请进入【我的订单--未约未排--预约时间】"); + OrderMaster orderMaster = orderMasterService.selectById(order.getOrderMasterId()); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing14", address.getName()); + // 预约时间 + paramsNew.put("time12", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TIMEOUT_ORDER, paramsNew); + + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + // 超时未排单 + if("02".equals(order.getIsCall())){ + // 通知师傅新订单 + try { + // 推送公众号通知数据。 + // 推送公众号通知数据。 + Worker worker = workerService.selectById(order.getWorkerId()); + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("thing10", "您有订单联系客户后未排上门时间"); + // 名称 + paramsNew.put("thing18", "请进入【我的订单--未约未排--预约时间】"); + OrderMaster orderMaster = orderMasterService.selectById(order.getOrderMasterId()); + CustomerAddress address = customerAddressService.selectByCustomerAddressId(orderMaster.getAddressId()); + paramsNew.put("thing14", address.getName()); + // 预约时间 + paramsNew.put("time12", com.ghy.common.utils.DateUtils.parseDateToStr("yyyy年MM月dd日 HH:mm", new Date())); + // 非自己承接的订单需要通知 + WechatMsgUtils.sendWeChatMsg(WechatMsgUtils.getToken(), worker.getWxOpenId(), WxMsgEnum.TIMEOUT_ORDER, paramsNew); + + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } } } return;