Bläddra i källkod

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

小程序营销活动列表

See merge request quanshu/mp-server!522
jiang hao 2 år sedan
förälder
incheckning
254590fd59

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

@@ -0,0 +1,91 @@
+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.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.param.UserMarketingQueryParam;
+import com.qs.mp.user.domain.vo.UserMarketingListVO;
+import com.qs.mp.user.service.IMarketingHitPrizeService;
+import com.qs.mp.utils.SecurityUtils;
+import com.qs.mp.web.controller.common.BaseApiController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+/**
+ * @author Cup
+ * @date 2022/5/17
+ */
+@RestController
+@RequestMapping("/api/v1/mp/user/marketing")
+@Api(tags = "营销活动相关接口")
+public class MarketingController extends BaseApiController {
+
+    @Autowired
+    private IMarketingService marketingService;
+
+    @Autowired
+    private IMarketingHitPrizeService marketingHitPrizeService;
+
+    @PostMapping("list")
+    @ApiOperation("获取营销活动列表")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "成功", response = UserMarketingListVO.class)
+    )
+    public TableDataInfo list(@Validated @RequestBody UserMarketingQueryParam userMarketingQueryParam) {
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+
+        startPage();
+        LambdaQueryWrapper<Marketing> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(Marketing::getIsOn, MarketingStatusEnum.ON.getValue());
+        queryWrapper.eq(Marketing::getTriggerStatus, userMarketingQueryParam.getTriggerStatus());
+        if (userMarketingQueryParam.getTriggerStatus() == 0) {
+            // 已开启的列表
+            Date now = DateUtils.getNowDate();
+            // 结束时间大于当前时间的
+            queryWrapper.gt(Marketing::getEndTime, now);
+            queryWrapper.orderByAsc(Marketing::getStartTime);
+            queryWrapper.orderByAsc(Marketing::getEndTime);
+        }else if(userMarketingQueryParam.getTriggerStatus() == 1) {
+            // 开奖的排序
+            queryWrapper.orderByDesc(Marketing::getEndTime);
+        }
+        List<UserMarketingListVO> userMarketingListVOList = new ArrayList<>();
+        List<Marketing> list = marketingService.list(queryWrapper);
+        if (CollectionUtils.isNotEmpty(list)) {
+            userMarketingListVOList = list.stream().map(marketing -> {
+                UserMarketingListVO userMarketingListVO = new UserMarketingListVO();
+                BeanUtils.copyProperties(marketing, userMarketingListVO);
+                if (userMarketingQueryParam.getTriggerStatus() == 1) {
+                    int count = marketingHitPrizeService.count(new LambdaQueryWrapper<MarketingHitPrize>()
+                            .eq(MarketingHitPrize::getMarketingId, marketing.getId())
+                            .eq(MarketingHitPrize::getUserId, userId));
+                    userMarketingListVO.setIsHit(count);
+                }
+                return userMarketingListVO;
+            }).collect(Collectors.toList());
+        }
+
+        return getDataTable(userMarketingListVOList);
+    }
+
+
+
+}

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/vo/MarketingListVO.java

@@ -41,7 +41,7 @@ public class MarketingListVO {
     @ApiModelProperty("是否开启: -1关闭,0待开启, 1开启 ")
     private Integer isOn;
 
-    @ApiModelProperty("活动状态")
+    @ApiModelProperty("活动状态-1关闭,0待开启,1开启,2未开始,3进行中,4已结束")
     private String status;
 
     public String getStatus() {

+ 1 - 1
mp-service/src/main/java/com/qs/mp/admin/domain/vo/MarketingUserCodeListVO.java

@@ -19,7 +19,7 @@ public class MarketingUserCodeListVO {
     @ApiModelProperty("用户编号")
     private Long userId;
 
-    @ApiModelProperty("活动名称")
+    @ApiModelProperty("用户名称")
     private String nickName;
 
     @ApiModelProperty("抽奖码")

+ 3 - 5
mp-service/src/main/java/com/qs/mp/admin/service/impl/MarketingServiceImpl.java

@@ -123,9 +123,6 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
         createAwardsAndPrize(marketingCreateParam.getAwardsList(), marketing);
     }
 
-    public static void main(String[] args) {
-
-    }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -145,12 +142,13 @@ public class MarketingServiceImpl extends ServiceImpl<MarketingMapper, Marketing
         }
 
 
+        // 更新营销活动
+        BeanUtils.copyProperties(marketingUpdateParam, marketing);
+
         if (StringUtils.isNotBlank(marketingUpdateParam.getDescription())) {
             marketing.setDescription(URLDecoder.decode(marketingUpdateParam.getDescription()));
         }
 
-        // 更新营销活动
-        BeanUtils.copyProperties(marketingUpdateParam, marketing);
         this.updateById(marketing);
 
         // 删除奖级和奖品信息

+ 22 - 0
mp-service/src/main/java/com/qs/mp/user/domain/param/UserMarketingQueryParam.java

@@ -0,0 +1,22 @@
+package com.qs.mp.user.domain.param;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 营销活动查询入参类
+ * @author Cup
+ * @date 2022/5/17
+ */
+@ApiModel("营销活动查询入参类")
+@Data
+public class UserMarketingQueryParam {
+
+    @NotNull(message = "状态不能为空")
+    @ApiModelProperty("开奖状态: 0未开奖,1已开奖")
+    private Integer triggerStatus;
+}

+ 65 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/UserMarketingListVO.java

@@ -0,0 +1,65 @@
+package com.qs.mp.user.domain.vo;
+
+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;
+
+/**
+ * 盲票营销活动列表出参类
+ * @author Cup
+ * @date 2022/5/17
+ */
+@ApiModel("营销活动列表出参类")
+@Data
+public class UserMarketingListVO {
+
+    @ApiModelProperty("活动id")
+    private Long id;
+
+    @ApiModelProperty("活动标题")
+    private String title;
+
+    @ApiModelProperty("活动主图")
+    private String picUrl;
+
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty("是否开启: -1关闭,0待开启, 1开启 ")
+    private Integer isOn;
+
+    @ApiModelProperty("是否中奖,0:未中奖,1:中奖")
+    private Integer isHit;
+
+    @ApiModelProperty("活动状态-1关闭,0待开启,1开启,2未开始,3进行中,4已结束")
+    private String status;
+
+    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();
+    }
+
+}