mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	订单中心+营销活动:完善部分 TODO 提到的问题
This commit is contained in:
		| @@ -41,7 +41,7 @@ public class CommonResult<T> implements Serializable { | ||||
|      * 因为 A 方法返回的 CommonResult 对象,不满足调用其的 B 方法的返回,所以需要进行转换。 | ||||
|      * | ||||
|      * @param result 传入的 result 对象 | ||||
|      * @param <T> 返回的泛型 | ||||
|      * @param <T>    返回的泛型 | ||||
|      * @return 新的 CommonResult 对象 | ||||
|      */ | ||||
|     public static <T> CommonResult<T> error(CommonResult<?> result) { | ||||
| @@ -68,6 +68,14 @@ public class CommonResult<T> implements Serializable { | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|     public static <T> CommonResult<T> success(T data, String msg) { | ||||
|         CommonResult<T> result = new CommonResult<>(); | ||||
|         result.code = GlobalErrorCodeConstants.SUCCESS.getCode(); | ||||
|         result.data = data; | ||||
|         result.msg = msg; | ||||
|         return result; | ||||
|     } | ||||
|  | ||||
|     public static boolean isSuccess(Integer code) { | ||||
|         return Objects.equals(code, GlobalErrorCodeConstants.SUCCESS.getCode()); | ||||
|     } | ||||
|   | ||||
| @@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.promotion.api.bargain.dto; | ||||
|  | ||||
| import lombok.Data; | ||||
|  | ||||
| import javax.validation.constraints.NotEmpty; | ||||
| import javax.validation.constraints.NotNull; | ||||
|  | ||||
| // TODO @芋艿:这块要在看看 | ||||
| @@ -40,17 +39,7 @@ public class BargainRecordCreateReqDTO { | ||||
|      */ | ||||
|     @NotNull(message = "订单编号不能为空") | ||||
|     private Long orderId; | ||||
|     // TODO @puhui999:spuName、picUrl、 之类字段不用传递; | ||||
|     /** | ||||
|      * 商品名字 | ||||
|      */ | ||||
|     @NotEmpty(message = "商品名字不能为空") | ||||
|     private String spuName; | ||||
|     /** | ||||
|      * 商品图片 | ||||
|      */ | ||||
|     @NotEmpty(message = "商品图片不能为空") | ||||
|     private String picUrl; | ||||
|  | ||||
|     /** | ||||
|      * 砍价商品单价 | ||||
|      */ | ||||
| @@ -61,17 +50,7 @@ public class BargainRecordCreateReqDTO { | ||||
|      */ | ||||
|     @NotNull(message = "商品原价不能为空") | ||||
|     private Integer price; | ||||
|     // TODO @puhui999:nickname、avatar 不用传递,去查询; | ||||
|     /** | ||||
|      * 用户昵称 | ||||
|      */ | ||||
|     @NotEmpty(message = "用户昵称不能为空") | ||||
|     private String nickname; | ||||
|     /** | ||||
|      * 用户头像 | ||||
|      */ | ||||
|     @NotEmpty(message = "用户头像不能为空") | ||||
|     private String avatar; | ||||
|  | ||||
|     /** | ||||
|      * 开团状态:进行中 砍价成功 砍价失败 | ||||
|      */ | ||||
|   | ||||
| @@ -2,9 +2,9 @@ package cn.iocoder.yudao.module.promotion.api.combination; | ||||
|  | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordRespDTO; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateStatusReqDTO; | ||||
|  | ||||
| import javax.validation.Valid; | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.List; | ||||
|  | ||||
| // TODO @芋艿:后面也再撸撸这几个接口 | ||||
| @@ -51,13 +51,29 @@ public interface CombinationRecordApi { | ||||
|      */ | ||||
|     void validateCombinationLimitCount(Long activityId, Integer count, Integer sumCount); | ||||
|  | ||||
|     // TODO @puhui999:是不是搞成具体的方法,拼团成功,拼团失败,这种方法; | ||||
|     /** | ||||
|      * 更新拼团状态为 成功 | ||||
|      * | ||||
|      * @param userId  用户编号 | ||||
|      * @param orderId 订单编号 | ||||
|      */ | ||||
|     void updateRecordStatusToSuccess(Long userId, Long orderId); | ||||
|  | ||||
|     /** | ||||
|      * 更新开团记录状态 | ||||
|      * 更新拼团状态为 失败 | ||||
|      * | ||||
|      * @param reqDTO 请求 DTO | ||||
|      * @param userId  用户编号 | ||||
|      * @param orderId 订单编号 | ||||
|      */ | ||||
|     void updateCombinationRecordStatus(CombinationRecordUpdateStatusReqDTO reqDTO); | ||||
|     void updateRecordStatusToFailed(Long userId, Long orderId); | ||||
|  | ||||
|     /** | ||||
|      * 更新拼团状态为 进行中 | ||||
|      * | ||||
|      * @param userId    用户编号 | ||||
|      * @param orderId   订单编号 | ||||
|      * @param startTime 开始时间 | ||||
|      */ | ||||
|     void updateRecordStatusToInProgress(Long userId, Long orderId, LocalDateTime startTime); | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -1,39 +0,0 @@ | ||||
| package cn.iocoder.yudao.module.promotion.api.combination.dto; | ||||
|  | ||||
| import lombok.Data; | ||||
|  | ||||
| import javax.validation.constraints.NotNull; | ||||
| import java.time.LocalDateTime; | ||||
|  | ||||
| /** | ||||
|  * 拼团记录的更新状态 Request DTO | ||||
|  * | ||||
|  * @author HUIHUI | ||||
|  */ | ||||
| @Data | ||||
| public class CombinationRecordUpdateStatusReqDTO { | ||||
|  | ||||
|     /** | ||||
|      * 用户编号 | ||||
|      */ | ||||
|     @NotNull(message = "用户编号不能为空") | ||||
|     private Long userId; | ||||
|  | ||||
|     /** | ||||
|      * 订单编号 | ||||
|      */ | ||||
|     @NotNull(message = "订单编号不能为空") | ||||
|     private Long orderId; | ||||
|  | ||||
|     /** | ||||
|      * 开团状态:正在开团 拼团成功 拼团失败 | ||||
|      */ | ||||
|     @NotNull(message = "开团状态不能为空") | ||||
|     private Integer status; | ||||
|  | ||||
|     /** | ||||
|      * 团开始时间 | ||||
|      */ | ||||
|     private LocalDateTime startTime; | ||||
|  | ||||
| } | ||||
| @@ -51,7 +51,7 @@ public interface ErrorCodeConstants { | ||||
|  | ||||
|     // ========== 秒杀活动 1013008000 ========== | ||||
|     ErrorCode SECKILL_ACTIVITY_NOT_EXISTS = new ErrorCode(1013008000, "秒杀活动不存在"); | ||||
|     ErrorCode SECKILL_ACTIVITY_SPU_CONFLICTS = new ErrorCode(1013008002, "存在商品参加了其它秒杀活动"); | ||||
|     ErrorCode SECKILL_ACTIVITY_SPU_CONFLICTS = new ErrorCode(1013008002, "存在商品参加了其它秒杀活动,秒杀时段冲突"); | ||||
|     ErrorCode SECKILL_ACTIVITY_UPDATE_FAIL_STATUS_CLOSED = new ErrorCode(1013008003, "秒杀活动已关闭,不能修改"); | ||||
|     ErrorCode SECKILL_ACTIVITY_DELETE_FAIL_STATUS_NOT_CLOSED_OR_END = new ErrorCode(1013008004, "秒杀活动未关闭或未结束,不能删除"); | ||||
|     ErrorCode SECKILL_ACTIVITY_CLOSE_FAIL_STATUS_CLOSED = new ErrorCode(1013008005, "秒杀活动已关闭,不能重复关闭"); | ||||
|   | ||||
| @@ -2,13 +2,13 @@ package cn.iocoder.yudao.module.promotion.api.combination; | ||||
|  | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordRespDTO; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateStatusReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; | ||||
| import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum; | ||||
| import cn.iocoder.yudao.module.promotion.service.combination.CombinationRecordService; | ||||
| import org.springframework.stereotype.Service; | ||||
|  | ||||
| import javax.annotation.Resource; | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
| @@ -43,12 +43,19 @@ public class CombinationRecordApiImpl implements CombinationRecordApi { | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void updateCombinationRecordStatus(CombinationRecordUpdateStatusReqDTO reqDTO) { | ||||
|         if (null == reqDTO.getStartTime()) { | ||||
|             recordService.updateCombinationRecordStatusByUserIdAndOrderId(reqDTO); | ||||
|         } else { | ||||
|             recordService.updateCombinationRecordStatusAndStartTimeByUserIdAndOrderId(reqDTO); | ||||
|         } | ||||
|     public void updateRecordStatusToSuccess(Long userId, Long orderId) { | ||||
|         recordService.updateCombinationRecordStatusByUserIdAndOrderId(CombinationRecordStatusEnum.SUCCESS.getStatus(), userId, orderId); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void updateRecordStatusToFailed(Long userId, Long orderId) { | ||||
|         recordService.updateCombinationRecordStatusByUserIdAndOrderId(CombinationRecordStatusEnum.FAILED.getStatus(), userId, orderId); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     public void updateRecordStatusToInProgress(Long userId, Long orderId, LocalDateTime startTime) { | ||||
|         recordService.updateRecordStatusAndStartTimeByUserIdAndOrderId(CombinationRecordStatusEnum.IN_PROGRESS.getStatus(), | ||||
|                 userId, orderId, startTime); | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -86,11 +86,11 @@ public class CombinationRecordDO extends BaseDO { | ||||
|      */ | ||||
|     private Boolean virtualGroup; | ||||
|     /** | ||||
|      * 过期时间,单位:小时 | ||||
|      * 过期时间 | ||||
|      * | ||||
|      * 关联 {@link CombinationActivityDO#getLimitDuration()} | ||||
|      * {@link CombinationRecordDO#getStartTime()} + {@link CombinationActivityDO#getLimitDuration()} 计算 | ||||
|      */ | ||||
|     private Integer expireTime; | ||||
|     private LocalDateTime expireTime; | ||||
|     /** | ||||
|      * 开始时间 (订单付款后开始的时间) | ||||
|      */ | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| package cn.iocoder.yudao.module.promotion.service.combination; | ||||
|  | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateStatusReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationRecordDO; | ||||
|  | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.List; | ||||
|  | ||||
| /** | ||||
| @@ -16,9 +16,11 @@ public interface CombinationRecordService { | ||||
|     /** | ||||
|      * 更新拼团状态 | ||||
|      * | ||||
|      * @param reqDTO 请求 DTO | ||||
|      * @param status 状态 | ||||
|      * @param userId 用户编号 | ||||
|      * @param orderId 订单编号 | ||||
|      */ | ||||
|     void updateCombinationRecordStatusByUserIdAndOrderId(CombinationRecordUpdateStatusReqDTO reqDTO); | ||||
|     void updateCombinationRecordStatusByUserIdAndOrderId(Integer status, Long userId, Long orderId); | ||||
|  | ||||
|     /** | ||||
|      * 创建拼团记录 | ||||
| @@ -30,9 +32,12 @@ public interface CombinationRecordService { | ||||
|     /** | ||||
|      * 更新拼团状态和开始时间 | ||||
|      * | ||||
|      * @param reqDTO 请求 DTO | ||||
|      * @param status 状态 | ||||
|      * @param userId 用户编号 | ||||
|      * @param orderId 订单编号 | ||||
|      * @param startTime 开始时间 | ||||
|      */ | ||||
|     void updateCombinationRecordStatusAndStartTimeByUserIdAndOrderId(CombinationRecordUpdateStatusReqDTO reqDTO); | ||||
|     void updateRecordStatusAndStartTimeByUserIdAndOrderId(Integer status, Long userId, Long orderId, LocalDateTime startTime); | ||||
|  | ||||
|     /** | ||||
|      * 获得拼团状态 | ||||
|   | ||||
| @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.promotion.service.combination; | ||||
| import cn.hutool.core.collection.CollUtil; | ||||
| import cn.hutool.core.util.ObjectUtil; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordCreateReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateStatusReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; | ||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | ||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationRecordDO; | ||||
| @@ -21,6 +20,7 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU | ||||
| import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.*; | ||||
|  | ||||
| // TODO 芋艿:等拼团记录做完,完整 review 下 | ||||
|  | ||||
| /** | ||||
|  * 拼团记录 Service 实现类 | ||||
|  * | ||||
| @@ -38,27 +38,27 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void updateCombinationRecordStatusByUserIdAndOrderId(CombinationRecordUpdateStatusReqDTO reqDTO) { | ||||
|     public void updateCombinationRecordStatusByUserIdAndOrderId(Integer status, Long userId, Long orderId) { | ||||
|         // 校验拼团是否存在 | ||||
|         CombinationRecordDO recordDO = validateCombinationRecord(reqDTO.getUserId(), reqDTO.getOrderId()); | ||||
|         CombinationRecordDO recordDO = validateCombinationRecord(userId, orderId); | ||||
|  | ||||
|         // 更新状态 | ||||
|         recordDO.setStatus(reqDTO.getStatus()); | ||||
|         recordDO.setStatus(status); | ||||
|         recordMapper.updateById(recordDO); | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     @Transactional(rollbackFor = Exception.class) | ||||
|     public void updateCombinationRecordStatusAndStartTimeByUserIdAndOrderId(CombinationRecordUpdateStatusReqDTO reqDTO) { | ||||
|         CombinationRecordDO recordDO = validateCombinationRecord(reqDTO.getUserId(), reqDTO.getOrderId()); | ||||
|     public void updateRecordStatusAndStartTimeByUserIdAndOrderId(Integer status, Long userId, Long orderId, LocalDateTime startTime) { | ||||
|         CombinationRecordDO recordDO = validateCombinationRecord(userId, orderId); | ||||
|         // 更新状态 | ||||
|         recordDO.setStatus(reqDTO.getStatus()); | ||||
|         recordDO.setStatus(status); | ||||
|         // 更新开始时间 | ||||
|         recordDO.setStartTime(reqDTO.getStartTime()); | ||||
|         recordDO.setStartTime(startTime); | ||||
|         recordMapper.updateById(recordDO); | ||||
|  | ||||
|         // 更新拼团参入人数 | ||||
|         List<CombinationRecordDO> recordDOs = recordMapper.selectListByHeadIdAndStatus(recordDO.getHeadId(), reqDTO.getStatus()); | ||||
|         List<CombinationRecordDO> recordDOs = recordMapper.selectListByHeadIdAndStatus(recordDO.getHeadId(), status); | ||||
|         if (CollUtil.isNotEmpty(recordDOs)) { | ||||
|             recordDOs.forEach(item -> { | ||||
|                 item.setUserCount(recordDOs.size()); | ||||
| @@ -115,8 +115,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { | ||||
|         // 2. 创建拼团记录 | ||||
|         CombinationRecordDO record = CombinationActivityConvert.INSTANCE.convert(reqDTO); | ||||
|         record.setVirtualGroup(false); | ||||
|         // TODO @puhui999:过期时间,应该是 Date 哈; | ||||
|         record.setExpireTime(activity.getLimitDuration()); | ||||
|         record.setExpireTime(record.getStartTime().plusHours(activity.getLimitDuration())); | ||||
|         record.setUserSize(activity.getUserSize()); | ||||
|         recordMapper.insert(record); | ||||
|     } | ||||
|   | ||||
| @@ -92,15 +92,9 @@ public class SeckillActivityServiceImpl implements SeckillActivityService { | ||||
|         if (activityId != null) { // 排除自己 | ||||
|             activityList.removeIf(item -> ObjectUtil.equal(item.getId(), activityId)); | ||||
|         } | ||||
|         // TODO @puhui999:一个 spu,参与两个活动应该没关系,关键是活动时间不充能重叠; | ||||
|         // 2.2 过滤出所有 spuId 有交集的活动,判断是否存在重叠 | ||||
|         List<SeckillActivityDO> activityDOs1 = filterList(activityList, s -> ObjectUtil.equal(s.getSpuId(), spuId)); | ||||
|         if (isNotEmpty(activityDOs1)) { | ||||
|             throw exception(SECKILL_ACTIVITY_SPU_CONFLICTS); | ||||
|         } | ||||
|         // 2.3 过滤出所有 configIds 有交集的活动,判断是否存在重叠 | ||||
|         List<SeckillActivityDO> activityDOs2 = filterList(activityList, s -> containsAny(s.getConfigIds(), configIds)); | ||||
|         if (isNotEmpty(activityDOs2)) { | ||||
|         // 2.2 过滤出所有 configIds 有交集的活动,判断是否存在重叠 | ||||
|         List<SeckillActivityDO> activityDOs = filterList(activityList, s -> containsAny(s.getConfigIds(), configIds)); | ||||
|         if (isNotEmpty(activityDOs)) { | ||||
|             throw exception(SECKILL_ACTIVITY_SPU_CONFLICTS); | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -1,18 +1,9 @@ | ||||
| package cn.iocoder.yudao.module.promotion.util; | ||||
|  | ||||
| import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||
| import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; | ||||
| import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO; | ||||
|  | ||||
| import java.time.LocalDateTime; | ||||
| import java.util.List; | ||||
| import java.util.Set; | ||||
| import java.util.function.Function; | ||||
|  | ||||
| import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.anyMatch; | ||||
| import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.SKU_NOT_EXISTS; | ||||
|  | ||||
| /** | ||||
|  * 活动工具类 | ||||
| @@ -31,21 +22,4 @@ public class PromotionUtils { | ||||
|         return LocalDateTimeUtils.beforeNow(endTime) ? CommonStatusEnum.DISABLE.getStatus() : CommonStatusEnum.ENABLE.getStatus(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * 校验商品 sku 是否都存在 | ||||
|      * | ||||
|      * @param skus     数据库中的商品 skus | ||||
|      * @param products 需要校验的商品 | ||||
|      * @param func     获取需要校验的商品的 skuId | ||||
|      */ | ||||
|     public static <T> void validateProductSkuAllExists(List<ProductSkuRespDTO> skus, List<T> products, Function<T, Long> func) { | ||||
|         // 校验 sku 个数是否一致 | ||||
|         Set<Long> skuIdsSet = CollectionUtils.convertSet(products, func); | ||||
|         Set<Long> skuIdsSet1 = CollectionUtils.convertSet(skus, ProductSkuRespDTO::getId); | ||||
|         // 校验 skuId 是否存在 | ||||
|         if (anyMatch(skuIdsSet, s -> !skuIdsSet1.contains(s))) { | ||||
|             throw exception(SKU_NOT_EXISTS); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -36,6 +36,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||||
| import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP; | ||||
| import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; | ||||
| import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.AFTER_SALE_NOT_FOUND; | ||||
|  | ||||
| @Tag(name = "管理后台 - 售后订单") | ||||
| @RestController | ||||
| @@ -76,6 +77,9 @@ public class TradeAfterSaleController { | ||||
|     public CommonResult<TradeAfterSaleDetailRespVO> getOrderDetail(@RequestParam("id") Long id) { | ||||
|         // 查询订单 | ||||
|         TradeAfterSaleDO afterSale = afterSaleService.getAfterSale(id); | ||||
|         if (afterSale == null) { | ||||
|             return success(null, AFTER_SALE_NOT_FOUND.getMsg()); | ||||
|         } | ||||
|         // 查询订单 | ||||
|         TradeOrderDO order = tradeOrderQueryService.getOrder(afterSale.getOrderId()); | ||||
|         // 查询订单项 | ||||
| @@ -92,7 +96,11 @@ public class TradeAfterSaleController { | ||||
|             TradeAfterSaleLogRespDTO respVO = new TradeAfterSaleLogRespDTO(); | ||||
|             respVO.setId((long) i); | ||||
|             respVO.setUserId((long) i); | ||||
|             respVO.setUserType(1); | ||||
|             respVO.setUserType(i % 2 == 0 ? 2 : 1); | ||||
|             // 模拟系统操作 | ||||
|             if (i == 2) { | ||||
|                 respVO.setUserType(3); | ||||
|             } | ||||
|             respVO.setAfterSaleId(id); | ||||
|             respVO.setOrderId((long) i); | ||||
|             respVO.setOrderItemId((long) i); | ||||
|   | ||||
| @@ -35,7 +35,7 @@ public class TradeAfterSaleDetailRespVO extends TradeAfterSaleBaseVO { | ||||
|     /** | ||||
|      * 售后日志 | ||||
|      */ | ||||
|     private List<TradeAfterSaleLogRespVO> afterSaleLog; | ||||
|     private List<TradeAfterSaleLogRespVO> logs; | ||||
|  | ||||
|     @Schema(description = "管理后台 - 交易订单的详情的订单项目") | ||||
|     @Data | ||||
|   | ||||
| @@ -26,24 +26,23 @@ public class TradeOrderDetailRespVO extends TradeOrderBaseVO { | ||||
|     private MemberUserRespVO user; | ||||
|  | ||||
|     /** | ||||
|      * TODO 订单操作日志, 先模拟一波;返回 logs,简洁,然后复数哈 | ||||
|      * TODO 订单操作日志, 先模拟一波 | ||||
|      */ | ||||
|     private List<OrderLog> orderLog; | ||||
|     private List<OrderLog> logs; | ||||
|  | ||||
|     // TODO @puhui999:swagger 注解 | ||||
|     @Schema(description = "管理后台 - 交易订单的操作日志") | ||||
|     @Data | ||||
|     public static class OrderLog { | ||||
|  | ||||
|         /** | ||||
|          * 内容 | ||||
|          */ | ||||
|         @Schema(description = "操作详情", requiredMode = Schema.RequiredMode.REQUIRED, example = "订单发货") | ||||
|         private String content; | ||||
|  | ||||
|         /** | ||||
|          * 创建时间 | ||||
|          */ | ||||
|         @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED, example = "2023-06-01 10:50:20") | ||||
|         private LocalDateTime createTime; | ||||
|  | ||||
|         @Schema(description = "用户类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | ||||
|         private Integer userType; | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @Schema(description = "管理后台 - 交易订单的详情的订单项目") | ||||
|   | ||||
| @@ -78,7 +78,7 @@ public interface TradeAfterSaleConvert { | ||||
|         // 处理订单信息 | ||||
|         respVO.setOrder(convert(order)); | ||||
|         // 处理售后日志 | ||||
|         respVO.setAfterSaleLog(convertList1(logs)); | ||||
|         respVO.setLogs(convertList1(logs)); | ||||
|         return respVO; | ||||
|     } | ||||
|     List<TradeAfterSaleLogRespVO> convertList1(List<TradeAfterSaleLogRespDTO> list); | ||||
|   | ||||
| @@ -93,6 +93,7 @@ public interface TradeOrderConvert { | ||||
|         items.forEach(item -> item.setIncrCount(-item.getIncrCount())); | ||||
|         return new ProductSkuUpdateStockReqDTO(items); | ||||
|     } | ||||
|  | ||||
|     List<ProductSkuUpdateStockReqDTO.Item> convertList(List<TradeOrderItemDO> list); | ||||
|  | ||||
|     @Mappings({ | ||||
| @@ -151,9 +152,10 @@ public interface TradeOrderConvert { | ||||
|             TradeOrderDetailRespVO.OrderLog orderLog = new TradeOrderDetailRespVO.OrderLog(); | ||||
|             orderLog.setContent("订单操作" + i); | ||||
|             orderLog.setCreateTime(LocalDateTime.now()); | ||||
|             orderLog.setUserType(i % 2 == 0 ? 2 : 1); | ||||
|             orderLogs.add(orderLog); | ||||
|         } | ||||
|         orderVO.setOrderLog(orderLogs); | ||||
|         orderVO.setLogs(orderLogs); | ||||
|         return orderVO; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -90,12 +90,7 @@ public class TradeAfterSaleServiceImpl implements TradeAfterSaleService, AfterSa | ||||
|  | ||||
|     @Override | ||||
|     public TradeAfterSaleDO getAfterSale(Long id) { | ||||
|         TradeAfterSaleDO afterSale = tradeAfterSaleMapper.selectById(id); | ||||
|         // TODO @puhui999;读不到,不要这里报错哈;交给前端报错;一般是读取信息不到,message 提示,然后 close tab; | ||||
|         if (afterSale == null) { | ||||
|             throw exception(AFTER_SALE_NOT_FOUND); | ||||
|         } | ||||
|         return afterSale; | ||||
|         return tradeAfterSaleMapper.selectById(id); | ||||
|     } | ||||
|  | ||||
|     // TODO 芋艿:拼团失败,要不要发起售后的方式退款?还是走取消逻辑? | ||||
|   | ||||
| @@ -28,7 +28,6 @@ import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi; | ||||
| import cn.iocoder.yudao.module.promotion.api.bargain.BargainRecordApi; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.CombinationRecordApi; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordRespDTO; | ||||
| import cn.iocoder.yudao.module.promotion.api.combination.dto.CombinationRecordUpdateStatusReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.api.coupon.CouponApi; | ||||
| import cn.iocoder.yudao.module.promotion.api.coupon.dto.CouponUseReqDTO; | ||||
| import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum; | ||||
| @@ -352,8 +351,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { | ||||
|         // 1、拼团活动 | ||||
|         if (Objects.equals(TradeOrderTypeEnum.COMBINATION.getType(), order.getType())) { | ||||
|             // 更新拼团状态 TODO puhui999:订单支付失败或订单支付过期删除这条拼团记录 | ||||
|             combinationRecordApi.updateCombinationRecordStatus(new CombinationRecordUpdateStatusReqDTO().setUserId(order.getUserId()) | ||||
|                     .setOrderId(order.getId()).setStatus(CombinationRecordStatusEnum.IN_PROGRESS.getStatus()).setStartTime(LocalDateTime.now())); | ||||
|             combinationRecordApi.updateRecordStatusToInProgress(order.getUserId(), order.getId(), LocalDateTime.now()); | ||||
|         } | ||||
|         // TODO 芋艿:发送订单变化的消息 | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 puhui999
					puhui999