oying-common/src/main/java/com/oying/utils/enums/ReturnAuditEnum.java
@@ -15,7 +15,8 @@ ZERO(0, "申请"), ONE(1, "拒绝"), TWO(2, "通过"), THREE(3, "未知"); THREE(3, "取消"), FOUR(4, "未知"); private final Integer key; oying-system/src/main/java/com/oying/modules/hwc/service/impl/CallbackServiceImpl.java
@@ -5,8 +5,8 @@ import com.oying.modules.hwc.utils.SignUtil; import com.oying.modules.hwc.utils.XmlUtils; import com.oying.modules.security.config.SwiftPassProperties; import com.oying.modules.sh.domain.OrderReturn; import com.oying.modules.sh.domain.vo.OrderResponse; import com.oying.modules.sh.domain.vo.OrderReturnResponse; import com.oying.modules.sh.service.OrderReturnService; import com.oying.modules.sh.service.OrderService; import com.oying.utils.enums.OrderStatusEnum; @@ -94,8 +94,8 @@ String sign_type = map.get("sign_type"); String reSign = map.get("sign"); if (map.containsKey("sign")) { OrderReturn order = returnService.getByReturnNum(map.get("out_refund_no")); PayTypeEnum status = PayTypeEnum.find(order.getPayType()); OrderReturnResponse order = returnService.getByReturnNum(map.get("out_refund_no")); PayTypeEnum status = PayTypeEnum.find(order.getOrderReturn().getPayType()); if (SignUtil.verifySign(reSign, sign_type, map, properties, status)) { log.error("汇旺财退款验证签名错误!:{}", map.toString()); } else { oying-system/src/main/java/com/oying/modules/sh/domain/vo/OrderReturnResponse.java
New file @@ -0,0 +1,28 @@ package com.oying.modules.sh.domain.vo; import com.oying.modules.sh.domain.Order; import com.oying.modules.sh.domain.OrderAddressSnapshot; import com.oying.modules.sh.domain.OrderOperationLog; import com.oying.modules.sh.domain.OrderReturn; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import java.util.List; /** * @author xin * @description * @date 2025/8/19 22:14 */ @Getter @Setter @AllArgsConstructor public class OrderReturnResponse { private OrderReturn orderReturn; private OrderAddressSnapshot address; private List<OrderOperationLog> operation; } oying-system/src/main/java/com/oying/modules/sh/mapper/OrderReturnMapper.java
@@ -24,9 +24,12 @@ OrderReturn getByReturnNum(String returnNum); void updatePayStatus(String returnNum, String payState, String payTime); void updatePayStatus(@Param("returnNum") String returnNum, @Param("refundStatus") String refundStatus, @Param("successTime") String successTime); Long countAll(@Param("criteria") OrderReturnQueryCriteria criteria, @Param("blurry") String blurry); OrderReturn getByOrderNum(String orderNum, Integer status); void updateStatus(@Param("returnNum") String returnNum, @Param("returnStatus") Integer returnStatus, @Param("value") String value, @Param("auditStatus") Integer auditStatus); } oying-system/src/main/java/com/oying/modules/sh/rest/OrderReturnController.java
@@ -50,11 +50,25 @@ return new ResponseEntity<>(R.success(orderReturnService.queryAll(criteria, page)), HttpStatus.OK); } @ApiOperation("订单号订单售后") @GetMapping(value = "/getByReturnNum") public ResponseEntity<Object> getByReturnNum(@RequestParam String returnNum) { return new ResponseEntity<>(R.success(orderReturnService.getByReturnNum(returnNum)), HttpStatus.OK); } @PostMapping @Log("申请订单售后") @ApiOperation("申请订单售后") public ResponseEntity<Object> createOrderReturn(@Validated @RequestBody ReturnOrder resources) { orderReturnService.create(resources); return new ResponseEntity<>(R.success(), HttpStatus.CREATED); } @PostMapping("cancel") @Log("取消订单售后") @ApiOperation("取消订单售后") public ResponseEntity<Object> cancel(@RequestParam String returnNum) { orderReturnService.cancel(returnNum); return new ResponseEntity<>(R.success(), HttpStatus.CREATED); } @@ -74,14 +88,5 @@ public ResponseEntity<Object> updateOrderReturn(@Validated @RequestBody OrderReturn resources) { orderReturnService.update(resources); return new ResponseEntity<>(R.success(), HttpStatus.NO_CONTENT); } @DeleteMapping @Log("删除退款订单") @ApiOperation("删除退款订单") @PreAuthorize("@el.check('orderReturn:del')") public ResponseEntity<Object> deleteOrderReturn(@ApiParam(value = "传ID数组[]") @RequestBody List<Long> ids) { orderReturnService.deleteAll(ids); return new ResponseEntity<>(R.success(), HttpStatus.OK); } } oying-system/src/main/java/com/oying/modules/sh/service/OrderReturnService.java
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.oying.modules.sh.domain.request.AuditOrderReturn; import com.oying.modules.sh.domain.request.ReturnOrder; import com.oying.modules.sh.domain.vo.OrderReturnResponse; import com.oying.utils.PageResult; /** @@ -39,17 +40,14 @@ */ void create(ReturnOrder resources); void cancel(String returnNum); /** * 编辑 * @param resources / */ void update(OrderReturn resources); /** * 多选删除 * @param ids / */ void deleteAll(List<Long> ids); /** * 导出数据 @@ -59,9 +57,9 @@ */ void download(List<OrderReturn> all, HttpServletResponse response) throws IOException; OrderReturn getByReturnNum(String outRefundNo); OrderReturnResponse getByReturnNum(String outRefundNo); void updatePayStatus(String outRefundNo, String status, String time); void updatePayStatus(String outRefundNo, String refundStatus, String successTime); void audit(AuditOrderReturn resources); } oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderOperationLogServiceImpl.java
@@ -90,10 +90,10 @@ orderOperationLogMapper.insert(log1); response.getOrder().setOrderStatus(OrderStatusEnum.TWO.getKey()); response.getOrder().setOrderStatusDescribe(OrderStatusEnum.TWO.getValue()); case FOUR: case THREE: userType = ConstantsKey.MERCHANT; break; case THREE: case FOUR: orderMapper.updateRider(response.getOrder().getOrderNum(), SecurityUtils.getCurrentUserId(), SecurityUtils.getCurrentUsername(), cardName); case FIVE: case SIX: @@ -117,7 +117,26 @@ orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue()); statusEnum = OrderStatusEnum.EIGHT; break; case TEN: case TWELVE: userType = ConstantsKey.BUYER; orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue()); break; case FIFTEEN: userType = ConstantsKey.BUYER; orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), OrderStatusEnum.EIGHT.getKey(), OrderStatusEnum.EIGHT.getValue()); break; case ELEVEN: userType = ConstantsKey.MERCHANT; orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), OrderStatusEnum.EIGHT.getKey(), OrderStatusEnum.EIGHT.getValue()); break; case THIRTEEN: case FOURTEEN: userType = ConstantsKey.MERCHANT; orderMapper.updateOrderStatus(response.getOrder().getOrderNum(), statusEnum.getKey(), statusEnum.getValue()); break; default: throw new BadRequestException("状态错误"); } if (username == null) { username = SecurityUtils.getCurrentUsername(); oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderReturnServiceImpl.java
@@ -6,8 +6,9 @@ import com.oying.modules.sh.domain.OrderReturn; import com.oying.modules.sh.domain.request.AuditOrderReturn; import com.oying.modules.sh.domain.request.ReturnOrder; import com.oying.modules.sh.service.OrderReturnProductSnapshotService; import com.oying.modules.sh.service.OrderService; import com.oying.modules.sh.domain.vo.OrderResponse; import com.oying.modules.sh.domain.vo.OrderReturnResponse; import com.oying.modules.sh.service.*; import com.oying.utils.*; import com.oying.utils.enums.GenerateEnum; import com.oying.utils.enums.OrderStatusEnum; @@ -16,7 +17,6 @@ import lombok.RequiredArgsConstructor; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.oying.modules.sh.service.OrderReturnService; import com.oying.modules.sh.domain.dto.OrderReturnQueryCriteria; import com.oying.modules.sh.mapper.OrderReturnMapper; import org.springframework.stereotype.Service; @@ -37,11 +37,14 @@ public class OrderReturnServiceImpl extends ServiceImpl<OrderReturnMapper, OrderReturn> implements OrderReturnService { private final OrderReturnMapper orderReturnMapper; private final OrderOperationLogService operationLogService; private final OrderService orderService; private final OrderReturnProductSnapshotService productSnapshotService; private final RedisUtils redisUtils; private final SwiftPassService swiftPassService; private final OrderAddressSnapshotService addressSnapshotService; private static final String ORDER_RETURN_KEY = "oying:order:refund"; private static final String ORDER_CODE = "REFUND"; @Override public PageResult<OrderReturn> queryAll(OrderReturnQueryCriteria criteria, Page<Object> page) { @@ -57,13 +60,16 @@ } @Override public OrderReturn getByReturnNum(String returnNum) { return orderReturnMapper.getByReturnNum(returnNum); public OrderReturnResponse getByReturnNum(String returnNum) { OrderReturn orderReturn = orderReturnMapper.getByReturnNum(returnNum); return new OrderReturnResponse(orderReturn, addressSnapshotService.queryByOrderNum(orderReturn.getOrderNum()), operationLogService.getByOrderNum(orderReturn.getOrderNum(), ORDER_CODE)); } @Override public void updatePayStatus(String returnNum, String status, String time) { orderReturnMapper.updatePayStatus(returnNum, status, time); public void updatePayStatus(String returnNum, String refundStatus, String successTime) { orderReturnMapper.updatePayStatus(returnNum, refundStatus, successTime); } @Override @@ -117,7 +123,22 @@ returnOrder.setPhotos(resources.getPhotos()); returnOrder.setAuditStatus(ReturnAuditEnum.ZERO.getKey()); orderReturnMapper.insert(returnOrder); } @Override @Transactional(rollbackFor = Exception.class) public void cancel(String returnNum) { OrderReturn orderReturn = orderReturnMapper.getByReturnNum(returnNum); if (orderReturn == null) { throw new BadRequestException("订单不存在!"); } if (!orderReturn.getUserId().equals(SecurityUtils.getCurrentUserId())) { throw new BadRequestException("不能修改他人订单"); } orderReturnMapper.updateStatus(returnNum, OrderStatusEnum.FIFTEEN.getKey(), OrderStatusEnum.FIFTEEN.getValue(), ReturnAuditEnum.THREE.getKey()); OrderResponse response = orderService.getByOrderNum(orderReturn.getOrderNum()); operationLogService.create(response, OrderStatusEnum.FIFTEEN, null); } @Override @@ -133,7 +154,7 @@ public synchronized void audit(AuditOrderReturn resources) { OrderReturn orderReturn = orderReturnMapper.getByReturnNum(resources.getReturnNum()); if (orderReturn == null) { throw new BadRequestException("订单不存在"); throw new BadRequestException("订单不存在!"); } if (!Objects.equals(orderReturn.getReturnStatus(), ReturnAuditEnum.ZERO.getKey())) { throw new BadRequestException("订单已处理或取消"); @@ -174,12 +195,6 @@ // 审核信息 orderReturn.setAuditMessage(resources.getMessage()); orderReturnMapper.updateById(orderReturn); } @Override @Transactional(rollbackFor = Exception.class) public void deleteAll(List<Long> ids) { orderReturnMapper.deleteBatchIds(ids); } @Override oying-system/src/main/java/com/oying/modules/sh/service/impl/OrderServiceImpl.java
@@ -57,6 +57,7 @@ private static final String DESCRIBE = "哦应:"; private static final String ORDER_KEY = "oying:order"; private static final String ORDER_STORE_KEY = "oying:order:store"; private static final String ORDER_CODE = "ORDER"; @Override public PageResult<Order> queryAll(OrderQueryCriteria criteria, Page<Object> page) { @@ -267,7 +268,7 @@ public OrderResponse getByOrderNum(String orderNum) { return new OrderResponse(orderMapper.getByOrderNum(orderNum), addressSnapshotService.queryByOrderNum(orderNum), operationLogService.getByOrderNum(orderNum, null)); operationLogService.getByOrderNum(orderNum, ORDER_CODE)); } @Override oying-system/src/main/resources/mapper/sh/OrderReturnMapper.xml
@@ -132,8 +132,15 @@ <update id="updatePayStatus"> update sh_order_return set return_status = #{payState}, success_time = #{payTime} set refund_status = #{refundStatus}, success_time = #{successTime} where return_num = #{returnNum} </update> <update id="updateStatus"> update sh_order_return set return_status = #{returnStatus}, return_status_describe = #{value}, audit_status = #{auditStatus} where return_num = #{returnNum} </update>