Przeglądaj źródła

Merge branch 'dev_v1.3.4_20220909' of http://git.dayaedu.com/yonge/cooleshow into dev_v1.3.4_20220909

Eric 2 lat temu
rodzic
commit
870fa59001

+ 1 - 0
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -1317,6 +1317,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
                                                .multiply(coupon);
             orderItem.setCouponAmount(couponAmount);
             orderItem.setPrecisionAmount(BigDecimal.ZERO);
+
         }
         BigDecimal reduce = orderItemList.stream()
                                          .map(omsOrderItem -> omsOrderItem.getCouponAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())))

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

@@ -97,7 +97,7 @@ public class CouponIssueController {
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
-        couponIssueService.issueCoupon(param.getCouponId(),param.getUserParam(),sysUser.getId(),param.getRemark());
+        couponIssueService.issueCoupon(param.getCouponId(),param.getUserParam(),sysUser.getId(),param.getRemark(),true);
 
         return succeed();
     }

+ 18 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityEvaluationRecordDao.java

@@ -5,6 +5,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.enums.activity.ActivityRankingRuleEnum;
 import org.apache.ibatis.annotations.Param;
 
 import com.yonge.cooleshow.biz.dal.entity.ActivityEvaluationRecord;
@@ -38,24 +39,33 @@ public interface ActivityEvaluationRecordDao extends BaseMapper<ActivityEvaluati
 	 * @return
 	 */
     List<Long> getJoinEvaluationIdList(@Param("activityId") Long activityId, @Param("userId") Long userId);
-	
+
 	/**
 	 * 查询指定活动指定曲目的排行榜
-	 * @param activityPlanId 指定活动
+	 *
+	 * @param activityPlanId       指定活动
 	 * @param activityEvaluationId 指定曲目
-	 * @param limit 获奖人数
+	 * @param limit                获奖人数
+	 * @param rankingRule
 	 * @return
 	 */
-	List<ActivityRankingVo> queryRankingList(@Param("activityPlanId") Long activityPlanId, @Param("activityEvaluationId") Long activityEvaluationId, @Param("limit") int limit);
-	
-	ActivityRankingVo queryUserRanking(@Param("activityPlanId") Long activityPlanId, @Param("activityEvaluationId") Long activityEvaluationId, @Param("userId") Long userId);
+	List<ActivityRankingVo> queryRankingList(@Param("activityPlanId") Long activityPlanId, @Param(
+			"activityEvaluationId") Long activityEvaluationId, @Param("limit") int limit, @Param(
+			"rankRule") ActivityRankingRuleEnum rankingRule);
+
+	ActivityRankingVo queryUserRanking(@Param("activityPlanId") Long activityPlanId, @Param(
+			"activityEvaluationId") Long activityEvaluationId, @Param("userId") Long userId, @Param(
+			"rankRule") ActivityRankingRuleEnum rankRule);
 	
 	ActivityEvaluationRecord queryLastestRecord(@Param("activityPlanId") Long activityPlanId, @Param("userId") Long userId);
 
 	/**
 	 * 用户活动最高排名信息
-	 * @param userIds 用户ID
+	 *
+	 * @param userIds     用户ID
+	 * @param rankingRule
 	 * @return List<ActivityEvaluationRecord>
 	 */
-    List<ActivityEvaluationRecord> selectUserHighestRankingInfo(@Param("activityId") Long activityId, @Param("userIds") List<Long> userIds);
+	List<ActivityEvaluationRecord> selectUserHighestRankingInfo(@Param("activityId") Long activityId, @Param(
+			"userIds") List<Long> userIds, @Param("rankRule") ActivityRankingRuleEnum rankingRule);
 }

+ 26 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/ActivityUserReward.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.activity.ActivityRankingRuleEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -56,6 +57,31 @@ public class ActivityUserReward implements Serializable {
     @TableField(value = "unit_")
     private String unit;
 
+    @ApiModelProperty("活动排名")
+    @TableField(value = "ranking_")
+    private Integer ranking;
+
+
+    @ApiModelProperty("活动排名规则")
+    @TableField(value = "ranking_rule_")
+    private ActivityRankingRuleEnum rankingRule;
+
+    public Integer getRanking() {
+        return ranking;
+    }
+
+    public void setRanking(Integer ranking) {
+        this.ranking = ranking;
+    }
+
+    public ActivityRankingRuleEnum getRankingRule() {
+        return rankingRule;
+    }
+
+    public void setRankingRule(ActivityRankingRuleEnum rankingRule) {
+        this.rankingRule = rankingRule;
+    }
+
     public String getUnit() {
         return unit;
     }

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityRewardService.java

@@ -87,5 +87,7 @@ public interface ActivityRewardService extends IService<ActivityReward>  {
 	 * @param activityId 活动id
 	 * @return 返回发放成功奖品id
 	 */
-	List<Long> sendReward(Long userId, Long activityId);
+	List<Long> sendReward(Long userId, Long activityId,List<Long> rewardIdList);
+
+	Boolean userRewarded(Long userId, Long activityId);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CouponIssueService.java

@@ -47,7 +47,7 @@ public interface CouponIssueService extends IService<CouponIssue> {
      * @param issuer
      * @param reason
      */
-    void issueCoupon(Long couponId, List<UserParam> userParam, Long issuer, String reason);
+    void issueCoupon(Long couponId, List<UserParam> userParam, Long issuer, String reason,Boolean sendMessage);
 
     /**
      * 查询能发放优惠券的用户列表

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

@@ -6,6 +6,9 @@ import java.util.List;
 import java.util.Optional;
 
 import com.google.common.collect.Lists;
+import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
+import com.yonge.cooleshow.biz.dal.enums.activity.ActivityRankingRuleEnum;
+import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
 import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -33,6 +36,9 @@ public class ActivityEvaluationRecordServiceImpl extends ServiceImpl<ActivityEva
     @Autowired
     private ActivityEvaluationService activityEvaluationService;
 
+    @Autowired
+    private ActivityPlanService activityPlanService;
+
 	@Override
     public ActivityEvaluationRecordVo detail(Long id) {
         return baseMapper.detail(id);
@@ -91,14 +97,24 @@ public class ActivityEvaluationRecordServiceImpl extends ServiceImpl<ActivityEva
         activityEvaluationRecord.setActivityId(activityId);
         activityEvaluationRecord.setEvaluationId(activityEvaluation.getId());
         this.save(activityEvaluationRecord);
-    }	@Override
+    }
+
+    @Override
 	public List<ActivityRankingVo> queryRankingList(Long activityPlanId, Long activityEvaluationId, int limit) {
-		return baseMapper.queryRankingList(activityPlanId, activityEvaluationId, limit);
+        ActivityPlan activityPlan = activityPlanService.getById(activityPlanId);
+        if (activityPlan == null) {
+            throw new BizException("活动已结束");
+        }
+		return baseMapper.queryRankingList(activityPlanId, activityEvaluationId, limit,activityPlan.getRankingRule());
 	}
 
 	@Override
 	public ActivityRankingVo queryUserRanking(Long activityPlanId, Long activityEvaluationId, Long userId) {
-		return baseMapper.queryUserRanking(activityPlanId, activityEvaluationId, userId);
+        ActivityPlan activityPlan = activityPlanService.getById(activityPlanId);
+        if (activityPlan == null) {
+            throw new BizException("活动已结束");
+        }
+        return baseMapper.queryUserRanking(activityPlanId, activityEvaluationId, userId,activityPlan.getRankingRule());
 	}
 
     /**
@@ -114,9 +130,12 @@ public class ActivityEvaluationRecordServiceImpl extends ServiceImpl<ActivityEva
         if (CollectionUtils.isEmpty(userIds)) {
             return Lists.newArrayList();
         }
-
+        ActivityPlan activityPlan = activityPlanService.getById(activityId);
+        if (activityPlan == null) {
+            throw new BizException("活动已结束");
+        }
         // 用户最高排名信息
-        List<ActivityEvaluationRecord> records = getBaseMapper().selectUserHighestRankingInfo(activityId, userIds);
+        List<ActivityEvaluationRecord> records = getBaseMapper().selectUserHighestRankingInfo(activityId, userIds,activityPlan.getRankingRule());
 
         return Optional.ofNullable(records).orElse(Lists.newArrayList());
     }

+ 64 - 19
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanEvaluationServiceImpl.java

@@ -2,14 +2,20 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dto.ActivityPlanDto;
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderPayReq;
 import com.yonge.cooleshow.biz.dal.dto.search.OrderSearch;
+import com.yonge.cooleshow.biz.dal.entity.ActivityEvaluation;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward;
 import com.yonge.cooleshow.biz.dal.entity.ActivityUserReward;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.OrderTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.ActivityPlanVo;
+import com.yonge.cooleshow.biz.dal.vo.ActivityRankingVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
+import com.yonge.cooleshow.common.enums.ActivityResourceEnum;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -19,8 +25,7 @@ import com.yonge.cooleshow.biz.dal.entity.ActivityPlanEvaluation;
 import com.yonge.cooleshow.biz.dal.dao.ActivityPlanEvaluationDao;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -37,6 +42,15 @@ public class ActivityPlanEvaluationServiceImpl extends ServiceImpl<ActivityPlanE
     @Autowired
     private ActivityPlanRewardService activityPlanRewardService;
 
+    @Autowired
+    private ActivityPlanService activityPlanService;
+
+    @Autowired
+    private ActivityEvaluationRecordService activityEvaluationRecordService;
+
+    @Autowired
+    private ActivityEvaluationService activityEvaluationService;
+
     @Override
     public boolean createOrUpdate(ActivityPlanDto activityPlan) {
         ActivityPlanEvaluation planExpand = activityPlan.getPlanEvaluation();
@@ -54,11 +68,11 @@ public class ActivityPlanEvaluationServiceImpl extends ServiceImpl<ActivityPlanE
     }
 
     @Override
-    public void closeActivity(Long activytyId) {
+    public void closeActivity(Long activityId) {
         OrderSearch query = new OrderSearch();
         query.setOrderType(OrderTypeEnum.ACTI_REGIST.getCode());
         query.setGoodType(GoodTypeEnum.ACTI_REGIST.getCode());
-        query.setBizId(activytyId);
+        query.setBizId(activityId);
         List<UserOrderVo> userOrderVos = userOrderService.selectAllList(query);
         for (UserOrderVo userOrderVo : userOrderVos) {
             OrderPayReq payReq = new OrderPayReq();
@@ -75,28 +89,59 @@ public class ActivityPlanEvaluationServiceImpl extends ServiceImpl<ActivityPlanE
         //关闭未付款订单
         closeActivity(activityId);
 
+        ActivityPlanVo detail = activityPlanService.detail(activityId);
+        List<ActivityUserReward> activityUserRewardList = new ArrayList<>();
+
+        List<ActivityEvaluation> activityEvaluationList = activityEvaluationService.lambdaQuery()
+                                                                 .eq(ActivityEvaluation::getActivityId, activityId)
+                                                                 .list();
+
         //活动需要发放的奖品
-        List<ActivityUserReward> activityUserRewardList = baseMapper.getUserReward(activityId);
+        Map<String, List<ActivityPlanRewardDto>> rewardMap = detail.getActivityRewardList().stream()
+                                                                                 .collect(Collectors.groupingBy(
+                                                                                         ActivityPlanReward::getGroup));
+        for (ActivityEvaluation activityEvaluation : activityEvaluationList) {
+
+            List<ActivityRankingVo> activityRankingVos = activityEvaluationRecordService.queryRankingList(activityId,
+                                                              activityEvaluation.getId(),detail.getRanking());
+            for (int i = 0; i < activityRankingVos.size(); i++) {
 
-        Set<Long> userIds = activityUserRewardList.stream().map(ActivityUserReward::getUserId).collect(Collectors.toSet());
+                ActivityRankingVo activityRankingVo = activityRankingVos.get(i);
+
+                List<ActivityPlanRewardDto> activityPlanRewardDtos = rewardMap.get(i + 1 + "");
+                if (CollectionUtils.isEmpty(activityPlanRewardDtos)) {
+                    continue;
+                }
 
-        for (Long userId : userIds) {
-            //给用户发放奖品 传入用户id和活动id
-            List<Long> successRewardIds = activityRewardService.sendReward(userId, activityId);
+                List<Long> rewardIdList = activityPlanRewardDtos.stream()
+                                   .map(activityPlanRewardDto -> activityPlanRewardDto.getActivityReward().getId())
+                                   .collect(Collectors.toList());
 
-            activityUserRewardList.stream().filter(o -> o.getUserId().equals(userId)).forEach(o -> {
-                for (Long successRewardId : successRewardIds) {
-                    if(o.getRewardId().equals(successRewardId)){
-                        o.setGrantFlag(1);
-                        return;
+                //给用户发放奖品 传入用户id和活动id
+                List<Long> successRewardIds = activityRewardService.sendReward(activityRankingVo.getUserId(), activityId,rewardIdList);
+
+                // 保存奖品发放记录
+                for (Long rewardId : rewardIdList) {
+                    ActivityUserReward activityUserReward = new ActivityUserReward();
+                    activityUserReward.setActivityId(activityId);
+                    activityUserReward.setBizId(activityEvaluation.getId());
+                    activityUserReward.setUserId(activityRankingVo.getUserId());
+                    activityUserReward.setRankingRule(detail.getRankingRule());
+                    activityUserReward.setRanking(i+1);
+                    activityUserReward.setCreateTime(new Date());
+                    activityUserReward.setUpdateTime(new Date());
+                    activityUserReward.setRewardId(rewardId);
+                    if (successRewardIds.contains(rewardId)) {
+                        activityUserReward.setGrantFlag(1);
                     }
+                    activityUserRewardList.add(activityUserReward);
                 }
-                o.setGrantFlag(0);
-            });
+            }
+        }
+        if (!CollectionUtils.isEmpty(activityUserRewardList)) {
+            activityUserRewardService.saveBatch(activityUserRewardList);
         }
-        activityUserRewardService.saveBatch(activityUserRewardList);
-
         //发完奖后将库存归还
-        activityPlanRewardService.recoveryReward(activityId);
+        // activityPlanRewardService.recoveryReward(activityId);
     }
 }

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

@@ -147,8 +147,12 @@ public class ActivityPlanStandardServiceImpl extends ServiceImpl<ActivityPlanSta
     }
 
     private void sendUserReward(Long userId, Long activityId, Date createTime, List<ActivityPlanRewardDto> activityPlanRewardDtos) {
+        List<Long> rewardIdList = activityPlanRewardDtos.stream()
+                                                   .map(activityPlanRewardDto -> activityPlanRewardDto.getActivityReward()
+                                                                                                      .getId())
+                                                   .collect(Collectors.toList());
         //给用户发奖
-        List<Long> successRewardIds = activityRewardService.sendReward(userId, activityId);
+        List<Long> successRewardIds = activityRewardService.sendReward(userId, activityId,rewardIdList);
 
         for (ActivityPlanRewardDto dto : activityPlanRewardDtos) {
             ActivityUserReward userReward = new ActivityUserReward();

+ 41 - 16
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java

@@ -10,6 +10,7 @@ import com.yonge.cooleshow.biz.dal.dao.ActivityRewardChangeStockDao;
 import com.yonge.cooleshow.biz.dal.dao.ActivityRewardDao;
 import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
 import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
+import com.yonge.cooleshow.biz.dal.dto.UserParam;
 import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardChangeStockSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
@@ -22,6 +23,7 @@ import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum;
+import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.mapper.CouponInfoMapper;
 import com.yonge.cooleshow.biz.dal.service.ActivityPlanRewardService;
 import com.yonge.cooleshow.biz.dal.service.ActivityPlanService;
@@ -56,6 +58,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.stream.Collectors;
+import java.util.*;
 
 
 @Service
@@ -85,8 +88,14 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
     private ActivityPlanRewardService activityPlanRewardService;
 
     @Autowired
+    private ActivityRewardService activityRewardService;
+
+    @Autowired
     private MemberPriceSettingsService memberPriceSettingsService;
 
+    @Autowired
+    private CouponIssueService couponIssueService;
+
     @Override
     public ActivityRewardVo detail(Long id) {
         return baseMapper.detail(id);
@@ -218,26 +227,29 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public List<Long> sendReward(Long userId, Long activityId) {
+    public List<Long> sendReward(Long userId, Long activityId,List<Long> rewardIdList) {
         if (userRewarded(userId, activityId)) {
             return new ArrayList<>();
         }
         ActivityPlan activityPlan = activityPlanService.getById(activityId);
         if (activityPlan == null) {
             log.warn("活动不存在");
-            return null;
+            return new ArrayList<>();
+        }
+        if (CollectionUtils.isEmpty(rewardIdList)) {
+            log.warn("奖品不存在");
+            return new ArrayList<>();
         }
 
-        List<ActivityPlanRewardDto> activityPlanRewardDtos = activityPlanRewardService.queryActivityPlanReward(
-                activityId);
+        Collection<ActivityReward> activityRewards = activityRewardService.listByIds(rewardIdList);
 
-        if (CollectionUtils.isEmpty(activityPlanRewardDtos)) {
+        if (CollectionUtils.isEmpty(activityRewards)) {
             return new ArrayList<>();
         }
 
         // 级联锁同时处理奖品库存
         List<RLock> lockList = new ArrayList<>();
-        for (ActivityPlanRewardDto activityReward : activityPlanRewardDtos) {
+        for (ActivityReward activityReward : activityRewards) {
             lockList.add(redissonClient.getLock(CacheNameEnum.LOCK_ACTIVITY_REWARD_STOCK.getRedisKey(activityReward.getId())));
         }
 
@@ -246,28 +258,40 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
         List<Long> activityRewardIdList = new ArrayList<>();
         List<String> rewardNameList = new ArrayList<>();
         try {
-            lock.lock();
-            for (ActivityPlanRewardDto activityReward : activityPlanRewardDtos) {
-                int update = activityPlanRewardService.reduceStock(activityId, activityReward.getActivityReward().getId());
+            // lock.lock();
+            for (ActivityReward activityReward : activityRewards) {
+                int update = activityPlanRewardService.reduceStock(activityId, activityReward.getId());
                 if (update == 0) {
                     continue;
                 }
-                if (activityReward.getActivityReward().getRewardType().equals(RewardTypeEnum.PIAMO_ROOM)) {
+                if (activityReward.getRewardType().equals(RewardTypeEnum.PIAMO_ROOM)) {
                     PianoRoomChangeRecord pianoRoomChangeRecord = new PianoRoomChangeRecord();
                     pianoRoomChangeRecord.setUserId(userId);
                     pianoRoomChangeRecord.setInOrOut(InOrOutEnum.IN);
                     pianoRoomChangeRecord.setSourceType(SourceTypeEnum.ACTIVITY);
-                    pianoRoomChangeRecord.setTimes(activityReward.getActivityReward().getNum());
+                    pianoRoomChangeRecord.setTimes(activityReward.getNum());
                     pianoRoomChangeRecord.setBizId(activityId.toString());
                     pianoRoomChangeRecord.setCreateTime(new Date());
                     pianoRoomChangeRecord.setReason(activityPlan.getActivityName());
                     pianoRoomChangeRecordService.add(pianoRoomChangeRecord);
-                } else if (activityReward.getActivityReward().getRewardType().equals(RewardTypeEnum.VIP)) {
+                } else if (activityReward.getRewardType().equals(RewardTypeEnum.VIP)) {
                     memberPriceSettingsService.activityReward(userId, activityPlan.getActivityClient(),
-                                                              activityReward.getActivityReward(), activityId,activityPlan.getActivityName());
+                                                              activityReward, activityId,activityPlan.getActivityName());
+                } else if (activityReward.getRewardType().equals(RewardTypeEnum.COUPON)) {
+                    List<UserParam> list = new ArrayList<>();
+                    UserParam userParam = new UserParam();
+                    userParam.setUserId(userId);
+                    userParam.setClientType(activityPlan.getActivityClient());
+                    list.add(userParam);
+                    try {
+                        couponIssueService.issueCoupon(activityReward.getCouponId(),list,null,"活动奖品",false);
+                    } catch (BizException e) {
+                        log.warn("send activity coupon {}",e.fillInStackTrace());
+                        continue;
+                    }
                 }
-                rewardNameList.add(activityReward.getActivityReward().getRewardName());
-                activityRewardIdList.add(activityReward.getActivityReward().getId());
+                rewardNameList.add(activityReward.getRewardName());
+                activityRewardIdList.add(activityReward.getId());
             }
             // 发送活动获奖推送
             if (!CollectionUtils.isEmpty(rewardNameList)) {
@@ -281,7 +305,8 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
         return activityRewardIdList;
     }
 
-    private Boolean userRewarded(Long userId, Long activityId) {
+    @Override
+    public Boolean userRewarded(Long userId, Long activityId) {
         return baseMapper.userRewarded(userId, activityId);
     }
 

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

@@ -157,7 +157,7 @@ public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, Coupon
 
     @Override
     @Transactional
-    public void issueCoupon(Long couponId, List<UserParam> userParam, Long issuer, String reason) {
+    public void issueCoupon(Long couponId, List<UserParam> userParam, Long issuer, String reason,Boolean sendMessage) {
         CouponInfo couponInfo = couponInfoService.queryCouponInfoById(couponId);
         if (couponInfo == null) {
             throw new BizException("未找到优惠券信息");
@@ -210,7 +210,9 @@ public class CouponIssueServiceImp extends ServiceImpl<CouponIssueMapper, Coupon
         }
 
         // 发送消息
-        sendMessage(couponInfo.getName(),userParam);
+        if (sendMessage) {
+            sendMessage(couponInfo.getName(), userParam);
+        }
     }
 
     private void sendMessage(String couponName,List<UserParam> userParams) {

+ 13 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityEvaluationRecordMapper.xml

@@ -50,7 +50,11 @@
         left join subject s on s.id_ = stu.subject_id_
 		where aer.activity_id_ = #{activityPlanId} and aer.evaluation_id_ = #{activityEvaluationId} and aer.score_ >= 0
 		order by aer.score_ desc,aer.times_ asc, aer.id_ asc limit 1000000
-		) a group by userId order by score desc,times asc,id_ asc
+		) a group by userId order by score desc,
+        <if test="rankRule != null and rankRule.code == 'EVALUATIONS_NUMBER'">
+            times asc,
+        </if>
+        id_ asc
 		limit #{limit}
     </select>
 
@@ -61,7 +65,11 @@
         left join subject s on s.id_ = stu.subject_id_
 		where aer.id_ in (select * from (
 		select aer.id_ from activity_evaluation_record aer where aer.activity_id_ = #{activityPlanId} and aer.evaluation_id_ = #{activityEvaluationId} and aer.user_id_ = #{userId} and aer.score_ >= 0
-		order by aer.score_ desc,aer.times_ asc, aer.id_ asc limit 1) a
+		order by aer.score_ desc,
+        <if test="rankRule != null and rankRule.code == 'EVALUATIONS_NUMBER'">
+            aer.times_ asc,
+        </if>
+         aer.id_ asc limit 1) a
 		) 
     </select>
 
@@ -90,7 +98,9 @@
                  t1.activity_id_ = #{activityId}
              ORDER BY
                  t1.score_ DESC,
-                 t1.times_ ASC,
+                <if test="rankRule != null and rankRule.code == 'EVALUATIONS_NUMBER'">
+                    t1.times_ asc,
+                </if>
                  t1.id_ ASC
              ) t
         WHERE t.userId IN (<foreach collection="userIds" separator="," item="item">#{item}</foreach>)