|
@@ -1,8 +1,6 @@
|
|
|
package cn.iocoder.yudao.module.promotion.controller.app.combination;
|
|
|
|
|
|
-import cn.hutool.core.util.ObjectUtil;
|
|
|
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
|
|
-import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|
|
import cn.iocoder.yudao.module.promotion.controller.app.combination.vo.record.AppCombinationRecordDetailRespVO;
|
|
|
import cn.iocoder.yudao.module.promotion.controller.app.combination.vo.record.AppCombinationRecordRespVO;
|
|
|
import cn.iocoder.yudao.module.promotion.controller.app.combination.vo.record.AppCombinationRecordSummaryRespVO;
|
|
@@ -23,6 +21,7 @@ import javax.annotation.Resource;
|
|
|
import javax.validation.constraints.Max;
|
|
|
import java.util.Collections;
|
|
|
import java.util.List;
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
|
|
|
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
|
@@ -61,7 +60,7 @@ public class AppCombinationRecordController {
|
|
|
@Operation(summary = "获得最近 n 条拼团记录(团长发起的)")
|
|
|
@Parameters({
|
|
|
@Parameter(name = "activityId", description = "拼团活动编号"),
|
|
|
- @Parameter(name = "status", description = "状态"),
|
|
|
+ @Parameter(name = "status", description = "拼团状态"), // 对应 CombinationRecordStatusEnum 枚举
|
|
|
@Parameter(name = "count", description = "数量")
|
|
|
})
|
|
|
public CommonResult<List<AppCombinationRecordRespVO>> getHeadCombinationRecordList(
|
|
@@ -69,44 +68,37 @@ public class AppCombinationRecordController {
|
|
|
@RequestParam("status") Integer status,
|
|
|
@RequestParam(value = "count", defaultValue = "20") @Max(20) Integer count) {
|
|
|
return success(CombinationActivityConvert.INSTANCE.convertList3(
|
|
|
- combinationRecordService.getCombinationRecordListWithHead(activityId, status, count)));
|
|
|
+ combinationRecordService.getHeadCombinationRecordList(activityId, status, count)));
|
|
|
}
|
|
|
|
|
|
@GetMapping("/get-detail")
|
|
|
@Operation(summary = "获得拼团记录明细")
|
|
|
@Parameter(name = "id", description = "拼团记录编号", required = true, example = "1024")
|
|
|
public CommonResult<AppCombinationRecordDetailRespVO> getCombinationRecordDetail(@RequestParam("id") Long id) {
|
|
|
- // 1、查询这条记录
|
|
|
+ // 1. 查找这条拼团记录
|
|
|
CombinationRecordDO record = combinationRecordService.getCombinationRecordById(id);
|
|
|
if (record == null) {
|
|
|
return success(null);
|
|
|
}
|
|
|
|
|
|
- AppCombinationRecordDetailRespVO detail = new AppCombinationRecordDetailRespVO();
|
|
|
- List<CombinationRecordDO> records;
|
|
|
- // 2、判断是否为团长
|
|
|
- if (record.getHeadId() == null) {
|
|
|
- detail.setHeadRecord(CombinationActivityConvert.INSTANCE.convert(record));
|
|
|
- // 2.1、查找团员拼团记录
|
|
|
- records = combinationRecordService.getCombinationRecordListByHeadId(record.getId());
|
|
|
- } else {
|
|
|
- // 2.2、查找团长拼团记录
|
|
|
- CombinationRecordDO headRecord = combinationRecordService.getCombinationRecordById(record.getHeadId());
|
|
|
- if (headRecord == null) {
|
|
|
- return success(null);
|
|
|
- }
|
|
|
-
|
|
|
- detail.setHeadRecord(CombinationActivityConvert.INSTANCE.convert(headRecord));
|
|
|
- // 2.3、查找团员拼团记录
|
|
|
- records = combinationRecordService.getCombinationRecordListByHeadId(headRecord.getId());
|
|
|
-
|
|
|
+ // 2. 查找该拼团的参团记录
|
|
|
+ CombinationRecordDO headRecord;
|
|
|
+ List<CombinationRecordDO> memberRecords;
|
|
|
+ if (Objects.equals(record.getHeadId(), CombinationRecordDO.HEAD_ID_GROUP)) { // 情况一:团长
|
|
|
+ headRecord = record;
|
|
|
+ memberRecords = combinationRecordService.getCombinationRecordListByHeadId(record.getId());
|
|
|
+ } else { // 情况二:团员
|
|
|
+ headRecord = combinationRecordService.getCombinationRecordById(record.getHeadId());
|
|
|
+ memberRecords = combinationRecordService.getCombinationRecordListByHeadId(headRecord.getId());
|
|
|
}
|
|
|
- detail.setMemberRecords(CombinationActivityConvert.INSTANCE.convertList3(records));
|
|
|
|
|
|
- // 3、获取当前用户参团记录订单编号
|
|
|
- CombinationRecordDO userRecord = CollectionUtils.findFirst(records, r -> ObjectUtil.equal(r.getUserId(), getLoginUserId()));
|
|
|
- detail.setOrderId(userRecord == null ? null : userRecord.getOrderId()); // 如果没参团,返回 null
|
|
|
- return success(detail);
|
|
|
+ // 3. 拼接数据
|
|
|
+ return success(CombinationActivityConvert.INSTANCE.convert(getLoginUserId(), headRecord, memberRecords));
|
|
|
}
|
|
|
|
|
|
+ // TODO @puhui:新增一个取消拼团的接口,cancel
|
|
|
+ // 1. 需要先校验拼团记录未完成;
|
|
|
+ // 2. 在 Order 那增加一个 cancelPaidOrder 接口,用于取消已支付的订单
|
|
|
+ // 3. order 完成后,取消拼团记录。另外,如果它是团长,则顺序(下单时间)继承
|
|
|
+
|
|
|
}
|