调整订单模块
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -24,6 +24,8 @@ public class TradeOrderDetailRespVO extends TradeOrderBaseVO{
|
|||||||
|
|
||||||
//取消原因
|
//取消原因
|
||||||
private String cancelReason;
|
private String cancelReason;
|
||||||
|
//取消备注
|
||||||
|
private String cancelRemark;
|
||||||
//商家备注
|
//商家备注
|
||||||
private String merchantRemark;
|
private String merchantRemark;
|
||||||
//退款时间
|
//退款时间
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 【系统】自动取消订单
|
* 【系统】自动取消订单
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user