Commit 8ad14b93 authored by libin's avatar libin

Merge branch 'luck_draw_feature' into dev

parents 313f05c6 64eaa146
......@@ -25,7 +25,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
......@@ -205,4 +204,6 @@ public class ActivityAttendanceRecordBiz extends BaseBiz<ActivityAttendanceRecor
public void updateLotteryNumByActivityIdAndUserIdAndPrizeType(Integer activityId,Integer userId,Integer prizeType){
mapper.updateLotteryNumByActivityIdAndUserIdAndPrizeType(activityId,userId,prizeType);
}
}
\ No newline at end of file
......@@ -8,7 +8,6 @@ import com.google.common.collect.Lists;
import com.xxfc.platform.activity.bo.ActivityWinningRecordBo;
import com.xxfc.platform.activity.bo.ActivityWinningRecordTotalVo;
import com.xxfc.platform.activity.constant.PrizeTypeEnum;
import com.xxfc.platform.activity.dto.ActivityWinningRecordDTO;
import com.xxfc.platform.activity.dto.ActivityWinningRecordFindDTO;
import com.xxfc.platform.activity.dto.ActivityWinningRecordPageDTO;
import com.xxfc.platform.activity.entity.ActivityWinningRecord;
......@@ -18,7 +17,6 @@ import org.apache.commons.collections.CollectionUtils;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.BeanUtils;
......@@ -31,6 +29,7 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.atomic.AtomicInteger;
/**
......@@ -164,4 +163,11 @@ public class ActivityWinningRecordBiz extends BaseBiz<ActivityWinningRecordMappe
activityWinningRecordPageDTO.getPositionName(),prizeType,activityWinningRecordPageDTO.getPrizeName(),
expiryDateCode,timeStr};
}
public ActivityWinningRecordVo findActivityAttendanceRecordById(Long id) {
ActivityWinningRecordVo activityWinningRecordVo = new ActivityWinningRecordVo();
ActivityWinningRecord activityAttendanceRecord = mapper.selectByPrimaryKey(id);
Optional.ofNullable(activityAttendanceRecord).ifPresent(x->BeanUtils.copyProperties(x,activityWinningRecordVo));
return activityWinningRecordVo;
}
}
\ No newline at end of file
......@@ -41,16 +41,16 @@ public class ActivityPrizeMqHandler {
private final RedisTemplate<String, Object> redisTemplate;
@Resource(name = "redisTemplate")
private ValueOperations valueOperations;
private final String R_CONSUME="lottery:reconsume";
private final int R_CONSUME_MAX_NUM=3;
private final String R_CONSUME = "lottery:reconsume";
private final int R_CONSUME_MAX_NUM = 3;
@RabbitListener(queues = RabbitActivityConfig.PRIZE_RECORD_QUEUE)
public void processActivityPrizeMsg(ActivityLotteryDTO activityLotteryDTO, Channel channel){
log.info("抽奖消息的数据【{}】",activityLotteryDTO);
public void processActivityPrizeMsg(ActivityLotteryDTO activityLotteryDTO, Channel channel) {
log.info("抽奖消息的数据【{}】", activityLotteryDTO);
try {
if (activityLotteryDTO.getHasWinning() == 1) {
//更新库存
log.info("更新库存:参数【prizeType:{}==serialNumber:{}】",activityLotteryDTO.getPrizeType(), activityLotteryDTO.getSerialNumber());
log.info("更新库存:参数【prizeType:{}==serialNumber:{}】", activityLotteryDTO.getPrizeType(), activityLotteryDTO.getSerialNumber());
activityPrizeBiz.updatePrizeStock(activityLotteryDTO.getPrizeType(), activityLotteryDTO.getSerialNumber());
//发放优惠券
if (activityLotteryDTO.getPrizeGoodsType() == PrizeGoodsTypeEnum.COUPON.getCode()) {
......@@ -58,31 +58,31 @@ public class ActivityPrizeMqHandler {
userCouponSendDTO.setCouponId(activityLotteryDTO.getGoodsId());
userCouponSendDTO.setCouponNum(1);
userCouponSendDTO.setPhone(activityLotteryDTO.getPhone());
log.info("抽中优惠券发送:【参数:{}】",userCouponSendDTO);
log.info("抽中优惠券发送:【参数:{}】", userCouponSendDTO);
userCouponBiz.sendCoupon(userCouponSendDTO);
}
}
ActivityWinningRecord activityWinningRecord = new ActivityWinningRecord();
BeanUtils.copyProperties(activityLotteryDTO, activityWinningRecord);
activityWinningRecord.setCrtTime(new Date());
log.info("抽奖记录【{}】",activityWinningRecord);
log.info("抽奖记录【{}】", activityWinningRecord);
activityWinningRecordBiz.saveRecord(activityWinningRecord);
//更改对应抽奖类型的抽奖次数
log.info("更改对应抽奖类型的抽奖次数【activityId:{}==userId:{}==prizeType:{}】",activityLotteryDTO.getActivityId(), activityLotteryDTO.getUserId(), activityLotteryDTO.getPrizeType());
log.info("更改对应抽奖类型的抽奖次数【activityId:{}==userId:{}==prizeType:{}】", activityLotteryDTO.getActivityId(), activityLotteryDTO.getUserId(), activityLotteryDTO.getPrizeType());
activityAttendanceRecordBiz.updateLotteryNumByActivityIdAndUserIdAndPrizeType(activityLotteryDTO.getActivityId(), activityLotteryDTO.getUserId(), activityLotteryDTO.getPrizeType());
}catch (Exception ex){
log.error("抽奖消息消费失败【{}】",ex);
} catch (Exception ex) {
log.error("抽奖消息消费失败【{}】", ex);
try {
Long reConsumeCounter = valueOperations.increment(R_CONSUME);
if(reConsumeCounter <= R_CONSUME_MAX_NUM ) {
if (reConsumeCounter <= R_CONSUME_MAX_NUM) {
channel.basicRecover(false);
log.info("抽奖消息重回队列成功");
}
if (reConsumeCounter==1){
redisTemplate.expire(R_CONSUME,1, TimeUnit.DAYS);
if (reConsumeCounter == 1) {
redisTemplate.expire(R_CONSUME, 1, TimeUnit.DAYS);
}
} catch (IOException e) {
log.error("消费抽奖消息重回队列失败【{}】",e);
log.error("消费抽奖消息重回队列失败【{}】", e);
}
}
......
package com.xxfc.platform.activity.rest;
import com.xxfc.platform.activity.biz.ActivityAttendanceRecordBiz;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.xxfc.platform.activity.biz.ActivityWinningRecordBiz;
import com.xxfc.platform.activity.vo.ActivityWinningRecordVo;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
......@@ -17,6 +21,13 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class ActivityWinningRecordController {
private final ActivityAttendanceRecordBiz activityAttendanceRecordBiz;
private final ActivityWinningRecordBiz activityWinningRecordBiz;
@GetMapping("/{id}")
public ObjectRestResponse<ActivityWinningRecordVo> findActivityAttendanceRecordById(@PathVariable(value = "id") Long id){
ActivityWinningRecordVo activityWinningRecordVo = activityWinningRecordBiz.findActivityAttendanceRecordById(id);
return ObjectRestResponse.succ(activityWinningRecordVo);
}
}
\ No newline at end of file
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