Browse Source

活动接口编写

liweifan 3 years ago
parent
commit
9c33bcc357

+ 10 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityEvaluationController.java

@@ -23,6 +23,8 @@ import com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo;
 import com.yonge.cooleshow.biz.dal.dto.search.ActivityEvaluationSearch;
 import com.yonge.cooleshow.biz.dal.service.ActivityEvaluationService;
 
+import java.util.List;
+
 @RestController
 @RequestMapping("/activityEvaluation")
 @Api(value = "评测活动表", tags = "评测活动表")
@@ -41,6 +43,14 @@ public class ActivityEvaluationController extends BaseController {
 		IPage<ActivityEvaluationVo> pages = activityEvaluationService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
 	}
+
+	@PostMapping("/list")
+	@ApiOperation(value = "查询列表", notes = "传入activityEvaluationSearch")
+	@PreAuthorize("@pcs.hasPermissions('activityEvaluation/list')")
+	public HttpResponseResult<List<ActivityEvaluationVo>> selectAll(@RequestBody ActivityEvaluationSearch query) {
+		List<ActivityEvaluationVo> list = activityEvaluationService.selectAll(query);
+		return succeed(list);
+	}
     
     /**
 	 * 批量增加曲目
@@ -82,5 +92,4 @@ public class ActivityEvaluationController extends BaseController {
 		return succeed(PageUtil.pageInfo(musicSheetVoIPage));
 	}
 
-
 }

+ 1 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityRegistrationController.java

@@ -43,7 +43,7 @@ public class ActivityRegistrationController extends BaseController {
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入activityRegistrationSearch")
     @PreAuthorize("@pcs.hasPermissions('activityRegistration/page')")
-    public HttpResponseResult<PageInfo<ActivityRegistrationVo>> page(@RequestBody ActivityRegistrationSearch query) {
+    public HttpResponseResult<PageInfo<ActivityRegistrationVo>> page(@Valid @RequestBody ActivityRegistrationSearch query) {
 		IPage<ActivityRegistrationVo> pages = activityRegistrationService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
 	}

+ 1 - 30
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ActivityUserRewardController.java

@@ -44,16 +44,7 @@ public class ActivityUserRewardController extends BaseController {
 		IPage<ActivityUserRewardVo> pages = activityUserRewardService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
 	}
-    
-    /**
-	 * 新增
-	 */
-	@PostMapping("/save")
-	@ApiOperation(value = "新增", notes = "传入activityUserReward")
-	public HttpResponseResult save(@Valid @RequestBody ActivityUserReward activityUserReward) {
-    	return status(activityUserRewardService.save(activityUserReward));
-	}
-    
+
     /**
 	 * 修改
 	 */
@@ -62,25 +53,5 @@ public class ActivityUserRewardController extends BaseController {
 	public HttpResponseResult update(@Valid @RequestBody ActivityUserReward activityUserReward) {
         return status(activityUserRewardService.updateById(activityUserReward));
 	}
-    
-    /**
-	 * 新增或修改
-	 */
-    @PostMapping("/submit")
-    @ApiOperation(value = "新增或修改", notes = "传入activityUserReward")
-	public HttpResponseResult submit(@Valid @RequestBody ActivityUserReward activityUserReward) {
-        return status(activityUserRewardService.saveOrUpdate(activityUserReward));
-    }
 
- 	/**
-	 * 删除
-	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-        if (StringUtil.isEmpty(ids)) {
-			return failed("参数不能为空");
-		}
-		return status(activityUserRewardService.removeByIds(StringUtil.toLongList(ids)));
-	}
 }

+ 4 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityEvaluationDao.java

@@ -31,7 +31,9 @@ public interface ActivityEvaluationDao extends BaseMapper<ActivityEvaluation> {
      */
     List<ActivityEvaluationVo> selectPage(@Param("page") IPage page, @Param("param") ActivityEvaluationSearch activityEvaluation);
 
-    List<Long> selectUnjoinMusicIds(@Param("activityId") Long activityId, @Param("musicSheetIds") List<Long> musicSheetIds);
+	List<ActivityEvaluationVo> selectAll(@Param("param") ActivityEvaluationSearch activityEvaluation);
+
+	List<Long> selectUnjoinMusicIds(@Param("activityId") Long activityId, @Param("musicSheetIds") List<Long> musicSheetIds);
 
     /**
      * 批量给活动添加曲目
@@ -66,4 +68,5 @@ public interface ActivityEvaluationDao extends BaseMapper<ActivityEvaluation> {
 	 * @return
 	 */
 	List<MusicSheetVo> musicPage(@Param("page") IPage<MusicSheetVo> page, @Param("param") MusicSheetSearch query);
+
 }

+ 56 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityRegistrationSearch.java

@@ -1,18 +1,68 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.yonge.cooleshow.common.enums.ActivityTypeEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
 
 /**
  * @Author: liweifan
  * @Data: 2022-08-04 10:19:49
  */
 @ApiModel(value = "ActivityRegistrationSearch对象", description = "活动报名表查询对象")
-public class ActivityRegistrationSearch extends QueryInfo{
-	private static final long serialVersionUID = 1L;
-	/**
-	 *
-	 */
-	private String musicName;
+public class ActivityRegistrationSearch extends QueryInfo {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "活动id", required = true)
+    @NotNull(message = "活动id不能为空")
+    private Long activityId;
+    @ApiModelProperty(value = "活动类型 EVALUATION 评测活动 ", required = true)
+    @NotNull(message = "活动类型不能为空")
+    private ActivityTypeEnum activityType;
+    /**
+     * 曲目id
+     */
+    @ApiModelProperty(value = "曲目id集合")
+    private List<Long> musicSheetIds;
+    /**
+     * 是否获奖 0 否 1 是
+     */
+    @ApiModelProperty(value = "是否获奖 0 否 1 是")
+    private YesOrNoEnum rewardFlag;
+
+    public ActivityTypeEnum getActivityType() {
+        return activityType;
+    }
+
+    public void setActivityType(ActivityTypeEnum activityType) {
+        this.activityType = activityType;
+    }
+
+    public Long getActivityId() {
+        return activityId;
+    }
+
+    public void setActivityId(Long activityId) {
+        this.activityId = activityId;
+    }
+
+    public List<Long> getMusicSheetIds() {
+        return musicSheetIds;
+    }
+
+    public void setMusicSheetIds(List<Long> musicSheetIds) {
+        this.musicSheetIds = musicSheetIds;
+    }
+
+    public YesOrNoEnum getRewardFlag() {
+        return rewardFlag;
+    }
 
+    public void setRewardFlag(YesOrNoEnum rewardFlag) {
+        this.rewardFlag = rewardFlag;
+    }
 }

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityEvaluationService.java

@@ -33,6 +33,8 @@ public interface ActivityEvaluationService extends IService<ActivityEvaluation>
      */
     IPage<ActivityEvaluationVo> selectPage(IPage<ActivityEvaluationVo> page, ActivityEvaluationSearch query);
 
+	List<ActivityEvaluationVo> selectAll(ActivityEvaluationSearch query);
+
 	/**
 	 * 为活动
 	 * @param param
@@ -56,4 +58,5 @@ public interface ActivityEvaluationService extends IService<ActivityEvaluation>
 	 * @return
 	 */
 	IPage<MusicSheetVo> musicPage(IPage<MusicSheetVo> page, MusicSheetSearch query);
+
 }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityEvaluationServiceImpl.java

@@ -38,6 +38,11 @@ public class ActivityEvaluationServiceImpl extends ServiceImpl<ActivityEvaluatio
     }
 
     @Override
+    public List<ActivityEvaluationVo> selectAll(ActivityEvaluationSearch query) {
+        return baseMapper.selectAll(query);
+    }
+
+    @Override
     public Boolean addBatch(ActivityEvaluationDto param) {
         List<Long> musicSheetIds = WrapperUtil.toLongList(param.getMusicSheetIds());
         //过滤出未添加的曲子

+ 78 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/ActivityRegistrationVo.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.ActivityRegistration;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -10,4 +11,81 @@ import io.swagger.annotations.ApiModel;
 @ApiModel(value = "ActivityRegistrationVo对象", description = "活动报名表查询视图对象")
 public class ActivityRegistrationVo extends ActivityRegistration{
 	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "学生id")
+	private Long studentId;
+
+	@ApiModelProperty(value = "学生昵称")
+	private String username;
+
+	@ApiModelProperty(value = "手机号")
+	private String phone;
+
+	@ApiModelProperty(value = "评测曲目")
+	private String musicSheetName;
+
+	@ApiModelProperty(value = "最大分数")
+	private Integer maxScore;
+
+	@ApiModelProperty(value = "评测次数")
+	private Integer num;
+
+	@ApiModelProperty(value = "是否获奖")
+	private Boolean rewardFlag;
+
+	public Long getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(Long studentId) {
+		this.studentId = studentId;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	public String getMusicSheetName() {
+		return musicSheetName;
+	}
+
+	public void setMusicSheetName(String musicSheetName) {
+		this.musicSheetName = musicSheetName;
+	}
+
+	public Integer getNum() {
+		return num;
+	}
+
+	public void setNum(Integer num) {
+		this.num = num;
+	}
+
+	public Integer getMaxScore() {
+		return maxScore;
+	}
+
+	public void setMaxScore(Integer maxScore) {
+		this.maxScore = maxScore;
+	}
+
+	public Boolean getRewardFlag() {
+		return rewardFlag;
+	}
+
+	public void setRewardFlag(Boolean rewardFlag) {
+		this.rewardFlag = rewardFlag;
+	}
 }

+ 16 - 8
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityEvaluationMapper.xml

@@ -26,16 +26,16 @@
         where t.id_ = #{id}
     </select>
 
-    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo">
+    <sql id="selectSql">
         SELECT
             <include refid="baseColumns" />,
-                ms.music_sheet_name_ as musicSheetName,
-                (select group_concat(mt.name_) from music_tag mt
-                    where find_in_set(mt.id_,ms.music_tag_) and mt.del_flag_ = 0  and mt.state_ = 1) as musicTagNames,
-                (select group_concat(s.name_) from subject s
-                    where find_in_set(s.id_,ms.music_subject_) and s.del_flag_ = 0 ) as subjectNames,
-                ms.source_type_ as sourceType,
-                ms.music_price_ as musicPrice
+            ms.music_sheet_name_ as musicSheetName,
+            (select group_concat(mt.name_) from music_tag mt
+                where find_in_set(mt.id_,ms.music_tag_) and mt.del_flag_ = 0  and mt.state_ = 1) as musicTagNames,
+            (select group_concat(s.name_) from subject s
+                where find_in_set(s.id_,ms.music_subject_) and s.del_flag_ = 0 ) as subjectNames,
+            ms.source_type_ as sourceType,
+            ms.music_price_ as musicPrice
         FROM activity_evaluation t
         left join music_sheet ms on t.music_sheet_id_ = ms.id_
         <where>
@@ -43,6 +43,14 @@
                 and t.activity_id_ = #{param.activityId}
             </if>
         </where>
+    </sql>
+
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo">
+        <include refid="selectSql"/>
+    </select>
+
+    <select id="selectAll" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityEvaluationVo">
+        <include refid="selectSql"/>
     </select>
 
     <select id="selectUnjoinMusicIds" resultType="java.lang.Long">

+ 70 - 7
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityRegistrationMapper.xml

@@ -8,8 +8,8 @@
 	        <result column="order_no_" property="orderNo" />
 	        <result column="sub_order_no_" property="subOrderNo" />
 	        <result column="create_time_" property="createTime" />
-		</resultMap>  
-    
+		</resultMap>
+
     <!-- 表字段 -->
     <sql id="baseColumns">
          t.id_ as id
@@ -18,18 +18,81 @@
         , t.order_no_ as orderNo
         , t.sub_order_no_ as subOrderNo
         , t.create_time_ as createTime
-        </sql> 
-    
+        </sql>
+
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRegistrationVo">
         SELECT
             <include refid="baseColumns"/>
         FROM activity_registration t
         where t.id_ = #{id}
     </select>
-    
+
     <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.ActivityRegistrationVo">
-		SELECT         
-        	<include refid="baseColumns" />
+		SELECT
+        	<include refid="baseColumns" />,
+		    u.id_ as studentId,u.username_ as username,u.phone_ as phone,
+            <if test="param.activityType != null and param.activityType.code == 'EVALUATION'">
+                b.music_sheet_name_ as musicSheetName,b.max_score_ as maxScore,b.num_ as num,
+            </if>
+            if(a.num>0, true, false) as rewardFlag
 		FROM activity_registration t
+		left join sys_user u on t.user_id_ = u.id_
+		left join (
+            select
+		        aur.activity_id_,aur.user_id_,count(1) as num
+		    from activity_user_reward aur
+		    <where>
+                <if test="param.activityId != null">
+                    and aur.activity_id_ = #{param.activityId}
+                </if>
+            </where>
+		    group by aur.activity_id_,aur.user_id_
+        ) a on t.activity_id_ = a.activity_id_ and t.user_id_ = a.user_id_
+        <if test="param.activityType != null and param.activityType.code == 'EVALUATION'">
+            left join (
+                select
+                    ar.activity_id_,aer.user_id_,
+                    group_concat(ms.music_sheet_name_) as music_sheet_name_,
+                    count(aer.id_) as num_,
+                    max(aer.score_) as max_score_
+                from activity_registration ar
+		        left join activity_evaluation_record aer on ar.activity_id_ = aer.activity_id_ and ar.user_id_ = aer.user_id_
+                left join activity_evaluation ae on aer.evaluation_id_ = ae.id_
+                left join music_sheet ms on ae.music_sheet_id_ = ms.id_
+                <where>
+                    <if test="param.activityId != null">
+                        and aer.activity_id_ = #{param.activityId}
+                    </if>
+		            <if test="param.musicSheetIds != null and param.musicSheetIds.size()>0">
+                        and ae.music_sheet_id_ IN
+                        <foreach collection="param.musicSheetIds" item="item" separator="," open="(" close=")">
+                            #{item}
+                        </foreach>
+                    </if>
+                </where>
+                group by ar.activity_id_,aer.user_id_
+            ) b on t.activity_id_ = b.activity_id_ and t.user_id_ = b.user_id_
+        </if>
+        <where>
+            <if test="param.activityType != null and param.activityType.code == 'EVALUATION'">
+		        and b.activity_id_ is not null
+            </if>
+            <if test="param.activityId != null">
+                and t.activity_id_ = #{param.activityId}
+            </if>
+            <if test="null != param.search and '' != param.search">
+                AND (
+                    t.user_id_ LIKE CONCAT('%', #{param.search}, '%') or
+                    u.username_ LIKE CONCAT('%', #{param.search}, '%') or
+                    u.phone_ LIKE CONCAT('%', #{param.search}, '%')
+                )
+            </if>
+            <if test="null != param.rewardFlag and param.rewardFlag.code == 0">
+                and (a.num is null or a.num = 0)
+            </if>
+            <if test="null != param.rewardFlag and param.rewardFlag.code == 1">
+                and a.num > 0
+            </if>
+        </where>
 	</select>
 </mapper>