Commit 1b9a3f9f637e6665e48d26ca45f147c4c9b7ce53
code review:调整操作日志的封装
Showing
11 changed files
with
381 additions
and
0 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/api/combination/CombinationApiImpl.java
| @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.promotion.api.combination; | @@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.promotion.api.combination; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationActivityUpdateStockReqDTO; | 3 | import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationActivityUpdateStockReqDTO; |
| 4 | import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService; | 4 | import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService; |
| 5 | +import org.springframework.stereotype.Service; | ||
| 6 | +import org.springframework.validation.annotation.Validated; | ||
| 5 | 7 | ||
| 6 | import javax.annotation.Resource; | 8 | import javax.annotation.Resource; |
| 7 | 9 | ||
| @@ -10,6 +12,8 @@ import javax.annotation.Resource; | @@ -10,6 +12,8 @@ import javax.annotation.Resource; | ||
| 10 | * | 12 | * |
| 11 | * @author HUIHUI | 13 | * @author HUIHUI |
| 12 | */ | 14 | */ |
| 15 | +@Service | ||
| 16 | +@Validated | ||
| 13 | public class CombinationApiImpl implements CombinationApi { | 17 | public class CombinationApiImpl implements CombinationApi { |
| 14 | 18 | ||
| 15 | @Resource | 19 | @Resource |
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityServiceImpl.java
| @@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.promotion.dal.mysql.combination.CombinationActivi | @@ -22,6 +22,7 @@ import cn.iocoder.yudao.module.promotion.dal.mysql.combination.CombinationActivi | ||
| 22 | import cn.iocoder.yudao.module.promotion.dal.mysql.combination.CombinationProductMapper; | 22 | import cn.iocoder.yudao.module.promotion.dal.mysql.combination.CombinationProductMapper; |
| 23 | import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum; | 23 | import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum; |
| 24 | import cn.iocoder.yudao.module.trade.api.order.TradeOrderApi; | 24 | import cn.iocoder.yudao.module.trade.api.order.TradeOrderApi; |
| 25 | +import org.springframework.context.annotation.Lazy; | ||
| 25 | import org.springframework.stereotype.Service; | 26 | import org.springframework.stereotype.Service; |
| 26 | import org.springframework.transaction.annotation.Transactional; | 27 | import org.springframework.transaction.annotation.Transactional; |
| 27 | import org.springframework.validation.annotation.Validated; | 28 | import org.springframework.validation.annotation.Validated; |
| @@ -52,7 +53,9 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic | @@ -52,7 +53,9 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic | ||
| 52 | private CombinationActivityMapper combinationActivityMapper; | 53 | private CombinationActivityMapper combinationActivityMapper; |
| 53 | @Resource | 54 | @Resource |
| 54 | private CombinationProductMapper combinationProductMapper; | 55 | private CombinationProductMapper combinationProductMapper; |
| 56 | + | ||
| 55 | @Resource | 57 | @Resource |
| 58 | + @Lazy // TODO @puhui999:我感觉 validateCombination 可以挪到 CombinationRecordServiceImpl 中,因为它更偏向能不能创建拼团记录; | ||
| 56 | private CombinationRecordService combinationRecordService; | 59 | private CombinationRecordService combinationRecordService; |
| 57 | 60 | ||
| 58 | @Resource | 61 | @Resource |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderOperateTypeEnum.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.enums.order; | ||
| 2 | + | ||
| 3 | +import lombok.Getter; | ||
| 4 | +import lombok.RequiredArgsConstructor; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * 订单操作类型的枚举 | ||
| 8 | + * | ||
| 9 | + * @author 陈賝 | ||
| 10 | + * @since 2023/7/6 15:31 | ||
| 11 | + */ | ||
| 12 | +@RequiredArgsConstructor | ||
| 13 | +@Getter | ||
| 14 | +public enum TradeOrderOperateTypeEnum { | ||
| 15 | + | ||
| 16 | + MEMBER_CREATE(1, "用户下单"), | ||
| 17 | + TEST(2, "用户({nickname})做了({thing})"), | ||
| 18 | + ; | ||
| 19 | + | ||
| 20 | + /** | ||
| 21 | + * 类型 | ||
| 22 | + */ | ||
| 23 | + private final Integer type; | ||
| 24 | + /** | ||
| 25 | + * 类型 | ||
| 26 | + */ | ||
| 27 | + private final String content; | ||
| 28 | + | ||
| 29 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java
| 1 | package cn.iocoder.yudao.module.trade.controller.app.order; | 1 | package cn.iocoder.yudao.module.trade.controller.app.order; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.map.MapUtil; | ||
| 3 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | 4 | import cn.iocoder.yudao.framework.common.pojo.CommonResult; |
| 4 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 5 | import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; | 6 | import cn.iocoder.yudao.framework.security.core.annotations.PreAuthenticated; |
| @@ -11,8 +12,11 @@ import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; | @@ -11,8 +12,11 @@ import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; | ||
| 11 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; | 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.delivery.DeliveryExpressDO; |
| 12 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; | 13 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO; |
| 13 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; | 14 | import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO; |
| 15 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderOperateTypeEnum; | ||
| 14 | import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; | 16 | import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum; |
| 15 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; | 17 | import cn.iocoder.yudao.module.trade.framework.order.config.TradeOrderProperties; |
| 18 | +import cn.iocoder.yudao.module.trade.framework.order.core.annotations.TradeOrderLog; | ||
| 19 | +import cn.iocoder.yudao.module.trade.framework.order.core.utils.TradeOrderLogUtils; | ||
| 16 | import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; | 20 | import cn.iocoder.yudao.module.trade.service.delivery.DeliveryExpressService; |
| 17 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; | 21 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderQueryService; |
| 18 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; | 22 | import cn.iocoder.yudao.module.trade.service.order.TradeOrderUpdateService; |
| @@ -61,7 +65,10 @@ public class AppTradeOrderController { | @@ -61,7 +65,10 @@ public class AppTradeOrderController { | ||
| 61 | @PostMapping("/create") | 65 | @PostMapping("/create") |
| 62 | @Operation(summary = "创建订单") | 66 | @Operation(summary = "创建订单") |
| 63 | @PreAuthenticated | 67 | @PreAuthenticated |
| 68 | + @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.TEST) | ||
| 64 | public CommonResult<AppTradeOrderCreateRespVO> createOrder(@RequestBody AppTradeOrderCreateReqVO createReqVO) { | 69 | public CommonResult<AppTradeOrderCreateRespVO> createOrder(@RequestBody AppTradeOrderCreateReqVO createReqVO) { |
| 70 | + TradeOrderLogUtils.setOrderInfo(10L, 1, 2, | ||
| 71 | + MapUtil.<String, Object>builder().put("nickname", "小明").put("thing", "种土豆").build()); | ||
| 65 | TradeOrderDO order = tradeOrderUpdateService.createOrder(getLoginUserId(), getClientIP(), createReqVO); | 72 | TradeOrderDO order = tradeOrderUpdateService.createOrder(getLoginUserId(), getClientIP(), createReqVO); |
| 66 | return success(new AppTradeOrderCreateRespVO().setId(order.getId()).setPayOrderId(order.getPayOrderId())); | 73 | return success(new AppTradeOrderCreateRespVO().setId(order.getId()).setPayOrderId(order.getPayOrderId())); |
| 67 | } | 74 | } |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/dal/dataobject/order/TradeOrderLogDO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.dal.dataobject.order; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.framework.common.enums.UserTypeEnum; | ||
| 4 | +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||
| 5 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderOperateTypeEnum; | ||
| 6 | +import com.baomidou.mybatisplus.annotation.KeySequence; | ||
| 7 | +import com.baomidou.mybatisplus.annotation.TableId; | ||
| 8 | +import com.baomidou.mybatisplus.annotation.TableName; | ||
| 9 | +import lombok.*; | ||
| 10 | + | ||
| 11 | +/** | ||
| 12 | + * 订单日志 DO | ||
| 13 | + * | ||
| 14 | + * @author 陈賝 | ||
| 15 | + */ | ||
| 16 | +@TableName("trade_order_log") | ||
| 17 | +@KeySequence("trade_order_log_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 | ||
| 18 | +@Data | ||
| 19 | +@EqualsAndHashCode(callSuper = true) | ||
| 20 | +@ToString(callSuper = true) | ||
| 21 | +@Builder | ||
| 22 | +@NoArgsConstructor | ||
| 23 | +@AllArgsConstructor | ||
| 24 | +public class TradeOrderLogDO extends BaseDO { | ||
| 25 | + | ||
| 26 | + /** | ||
| 27 | + * 用户类型 - 系统 | ||
| 28 | + * | ||
| 29 | + * 例如说:Job 自动过期订单时,通过系统自动操作 | ||
| 30 | + */ | ||
| 31 | + public static final Integer USER_TYPE_SYSTEM = 0; | ||
| 32 | + /** | ||
| 33 | + * 用户编号 - 系统 | ||
| 34 | + */ | ||
| 35 | + public static final Long USER_ID_SYSTEM = 0L; | ||
| 36 | + | ||
| 37 | + /** | ||
| 38 | + * 编号 | ||
| 39 | + */ | ||
| 40 | + @TableId | ||
| 41 | + private Long id; | ||
| 42 | + /** | ||
| 43 | + * 用户编号 | ||
| 44 | + * | ||
| 45 | + * 关联 AdminUserDO 的 id 字段、或者 MemberUserDO 的 id 字段 | ||
| 46 | + */ | ||
| 47 | + private Long userId; | ||
| 48 | + /** | ||
| 49 | + * 用户类型 | ||
| 50 | + * | ||
| 51 | + * 枚举 {@link UserTypeEnum} | ||
| 52 | + */ | ||
| 53 | + private Integer userType; | ||
| 54 | + | ||
| 55 | + /** | ||
| 56 | + * 订单号 | ||
| 57 | + * | ||
| 58 | + * 关联 {@link TradeOrderDO#getId()} | ||
| 59 | + */ | ||
| 60 | + private Long orderId; | ||
| 61 | + /** | ||
| 62 | + * 操作前状态 | ||
| 63 | + */ | ||
| 64 | + private Integer beforeStatus; | ||
| 65 | + /** | ||
| 66 | + * 操作后状态 | ||
| 67 | + */ | ||
| 68 | + private Integer afterStatus; | ||
| 69 | + | ||
| 70 | + /** | ||
| 71 | + * 操作类型 | ||
| 72 | + * | ||
| 73 | + * {@link TradeOrderOperateTypeEnum} | ||
| 74 | + */ | ||
| 75 | + private Integer operateType; | ||
| 76 | + /** | ||
| 77 | + * 订单日志信息 | ||
| 78 | + */ | ||
| 79 | + private String content; | ||
| 80 | + | ||
| 81 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/core/annotations/TradeOrderLog.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.framework.order.core.annotations; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.trade.enums.order.TradeOrderOperateTypeEnum; | ||
| 4 | + | ||
| 5 | +import java.lang.annotation.*; | ||
| 6 | + | ||
| 7 | +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; | ||
| 8 | +import static java.lang.annotation.ElementType.METHOD; | ||
| 9 | + | ||
| 10 | +/** | ||
| 11 | + * 交易订单的操作日志 AOP 注解 | ||
| 12 | + * | ||
| 13 | + * @author 陈賝 | ||
| 14 | + * @since 2023/7/6 15:37 | ||
| 15 | + */ | ||
| 16 | +@Target({METHOD, ANNOTATION_TYPE}) | ||
| 17 | +@Retention(RetentionPolicy.RUNTIME) | ||
| 18 | +@Documented | ||
| 19 | +public @interface TradeOrderLog { | ||
| 20 | + | ||
| 21 | + /** | ||
| 22 | + * 操作类型 | ||
| 23 | + */ | ||
| 24 | + TradeOrderOperateTypeEnum operateType(); | ||
| 25 | + | ||
| 26 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/core/aop/TradeOrderLogAspect.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.framework.order.core.aop; | ||
| 2 | + | ||
| 3 | + | ||
| 4 | +import cn.hutool.core.util.ObjectUtil; | ||
| 5 | +import cn.hutool.core.util.StrUtil; | ||
| 6 | +import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; | ||
| 7 | +import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderLogDO; | ||
| 8 | +import cn.iocoder.yudao.module.trade.framework.order.core.annotations.TradeOrderLog; | ||
| 9 | +import cn.iocoder.yudao.module.trade.service.order.TradeOrderLogService; | ||
| 10 | +import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO; | ||
| 11 | +import lombok.extern.slf4j.Slf4j; | ||
| 12 | +import org.aspectj.lang.JoinPoint; | ||
| 13 | +import org.aspectj.lang.annotation.AfterReturning; | ||
| 14 | +import org.aspectj.lang.annotation.Aspect; | ||
| 15 | +import org.springframework.stereotype.Component; | ||
| 16 | + | ||
| 17 | +import javax.annotation.Resource; | ||
| 18 | +import java.util.Map; | ||
| 19 | + | ||
| 20 | +import static cn.iocoder.yudao.framework.common.util.json.JsonUtils.toJsonString; | ||
| 21 | +import static java.util.Collections.emptyMap; | ||
| 22 | + | ||
| 23 | +/** | ||
| 24 | + * 交易订单的操作日志的记录 AOP 切面 | ||
| 25 | + * | ||
| 26 | + * @author 陈賝 | ||
| 27 | + * @since 2023/6/13 13:54 | ||
| 28 | + */ | ||
| 29 | +@Component | ||
| 30 | +@Aspect | ||
| 31 | +@Slf4j | ||
| 32 | +public class TradeOrderLogAspect { | ||
| 33 | + | ||
| 34 | + /** | ||
| 35 | + * 订单编号 | ||
| 36 | + */ | ||
| 37 | + private static final ThreadLocal<Long> ORDER_ID = new ThreadLocal<>(); | ||
| 38 | + /** | ||
| 39 | + * 操作前的状态 | ||
| 40 | + */ | ||
| 41 | + private static final ThreadLocal<Integer> BEFORE_STATUS = new ThreadLocal<>(); | ||
| 42 | + /** | ||
| 43 | + * 操作后的状态 | ||
| 44 | + */ | ||
| 45 | + private static final ThreadLocal<Integer> AFTER_STATUS = new ThreadLocal<>(); | ||
| 46 | + /** | ||
| 47 | + * 拓展参数 Map,用于格式化操作内容 | ||
| 48 | + */ | ||
| 49 | + private static final ThreadLocal<Map<String, Object>> EXTS = new ThreadLocal<>(); | ||
| 50 | + | ||
| 51 | + public TradeOrderLogAspect() { | ||
| 52 | + System.out.println(); | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + @Resource | ||
| 56 | + private TradeOrderLogService orderLogService; | ||
| 57 | + | ||
| 58 | + @AfterReturning("@annotation(orderLog)") | ||
| 59 | + public void doAfterReturning(JoinPoint joinPoint, TradeOrderLog orderLog) { | ||
| 60 | + try { | ||
| 61 | + // 1.1 操作用户 | ||
| 62 | + Integer userType = getUserType(); | ||
| 63 | + Long userId = getUserId(); | ||
| 64 | + // 1.2 订单信息 | ||
| 65 | + Long orderId = ORDER_ID.get(); | ||
| 66 | + Integer beforeStatus = BEFORE_STATUS.get(); | ||
| 67 | + Integer afterStatus = AFTER_STATUS.get(); | ||
| 68 | + Map<String, Object> exts = ObjectUtil.defaultIfNull(EXTS.get(), emptyMap()); | ||
| 69 | + String content = StrUtil.format(orderLog.operateType().getContent(), exts); | ||
| 70 | + | ||
| 71 | + // 2.1 记录日志 | ||
| 72 | + TradeOrderLogCreateReqBO createBO = new TradeOrderLogCreateReqBO() | ||
| 73 | + .setUserId(userId).setUserType(userType) | ||
| 74 | + .setOrderId(orderId).setBeforeStatus(beforeStatus).setAfterStatus(afterStatus) | ||
| 75 | + .setOperateType(orderLog.operateType().getType()).setContent(content); | ||
| 76 | + orderLogService.createOrderLog(createBO); | ||
| 77 | + } catch (Exception ex) { | ||
| 78 | + // todo 芋艿:清理上下文 | ||
| 79 | + log.error("[doAfterReturning][orderLog({}) 订单日志错误]", toJsonString(orderLog), ex); | ||
| 80 | + } | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + /** | ||
| 84 | + * 获得用户类型 | ||
| 85 | + * | ||
| 86 | + * 如果没有,则约定为 {@link TradeOrderLogDO#getUserType()} 系统 | ||
| 87 | + * | ||
| 88 | + * @return 用户类型 | ||
| 89 | + */ | ||
| 90 | + private static Integer getUserType() { | ||
| 91 | + return ObjectUtil.defaultIfNull(WebFrameworkUtils.getLoginUserType(), TradeOrderLogDO.USER_TYPE_SYSTEM); | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + /** | ||
| 95 | + * 获得用户编号 | ||
| 96 | + * | ||
| 97 | + * 如果没有,则约定为 {@link TradeOrderLogDO#getUserId()} 系统 | ||
| 98 | + * | ||
| 99 | + * @return 用户类型 | ||
| 100 | + */ | ||
| 101 | + private static Long getUserId() { | ||
| 102 | + return ObjectUtil.defaultIfNull(WebFrameworkUtils.getLoginUserId(), TradeOrderLogDO.USER_ID_SYSTEM); | ||
| 103 | + } | ||
| 104 | + | ||
| 105 | + public static void setOrderInfo(Long id, Integer beforeStatus, Integer afterStatus, Map<String, Object> exts) { | ||
| 106 | + ORDER_ID.set(id); | ||
| 107 | + BEFORE_STATUS.set(beforeStatus); | ||
| 108 | + AFTER_STATUS.set(afterStatus); | ||
| 109 | + EXTS.set(exts); | ||
| 110 | + } | ||
| 111 | + | ||
| 112 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/core/utils/TradeOrderLogUtils.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.framework.order.core.utils; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.trade.framework.order.core.aop.TradeOrderLogAspect; | ||
| 4 | + | ||
| 5 | +import java.util.Map; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * 交易订单的操作日志 Utils | ||
| 9 | + * | ||
| 10 | + * @author 芋道源码 | ||
| 11 | + */ | ||
| 12 | +public class TradeOrderLogUtils { | ||
| 13 | + | ||
| 14 | + public static void setOrderInfo(Long id, Integer beforeStatus, Integer afterStatus) { | ||
| 15 | + TradeOrderLogAspect.setOrderInfo(id, beforeStatus, afterStatus, null); | ||
| 16 | + } | ||
| 17 | + | ||
| 18 | + public static void setOrderInfo(Long id, Integer beforeStatus, Integer afterStatus, | ||
| 19 | + Map<String, Object> exts) { | ||
| 20 | + TradeOrderLogAspect.setOrderInfo(id, beforeStatus, afterStatus, exts); | ||
| 21 | + } | ||
| 22 | + | ||
| 23 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderLogService.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.service.order; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO; | ||
| 4 | +import org.springframework.scheduling.annotation.Async; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * 交易下单日志 Service 接口 | ||
| 8 | + * | ||
| 9 | + * @author 陈賝 | ||
| 10 | + * @since 2023/7/6 15:44 | ||
| 11 | + */ | ||
| 12 | +public interface TradeOrderLogService { | ||
| 13 | + | ||
| 14 | + /** | ||
| 15 | + * 创建交易下单日志 | ||
| 16 | + * | ||
| 17 | + * @param logDTO 日志记录 | ||
| 18 | + * @author 陈賝 | ||
| 19 | + * @since 2023/7/6 15:45 | ||
| 20 | + */ | ||
| 21 | + @Async | ||
| 22 | + void createOrderLog(TradeOrderLogCreateReqBO logDTO); | ||
| 23 | + | ||
| 24 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderLogServiceImpl.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.service.order; | ||
| 2 | + | ||
| 3 | +import cn.iocoder.yudao.module.trade.service.order.bo.logger.TradeOrderLogCreateReqBO; | ||
| 4 | +import org.springframework.stereotype.Service; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * 交易下单日志 Service 实现类 | ||
| 8 | + * | ||
| 9 | + * @author 陈賝 | ||
| 10 | + * @since 2023/7/6 15:44 | ||
| 11 | + */ | ||
| 12 | +@Service | ||
| 13 | +public class TradeOrderLogServiceImpl implements TradeOrderLogService { | ||
| 14 | + | ||
| 15 | + @Override | ||
| 16 | + public void createOrderLog(TradeOrderLogCreateReqBO createReqBO) { | ||
| 17 | + // TODO 芋艿:存储还没搞 | ||
| 18 | + System.out.println(); | ||
| 19 | + } | ||
| 20 | + | ||
| 21 | +} |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/bo/logger/TradeOrderLogCreateReqBO.java
0 → 100644
| 1 | +package cn.iocoder.yudao.module.trade.service.order.bo.logger; | ||
| 2 | + | ||
| 3 | +import lombok.Data; | ||
| 4 | + | ||
| 5 | +import javax.validation.constraints.NotNull; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * 订单日志的创建 Request BO | ||
| 9 | + * | ||
| 10 | + * @author 陈賝 | ||
| 11 | + * @since 2023/7/6 15:27 | ||
| 12 | + */ | ||
| 13 | +@Data | ||
| 14 | +public class TradeOrderLogCreateReqBO { | ||
| 15 | + | ||
| 16 | + /** | ||
| 17 | + * 用户编号 | ||
| 18 | + */ | ||
| 19 | + @NotNull(message = "用户编号不能为空") | ||
| 20 | + private Long userId; | ||
| 21 | + /** | ||
| 22 | + * 用户类型 | ||
| 23 | + */ | ||
| 24 | + @NotNull(message = "用户类型不能为空") | ||
| 25 | + private Integer userType; | ||
| 26 | + | ||
| 27 | + /** | ||
| 28 | + * 订单编号 | ||
| 29 | + */ | ||
| 30 | + @NotNull(message = "订单编号") | ||
| 31 | + private Long orderId; | ||
| 32 | + /** | ||
| 33 | + * 操作前状态 | ||
| 34 | + */ | ||
| 35 | + private Integer beforeStatus; | ||
| 36 | + /** | ||
| 37 | + * 操作后状态 | ||
| 38 | + */ | ||
| 39 | + @NotNull(message = "操作后的状态不能为空") | ||
| 40 | + private Integer afterStatus; | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * 操作类型 | ||
| 44 | + */ | ||
| 45 | + private Integer operateType; | ||
| 46 | + /** | ||
| 47 | + * 操作明细 | ||
| 48 | + */ | ||
| 49 | + private String content; | ||
| 50 | + | ||
| 51 | +} |