Переглянути джерело

Merge branch 'dev' into 'mp-server-test'

活动详情

See merge request quanshu/mp-server!523
jiang hao 2 роки тому
батько
коміт
36722fd06e

+ 63 - 0
mp-admin/src/main/java/com/qs/mp/web/controller/api/user/MarketingController.java

@@ -3,15 +3,23 @@ package com.qs.mp.web.controller.api.user;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.qs.mp.admin.domain.Marketing;
+import com.qs.mp.admin.domain.MarketingAwards;
+import com.qs.mp.admin.domain.MarketingAwardsPrize;
+import com.qs.mp.admin.domain.vo.MarketingAwardsVO;
+import com.qs.mp.admin.service.IMarketingAwardsPrizeService;
+import com.qs.mp.admin.service.IMarketingAwardsService;
 import com.qs.mp.admin.service.IMarketingService;
 import com.qs.mp.common.core.domain.AjaxResult;
 import com.qs.mp.common.core.page.TableDataInfo;
 import com.qs.mp.common.enums.MarketingStatusEnum;
 import com.qs.mp.common.utils.DateUtils;
 import com.qs.mp.user.domain.MarketingHitPrize;
+import com.qs.mp.user.domain.MarketingUserCode;
 import com.qs.mp.user.domain.param.UserMarketingQueryParam;
+import com.qs.mp.user.domain.vo.UserMarketingDetailVO;
 import com.qs.mp.user.domain.vo.UserMarketingListVO;
 import com.qs.mp.user.service.IMarketingHitPrizeService;
+import com.qs.mp.user.service.IMarketingUserCodeService;
 import com.qs.mp.utils.SecurityUtils;
 import com.qs.mp.web.controller.common.BaseApiController;
 import io.swagger.annotations.Api;
@@ -44,6 +52,15 @@ public class MarketingController extends BaseApiController {
     @Autowired
     private IMarketingHitPrizeService marketingHitPrizeService;
 
+    @Autowired
+    private IMarketingAwardsService marketingAwardsService;
+
+    @Autowired
+    private IMarketingAwardsPrizeService marketingAwardsPrizeService;
+
+    @Autowired
+    private IMarketingUserCodeService marketingUserCodeService;
+
     @PostMapping("list")
     @ApiOperation("获取营销活动列表")
     @ApiResponses(
@@ -86,6 +103,52 @@ public class MarketingController extends BaseApiController {
         return getDataTable(userMarketingListVOList);
     }
 
+    @PostMapping("/detail/{id}")
+    @ApiOperation("活动详情")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "成功", response = UserMarketingDetailVO.class)
+    )
+    public AjaxResult detail(@PathVariable("id") Long id) {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+
+        Marketing marketing = marketingService.getById(id);
+        if (Objects.isNull(marketing)) {
+            return AjaxResult.error("活动不存在");
+        }
+
+        UserMarketingDetailVO userMarketingDetailVO = new UserMarketingDetailVO();
+        BeanUtils.copyProperties(marketing, userMarketingDetailVO);
+
+        List<MarketingAwards> awardsList = marketingAwardsService.list(new LambdaQueryWrapper<MarketingAwards>().eq(MarketingAwards::getMarketingId, id));
+        if (CollectionUtils.isNotEmpty(awardsList)) {
+            List<MarketingAwardsVO> list = awardsList.stream().map(marketingAwards -> {
+                MarketingAwardsVO marketingAwardsVO = new MarketingAwardsVO();
+                BeanUtils.copyProperties(marketingAwards, marketingAwardsVO);
+
+                // 获取奖品信息
+                List<MarketingAwardsPrize> prizeList = marketingAwardsPrizeService.list(new LambdaQueryWrapper<MarketingAwardsPrize>()
+                        .eq(MarketingAwardsPrize::getMarketingId, id)
+                        .eq(MarketingAwardsPrize::getAwardsId, marketingAwards.getId()));
+                marketingAwardsVO.setPrizeList(prizeList);
+                return marketingAwardsVO;
+            }).collect(Collectors.toList());
+
+            userMarketingDetailVO.setAwardsList(list);
+        }
+
+        // 设置抽奖码列表
+        List<MarketingUserCode> codeList = marketingUserCodeService.list(new LambdaQueryWrapper<MarketingUserCode>()
+                .select(MarketingUserCode::getCode)
+                .eq(MarketingUserCode::getMarketingId, id)
+                .eq(MarketingUserCode::getUserId, userId));
+
+        if (CollectionUtils.isNotEmpty(codeList)) {
+            userMarketingDetailVO.setCodeList(codeList.stream().map(MarketingUserCode::getCode).collect(Collectors.toList()));
+        }
+
+        return AjaxResult.success(userMarketingDetailVO);
+    }
+
 
 
 }

+ 73 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/UserMarketingDetailVO.java

@@ -0,0 +1,73 @@
+package com.qs.mp.user.domain.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qs.mp.admin.domain.vo.MarketingAwardsVO;
+import com.qs.mp.common.enums.MarketingStatusEnum;
+import com.qs.mp.common.utils.DateUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 营销活动详情出参类
+ * @author Cup
+ * @date 2022/5/17
+ */
+@ApiModel("营销活动详情出参类")
+@Data
+public class UserMarketingDetailVO {
+
+    @ApiModelProperty("活动id")
+    private Long id;
+
+    @ApiModelProperty("活动标题")
+    private String title;
+
+    @ApiModelProperty("参与人数")
+    private Integer fakeNum;
+
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("是否开启: -1关闭,0待开启, 1开启 ")
+    private Integer isOn;
+
+    @ApiModelProperty("活动状态-1关闭,0待开启,1开启,2未开始,3进行中,4已结束")
+    private String status;
+
+    @ApiModelProperty("活动描述")
+    private String description;
+
+    @ApiModelProperty("抽奖码列表")
+    private List<String> codeList;
+
+    @ApiModelProperty("奖级列表")
+    List<MarketingAwardsVO> awardsList;
+
+    public String getStatus() {
+
+        if (MarketingStatusEnum.OFF.getValue().equals(this.isOn)) {
+            return MarketingStatusEnum.OFF.toString();
+        }
+        if (MarketingStatusEnum.CLOSE.getValue().equals(this.isOn)) {
+            return MarketingStatusEnum.CLOSE.toString();
+        }
+
+        Date now = DateUtils.getNowDate();
+        if (now.before(this.startTime)) {
+            return MarketingStatusEnum.UNSTART.toString();
+        }
+
+        if (now.after(this.endTime)) {
+            return MarketingStatusEnum.END.toString();
+        }
+
+        return MarketingStatusEnum.START.toString();
+    }
+}