Commit eaaeb86a0cefa583233b378d438d2ef07d6c0d7c

Authored by YunaiV
1 parent 89c137a9

feat(mes): add MES production task issue API and improve combination record validation

yudao-module-mall/yudao-module-promotion/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
@@ -77,7 +77,6 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @@ -77,7 +77,6 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
77 @Resource 77 @Resource
78 public SocialClientApi socialClientApi; 78 public SocialClientApi socialClientApi;
79 79
80 - // TODO @芋艿:在详细预览下;  
81 @Override 80 @Override
82 public KeyValue<CombinationActivityDO, CombinationProductDO> validateCombinationRecord( 81 public KeyValue<CombinationActivityDO, CombinationProductDO> validateCombinationRecord(
83 Long userId, Long activityId, Long headId, Long skuId, Integer count) { 82 Long userId, Long activityId, Long headId, Long skuId, Integer count) {
@@ -97,7 +96,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @@ -97,7 +96,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
97 } 96 }
98 97
99 // 2. 父拼团是否存在,是否已经满了 98 // 2. 父拼团是否存在,是否已经满了
100 - if (headId != null) { 99 + if (isJoinCombination(headId)) {
101 // 2.1. 查询进行中的父拼团 100 // 2.1. 查询进行中的父拼团
102 CombinationRecordDO record = combinationRecordMapper.selectByHeadId(headId, CombinationRecordStatusEnum.IN_PROGRESS.getStatus()); 101 CombinationRecordDO record = combinationRecordMapper.selectByHeadId(headId, CombinationRecordStatusEnum.IN_PROGRESS.getStatus());
103 if (record == null) { 102 if (record == null) {
@@ -153,6 +152,16 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @@ -153,6 +152,16 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
153 return new KeyValue<>(activity, product); 152 return new KeyValue<>(activity, product);
154 } 153 }
155 154
  155 + /**
  156 + * 是否加入已有拼团。
  157 + *
  158 + * 前端开团时可能不传 headId,也可能传 {@link CombinationRecordDO#HEAD_ID_GROUP},都应视为新开团;
  159 + * 只有传入真实团长记录编号时,才需要按参团校验父拼团。
  160 + */
  161 + private static boolean isJoinCombination(Long headId) {
  162 + return headId != null && ObjUtil.notEqual(headId, CombinationRecordDO.HEAD_ID_GROUP);
  163 + }
  164 +
156 @Override 165 @Override
157 @Transactional(rollbackFor = Exception.class) 166 @Transactional(rollbackFor = Exception.class)
158 public CombinationRecordDO createCombinationRecord(CombinationRecordCreateReqDTO reqDTO) { 167 public CombinationRecordDO createCombinationRecord(CombinationRecordCreateReqDTO reqDTO) {
@@ -166,7 +175,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @@ -166,7 +175,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
166 ProductSkuRespDTO sku = productSkuApi.getSku(reqDTO.getSkuId()); 175 ProductSkuRespDTO sku = productSkuApi.getSku(reqDTO.getSkuId());
167 CombinationRecordDO record = CombinationActivityConvert.INSTANCE.convert(reqDTO, keyValue.getKey(), user, spu, sku); 176 CombinationRecordDO record = CombinationActivityConvert.INSTANCE.convert(reqDTO, keyValue.getKey(), user, spu, sku);
168 // 2.1. 如果是团长需要设置 headId 为 CombinationRecordDO#HEAD_ID_GROUP 177 // 2.1. 如果是团长需要设置 headId 为 CombinationRecordDO#HEAD_ID_GROUP
169 - if (record.getHeadId() == null) { 178 + if (!isJoinCombination(record.getHeadId())) {
170 record.setStartTime(LocalDateTime.now()) 179 record.setStartTime(LocalDateTime.now())
171 .setExpireTime(LocalDateTime.now().plusHours(keyValue.getKey().getLimitDuration())) 180 .setExpireTime(LocalDateTime.now().plusHours(keyValue.getKey().getLimitDuration()))
172 .setHeadId(CombinationRecordDO.HEAD_ID_GROUP); 181 .setHeadId(CombinationRecordDO.HEAD_ID_GROUP);