diff --git a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java index 343aa5d..05bc80d 100644 --- a/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java +++ b/nxhs-service/src/main/java/cc/yunxi/controller/RecycleOrderController.java @@ -25,9 +25,7 @@ import cc.yunxi.domain.vo.recycleorder.tmorder.TMRecycleOrderRespVO; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailRespVO; import cc.yunxi.domain.vo.recycler.RecyclerSimpleVO; import cc.yunxi.domain.vo.recyclestation.RecycleStationSimpleVO; -import cc.yunxi.domain.vo.socket.AppTypeEnum; -import cc.yunxi.domain.vo.socket.MessageTypeEnum; -import cc.yunxi.domain.vo.socket.OrderNew; +import cc.yunxi.domain.vo.socket.*; import cc.yunxi.enums.OrderStatusEnum; import cc.yunxi.enums.OrderTypeEnum; import cc.yunxi.enums.UserTypeEnum; @@ -110,25 +108,34 @@ public class RecycleOrderController { UserDTO userDTO = UserContext.getUser(); orderCreateVO.setClientId(userDTO.getId()); String orderId = recycleOrderService.createOrder(orderCreateVO); - //todo 通知回收员 - OrderNew message = new OrderNew(); - - message.setMessageType(MessageTypeEnum.BOOKING);//消息类型 - message.setAppType(AppTypeEnum.recycler);//发送到哪里 - message.setReceiveUserId(userDTO.getId());//接收人 - - message.setOrderNo("1223");//订单号 - message.setOrderStatus(OrderStatusEnum.PENDING); - message.setReserveTime(""); - message.setClientPhone("13183060802"); - message.setGoodsType("1"); - message.setClientAddress("这是地址"); - message.setEstimatedWeight(10.2); - try { - wsService.sendMsgToUser(message); - } catch (IOException e) { - e.printStackTrace(); + + // 通知回收员 + List recyclers = recyclerService.getRecyclerByStationId(orderCreateVO.getRecycleStationId()); + if (recyclers.size() > 0) { + OrderNew message = new OrderNew(); + + message.setMessageType(MessageTypeEnum.BOOKING);//消息类型 + message.setAppType(AppTypeEnum.recycler);//发送到哪里 + message.setReceiveUserId("");//接收人 + + message.setOrderNo(orderId);//订单号 + message.setOrderStatus(OrderStatusEnum.PENDING); + message.setReserveTime(orderCreateVO.getAppointmentTimeStart() + "~" + orderCreateVO.getAppointmentTimeEnd()); +// message.setGoodsType("1"); + ClientAddress addressInfo = clientAddressService.getAddressInfo(orderCreateVO.getClientAddressId()); + message.setClientPhone(addressInfo.getReceiveMobilePhone()); + message.setClientAddress(addressInfo.getReceiveStreet() + addressInfo.getReceiveHouseNumber()); + message.setEstimatedWeight(orderCreateVO.getPredictWeight()); + try { + for (Recycler recycler : recyclers) { + message.setReceiveUserId(recycler.getId()); + wsService.sendMsgToUser(message); + } + } catch (IOException e) { + e.printStackTrace(); + } } + return CommonResult.success(orderId); } @@ -200,7 +207,29 @@ public class RecycleOrderController { UserDTO userDTO = UserContext.getUser(); orderCancelVO.setClientId(userDTO.getId()); recycleOrderService.cancelOrder(orderCancelVO); - //todo 通知回收员 + + // 通知回收员 + String id = orderCancelVO.getId(); + RecycleOrder order = recycleOrderService.getOrderById(id, false); + ClientAddress addressInfo = clientAddressService.getAddressInfo(order.getClientAddressId()); + + OrderCancel cancel = new OrderCancel(); + cancel.setMessageType(MessageTypeEnum.CANCEL); + cancel.setAppType(AppTypeEnum.recycler); + cancel.setReceiveUserId(order.getStaffsId()); + + cancel.setOrderNo(order.getOrderNumber()); + cancel.setOrderStatus(order.getOrderStatus()); + cancel.setCancelOrderTime(LocalDateTime.now()); + cancel.setClientPhone(order.getClientMobile()); + cancel.setClientAddress(addressInfo.getReceiveStreet()); + + try { + wsService.sendMsgToUser(cancel); + } catch (IOException e) { + e.printStackTrace(); + } + return CommonResult.success(true); } @@ -211,7 +240,22 @@ public class RecycleOrderController { UserDTO userDTO = UserContext.getUser(); orderTakingVO.setStaffsId(userDTO.getId()); recycleOrderService.takingOrder(orderTakingVO); - //todo 通知用户 + // 通知散户用户 + + RecycleOrder order = recycleOrderService.getById(orderTakingVO.getId()); + Recycler recycler = recyclerService.getById(order.getStaffsId()); + + OrderTaken taken = new OrderTaken(); + taken.setMessageType(MessageTypeEnum.TAKEN); + taken.setAppType(AppTypeEnum.client); + taken.setReceiveUserId(order.getClientId()); + + taken.setOrderNo(order.getOrderNumber()); + taken.setOrderStatus(order.getOrderStatus()); + taken.setTakeOrderUser(order.getStaffsName()); + taken.setTakeUserPhone(recycler.getMobilePhone()); + taken.setTakeOrderTime(LocalDateTime.now()); + return CommonResult.success(true); } @@ -223,7 +267,7 @@ public class RecycleOrderController { UserDTO userDTO = UserContext.getUser(); orderReachVO.setStaffsId(userDTO.getId()); recycleOrderService.reachOrder(orderReachVO); - // todo 通知用户 + // todo 通知用户 不必要 return CommonResult.success(true); } @@ -234,7 +278,27 @@ public class RecycleOrderController { UserDTO userDTO = UserContext.getUser(); orderFinishVO.setStaffsId(userDTO.getId()); recycleOrderService.finishOrder(orderFinishVO); - //todo 通知用户 + // 通知散户用户 + RecycleOrder order = recycleOrderService.getById(orderFinishVO.getId()); + Recycler recycler = recyclerService.getById(order.getStaffsId()); + + OrderFinish finish = new OrderFinish(); + finish.setMessageType(MessageTypeEnum.FINISH); + finish.setAppType(AppTypeEnum.client); + finish.setReceiveUserId(order.getClientId()); + + finish.setOrderNo(order.getOrderNumber()); + finish.setOrderStatus(order.getOrderStatus()); + finish.setRealMoney(order.getOrderAmount()); + finish.setTakeOrderUser(recycler.getStaffsName()); + finish.setTakeUserPhone(recycler.getMobilePhone()); + + try { + wsService.sendMsgToUser(finish); + } catch (IOException e) { + e.printStackTrace(); + } + return CommonResult.success(true); } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderCancel.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderCancel.java index 53c1ec0..f30394b 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderCancel.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderCancel.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDateTime; + @Data @ApiModel("新订单") public class OrderCancel extends SocketMessage{ @@ -13,10 +15,10 @@ public class OrderCancel extends SocketMessage{ @ApiModelProperty("订单状态") private OrderStatusEnum orderStatus; @ApiModelProperty("取消时间") - private String cancelOrderTime; + private LocalDateTime cancelOrderTime; @ApiModelProperty("预约人号码") - private String orderPhone; + private String clientPhone; @ApiModelProperty("预约地址") - private String orderAddress; + private String clientAddress; } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderFinish.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderFinish.java index 6dace11..09ee0ed 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderFinish.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderFinish.java @@ -5,6 +5,8 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; + @ApiModel("新订单") @Data public class OrderFinish extends SocketMessage{ @@ -12,24 +14,12 @@ public class OrderFinish extends SocketMessage{ private String orderNo; @ApiModelProperty("订单状态") private OrderStatusEnum orderStatus; - @ApiModelProperty("商品类型") - private String goodsType; - @ApiModelProperty("预约时间") - private String orderTime; - @ApiModelProperty("预约人号码") - private String orderPhone; - @ApiModelProperty("预约地址") - private String orderAddress; - @ApiModelProperty("预计重量") - private String orderWeight; + @ApiModelProperty("实际重量") + private String realWeight; + @ApiModelProperty("实际金额") + private BigDecimal realMoney; @ApiModelProperty("接单人") private String takeOrderUser; - @ApiModelProperty("接单时间") - private String takeOrderTime; @ApiModelProperty("接单人电话") private String takeUserPhone; - @ApiModelProperty("完成时间") - private String finishTime; - @ApiModelProperty("实际金额") - private String realMoney; } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderNew.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderNew.java index a5080a9..bf08c68 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderNew.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderNew.java @@ -1,6 +1,7 @@ package cc.yunxi.domain.vo.socket; import cc.yunxi.enums.OrderStatusEnum; +import cc.yunxi.enums.ProductWeightEnum; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -21,5 +22,5 @@ public class OrderNew extends SocketMessage{ @ApiModelProperty("预约地址") private String clientAddress; @ApiModelProperty("预计重量") - private double estimatedWeight; + private ProductWeightEnum estimatedWeight; } diff --git a/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderTaken.java b/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderTaken.java index 9f8c441..147036b 100644 --- a/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderTaken.java +++ b/nxhs-service/src/main/java/cc/yunxi/domain/vo/socket/OrderTaken.java @@ -5,17 +5,19 @@ import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.time.LocalDateTime; + @ApiModel("新订单") @Data -public class OrderTaken extends SocketMessage{ +public class OrderTaken extends SocketMessage { @ApiModelProperty("订单号") private String orderNo; @ApiModelProperty("订单状态") private OrderStatusEnum orderStatus; @ApiModelProperty("接单人") private String takeOrderUser; - @ApiModelProperty("接单时间") - private String takeOrderTime; @ApiModelProperty("接单人电话") private String takeUserPhone; + @ApiModelProperty("接单时间") + private LocalDateTime takeOrderTime; } diff --git a/nxhs-service/src/main/java/cc/yunxi/service/IRecyclerService.java b/nxhs-service/src/main/java/cc/yunxi/service/IRecyclerService.java index 09242a3..2e00dde 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/IRecyclerService.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/IRecyclerService.java @@ -42,6 +42,9 @@ public interface IRecyclerService extends IService { */ List getRecyclerByIds(Collection recyclerIds); + + List getRecyclerByStationId(String stationId); + /** * 根据openid获取回收员信息 * @param openid diff --git a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java index a68839e..0d41a16 100644 --- a/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java +++ b/nxhs-service/src/main/java/cc/yunxi/service/impl/RecycleOrderServiceImpl.java @@ -16,6 +16,9 @@ import cc.yunxi.domain.vo.recycleorder.tmorder.TMRecycleOrderFinishVO; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailCreateVO; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailSaveVO; import cc.yunxi.domain.vo.recycleorderdetail.RecycleOrderDetailUpdateVO; +import cc.yunxi.domain.vo.socket.AppTypeEnum; +import cc.yunxi.domain.vo.socket.MessageTypeEnum; +import cc.yunxi.domain.vo.socket.OrderNew; import cc.yunxi.enums.*; import cc.yunxi.mapper.RecycleOrderMapper; import cc.yunxi.service.*; @@ -33,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.io.IOException; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.List; @@ -69,6 +73,9 @@ public class RecycleOrderServiceImpl extends ServiceImpl i return list(wrapperX); } + @Override + public List getRecyclerByStationId(String stationId) { + LambdaQueryWrapperX wrapperX = new LambdaQueryWrapperX<>(); + if(StrUtil.isEmpty(stationId)) return CollUtils.emptyList(); + wrapperX.eq(Recycler::getStationId, stationId); + return list(wrapperX); + } + @Override @Transactional