소스 검색

开奖列表相关

cup 2 년 전
부모
커밋
1823889e06

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

@@ -0,0 +1,83 @@
+package com.qs.mp.web.controller.api.user;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.qs.mp.common.core.domain.AjaxResult;
+import com.qs.mp.common.core.page.TableDataInfo;
+import com.qs.mp.framework.security.handle.HostHolder;
+import com.qs.mp.user.domain.MarketingHitPrize;
+import com.qs.mp.user.domain.param.UserMarketingHitPrizeQueryParam;
+import com.qs.mp.user.domain.vo.UserMarketingHitPrizeDetailVO;
+import com.qs.mp.user.domain.vo.UserMarketingHitPrizeListVO;
+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.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * 营销活动中奖信息相关接口
+ * @author Cup
+ * @date 2022/5/19
+ */
+@RestController
+@RequestMapping("/api/v1/mp/user/marketing/hit/prize")
+@Api(tags = "营销活动中奖信息相关接口")
+public class MarketingHitPrizeController extends BaseApiController {
+
+    @Autowired
+    private IMarketingHitPrizeService marketingHitPrizeService;
+
+    @Autowired
+    private HostHolder hostHolder;
+
+    @PostMapping("/list")
+    @ApiOperation("获取中奖信息列表")
+    @ApiResponses(
+            @ApiResponse(code = 200, message = "成功", response = UserMarketingHitPrizeListVO.class)
+    )
+    public TableDataInfo list(@Validated @RequestBody UserMarketingHitPrizeQueryParam userMarketingHitPrizeQueryParam) {
+        startPage();
+        QueryWrapper<MarketingHitPrize> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("t1.marketing_id",userMarketingHitPrizeQueryParam.getMarketingId());
+        queryWrapper.orderByAsc("t2.sort");
+        List<UserMarketingHitPrizeListVO> marketingHitPrizeListVOList = marketingHitPrizeService.listHitPrizeByQueryWrapper(queryWrapper);
+        return getDataTable(marketingHitPrizeListVOList);
+    }
+
+    @PostMapping("/isHit/{marketingId}")
+    @ApiOperation("判断当前用户是否中奖")
+    public AjaxResult isHit(@PathVariable("marketingId") Long marketingId) {
+
+        Long userId = 0L;
+        if (hostHolder.getUser() != null) {
+            userId = hostHolder.getUser().getUserId();
+        }
+
+        UserMarketingHitPrizeDetailVO userMarketingHitPrizeDetailVO = new UserMarketingHitPrizeDetailVO();
+        userMarketingHitPrizeDetailVO.setIsHit(0);
+        if (Objects.nonNull(userId) && userId != 0) {
+            QueryWrapper<MarketingHitPrize> queryWrapper = new QueryWrapper<>();
+            queryWrapper.eq("t1.marketing_id",marketingId);
+            queryWrapper.eq("t1.user_id", userId);
+            List<UserMarketingHitPrizeListVO> list = marketingHitPrizeService.listHitPrizeByQueryWrapper(queryWrapper);
+            if (CollectionUtils.isNotEmpty(list)) {
+                UserMarketingHitPrizeListVO userMarketingHitPrizeListVO = list.get(0);
+                userMarketingHitPrizeDetailVO.setPrizeTitle(userMarketingHitPrizeListVO.getPrizeTitle());
+                userMarketingHitPrizeDetailVO.setIsHit(1);
+                userMarketingHitPrizeDetailVO.setAwardName(userMarketingHitPrizeListVO.getAwardName());
+                userMarketingHitPrizeDetailVO.setPrizePicUrl(userMarketingHitPrizeListVO.getPrizePicUrl());
+            }
+        }
+        return AjaxResult.success(userMarketingHitPrizeDetailVO);
+    }
+
+}

+ 3 - 1
mp-framework/src/main/java/com/qs/mp/framework/config/SecurityConfig.java

@@ -142,7 +142,9 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
                     "/api/v1/mp/user/exchange/category/list",
                     "/api/v1/mp/user/exchange/activity/list",
                     "/api/v1/mp/user/marketing/list",
-                    "/api/v1/mp/user/marketing/detail/*"
+                    "/api/v1/mp/user/marketing/detail/*",
+                    "/api/v1/mp/user/marketing/hit/prize/list",
+                    "/api/v1/mp/user/marketing/hit/prize/isHit/*"
                 ).permitAll()
                 // 除上面外的所有请求全部需要鉴权认证
                 .anyRequest().authenticated()

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

@@ -0,0 +1,22 @@
+package com.qs.mp.user.domain.param;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * 用户中奖信息列表查询入参类
+ * @author Cup
+ * @date 2022/5/19
+ */
+@ApiModel("用户中奖信息列表查询入参类")
+@Data
+public class UserMarketingHitPrizeQueryParam {
+
+    @NotNull(message = "活动id不能为空")
+    @ApiModelProperty("活动id")
+    private Long marketingId;
+
+}

+ 27 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/UserMarketingHitPrizeDetailVO.java

@@ -0,0 +1,27 @@
+package com.qs.mp.user.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 用户活动中奖详情出参类
+ * @author Cup
+ * @date 2022/5/19
+ */
+@ApiModel("用户活动中奖详情出参类")
+@Data
+public class UserMarketingHitPrizeDetailVO {
+
+    @ApiModelProperty("是否中奖,0未中奖,1中奖")
+    private Integer isHit;
+
+    @ApiModelProperty("奖级")
+    private String awardName;
+
+    @ApiModelProperty("奖品")
+    private String prizeTitle;
+
+    @ApiModelProperty("奖品图片")
+    private String prizePicUrl;
+}

+ 34 - 0
mp-service/src/main/java/com/qs/mp/user/domain/vo/UserMarketingHitPrizeListVO.java

@@ -0,0 +1,34 @@
+package com.qs.mp.user.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * 用户营销活动中奖列表出参类
+ * @author Cup
+ * @date 2022/5/19
+ */
+@ApiModel("用户营销活动中奖列表出参类")
+@Data
+public class UserMarketingHitPrizeListVO {
+
+    @ApiModelProperty("用户昵称")
+    private String nickName;
+
+    @ApiModelProperty("用户头像")
+    private String avatar;
+
+    @ApiModelProperty("中奖码")
+    private String code;
+
+    @ApiModelProperty("奖品图片")
+    private String prizePicUrl;
+
+    @ApiModelProperty("奖级")
+    private String awardName;
+
+    @ApiModelProperty("奖品")
+    private String prizeTitle;
+
+}

+ 12 - 0
mp-service/src/main/java/com/qs/mp/user/mapper/MarketingHitPrizeMapper.java

@@ -1,7 +1,13 @@
 package com.qs.mp.user.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.qs.mp.user.domain.MarketingHitPrize;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qs.mp.user.domain.vo.UserMarketingHitPrizeListVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * @auther quanshu
@@ -10,4 +16,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface MarketingHitPrizeMapper extends BaseMapper<MarketingHitPrize> {
 
+    /**
+     * 根据条件获取中奖信息列表
+     * @param queryWrapper
+     * @return
+     */
+    List<UserMarketingHitPrizeListVO> listHitPrizeByQueryWrapper(@Param(Constants.WRAPPER) QueryWrapper<MarketingHitPrize> queryWrapper);
 }

+ 10 - 0
mp-service/src/main/java/com/qs/mp/user/service/IMarketingHitPrizeService.java

@@ -1,7 +1,11 @@
 package com.qs.mp.user.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.user.domain.MarketingHitPrize;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.qs.mp.user.domain.vo.UserMarketingHitPrizeListVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -13,4 +17,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IMarketingHitPrizeService extends IService<MarketingHitPrize> {
 
+    /**
+     * 根据条件获取中奖信息列表
+     * @param queryWrapper
+     * @return
+     */
+    List<UserMarketingHitPrizeListVO> listHitPrizeByQueryWrapper(QueryWrapper<MarketingHitPrize> queryWrapper);
 }

+ 9 - 0
mp-service/src/main/java/com/qs/mp/user/service/impl/MarketingHitPrizeServiceImpl.java

@@ -1,11 +1,15 @@
 package com.qs.mp.user.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qs.mp.user.domain.MarketingHitPrize;
+import com.qs.mp.user.domain.vo.UserMarketingHitPrizeListVO;
 import com.qs.mp.user.mapper.MarketingHitPrizeMapper;
 import com.qs.mp.user.service.IMarketingHitPrizeService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 营销活动中奖信息表 服务实现类
@@ -17,4 +21,9 @@ import org.springframework.stereotype.Service;
 @Service
 public class MarketingHitPrizeServiceImpl extends ServiceImpl<MarketingHitPrizeMapper, MarketingHitPrize> implements IMarketingHitPrizeService {
 
+
+    @Override
+    public List<UserMarketingHitPrizeListVO> listHitPrizeByQueryWrapper(QueryWrapper<MarketingHitPrize> queryWrapper) {
+        return getBaseMapper().listHitPrizeByQueryWrapper(queryWrapper);
+    }
 }

+ 14 - 0
mp-service/src/main/resources/mapper/user/MarketingHitPrizeMapper.xml

@@ -20,4 +20,18 @@
         id, marketing_id, user_id, user_type, awards_id, prize_id, created_time, updated_time, is_deleted
     </sql>
 
+    <select id="listHitPrizeByQueryWrapper" resultType="com.qs.mp.user.domain.vo.UserMarketingHitPrizeListVO">
+        select t4.nick_name,
+               t4.avatar,
+               t5.code,
+               t2.name awardName,
+               t3.title prizeTitle,
+               t3.pic_url prizePicUrl
+        from mp_marketing_hit_prize t1
+             left join mp_marketing_awards t2 on t1.awards_id = t2.id
+             left join mp_marketing_awards_prize t3 on t1.prize_id = t3.id
+             left join sys_user t4 on t1.user_id = t4.user_id
+             left join mp_marketing_user_code t5 on t1.marketing_user_code_id = t5.id
+        ${ew.customSqlSegment}
+    </select>
 </mapper>