拼团和秒杀次数整合到get-detail接口 #41

Merged
root merged 2 commits from cxw into master 2024-10-12 14:50:01 +08:00
5 changed files with 34 additions and 23 deletions

View File

@ -60,7 +60,7 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
port: 22 # 远程连接端口 port: 22 # 远程连接端口
command_timeout: 10m # 远程执行命令超时时间 command_timeout: 30m # 远程执行命令超时时间
script: script:
# - ls # - ls

View File

@ -41,6 +41,7 @@ import java.util.List;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.cache.CacheUtils.buildAsyncReloadingCache; import static cn.iocoder.yudao.framework.common.util.cache.CacheUtils.buildAsyncReloadingCache;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
@Tag(name = "用户 APP - 拼团活动") @Tag(name = "用户 APP - 拼团活动")
@RestController @RestController
@ -134,16 +135,15 @@ public class AppCombinationActivityController {
// 2. 获取活动商品 // 2. 获取活动商品
List<CombinationProductDO> products = activityService.getCombinationProductsByActivityId(activity.getId()); List<CombinationProductDO> products = activityService.getCombinationProductsByActivityId(activity.getId());
return success(CombinationActivityConvert.INSTANCE.convert3(activity, products)); AppCombinationActivityDetailRespVO appCombinationActivityDetailRespVO = CombinationActivityConvert.INSTANCE.convert3(activity, products);
// 3.获取已购买数量
if (getLoginUserId() != null) {
int seckillProductCount = tradeOrderApi.getCombinationProductCount(getLoginUserId(), id);
// 总次数减去下单过的次数 得到剩余次数
appCombinationActivityDetailRespVO.setRemainingPurchases(Math.max(activity.getTotalLimitCount() - seckillProductCount, 0));
} else {
appCombinationActivityDetailRespVO.setRemainingPurchases(0);
} }
@GetMapping("/getPurchaseTimes") return success(appCombinationActivityDetailRespVO);
@Operation(summary = "获得剩余拼团购买次数")
public CommonResult<Integer> getSeckillActivityPage(AppCombinationActivityPurchasesTimesReqVO reqVO) {
// 1. 获取总限购数量
CombinationActivityDO combinationActivity = activityService.getCombinationActivity(reqVO.getActivityId());
// 2. 获取已购买数量
int seckillProductCount = tradeOrderApi.getCombinationProductCount(reqVO.getUserId(), reqVO.getActivityId());
// 3. 总次数减去下单过的次数 得到剩余次数
return success(Math.max(combinationActivity.getTotalLimitCount() - seckillProductCount, 0));
} }
} }

View File

@ -43,6 +43,9 @@ public class AppCombinationActivityDetailRespVO {
@Schema(description = "商品信息数组", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "商品信息数组", requiredMode = Schema.RequiredMode.REQUIRED)
private List<Product> products; private List<Product> products;
@Schema(description = "剩余购买次数", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer remainingPurchases;
@Schema(description = "商品信息") @Schema(description = "商品信息")
@Data @Data
public static class Product { public static class Product {

View File

@ -7,6 +7,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.date.DateUtils; import cn.iocoder.yudao.framework.common.util.date.DateUtils;
import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils; import cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils;
import cn.iocoder.yudao.module.member.api.user.MemberUserApi;
import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi; import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi;
import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO; import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;
import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi; import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
@ -49,6 +50,7 @@ import static cn.iocoder.yudao.framework.common.util.cache.CacheUtils.buildAsync
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.findFirst; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.findFirst;
import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.isBetween; import static cn.iocoder.yudao.framework.common.util.date.LocalDateTimeUtils.isBetween;
import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId;
import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.TIME_FORMAT_ERROR; import static cn.iocoder.yudao.module.promotion.enums.ErrorCodeConstants.TIME_FORMAT_ERROR;
@Tag(name = "用户 App - 秒杀活动") @Tag(name = "用户 App - 秒杀活动")
@ -85,6 +87,9 @@ public class AppSeckillActivityController {
@Resource @Resource
private TradeOrderApi tradeOrderApi; private TradeOrderApi tradeOrderApi;
@Resource
private MemberUserApi memberUserApi;
@GetMapping("/get-now") @GetMapping("/get-now")
@Operation(summary = "获得当前秒杀活动", description = "获取当前正在进行的活动,提供给首页使用") @Operation(summary = "获得当前秒杀活动", description = "获取当前正在进行的活动,提供给首页使用")
public CommonResult<AppSeckillActivityNowRespVO> getNowSeckillActivity() { public CommonResult<AppSeckillActivityNowRespVO> getNowSeckillActivity() {
@ -216,17 +221,17 @@ public class AppSeckillActivityController {
// 4. 拼接数据 // 4. 拼接数据
List<SeckillProductDO> productList = activityService.getSeckillProductListByActivityId(activity.getId()); List<SeckillProductDO> productList = activityService.getSeckillProductListByActivityId(activity.getId());
return success(SeckillActivityConvert.INSTANCE.convert3(activity, productList, startTime, endTime)); AppSeckillActivityDetailRespVO appSeckillActivityDetailRespVO = SeckillActivityConvert.INSTANCE.convert3(activity, productList, startTime, endTime);
// 5.获取已购买数量
if (getLoginUserId() != null) {
int seckillProductCount = tradeOrderApi.getSeckillProductCount(getLoginUserId(), id);
// 总次数减去下单过的次数 得到剩余次数
appSeckillActivityDetailRespVO.setRemainingPurchases(Math.max(activity.getTotalLimitCount() - seckillProductCount, 0));
} else {
appSeckillActivityDetailRespVO.setRemainingPurchases(0);
} }
@GetMapping("/getPurchaseTimes") return success(appSeckillActivityDetailRespVO);
@Operation(summary = "获得剩余秒杀购买次数")
public CommonResult<Integer> getSeckillActivityPage(AppSeckillPurchasesTimesReqVO reqVO) {
// 1. 获取总限购数量
SeckillActivityDO seckillActivity = activityService.getSeckillActivity(reqVO.getActivityId());
// 2. 获取已购买数量
int seckillProductCount = tradeOrderApi.getSeckillProductCount(reqVO.getUserId(), reqVO.getActivityId());
// 3. 总次数减去下单过的次数 得到剩余次数
return success(Math.max(seckillActivity.getTotalLimitCount() - seckillProductCount, 0));
} }
} }

View File

@ -43,6 +43,9 @@ public class AppSeckillActivityDetailRespVO {
@Schema(description = "商品信息数组", requiredMode = Schema.RequiredMode.REQUIRED) @Schema(description = "商品信息数组", requiredMode = Schema.RequiredMode.REQUIRED)
private List<Product> products; private List<Product> products;
@Schema(description = "剩余购买次数", requiredMode = Schema.RequiredMode.REQUIRED)
private Integer remainingPurchases;
@Schema(description = "商品信息") @Schema(description = "商品信息")
@Data @Data
public static class Product { public static class Product {