From 9a2524bbde454eb8feeae741a904cff1986fdee3 Mon Sep 17 00:00:00 2001 From: "kuang.yife" Date: Sun, 29 Oct 2023 23:53:07 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=86=E5=88=AB=E6=AF=8F=E5=B0=8F=E6=97=B6?= =?UTF-8?q?=E6=96=B0=E8=AE=A2=E5=8D=95=E6=94=B6=E5=8F=96=20+=20=E6=8E=A8?= =?UTF-8?q?=E9=80=81=E5=BE=AE=E4=BF=A1=E5=85=AC=E4=BC=97=E5=8F=B7=E9=80=9A?= =?UTF-8?q?=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ghy/customer/domain/CustomerAddress.java | 2 + .../mapper/customer/CustomerAddressMapper.xml | 6 ++ ghy-quartz/pom.xml | 10 ++ .../quartz/service/OrderAlertTaskService.java | 7 ++ .../impl/OrderAlertTaskServiceImpl.java | 94 +++++++++++++++++++ .../com/ghy/quartz/task/OrderAlertTask.java | 23 +++++ .../com/ghy/worker/domain/WorkerArea.java | 2 + .../mapper/worker/WorkerAreaMapper.xml | 6 ++ 8 files changed, 150 insertions(+) create mode 100644 ghy-quartz/src/main/java/com/ghy/quartz/service/OrderAlertTaskService.java create mode 100644 ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderAlertTaskServiceImpl.java create mode 100644 ghy-quartz/src/main/java/com/ghy/quartz/task/OrderAlertTask.java diff --git a/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerAddress.java b/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerAddress.java index 8a50660a..9240de21 100644 --- a/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerAddress.java +++ b/ghy-custom/src/main/java/com/ghy/customer/domain/CustomerAddress.java @@ -16,6 +16,8 @@ public class CustomerAddress extends BaseEntity { @Excel(name = "消费者地址id", cellType = Excel.ColumnType.NUMERIC) private Long customerAddressId; + private List customerAddressIds; + @Excel(name = "消费者id", cellType = Excel.ColumnType.NUMERIC) private Long customerId; diff --git a/ghy-custom/src/main/resources/mapper/customer/CustomerAddressMapper.xml b/ghy-custom/src/main/resources/mapper/customer/CustomerAddressMapper.xml index 50ece2be..bf28392c 100644 --- a/ghy-custom/src/main/resources/mapper/customer/CustomerAddressMapper.xml +++ b/ghy-custom/src/main/resources/mapper/customer/CustomerAddressMapper.xml @@ -45,6 +45,12 @@ #{id} + + AND customer_address_id IN + + #{id} + + diff --git a/ghy-quartz/pom.xml b/ghy-quartz/pom.xml index 21b44f24..8324fb2e 100644 --- a/ghy-quartz/pom.xml +++ b/ghy-quartz/pom.xml @@ -45,6 +45,16 @@ ghy-payment + + com.ghy + ghy-worker + + + + com.ghy + ghy-custom + + \ No newline at end of file diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/service/OrderAlertTaskService.java b/ghy-quartz/src/main/java/com/ghy/quartz/service/OrderAlertTaskService.java new file mode 100644 index 00000000..a1ab9560 --- /dev/null +++ b/ghy-quartz/src/main/java/com/ghy/quartz/service/OrderAlertTaskService.java @@ -0,0 +1,7 @@ +package com.ghy.quartz.service; + +public interface OrderAlertTaskService { + + void getSuitableOrderAlertWorker(); + +} 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 new file mode 100644 index 00000000..d8c9cc62 --- /dev/null +++ b/ghy-quartz/src/main/java/com/ghy/quartz/service/impl/OrderAlertTaskServiceImpl.java @@ -0,0 +1,94 @@ +package com.ghy.quartz.service.impl; + +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.OrderMaster; +import com.ghy.order.service.OrderMasterService; +import com.ghy.quartz.service.OrderAlertTaskService; +import com.ghy.worker.domain.Worker; +import com.ghy.worker.domain.WorkerArea; +import com.ghy.worker.service.WorkerAreaService; +import com.ghy.worker.service.WorkerService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class OrderAlertTaskServiceImpl implements OrderAlertTaskService { + + @Autowired + private OrderMasterService orderMasterService; + + @Autowired + private CustomerAddressService customerAddressService; + + @Autowired + private WorkerAreaService workerAreaService; + + @Autowired + private WorkerService workerService; + + @Override + public void getSuitableOrderAlertWorker() { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH"); + DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String startTime = format.format(new Date()) + ":00:00"; + String endTime = format.format(new Date()) + ":59:59"; + // 找到合适时间的订单 + OrderMaster orderMaster = new OrderMaster(); + orderMaster.setDeptId(101L); + orderMaster.setOrderStatus(OrderStatus.RECEIVE.code()); + orderMaster.setWorkerId(-1L); + orderMaster.setCreateTimeStart(LocalDateTime.parse(startTime, df)); + orderMaster.setCreateTimeEnd(LocalDateTime.parse(endTime, df)); + List orderMasters = orderMasterService.selectOrderMasterList(orderMaster); + if(CollectionUtils.isNotEmpty(orderMasters)){ + List addressList = orderMasters.stream().map(OrderMaster::getAddressId).collect(Collectors.toList()); + CustomerAddress customerAddress = new CustomerAddress(); + customerAddress.setCustomerAddressIds(addressList); + List customerAddresses = customerAddressService.getCustomerAddressList(customerAddress); + if(CollectionUtils.isNotEmpty(customerAddresses)){ + List cityIds = customerAddresses.stream().map(CustomerAddress::getCityId).collect(Collectors.toList()); + WorkerArea workerArea = new WorkerArea(); + workerArea.setCityIds(cityIds); + List workerAreaList = workerAreaService.getWorkerAreaList(workerArea); + List workIds = workerAreaList.stream().map(WorkerArea::getWorkerId).distinct().collect(Collectors.toList()); + if(CollectionUtils.isNotEmpty(workIds)){ + workIds.forEach(model->{ + // 通知师傅新订单 + try { + Worker assignWorker = workerService.selectById(model); + // 消息组装。 + Map paramsNew = new HashMap<>(); + // 订单编号 + paramsNew.put("character_string6", "newOrder"); + // 名称 + paramsNew.put("thing14", "需求大厅有新订单哦,请尽快查看"); + // 预约时间 + 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); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + } + } + } +} diff --git a/ghy-quartz/src/main/java/com/ghy/quartz/task/OrderAlertTask.java b/ghy-quartz/src/main/java/com/ghy/quartz/task/OrderAlertTask.java new file mode 100644 index 00000000..1d014372 --- /dev/null +++ b/ghy-quartz/src/main/java/com/ghy/quartz/task/OrderAlertTask.java @@ -0,0 +1,23 @@ +package com.ghy.quartz.task; + +import com.ghy.quartz.service.OrderAlertTaskService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Slf4j +@Component("orderAlertTask") +public class OrderAlertTask { + + @Autowired + private OrderAlertTaskService orderAlertTaskService; + + public void getSuitableOrder(){ + try { + orderAlertTaskService.getSuitableOrderAlertWorker(); + }catch (Exception e){ + log.error(e.getMessage()); + } + } + +} diff --git a/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerArea.java b/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerArea.java index 4f2733bc..47f03752 100644 --- a/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerArea.java +++ b/ghy-worker/src/main/java/com/ghy/worker/domain/WorkerArea.java @@ -28,6 +28,8 @@ public class WorkerArea extends BaseEntity { private Long cityId; private SysArea cityArea; + private List cityIds; + @Excel(name = "区/县区域id", cellType = Excel.ColumnType.NUMERIC) private Long districtId; private SysArea districtArea; diff --git a/ghy-worker/src/main/resources/mapper/worker/WorkerAreaMapper.xml b/ghy-worker/src/main/resources/mapper/worker/WorkerAreaMapper.xml index 78af8f7b..3650c76d 100644 --- a/ghy-worker/src/main/resources/mapper/worker/WorkerAreaMapper.xml +++ b/ghy-worker/src/main/resources/mapper/worker/WorkerAreaMapper.xml @@ -66,6 +66,12 @@ AND wa.district_id = #{districtId} + + AND wa.city_id in + + #{cityId} + + AND wa.district_id in