From 2dd3f861323b92a782280e443f54c7f569c89a7d Mon Sep 17 00:00:00 2001 From: zhangsan <646228430@qq.com> Date: Thu, 8 May 2025 14:38:28 +0800 Subject: [PATCH] =?UTF-8?q?2025.5.8=20spring=20task=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=BB=98=E6=AC=BE=E8=B6=85=E6=97=B6=E8=87=AA=E5=8A=A8=E5=8F=96?= =?UTF-8?q?=E6=B6=88=E8=AE=A2=E5=8D=95=20=E6=AF=8F=E6=97=A5=E5=87=8C?= =?UTF-8?q?=E6=99=A8=E8=87=AA=E5=8A=A8=E8=AE=BE=E7=BD=AE=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E9=85=8D=E9=80=81=E4=B8=AD=E7=9A=84=E8=AE=A2=E5=8D=95=20=20web?= =?UTF-8?q?socket=E6=9D=A5=E5=8D=95=E6=8F=90=E9=86=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sky/controller/user/OrderController.java | 22 ++--- .../java/com/sky/service/OrderService.java | 2 + .../sky/service/impl/OrderServiceImpl.java | 89 +++++++++++++------ .../src/main/java/com/sky/task/MyTask.java | 17 ---- sky-server/src/main/resources/application.yml | 2 +- .../resources/mapper/AddressBookMapper.xml | 21 +++++ 6 files changed, 96 insertions(+), 57 deletions(-) delete mode 100644 sky-server/src/main/java/com/sky/task/MyTask.java diff --git a/sky-server/src/main/java/com/sky/controller/user/OrderController.java b/sky-server/src/main/java/com/sky/controller/user/OrderController.java index 655ed14..bc70816 100644 --- a/sky-server/src/main/java/com/sky/controller/user/OrderController.java +++ b/sky-server/src/main/java/com/sky/controller/user/OrderController.java @@ -105,15 +105,15 @@ public class OrderController { return Result.success(); } -// /** -// * 客户催单 -// * @param id -// * @return -// */ -// @GetMapping("/reminder/{id}") -// @ApiOperation("客户催单") -// public Result reminder(@PathVariable("id") Long id){ -// orderService.reminder(id); -// return Result.success(); -// } + /** + * 客户催单 + * @param id + * @return + */ + @GetMapping("/reminder/{id}") + @ApiOperation("客户催单") + public Result reminder(@PathVariable("id") Long id){ + orderService.reminder(id); + return Result.success(); + } } diff --git a/sky-server/src/main/java/com/sky/service/OrderService.java b/sky-server/src/main/java/com/sky/service/OrderService.java index 9e39940..b6aff18 100644 --- a/sky-server/src/main/java/com/sky/service/OrderService.java +++ b/sky-server/src/main/java/com/sky/service/OrderService.java @@ -48,5 +48,7 @@ public interface OrderService { void complete(Long id); + void reminder(Long id); + // void reminder(Long id); } diff --git a/sky-server/src/main/java/com/sky/service/impl/OrderServiceImpl.java b/sky-server/src/main/java/com/sky/service/impl/OrderServiceImpl.java index fa74919..dc65427 100644 --- a/sky-server/src/main/java/com/sky/service/impl/OrderServiceImpl.java +++ b/sky-server/src/main/java/com/sky/service/impl/OrderServiceImpl.java @@ -23,6 +23,7 @@ import com.sky.vo.OrderPaymentVO; import com.sky.vo.OrderStatisticsVO; import com.sky.vo.OrderSubmitVO; import com.sky.vo.OrderVO; +import com.sky.websocket.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -31,10 +32,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.math.BigDecimal; import java.time.LocalDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; /** @@ -57,6 +55,9 @@ public class OrderServiceImpl implements OrderService { private WeChatPayUtil weChatPayUtil; @Autowired private BaiduAdressProperties props; + @Autowired + private WebSocketServer webSocketServer; + /** * 检查客户的收货地址是否超出配送范围 * @param address @@ -179,14 +180,13 @@ public class OrderServiceImpl implements OrderService { shoppingCartMapper.deleteByUserId(userId); //封装返回结果 - OrderSubmitVO orderSubmitVO = OrderSubmitVO.builder() + + return OrderSubmitVO.builder() .id(order.getId()) .orderNumber(order.getNumber()) .orderAmount(order.getAmount()) .orderTime(order.getOrderTime()) .build(); - - return orderSubmitVO; } /** @@ -237,6 +237,15 @@ public class OrderServiceImpl implements OrderService { .build(); orderMapper.update(orders); + //来单提醒 + Map map = new HashMap(); + map.put("type", 1);//消息类型,1表示来单提醒 + map.put("orderId", orders.getId()); + map.put("content", "订单号:" + outTradeNo); + + //通过WebSocket实现来单提醒,向客户端浏览器推送消息 + webSocketServer.sendToAllClient(JSON.toJSONString(map)); + } /** @@ -296,11 +305,11 @@ public class OrderServiceImpl implements OrderService { // 订单处于待接单状态下取消,需要进行退款 if (ordersDB.getStatus().equals(OrdersConstant.TO_BE_CONFIRMED)) { //调用微信支付退款接口 - weChatPayUtil.refund( - ordersDB.getNumber(), //商户订单号 - ordersDB.getNumber(), //商户退款单号 - new BigDecimal(0.01),//退款金额,单位 元 - new BigDecimal(0.01));//原订单金额 +// weChatPayUtil.refund( +// ordersDB.getNumber(), //商户订单号 +// ordersDB.getNumber(), //商户退款单号 +// new BigDecimal(0.01),//退款金额,单位 元 +// new BigDecimal(0.01));//原订单金额 //支付状态修改为 退款 orders.setPayStatus(OrdersConstant.REFUND); @@ -391,6 +400,7 @@ public class OrderServiceImpl implements OrderService { */ @Override public void rejection(OrdersRejectionDTO ordersRejectionDTO) throws Exception { + log.info(ordersRejectionDTO.toString()); // 根据id查询订单 Orders ordersDB = orderMapper.getById(ordersRejectionDTO.getId()); @@ -401,14 +411,15 @@ public class OrderServiceImpl implements OrderService { //支付状态 Integer payStatus = ordersDB.getPayStatus(); - if (payStatus == OrdersConstant.PAID) { - //用户已支付,需要退款 - String refund = weChatPayUtil.refund( - ordersDB.getNumber(), - ordersDB.getNumber(), - new BigDecimal(0.01), - new BigDecimal(0.01)); - log.info("申请退款:{}", refund); + if (Objects.equals(payStatus, OrdersConstant.PAID)) { +// //用户已支付,需要退款 +// String refund = weChatPayUtil.refund( +// ordersDB.getNumber(), +// ordersDB.getNumber(), +// new BigDecimal(0.01), +// new BigDecimal(0.01)); +// log.info("申请退款:{}", refund); + log.info("拒单,退款给用户"); } // 拒单需要退款,根据订单id更新订单状态、拒单原因、取消时间 @@ -433,14 +444,15 @@ public class OrderServiceImpl implements OrderService { //支付状态 Integer payStatus = ordersDB.getPayStatus(); - if (payStatus == 1) { - //用户已支付,需要退款 - String refund = weChatPayUtil.refund( - ordersDB.getNumber(), - ordersDB.getNumber(), - new BigDecimal(0.01), - new BigDecimal(0.01)); - log.info("申请退款:{}", refund); + if (Objects.equals(payStatus, OrdersConstant.PAID)) { +// //用户已支付,需要退款 +// String refund = weChatPayUtil.refund( +// ordersDB.getNumber(), +// ordersDB.getNumber(), +// new BigDecimal(0.01), +// new BigDecimal(0.01)); +// log.info("申请退款:{}", refund); + log.info("取消订单,退款给用户"); } // 管理端取消订单需要退款,根据订单id更新订单状态、取消原因、取消时间 @@ -499,6 +511,27 @@ public class OrderServiceImpl implements OrderService { orderMapper.update(orders); } + /** + * 用户催单 + * + * @param id + */ + @Override + public void reminder(Long id) { + // 查询订单是否存在 + Orders orders = orderMapper.getById(id); + if (orders == null) { + throw new OrderBusinessException(MessageConstant.ORDER_NOT_FOUND); + } + + //基于WebSocket实现催单 + Map map = new HashMap(); + map.put("type", 2);//2代表用户催单 + map.put("orderId", id); + map.put("content", "订单号:" + orders.getNumber()); + webSocketServer.sendToAllClient(JSON.toJSONString(map)); + } + /** * 通用分页+转换 VO 方法 * diff --git a/sky-server/src/main/java/com/sky/task/MyTask.java b/sky-server/src/main/java/com/sky/task/MyTask.java deleted file mode 100644 index 4096704..0000000 --- a/sky-server/src/main/java/com/sky/task/MyTask.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.sky.task; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.stereotype.Component; - -import java.util.Date; - -@Slf4j -@Component -public class MyTask { - @Scheduled(cron = "0/5 * * * * ?") - public void executed(){ - log.info("定時任務開始執行:{}",new Date()); - - } -} diff --git a/sky-server/src/main/resources/application.yml b/sky-server/src/main/resources/application.yml index 529476b..340a936 100644 --- a/sky-server/src/main/resources/application.yml +++ b/sky-server/src/main/resources/application.yml @@ -73,6 +73,6 @@ sky: refundNotifyUrl: ${sky.wechat.refundNotifyUrl} shop: - address: 武汉理工大学鉴湖校区 + address: 湖北省武汉市洪山区武汉理工大学鉴湖校区 baidu: ak: ${sky.baidu.ak} \ No newline at end of file diff --git a/sky-server/src/main/resources/mapper/AddressBookMapper.xml b/sky-server/src/main/resources/mapper/AddressBookMapper.xml index b7ece35..6802f60 100644 --- a/sky-server/src/main/resources/mapper/AddressBookMapper.xml +++ b/sky-server/src/main/resources/mapper/AddressBookMapper.xml @@ -20,6 +20,9 @@ update address_book + + user_id = #{userId}, + consignee = #{consignee}, @@ -29,6 +32,24 @@ phone = #{phone}, + + province_code = #{provinceCode}, + + + province_name = #{provinceName}, + + + city_code = #{cityCode}, + + + city_name = #{cityName}, + + + district_code = #{districtCode}, + + + district_name = #{districtName}, + detail = #{detail},