Commit dd089133 authored by libin's avatar libin

抽奖

parent ceaef0ef
......@@ -19,6 +19,7 @@ import java.util.Date;
public class ActivityWinningRecordVo {
private String userName;
private String phone;
private String positionName;
@ApiModelProperty("1:线上 2:现场")
private Integer prizeType;
......
......@@ -16,5 +16,6 @@ import lombok.NoArgsConstructor;
public class LotteryVo {
private String prizeName;
private Integer serialNumber;
private String expiryDateCode;
}
package com.xxfc.platform.activity.biz;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.util.ReferralCodeUtil;
import com.xxfc.platform.activity.constant.PrizeTypeEnum;
import com.xxfc.platform.activity.dto.UserCouponSendDTO;
import com.xxfc.platform.activity.entity.ActivityWinningRecord;
import com.xxfc.platform.activity.util.LotteryUtils;
import com.xxfc.platform.activity.vo.ActivityPrizeVo;
......@@ -9,6 +11,8 @@ import com.xxfc.platform.activity.vo.LotteryVo;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import com.xxfc.platform.activity.entity.ActivityPrize;
......@@ -18,6 +22,7 @@ import com.github.wxiaoqi.security.common.exception.BaseException;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
......@@ -35,6 +40,9 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize
private final ActivityWinningRecordBiz activityWinningRecordBiz;
private final UserCouponBiz userCouponBiz;
private final RedisTemplate<String,Object> redisTemplate;
@Resource(name = "redisTemplate")
private ValueOperations<String, Object> valueOperations;
/**
* 查询奖品
......@@ -110,20 +118,41 @@ public class ActivityPrizeBiz extends BaseBiz<ActivityPrizeMapper, ActivityPrize
public LotteryVo activityLottery(Integer activityId, Integer prizeType, AppUserDTO appUserDTO) {
LotteryVo lotteryVo = new LotteryVo();
List<ActivityPrize> activityPrizes = findActivityPrizeByType(prizeType);
ActivityPrize notActivityPrize = activityPrizes.stream().filter(x -> x.getIsPrize() == 1).findFirst().orElseGet(() -> {
ActivityPrize activityPrize = new ActivityPrize();
activityPrize.setName("谢谢参与");
activityPrize.setIsPrize(0);
return activityPrize;
});
int index = LotteryUtils.getrandomIndex(activityPrizes);
ActivityPrize activityPrize = activityPrizes.get(index);
if (activityPrize.getTotalStock() == 0){
lotteryVo.setPrizeName("谢谢参与");
return lotteryVo;
}
if (PrizeTypeEnum.LOCALE.getCode()==prizeType){
//兑奖码生成
lotteryVo.setPrizeName(notActivityPrize.getName());
}
ActivityWinningRecord activityWinningRecord = new ActivityWinningRecord();
activityWinningRecord.setActivityId(activityId);
activityWinningRecord.setPrizeType(prizeType);
activityWinningRecord.setUserId(appUserDTO.getUserid());
activityWinningRecord.setIconPath(activityPrize.getIconPath());
if (activityPrize.getIsPrize()==1 && activityPrize.getTotalStock()!=0){
if (PrizeTypeEnum.LOCALE.getCode()==prizeType){
//兑奖码生成
String expiryDateCode = ReferralCodeUtil.encode(valueOperations.increment(String.valueOf(activityId)).intValue());
activityWinningRecord.setExpiryDateCode(expiryDateCode);
lotteryVo.setExpiryDateCode(expiryDateCode);
}
//发放优惠券
if (activityPrize.getIsEntity() == 0){
UserCouponSendDTO userCouponSendDTO = new UserCouponSendDTO();
userCouponSendDTO.setCouponId(activityPrize.getGoodsId());
userCouponSendDTO.setCouponNum(1);
userCouponSendDTO.setPhone(appUserDTO.getUsername());
userCouponBiz.sendCoupon(userCouponSendDTO);
}
}
activityWinningRecordBiz.saveRecord(activityWinningRecord);
return lotteryVo;
}
......
......@@ -27,7 +27,7 @@
aar.user_name as `userName`,
aar.phone,
aar.position_name as `positionName`,
apr.inviteNum,
IFNULL(apr.inviteNum,0),
awr.prizes
from (select `user_id`,`popularize_id`,`current_progress`,`status`,`crt_time` from activity_popularize_user where
`popularize_id`=#{activityId}
......
......@@ -19,7 +19,7 @@
</resultMap>
<select id="selectActivityWinningRecord" resultType="com.xxfc.platform.activity.dto.ActivityWinningRecordPageDTO">
select * from `activity_winning_record` as `awr`
select awr.*,aar.* from `activity_winning_record` as `awr`
left join `activity_attendance_record` as `aar` ON aar.user_id=awr.user_id and aar.activity_id=awr.activity_id
where 1=1
<if test="activityId!=null">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment