Ver Fonte

用户参与人数合并

Eric há 3 anos atrás
pai
commit
5aa799d75d

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/ActivityUserRewardSearch.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,6 +9,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotNull;
 import java.util.Date;
+import java.util.Optional;
 
 /**
  * @Author: liweifan
@@ -39,6 +41,9 @@ public class ActivityUserRewardSearch extends QueryInfo{
 	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
 	private Date endTime;
 
+	@ApiModelProperty(hidden = true)
+	private Integer activityGroupBy;
+
 	public Long getActivityId() {
 		return activityId;
 	}
@@ -80,4 +85,12 @@ public class ActivityUserRewardSearch extends QueryInfo{
 	public void setEndTime(Date endTime) {
 		this.endTime = endTime;
 	}
+
+	public Integer getActivityGroupBy() {
+		return Optional.ofNullable(activityGroupBy).orElse(EStatus.ENABLE.getValue());
+	}
+
+	public void setActivityGroupBy(Integer activityGroupBy) {
+		this.activityGroupBy = activityGroupBy;
+	}
 }

+ 13 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanServiceImpl.java

@@ -163,7 +163,19 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
 
     @Override
     public IPage<ActivityPlanVo> selectPage(IPage<ActivityPlanVo> page, ActivityPlanSearch query) {
-        return page.setRecords(baseMapper.selectPage(page, query));
+
+        List<ActivityPlanVo> wrappers = baseMapper.selectPage(page, query);
+
+        // 分享活动-参与人数获奖人数相等
+        for (ActivityPlanVo item : wrappers) {
+
+            // 重置分享活动获奖与参与人数
+            if (ActivityTypeEnum.SHARE == item.getActivityType()) {
+                item.setRegistrationNum(item.getRewardNum());
+            }
+        }
+
+        return page.setRecords(wrappers);
     }
 
     @Override

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

@@ -16,6 +16,7 @@ import com.yonge.cooleshow.biz.dal.service.ActivityUserRewardService;
 import com.yonge.cooleshow.biz.dal.vo.ActivityUserRewardVo;
 import com.yonge.cooleshow.biz.dal.vo.UserRewardVo;
 import com.yonge.cooleshow.common.enums.ActivityTypeEnum;
+import com.yonge.cooleshow.common.enums.EStatus;
 import com.yonge.cooleshow.common.enums.RewardTypeEnum;
 import com.yonge.toolset.base.exception.BizException;
 import lombok.extern.slf4j.Slf4j;
@@ -53,6 +54,10 @@ public class ActivityUserRewardServiceImpl extends ServiceImpl<ActivityUserRewar
             throw  new BizException("无效的活动ID");
         }
 
+        if (ActivityTypeEnum.SHARE == activityPlan.getActivityType()) {
+            query.setActivityGroupBy(EStatus.DISABLE.getValue());
+        }
+
         // 活动获奖用户信息
         List<UserRewardVo> userRewards = baseMapper.selectPage(page, query);
 
@@ -93,6 +98,7 @@ public class ActivityUserRewardServiceImpl extends ServiceImpl<ActivityUserRewar
 
                 item.rewardType(RewardTypeEnum.valueOf(activityPlan.getShareType()))
                         .shareType(activityPlan.getShareType())
+                        .amount(1L)
                         .teacherName(teacherNameMap.getOrDefault(item.getUserId(), ""))
                         .setTeacherIds(teacherIdMap.getOrDefault(item.getUserId(), ""));
             }

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/UserRewardVo.java

@@ -172,4 +172,9 @@ public class UserRewardVo implements Serializable {
 		this.shareType = shareType;
 		return this;
 	}
+
+	public UserRewardVo amount(Long amount) {
+		this.amount = amount;
+		return this;
+	}
 }

+ 16 - 9
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityUserRewardMapper.xml

@@ -41,14 +41,21 @@
             su.real_name_ as realName,
             su.username_ as username,
             su.phone_ as phone,
-            min(t.create_time_) as createTime,
-            COUNT(DISTINCT t.id_) AS amount,
-            ar.reward_type_ AS rewardType,
-            ar.unit_ AS unit,
-            group_concat(if(t.grant_flag_ = 1,ar.reward_name_,null)) as rewardNames
-        FROM activity_user_reward t
-        left join activity_reward ar on ar.id_ = t.reward_id_
-        left join sys_user su on t.user_id_ = su.id_
+            IFNULL(ar.reward_type_, "VIP") AS rewardType,
+            <choose>
+                <when test="param.activityGroupBy == 1">
+                    /*按用户、活动分组统计*/
+                    MIN(t.create_time_) as createTime,
+                    COUNT(DISTINCT t.id_) AS amount,
+                    group_concat(if(t.grant_flag_ = 1,ar.reward_name_,null)) as rewardNames,
+                </when>
+                <otherwise>
+                    /*分享活动,直接查询用户购买记录*/
+                    t.create_time_ as createTime,
+                    IF(t.grant_flag_ = 1,ar.reward_name_,null) AS rewardNames,
+                </otherwise>
+            </choose>
+            IFNULL(ar.unit_, t.unit_) AS unit
         <where>
             <if test="param.activityId != null">
                 and t.activity_id_ = #{param.activityId}
@@ -68,7 +75,7 @@
                 and  t.create_time_ &lt;= #{param.endTime}
             </if>
         </where>
-        GROUP BY t.user_id_,t.activity_id_
+        <if test="param.activityGroupBy == 1">GROUP BY t.user_id_ , t.activity_id_</if>
     </select>
 
     <!--分享活动关联老师-->