调整订单模块

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 org.springframework.cloud.openfeign.FeignClient;
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;
@FeignClient(name = ApiConstants.NAME) // TODO 芋艿fallbackFactory =
@@ -52,15 +52,18 @@ public interface ProdApi {
* @param skuId 单品ID
* @param stocksNum 扣减数量
*/
@GetMapping(PREFIX + "/reduceStocks")
CommonResult<Boolean> reduceStocks(Long skuId, Integer stocksNum) ;
@PostMapping(PREFIX + "/reduceStocks")
CommonResult<Boolean> reduceStocks(@RequestParam(value = "skuId", required = false)Long skuId
,@RequestParam(value = "stocksNum", required = false) Integer stocksNum
) ;
/**
* 增加库存
* @param skuId 单品ID
* @param stocksNum 增加数量
*/
@GetMapping(PREFIX + "/increaseStocks")
CommonResult<Boolean> increaseStocks(Long skuId, Integer stocksNum);
@PostMapping(PREFIX + "/increaseStocks")
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) {
AntPathMatcher antPathMatcher = new AntPathMatcher(".");
configurer.addPathPrefix(api.getPrefix(), clazz -> clazz.isAnnotationPresent(RestController.class)
&& antPathMatcher.match(api.getController(), clazz.getPackage().getName())); // 仅仅匹配 controller 包
configurer.addPathPrefix(api.getPrefix(),
clazz -> clazz.isAnnotationPresent(RestController.class)
&& antPathMatcher.match(api.getController(), clazz.getPackage().getName())
); // 仅仅匹配 controller 包
}
@Bean

View File

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

View File

@@ -113,15 +113,15 @@ public class TradeOrderController {
@PutMapping("/cancel")
@PermitAll
// @PreAuthorize("@ss.hasPermission('trade:order:query')")
public CommonResult<Boolean> cancel(@RequestParam("id") Long id) {
return success(tradeOrderUpdateService.cancelOrderByAdmin(id));
public CommonResult<Boolean> cancel(@RequestBody TradeOrderCancelReqVo reqVO) {
return success(tradeOrderUpdateService.cancelOrderByAdmin(reqVO));
}
/**
* 接单确认
*
* @return
*,
*/
@PutMapping("/acceptConfirm")
@PermitAll
// @PreAuthorize("@ss.hasPermission('trade:order:query')")
@@ -147,7 +147,7 @@ public class TradeOrderController {
@PutMapping("/update-remark")
@PermitAll
// @PreAuthorize("@ss.hasPermission('trade:order:update')")
public CommonResult<Boolean> updateOrderRemark(@RequestBody TradeOrderRemarkReqVO reqVO) {
public CommonResult<Boolean> updateOrderRemark(@Valid @RequestBody TradeOrderRemarkReqVO reqVO) {
tradeOrderUpdateService.updateOrderRemark(reqVO);
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 cancelRemark;
//商家备注
private String merchantRemark;
//退款时间

View File

@@ -20,6 +20,10 @@ public class TradeOrderPageRespVO extends TradeOrderBaseVO {
private String shopLogo;
//支付剩余时间
private String payLastTime;
//客服备注
private String merchantRemark;
//取消备注
private String cancelRemark;
@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.enums.DictTypeConstants;
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.order.vo.*;
import com.tashow.cloud.trade.controller.app.order.vo.*;
@@ -73,6 +72,7 @@ public interface TradeOrderConvert {
@Mappings({
@Mapping(source = "order.id", target = "id"),
@Mapping(source = "order.userId", target = "userId"),
@Mapping(source = "order.merchantRemark", target = "merchantRemark"),
})
TradeOrderPageRespVO convert(TradeOrderDO order, List<TradeOrderItemDO> items);
//endregion
@@ -112,6 +112,9 @@ public interface TradeOrderConvert {
//region修改订单
@Mappings({
@Mapping(target = "merchantRemark",source = "remark")
})
TradeOrderDO convert(TradeOrderRemarkReqVO reqVO);
//endregion

View File

@@ -1,9 +1,6 @@
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.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.admin.order.vo.*;
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.AppTradeOrderSettlementRespVO;
@@ -107,7 +104,7 @@ public interface TradeOrderUpdateService {
*
* @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.systemapi.api.social.SocialClientApi;
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.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.admin.order.vo.*;
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.AppTradeOrderSettlementRespVO;
@@ -547,9 +544,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
@Override
@Transactional(rollbackFor = Exception.class)
@TradeOrderLog(operateType = TradeOrderOperateTypeEnum.ADMIN_CANCEL)
public boolean cancelOrderByAdmin(Long id) {
public boolean cancelOrderByAdmin(TradeOrderCancelReqVo reqVo) {
// 1.1 校验存在
TradeOrderDO order = tradeOrderMapper.selectById(id);
TradeOrderDO order = tradeOrderMapper.selectById(reqVo.getId());
if (order == null) {
throw exception(ORDER_NOT_FOUND);
}
@@ -558,6 +555,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
}
order.setCancelReason(reqVo.getCancelReason());
order.setMerchantRemark(reqVo.getCancelRemark());
// 2. 取消订单
cancelOrder0(order, TradeOrderCancelTypeEnum.MEMBER_CANCEL);
return true;
@@ -607,7 +606,10 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
// 1. 更新 TradeOrderDO 状态为已取消
int updateCount = tradeOrderMapper.updateByIdAndStatus(order.getId(), order.getOrderStatus(),
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) {
throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
}

View File

@@ -1,8 +1,10 @@
package com.tashow.cloud.trade.service.order.handler;
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.TradeOrderItemDO;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;
import java.util.List;
@@ -15,12 +17,14 @@ import java.util.List;
@Component
public class TradeProductSkuOrderHandler implements TradeOrderHandler {
// @Resource
// private ProductSkuApi productSkuApi;
@Resource
private ProdApi prodApi;
@Override
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
@@ -30,7 +34,9 @@ public class TradeProductSkuOrderHandler implements TradeOrderHandler {
if (CollUtil.isEmpty(orderItems)) {
return;
}
// productSkuApi.updateSkuStock(TradeOrderConvert.INSTANCE.convert(orderItems)).checkError();
for (TradeOrderItemDO orderItem : orderItems) {
prodApi.reduceStocks(orderItem.getSkuId(),orderItem.getCount()).checkError();
}
}
@Override