调整订单模块

This commit is contained in:
2025-11-03 10:15:22 +08:00
parent 720937581f
commit 4f9b9c29a3
11 changed files with 66 additions and 31 deletions

View File

@@ -10,7 +10,7 @@ import com.tashow.cloud.productapi.enums.ApiConstants;
import jakarta.annotation.security.PermitAll; import jakarta.annotation.security.PermitAll;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿fallbackFactory = @FeignClient(name = ApiConstants.NAME) // TODO 芋艿fallbackFactory =
@@ -52,15 +52,18 @@ public interface ProdApi {
* @param skuId 单品ID * @param skuId 单品ID
* @param stocksNum 扣减数量 * @param stocksNum 扣减数量
*/ */
@GetMapping(PREFIX + "/reduceStocks") @PostMapping(PREFIX + "/reduceStocks")
CommonResult<Boolean> reduceStocks(Long skuId, Integer stocksNum) ; CommonResult<Boolean> reduceStocks(@RequestParam(value = "skuId", required = false)Long skuId
,@RequestParam(value = "stocksNum", required = false) Integer stocksNum
) ;
/** /**
* 增加库存 * 增加库存
* @param skuId 单品ID * @param skuId 单品ID
* @param stocksNum 增加数量 * @param stocksNum 增加数量
*/ */
@GetMapping(PREFIX + "/increaseStocks") @PostMapping(PREFIX + "/increaseStocks")
CommonResult<Boolean> increaseStocks(Long skuId, Integer stocksNum); CommonResult<Boolean> increaseStocks(@RequestParam(value = "skuId", required = false)Long skuId
,@RequestParam(value = "stocksNum", required = false) Integer stocksNum);
} }

View File

@@ -53,8 +53,10 @@ public class WebAutoConfiguration implements WebMvcConfigurer {
*/ */
private void configurePathMatch(PathMatchConfigurer configurer, WebProperties.Api api) { private void configurePathMatch(PathMatchConfigurer configurer, WebProperties.Api api) {
AntPathMatcher antPathMatcher = new AntPathMatcher("."); AntPathMatcher antPathMatcher = new AntPathMatcher(".");
configurer.addPathPrefix(api.getPrefix(), clazz -> clazz.isAnnotationPresent(RestController.class) configurer.addPathPrefix(api.getPrefix(),
&& antPathMatcher.match(api.getController(), clazz.getPackage().getName())); // 仅仅匹配 controller 包 clazz -> clazz.isAnnotationPresent(RestController.class)
&& antPathMatcher.match(api.getController(), clazz.getPackage().getName())
); // 仅仅匹配 controller 包
} }
@Bean @Bean

View File

@@ -70,9 +70,8 @@ public class DictDataController {
/** /**
* 获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地 * 获得全部字典数据列表", description = "一般用于管理后台缓存字典数据在本地
*/ */
@GetMapping(value = {"/list-all-simple", "simple-list"})
// 无需添加权限认证,因为前端全局都需要 // 无需添加权限认证,因为前端全局都需要
@GetMapping(value = {"/list-all-simple", "simple-list"})
public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() { public CommonResult<List<DictDataSimpleRespVO>> getSimpleDictDataList() {
List<DictDataDO> list = List<DictDataDO> list =
dictDataService.getDictDataList(CommonStatusEnum.ENABLE.getStatus(), null); dictDataService.getDictDataList(CommonStatusEnum.ENABLE.getStatus(), null);

View File

@@ -113,15 +113,15 @@ public class TradeOrderController {
@PutMapping("/cancel") @PutMapping("/cancel")
@PermitAll @PermitAll
// @PreAuthorize("@ss.hasPermission('trade:order:query')") // @PreAuthorize("@ss.hasPermission('trade:order:query')")
public CommonResult<Boolean> cancel(@RequestParam("id") Long id) { public CommonResult<Boolean> cancel(@RequestBody TradeOrderCancelReqVo reqVO) {
return success(tradeOrderUpdateService.cancelOrderByAdmin(id)); return success(tradeOrderUpdateService.cancelOrderByAdmin(reqVO));
} }
/** /**
* 接单确认 * 接单确认
* *,
* @return
*/ */
@PutMapping("/acceptConfirm") @PutMapping("/acceptConfirm")
@PermitAll @PermitAll
// @PreAuthorize("@ss.hasPermission('trade:order:query')") // @PreAuthorize("@ss.hasPermission('trade:order:query')")
@@ -147,7 +147,7 @@ public class TradeOrderController {
@PutMapping("/update-remark") @PutMapping("/update-remark")
@PermitAll @PermitAll
// @PreAuthorize("@ss.hasPermission('trade:order:update')") // @PreAuthorize("@ss.hasPermission('trade:order:update')")
public CommonResult<Boolean> updateOrderRemark(@RequestBody TradeOrderRemarkReqVO reqVO) { public CommonResult<Boolean> updateOrderRemark(@Valid @RequestBody TradeOrderRemarkReqVO reqVO) {
tradeOrderUpdateService.updateOrderRemark(reqVO); tradeOrderUpdateService.updateOrderRemark(reqVO);
return success(true); return success(true);
} }

View File

@@ -0,0 +1,17 @@
package com.tashow.cloud.trade.controller.admin.order.vo;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class TradeOrderCancelReqVo {
//订单id
@NotNull(message = "订单编号不能为空")
private Long id;
//取消原因
private String cancelReason;
//取消备注
private String cancelRemark;
}

View File

@@ -24,6 +24,8 @@ public class TradeOrderDetailRespVO extends TradeOrderBaseVO{
//取消原因 //取消原因
private String cancelReason; private String cancelReason;
//取消备注
private String cancelRemark;
//商家备注 //商家备注
private String merchantRemark; private String merchantRemark;
//退款时间 //退款时间

View File

@@ -20,6 +20,10 @@ public class TradeOrderPageRespVO extends TradeOrderBaseVO {
private String shopLogo; private String shopLogo;
//支付剩余时间 //支付剩余时间
private String payLastTime; private String payLastTime;
//客服备注
private String merchantRemark;
//取消备注
private String cancelRemark;
@Data @Data

View File

@@ -14,7 +14,6 @@ import com.tashow.cloud.memberapi.api.user.dto.MemberUserRespDTO;
import com.tashow.cloud.payapi.api.order.dto.PayOrderCreateReqDTO; import com.tashow.cloud.payapi.api.order.dto.PayOrderCreateReqDTO;
import com.tashow.cloud.payapi.enums.DictTypeConstants; import com.tashow.cloud.payapi.enums.DictTypeConstants;
import com.tashow.cloud.productapi.api.product.dto.ProdDO; import com.tashow.cloud.productapi.api.product.dto.ProdDO;
import com.tashow.cloud.productapi.api.product.vo.prod.ProdRespVO;
import com.tashow.cloud.trade.controller.admin.base.member.user.MemberUserRespVO; import com.tashow.cloud.trade.controller.admin.base.member.user.MemberUserRespVO;
import com.tashow.cloud.trade.controller.admin.order.vo.*; import com.tashow.cloud.trade.controller.admin.order.vo.*;
import com.tashow.cloud.trade.controller.app.order.vo.*; import com.tashow.cloud.trade.controller.app.order.vo.*;
@@ -73,6 +72,7 @@ public interface TradeOrderConvert {
@Mappings({ @Mappings({
@Mapping(source = "order.id", target = "id"), @Mapping(source = "order.id", target = "id"),
@Mapping(source = "order.userId", target = "userId"), @Mapping(source = "order.userId", target = "userId"),
@Mapping(source = "order.merchantRemark", target = "merchantRemark"),
}) })
TradeOrderPageRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> items); TradeOrderPageRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> items);
//endregion //endregion
@@ -112,6 +112,9 @@ public interface TradeOrderConvert {
//region修改订单 //region修改订单
@Mappings({
@Mapping(target = "merchantRemark",source = "remark")
})
TradeOrderDO convert(TradeOrderRemarkReqVO reqVO); TradeOrderDO convert(TradeOrderRemarkReqVO reqVO);
//endregion //endregion

View File

@@ -1,9 +1,6 @@
package com.tashow.cloud.trade.service.order; package com.tashow.cloud.trade.service.order;
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; import com.tashow.cloud.trade.controller.admin.order.vo.*;
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderUpdateAddressReqVO;
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderUpdatePriceReqVO;
import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO; import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO;
import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO;
@@ -107,7 +104,7 @@ public interface TradeOrderUpdateService {
* *
* @param id 订单编号 * @param id 订单编号
*/ */
boolean cancelOrderByAdmin(Long id); boolean cancelOrderByAdmin(TradeOrderCancelReqVo reqVo);
/** /**
* 【系统】自动取消订单 * 【系统】自动取消订单

View File

@@ -21,10 +21,7 @@ import com.tashow.cloud.payapi.enums.order.PayOrderStatusEnum;
import com.tashow.cloud.sdk.payment.dto.order.PayOrderRespDTO; import com.tashow.cloud.sdk.payment.dto.order.PayOrderRespDTO;
import com.tashow.cloud.systemapi.api.social.SocialClientApi; import com.tashow.cloud.systemapi.api.social.SocialClientApi;
import com.tashow.cloud.systemapi.api.social.dto.SocialWxaSubscribeMessageSendReqDTO; import com.tashow.cloud.systemapi.api.social.dto.SocialWxaSubscribeMessageSendReqDTO;
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderDeliveryReqVO; import com.tashow.cloud.trade.controller.admin.order.vo.*;
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderRemarkReqVO;
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderUpdateAddressReqVO;
import com.tashow.cloud.trade.controller.admin.order.vo.TradeOrderUpdatePriceReqVO;
import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderCreateReqVO; import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO; import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderSettlementReqVO;
import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO; import com.tashow.cloud.trade.controller.app.order.vo.AppTradeOrderSettlementRespVO;
@@ -547,9 +544,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_CANCEL) @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_CANCEL)
public boolean cancelOrderByAdmin(Long id) { public boolean cancelOrderByAdmin(TradeOrderCancelReqVo reqVo) {
// 1.1 校验存在 // 1.1 校验存在
TradeOrderDO order = tradeOrderMapper.selectById(id); TradeOrderDO order = tradeOrderMapper.selectById(reqVo.getId());
if (order == null) { if (order == null) {
throw exception(ORDER_NOT_FOUND); throw exception(ORDER_NOT_FOUND);
} }
@@ -558,6 +555,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
} }
order.setCancelReason(reqVo.getCancelReason());
order.setMerchantRemark(reqVo.getCancelRemark());
// 2. 取消订单 // 2. 取消订单
cancelOrder0(order, TradeOrderCancelTypeEnum.MEMBER_CANCEL); cancelOrder0(order, TradeOrderCancelTypeEnum.MEMBER_CANCEL);
return true; return true;
@@ -607,7 +606,10 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// 1. 更新 TradeOrderDO 状态为已取消 // 1. 更新 TradeOrderDO 状态为已取消
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(), int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(),
new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.CANCELED.getStatus()) new TradeOrderDO().setOrderStatus(TradeOrderStatusEnum.CANCELED.getStatus())
.setCancelType(cancelType.getType()).setCancelTime(LocalDateTime.now())); .setCancelType(cancelType.getType()).setCancelTime(LocalDateTime.now())
.setCancelReason(order.getCancelReason())
.setMerchantRemark(order.getMerchantRemark())
);
if (updateCount == 0) { if (updateCount == 0) {
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
} }

View File

@@ -1,8 +1,10 @@
package com.tashow.cloud.trade.service.order.handler; package com.tashow.cloud.trade.service.order.handler;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.tashow.cloud.productapi.api.product.ProdApi;
import com.tashow.cloud.trade.dal.dataobject.order.TradeOrderDO; import com.tashow.cloud.trade.dal.dataobject.order.TradeOrderDO;
import com.tashow.cloud.trade.dal.dataobject.order.TradeOrderItemDO; import com.tashow.cloud.trade.dal.dataobject.order.TradeOrderItemDO;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.List; import java.util.List;
@@ -15,12 +17,14 @@ import java.util.List;
@Component @Component
public class TradeProductSkuOrderHandler implements TradeOrderHandler { public class TradeProductSkuOrderHandler implements TradeOrderHandler {
// @Resource @Resource
// private ProductSkuApi productSkuApi; private ProdApi prodApi;
@Override @Override
public void beforeOrderCreate(TradeOrderDO order, List<TradeOrderItemDO> orderItems) { public void beforeOrderCreate(TradeOrderDO order, List<TradeOrderItemDO> orderItems) {
// productSkuApi.updateSkuStock(TradeOrderConvert.INSTANCE.convertNegative(orderItems)).checkError(); for (TradeOrderItemDO orderItem : orderItems) {
prodApi.increaseStocks(orderItem.getSkuId(),orderItem.getCount()).checkError();
}
} }
@Override @Override
@@ -30,7 +34,9 @@ public class TradeProductSkuOrderHandler implements TradeOrderHandler {
if (CollUtil.isEmpty(orderItems)) { if (CollUtil.isEmpty(orderItems)) {
return; return;
} }
// productSkuApi.updateSkuStock(TradeOrderConvert.INSTANCE.convert(orderItems)).checkError(); for (TradeOrderItemDO orderItem : orderItems) {
prodApi.reduceStocks(orderItem.getSkuId(),orderItem.getCount()).checkError();
}
} }
@Override @Override