liweifan 3 vuotta sitten
vanhempi
commit
c6a7719b3a

+ 15 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanDao.java

@@ -4,6 +4,7 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.entity.ActivityUserReward;
 import com.yonge.cooleshow.biz.dal.vo.MusicActivityVo;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
@@ -57,4 +58,18 @@ public interface ActivityPlanDao extends BaseMapper<ActivityPlan> {
 	 * @return
 	 */
     List<ActivityPlan> activityState();
+
+	/**
+	 * 需要发奖的活动
+	 * @return
+	 */
+    List<ActivityPlan> activityReward();
+
+	/**
+	 *
+	 * @param activityPlanId
+	 * @param activityType
+	 * @return
+	 */
+	List<ActivityUserReward> getUserReward(@Param("activityPlanId")Long activityPlanId,@Param("activityType") String activityType);
 }

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityPlan.java

@@ -88,6 +88,9 @@ public class ActivityPlan implements Serializable {
     @ApiModelProperty("活动状态 0 停用 1 启用 ")
 	@TableField(value = "activity_state_")
     private Integer activityState;
+    @ApiModelProperty("发奖状态 0 未发奖 1 已发奖 ")
+    @TableField(value = "reward_flag_")
+    private Integer rewardFlag;
     @ApiModelProperty("创建时间 ")
 	@TableField(value = "create_time_")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -264,4 +267,12 @@ public class ActivityPlan implements Serializable {
     public void setShareRate(BigDecimal shareRate) {
         this.shareRate = shareRate;
     }
+
+    public Integer getRewardFlag() {
+        return rewardFlag;
+    }
+
+    public void setRewardFlag(Integer rewardFlag) {
+        this.rewardFlag = rewardFlag;
+    }
 }

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

@@ -57,6 +57,9 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
     private ActivityRewardService activityRewardService;
 
     @Autowired
+    private ActivityUserRewardService activityUserRewardService;
+
+    @Resource
     private SysUserFeignService sysUserFeignService;
 
     @Autowired
@@ -145,7 +148,7 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
                 activityPlan.setActivityStart(now);
             }
             activityPlan.setActivityState(activityState);
-        }else{
+        } else {
             activityPlan.setActivityState(2);
             //取消活动所有订单
             cancelActivityOrder(detail);
@@ -181,7 +184,7 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
     @Override
     public MusicActivityVo getActivityInfo(Long activityPlanId, SysUser user) {
         ActivityPlan activityPlan = this.getById(activityPlanId);
-        if(activityPlan.getActivityState()!=1){
+        if (activityPlan.getActivityState() != 1) {
             activityPlan.setActivityState(0);
         }
 
@@ -336,6 +339,15 @@ public class ActivityPlanServiceImpl extends ServiceImpl<ActivityPlanDao, Activi
                 cancelActivityOrder(activityPlan);
             }
         }
+        //活动发奖
+        List<ActivityPlan> rewardList = baseMapper.activityReward();
+        for (ActivityPlan activityPlan : rewardList) {
+            List<ActivityUserReward> activityUserRewardList = baseMapper.getUserReward(activityPlan.getId(), activityPlan.getActivityType().getCode());
+            activityUserRewardService.saveBatch(activityUserRewardList);
+            //活动置为已发奖
+            activityPlan.setRewardFlag(1);
+            updateById(activityPlan);
+        }
     }
 
     private void cancelActivityOrder(ActivityPlan activityPlan) {

+ 30 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanMapper.xml

@@ -101,4 +101,34 @@
             or (t.activity_end_ &lt;= now() and activity_state_ = 1)
         )
     </select>
+
+    <select id="activityReward" resultType="com.yonge.cooleshow.biz.dal.entity.ActivityPlan">
+        select <include refid="baseColumns"/> from activity_plan t where t.reward_flag_ = 0 and t.activity_end_ &lt;= now()
+    </select>
+
+    <select id="getUserReward" resultType="com.yonge.cooleshow.biz.dal.entity.ActivityUserReward">
+        <if test="null != activityType and 'EVALUATION' == activityType">
+            select
+                a.activity_id_ as activityId,
+                a.evaluation_id_ as bizId,
+                b.user_id_ as userId,
+                c.id_ as rewardId
+            from (
+                select
+                    a.activity_id_,a.evaluation_id_,a.score_,min(b.create_time_) as create_time_
+                from(
+                    select
+                        activity_id_,evaluation_id_, max(score_) as score_
+                    from activity_evaluation_record where activity_id_ = #{activityPlanId} and score_ is not null
+                    group by activity_id_,evaluation_id_
+                ) a
+                left join activity_evaluation_record b on a.activity_id_ = b.activity_id_ and a.evaluation_id_ = b.evaluation_id_ and a.score_ = b.score_
+                GROUP BY a.activity_id_,a.evaluation_id_,a.score_
+            ) a
+            left join activity_evaluation_record b
+                on a.activity_id_ = b.activity_id_ and a.evaluation_id_ = b.evaluation_id_
+                and a.score_ = b.score_ and a.create_time_ = b.create_time_
+            left join activity_reward c on a.activity_id_ = c.activity_id_
+        </if>
+    </select>
 </mapper>

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

@@ -53,7 +53,7 @@
                 select
                     ar.activity_id_,aer.user_id_,
                     group_concat(DISTINCT ms.music_sheet_name_) as music_sheet_name_,
-                    sum(if(aer.score_>0, 1, 0)) as num_,
+                    sum(if(aer.score_ is null, 0, 1)) 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_