2025.5.8 spring task实现付款超时自动取消订单 每日凌晨自动设置完成配送中的订单 websocket来单提醒
This commit is contained in:
parent
ff94f3f75d
commit
2dd3f86132
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -48,5 +48,7 @@ public interface OrderService {
|
||||
|
||||
void complete(Long id);
|
||||
|
||||
void reminder(Long id);
|
||||
|
||||
// void reminder(Long id);
|
||||
}
|
||||
|
@ -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 方法
|
||||
*
|
||||
|
@ -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());
|
||||
|
||||
}
|
||||
}
|
@ -73,6 +73,6 @@ sky:
|
||||
refundNotifyUrl: ${sky.wechat.refundNotifyUrl}
|
||||
|
||||
shop:
|
||||
address: 武汉理工大学鉴湖校区
|
||||
address: 湖北省武汉市洪山区武汉理工大学鉴湖校区
|
||||
baidu:
|
||||
ak: ${sky.baidu.ak}
|
@ -20,6 +20,9 @@
|
||||
<update id="update" parameterType="addressBook">
|
||||
update address_book
|
||||
<set>
|
||||
<if test="userId != null">
|
||||
user_id = #{userId},
|
||||
</if>
|
||||
<if test="consignee != null">
|
||||
consignee = #{consignee},
|
||||
</if>
|
||||
@ -29,6 +32,24 @@
|
||||
<if test="phone != null">
|
||||
phone = #{phone},
|
||||
</if>
|
||||
<if test="provinceCode != null">
|
||||
province_code = #{provinceCode},
|
||||
</if>
|
||||
<if test="provinceName != null">
|
||||
province_name = #{provinceName},
|
||||
</if>
|
||||
<if test="cityCode != null">
|
||||
city_code = #{cityCode},
|
||||
</if>
|
||||
<if test="cityName != null">
|
||||
city_name = #{cityName},
|
||||
</if>
|
||||
<if test="districtCode != null">
|
||||
district_code = #{districtCode},
|
||||
</if>
|
||||
<if test="districtName != null">
|
||||
district_name = #{districtName},
|
||||
</if>
|
||||
<if test="detail != null">
|
||||
detail = #{detail},
|
||||
</if>
|
||||
|
Loading…
x
Reference in New Issue
Block a user