Commit 387ef6f396d4d182a5755f74ca2a7cbfd8b86814

Authored by YunaiV
1 parent 50711945

【功能简化】商城:1)拼团活动,移除用户主动取消,不常用;2)review 拼团相关的逻辑

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/combination/AppCombinationRecordController.java
@@ -10,9 +10,7 @@ import cn.iocoder.yudao.module.promotion.controller.app.combination.vo.record.Ap @@ -10,9 +10,7 @@ import cn.iocoder.yudao.module.promotion.controller.app.combination.vo.record.Ap
10 import cn.iocoder.yudao.module.promotion.controller.app.combination.vo.record.AppCombinationRecordSummaryRespVO; 10 import cn.iocoder.yudao.module.promotion.controller.app.combination.vo.record.AppCombinationRecordSummaryRespVO;
11 import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert; 11 import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivityConvert;
12 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationRecordDO; 12 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationRecordDO;
13 -import cn.iocoder.yudao.module.promotion.enums.combination.CombinationRecordStatusEnum;  
14 import cn.iocoder.yudao.module.promotion.service.combination.CombinationRecordService; 13 import cn.iocoder.yudao.module.promotion.service.combination.CombinationRecordService;
15 -import cn.iocoder.yudao.module.trade.api.order.TradeOrderApi;  
16 import io.swagger.v3.oas.annotations.Operation; 14 import io.swagger.v3.oas.annotations.Operation;
17 import io.swagger.v3.oas.annotations.Parameter; 15 import io.swagger.v3.oas.annotations.Parameter;
18 import io.swagger.v3.oas.annotations.Parameters; 16 import io.swagger.v3.oas.annotations.Parameters;
@@ -20,7 +18,6 @@ import io.swagger.v3.oas.annotations.tags.Tag; @@ -20,7 +18,6 @@ import io.swagger.v3.oas.annotations.tags.Tag;
20 import jakarta.annotation.Resource; 18 import jakarta.annotation.Resource;
21 import jakarta.validation.Valid; 19 import jakarta.validation.Valid;
22 import jakarta.validation.constraints.Max; 20 import jakarta.validation.constraints.Max;
23 -import org.springframework.context.annotation.Lazy;  
24 import org.springframework.validation.annotation.Validated; 21 import org.springframework.validation.annotation.Validated;
25 import org.springframework.web.bind.annotation.GetMapping; 22 import org.springframework.web.bind.annotation.GetMapping;
26 import org.springframework.web.bind.annotation.RequestMapping; 23 import org.springframework.web.bind.annotation.RequestMapping;
@@ -43,9 +40,6 @@ public class AppCombinationRecordController { @@ -43,9 +40,6 @@ public class AppCombinationRecordController {
43 40
44 @Resource 41 @Resource
45 private CombinationRecordService combinationRecordService; 42 private CombinationRecordService combinationRecordService;
46 - @Resource  
47 - @Lazy  
48 - private TradeOrderApi tradeOrderApi;  
49 43
50 @GetMapping("/get-summary") 44 @GetMapping("/get-summary")
51 @Operation(summary = "获得拼团记录的概要信息", description = "用于小程序首页") 45 @Operation(summary = "获得拼团记录的概要信息", description = "用于小程序首页")
@@ -117,26 +111,4 @@ public class AppCombinationRecordController { @@ -117,26 +111,4 @@ public class AppCombinationRecordController {
117 return success(CombinationActivityConvert.INSTANCE.convert(getLoginUserId(), headRecord, memberRecords)); 111 return success(CombinationActivityConvert.INSTANCE.convert(getLoginUserId(), headRecord, memberRecords));
118 } 112 }
119 113
120 - @GetMapping("/cancel")  
121 - @Operation(summary = "取消拼团")  
122 - @Parameter(name = "id", description = "拼团记录编号", required = true, example = "1024")  
123 - public CommonResult<Boolean> cancelCombinationRecord(@RequestParam("id") Long id) {  
124 - Long userId = getLoginUserId();  
125 - // 1、查找这条拼团记录  
126 - CombinationRecordDO record = combinationRecordService.getCombinationRecordByIdAndUser(userId, id);  
127 - if (record == null) {  
128 - return success(Boolean.FALSE);  
129 - }  
130 - // 1.1、需要先校验拼团记录未完成;  
131 - if (!CombinationRecordStatusEnum.isInProgress(record.getStatus())) {  
132 - return success(Boolean.FALSE);  
133 - }  
134 -  
135 - // 2. 取消已支付的订单  
136 - tradeOrderApi.cancelPaidOrder(userId, record.getOrderId());  
137 - // 3. 取消拼团记录  
138 - combinationRecordService.cancelCombinationRecord(userId, record.getId(), record.getHeadId());  
139 - return success(Boolean.TRUE);  
140 - }  
141 -  
142 } 114 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordService.java
@@ -140,24 +140,6 @@ public interface CombinationRecordService { @@ -140,24 +140,6 @@ public interface CombinationRecordService {
140 @Nullable Long headId); 140 @Nullable Long headId);
141 141
142 /** 142 /**
143 - * 获取拼团记录  
144 - *  
145 - * @param userId 用户编号  
146 - * @param id 拼团记录编号  
147 - * @return 拼团记录  
148 - */  
149 - CombinationRecordDO getCombinationRecordByIdAndUser(Long userId, Long id);  
150 -  
151 - /**  
152 - * 取消拼团  
153 - *  
154 - * @param userId 用户编号  
155 - * @param id 拼团记录编号  
156 - * @param headId 团长编号  
157 - */  
158 - void cancelCombinationRecord(Long userId, Long id, Long headId);  
159 -  
160 - /**  
161 * 处理过期拼团 143 * 处理过期拼团
162 * 144 *
163 * @return key 过期拼团数量, value 虚拟成团数量 145 * @return key 过期拼团数量, value 虚拟成团数量
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
@@ -69,7 +69,6 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @@ -69,7 +69,6 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
69 private ProductSpuApi productSpuApi; 69 private ProductSpuApi productSpuApi;
70 @Resource 70 @Resource
71 private ProductSkuApi productSkuApi; 71 private ProductSkuApi productSkuApi;
72 -  
73 @Resource 72 @Resource
74 @Lazy // 延迟加载,避免循环依赖 73 @Lazy // 延迟加载,避免循环依赖
75 private TradeOrderApi tradeOrderApi; 74 private TradeOrderApi tradeOrderApi;
@@ -290,61 +289,6 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { @@ -290,61 +289,6 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
290 } 289 }
291 290
292 @Override 291 @Override
293 - public CombinationRecordDO getCombinationRecordByIdAndUser(Long userId, Long id) {  
294 - return combinationRecordMapper.selectOne(CombinationRecordDO::getUserId, userId, CombinationRecordDO::getId, id);  
295 - }  
296 -  
297 - @Override  
298 - @Transactional(rollbackFor = Exception.class)  
299 - public void cancelCombinationRecord(Long userId, Long id, Long headId) {  
300 - // 删除记录  
301 - combinationRecordMapper.deleteById(id);  
302 -  
303 - // 需要更新的记录  
304 - List<CombinationRecordDO> updateRecords = new ArrayList<>();  
305 - // 如果它是团长,则顺序(下单时间)继承  
306 - if (Objects.equals(headId, CombinationRecordDO.HEAD_ID_GROUP)) { // 情况一:团长  
307 - // 团员  
308 - List<CombinationRecordDO> list = getCombinationRecordListByHeadId(id);  
309 - if (CollUtil.isEmpty(list)) {  
310 - return;  
311 - }  
312 - // 按照创建时间升序排序  
313 - list.sort(Comparator.comparing(CombinationRecordDO::getCreateTime)); // 影响原 list  
314 - CombinationRecordDO newHead = list.get(0); // 新团长继位  
315 - list.forEach(item -> {  
316 - CombinationRecordDO recordDO = new CombinationRecordDO();  
317 - recordDO.setId(item.getId());  
318 - if (ObjUtil.equal(item.getId(), newHead.getId())) { // 新团长  
319 - recordDO.setHeadId(CombinationRecordDO.HEAD_ID_GROUP);  
320 - } else {  
321 - recordDO.setHeadId(newHead.getId());  
322 - }  
323 - recordDO.setUserCount(list.size());  
324 - updateRecords.add(recordDO);  
325 - });  
326 - } else { // 情况二:团员  
327 - // 团长  
328 - CombinationRecordDO recordHead = combinationRecordMapper.selectById(headId);  
329 - // 团员  
330 - List<CombinationRecordDO> records = getCombinationRecordListByHeadId(headId);  
331 - if (CollUtil.isEmpty(records)) {  
332 - return;  
333 - }  
334 - records.add(recordHead); // 加入团长,团长数据也需要更新  
335 - records.forEach(item -> {  
336 - CombinationRecordDO recordDO = new CombinationRecordDO();  
337 - recordDO.setId(item.getId());  
338 - recordDO.setUserCount(records.size());  
339 - updateRecords.add(recordDO);  
340 - });  
341 - }  
342 -  
343 - // 更新拼团记录  
344 - combinationRecordMapper.updateBatch(updateRecords);  
345 - }  
346 -  
347 - @Override  
348 public KeyValue<Integer, Integer> expireCombinationRecord() { 292 public KeyValue<Integer, Integer> expireCombinationRecord() {
349 // 1. 获取所有正在进行中的过期的父拼团 293 // 1. 获取所有正在进行中的过期的父拼团
350 List<CombinationRecordDO> headExpireRecords = combinationRecordMapper.selectListByHeadIdAndStatusAndExpireTimeLt( 294 List<CombinationRecordDO> headExpireRecords = combinationRecordMapper.selectListByHeadIdAndStatusAndExpireTimeLt(
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
@@ -855,12 +855,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -855,12 +855,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
855 @Override 855 @Override
856 @Transactional(rollbackFor = Exception.class) 856 @Transactional(rollbackFor = Exception.class)
857 public void cancelPaidOrder(Long userId, Long orderId) { 857 public void cancelPaidOrder(Long userId, Long orderId) {
858 - // TODO 芋艿:这里实现要优化下; 858 + // TODO @puhui999:需要校验状态;已支付的情况下,才可以。
859 TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(orderId, userId); 859 TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(orderId, userId);
860 if (order == null) { 860 if (order == null) {
861 throw exception(ORDER_NOT_FOUND); 861 throw exception(ORDER_NOT_FOUND);
862 } 862 }
863 cancelOrder0(order, TradeOrderCancelTypeEnum.MEMBER_CANCEL); 863 cancelOrder0(order, TradeOrderCancelTypeEnum.MEMBER_CANCEL);
  864 +
  865 + // TODO @puhui999:需要退款
864 } 866 }
865 867
866 /** 868 /**