From 0571bf579557ec97682a8940e29ed19699f6d95e Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 30 六月 2025 10:16:32 +0800
Subject: [PATCH] 修改bug
---
ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java | 402 ++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 367 insertions(+), 35 deletions(-)
diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java
index 5c1bc6a..bc77fe4 100644
--- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java
+++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java
@@ -1,31 +1,34 @@
package com.ruoyi.goods.service.impl.lottery;
import cn.hutool.core.bean.BeanUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
import com.ruoyi.common.core.utils.uuid.IdUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
-import com.ruoyi.goods.api.domain.LotteryEvent;
-import com.ruoyi.goods.api.domain.LotteryEventPrize;
-import com.ruoyi.goods.api.domain.UserLotteryEvent;
-import com.ruoyi.goods.domain.vo.AppLotteryEventPageVo;
-import com.ruoyi.goods.domain.vo.LotteryEventVo;
-import com.ruoyi.goods.domain.vo.UserLotteryEventVo;
+import com.ruoyi.goods.api.domain.*;
+import com.ruoyi.goods.domain.dto.MgtLotteryEventEditDTO;
+import com.ruoyi.goods.domain.dto.MgtLotteryEventPageDto;
+import com.ruoyi.goods.domain.dto.MgtLotteryEventQuestionDTO;
+import com.ruoyi.goods.domain.vo.*;
import com.ruoyi.goods.mapper.lottery.LotteryEventMapper;
-import com.ruoyi.goods.service.lottery.ILotteryEventPrizeService;
-import com.ruoyi.goods.service.lottery.ILotteryEventService;
-import com.ruoyi.goods.service.lottery.IUserLotteryEventQuestionsAnswersService;
-import com.ruoyi.goods.service.lottery.IUserLotteryEventService;
+import com.ruoyi.goods.service.lottery.*;
+import com.ruoyi.system.api.domain.poji.member.Member;
+import com.ruoyi.system.api.domain.poji.member.MemberGiftRecord;
+import com.ruoyi.system.api.domain.poji.shop.Shop;
import com.ruoyi.system.api.service.RemoteCouponService;
import com.ruoyi.system.api.service.RemoteMemberService;
+import com.ruoyi.system.api.service.RemoteShopService;
import org.redisson.api.RLock;
import org.redisson.api.RedissonClient;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
-import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.*;
import java.util.concurrent.TimeUnit;
@@ -36,7 +39,7 @@
* @Date 2025/5/8 18:05
*/
@Service
-public class LotteryEventServiceImpl extends ServiceImpl<LotteryEventMapper, LotteryEvent> implements ILotteryEventService {
+public class LotteryEventServiceImpl extends ServiceImpl<LotteryEventMapper, TLotteryEvent> implements ILotteryEventService {
@Resource
private IUserLotteryEventService userLotteryEventService;
@@ -54,8 +57,16 @@
private RedissonClient redissonClient;
@Resource
- private IUserLotteryEventQuestionsAnswersService userLotteryEventQuestionsService;
+ private IUserLotteryEventQuestionsService userLotteryEventQuestionsAnswersService;
+ @Resource
+ private RemoteShopService remoteShopService;
+
+ @Resource
+ private ILotteryEventQuestionsAnswersService lotteryEventQuestionsAnswersService;
+
+ @Resource
+ private ILotteryEventQuestionsService lotteryEventQuestionsService;
/**
* 根据id查询抽奖活动信息
@@ -65,25 +76,44 @@
*/
@Override
public LotteryEventVo getLotteryEvent(String id) {
- LotteryEvent lotteryEvent = this.getById(id);
+ Long userId = SecurityUtils.getUserId();
+ TLotteryEvent lotteryEvent = this.getById(id);
//构建返回结果
LotteryEventVo vo = new LotteryEventVo();
vo.setId(lotteryEvent.getId());
vo.setName(lotteryEvent.getName());
vo.setActivityProfile(lotteryEvent.getActivityProfile());
- List<UserLotteryEvent> userLotteryEvents = userLotteryEventService.list(new QueryWrapper<UserLotteryEvent>().eq("lottery_event_id", id));
+ List<TUserLotteryEvent> userLotteryEvents = userLotteryEventService.list(new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id));
vo.setLaveTimes(lotteryEvent.getTimes() - userLotteryEvents.size());
//查询抽检活动奖品
- List<LotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<LotteryEventPrize>().eq("lottery_event_id", id));
+ List<TLotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<TLotteryEventPrize>().eq("lottery_event_id", id));
vo.setPrizeList(lotteryEventPrizeList);
-
+ //答题正确率
+ if (5 == lotteryEvent.getActivityType()) {
+ TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
+ if (null != questionsServiceOne) {
+ vo.setCorrectAnswerRate(questionsServiceOne.getCorrectAnswerRate());
+ }
+ }
//构建我的奖品明细
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
List<UserLotteryEventVo> collect = userLotteryEvents.stream().map(s -> {
UserLotteryEventVo userLotteryEventVo = new UserLotteryEventVo();
userLotteryEventVo.setName(s.getObjectName());
userLotteryEventVo.setPrizeType(s.getPrizeType());
userLotteryEventVo.setNumber(s.getNumber());
- userLotteryEventVo.setVerifyCode(s.getVerifyCode());
+ if (Arrays.asList(2, 3).contains(s.getPrizeType())) {
+ MemberGiftRecord memberGiftRecord = remoteMemberService.getVerifyPrizeByGiftId(s.getId()).getData();
+ userLotteryEventVo.setVerifyCode("3-" + memberGiftRecord.getPrizeId());
+ userLotteryEventVo.setIsVerify(1 == memberGiftRecord.getVerifyStatus() ? 0 : 1);
+ userLotteryEventVo.setVerifyTime(null == memberGiftRecord.getVerifyTime() ? "" : sdf.format(memberGiftRecord.getVerifyTime()));
+ }
+ Member member = remoteMemberService.getMember(userId).getData();
+ userLotteryEventVo.setVerifyShop("全部门店");
+ if (null != member && null != member.getRelationShopId()) {
+ Shop shop = remoteShopService.getShop(member.getRelationShopId()).getData();
+ userLotteryEventVo.setVerifyShop(shop.getShopName());
+ }
return userLotteryEventVo;
}).collect(Collectors.toList());
vo.setYourPrizeList(collect);
@@ -98,13 +128,14 @@
* @return
*/
@Override
- public R lotteryDraw(String id) {
+ public R<TLotteryEventPrize> lotteryDraw(String id) {
Long userId = SecurityUtils.getUserId();
- LotteryEvent lotteryEvent = this.getById(id);
+ Member member = remoteMemberService.getMember(userId).getData();
+ TLotteryEvent lotteryEvent = this.getById(id);
//判断答题抽奖是否满足抽奖条件
if (lotteryEvent.getActivityType() == 5) {
- BigDecimal correctAnswerRate = userLotteryEventQuestionsService.getCorrectAnswerRate(userId, id);
- if (correctAnswerRate.compareTo(lotteryEvent.getAccuracy()) < 0) {
+ TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId));
+ if (questionsServiceOne.getCorrectAnswerRate().compareTo(lotteryEvent.getAccuracy()) < 0) {
return R.fail("答题抽奖失败,答题正确率低于活动要求");
}
}
@@ -115,17 +146,17 @@
boolean tryLock = lock.tryLock(30, TimeUnit.SECONDS);
if (tryLock) {
//判断抽奖次数是否用完
- int count = userLotteryEventService.count(new QueryWrapper<UserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId));
+ int count = userLotteryEventService.count(new QueryWrapper<TUserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId));
if (lotteryEvent.getTimes() <= count) {
return R.fail("抽奖次数已用完");
}
- List<LotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<LotteryEventPrize>().eq("lottery_event_id", id));
+ List<TLotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<TLotteryEventPrize>().eq("lottery_event_id", id));
//开始抽奖,根据中奖概率来抽奖
- List<LotteryEventPrize> list = new ArrayList<>();
- for (LotteryEventPrize lotteryEventPrize : lotteryEventPrizeList) {
+ List<TLotteryEventPrize> list = new ArrayList<>();
+ for (TLotteryEventPrize lotteryEventPrize : lotteryEventPrizeList) {
int winRate = lotteryEventPrize.getWinRate().intValue();
for (int i = 0; i < winRate; i++) {
- LotteryEventPrize event = new LotteryEventPrize();
+ TLotteryEventPrize event = new TLotteryEventPrize();
BeanUtil.copyProperties(lotteryEventPrize, event);
list.add(event);
}
@@ -134,9 +165,9 @@
Collections.shuffle(list);
//开始获取随机数
int random = new Random().nextInt(list.size());
- LotteryEventPrize lotteryEventPrize = lotteryEventPrizeList.get(random);
+ TLotteryEventPrize lotteryEventPrize = list.get(random);
//添加中奖商品
- UserLotteryEvent userLotteryEvent = new UserLotteryEvent();
+ TUserLotteryEvent userLotteryEvent = new TUserLotteryEvent();
userLotteryEvent.setId(IdUtils.simpleUUID());
userLotteryEvent.setUserId(userId);
userLotteryEvent.setLotteryEventId(id);
@@ -145,11 +176,6 @@
userLotteryEvent.setObjectId(lotteryEventPrize.getObjectId());
userLotteryEvent.setObjectName(lotteryEventPrize.getObjectName());
userLotteryEvent.setNumber(lotteryEventPrize.getNumber());
- //商品需要生成核销码和核销状态
- if (Arrays.asList(2, 3).contains(lotteryEventPrize.getPrizeType())) {
- userLotteryEvent.setVerifyCode(IdUtils.simpleUUID());
- userLotteryEvent.setIsVerify(0);
- }
//中奖优惠券
if (1 == lotteryEventPrize.getPrizeType()) {
remoteCouponService.addMemberCoupon(lotteryEventPrize.getObjectId(), lotteryEventPrize.getNumber(), userId);
@@ -160,7 +186,41 @@
}
userLotteryEvent.setCreateTime(LocalDateTime.now());
userLotteryEventService.save(userLotteryEvent);
- return R.ok();
+ //添加奖品数据
+ MemberGiftRecord memberGiftRecord = new MemberGiftRecord();
+ memberGiftRecord.setPrizeId(IdUtils.simpleUUID());
+ memberGiftRecord.setDelFlag(0);
+ memberGiftRecord.setUserId(userId);
+ memberGiftRecord.setGiftId(userLotteryEvent.getId());
+ memberGiftRecord.setGiftFrom(1);
+ memberGiftRecord.setShopId(member.getRelationShopId());
+ switch (lotteryEventPrize.getPrizeType()) {
+ case 1:
+ memberGiftRecord.setGiftType(1);
+ memberGiftRecord.setCouponId(userLotteryEvent.getObjectId());
+ memberGiftRecord.setCouponNumber(userLotteryEvent.getNumber());
+ break;
+ case 2:
+ memberGiftRecord.setGiftType(2);
+ memberGiftRecord.setGoodsId(userLotteryEvent.getObjectId());
+ memberGiftRecord.setGiftName(userLotteryEvent.getObjectName());
+ memberGiftRecord.setGoodsNumber(userLotteryEvent.getNumber());
+ break;
+ case 3:
+ memberGiftRecord.setGiftType(4);
+ memberGiftRecord.setGiftName(userLotteryEvent.getObjectName());
+ memberGiftRecord.setGiftNumber(userLotteryEvent.getNumber());
+ break;
+ case 4:
+ memberGiftRecord.setGiftType(5);
+ memberGiftRecord.setIntegralNumber(userLotteryEvent.getNumber());
+ break;
+ }
+ memberGiftRecord.setPrizeFrom(2);
+ memberGiftRecord.setCreateTime(new Date());
+ memberGiftRecord.setVerifyStatus(1);
+ remoteMemberService.saveMemberGiftRecord(memberGiftRecord);
+ return R.ok(lotteryEventPrize);
}
} catch (Exception e) {
e.printStackTrace();
@@ -182,4 +242,276 @@
public List<AppLotteryEventPageVo> pageAppLotteryEvent(Page<AppLotteryEventPageVo> page, Long userId) {
return this.baseMapper.pageAppLotteryEvent(page, userId);
}
+
+
+ /**
+ * 获取门店抽奖列表
+ *
+ * @param page
+ * @param shopId
+ * @return
+ */
+ @Override
+ public List<ShopLotteryDrawListVo> getShopLotteryDrawList(Page<ShopLotteryDrawListVo> page, Long shopId) {
+ return this.baseMapper.getShopLotteryDrawList(page, shopId);
+ }
+
+ @Override
+ @Transactional
+ public R editLotteryEvent(MgtLotteryEventEditDTO dto) {
+ //先检查开始-结束时间范围内,系统中是否有该活动
+ List<TLotteryEvent> lotteryEvents = this.baseMapper.selectList(new LambdaQueryWrapper<TLotteryEvent>()
+ .eq(TLotteryEvent::getDelFlag, 0)//未删除的
+ .eq(TLotteryEvent::getActivityType, dto.getActivityType())//类型相同的
+ .between(TLotteryEvent::getStartTime, dto.getStartTime(), dto.getEndTime())//开始时间在这个活动的(开始-结束)范围内的
+ .or()
+ .between(TLotteryEvent::getEndTime, dto.getStartTime(), dto.getEndTime())//结束时间在这个活动的(开始-结束)范围内的
+ );
+ if (null != lotteryEvents && !lotteryEvents.isEmpty()) {
+ // 新增记录时直接返回错误
+ if (dto.getId() == null) {
+ return R.fail("新增抽奖活动与现有抽奖活动时间范围冲突");
+ }
+ // 更新记录时,检查是否与其他记录(非自身)冲突
+ boolean hasConflict = lotteryEvents.stream()
+ .anyMatch(event -> !event.getId().equals(dto.getId()));
+ if (hasConflict) {
+ return R.fail("编辑抽奖活动与现有其他活动时间范围冲突");
+ }
+ }
+ TLotteryEvent lotteryEvent = new TLotteryEvent();
+ if (null != dto.getId()) {
+ //编辑
+ lotteryEvent=this.baseMapper.selectById(dto.getId());
+ if (null == lotteryEvent || lotteryEvent.getDelFlag() != 0) {
+ return R.fail("该抽奖活动已被删除");
+ }
+ if (!lotteryEvent.getActivityType().equals(dto.getActivityType())) {
+ return R.fail("编辑抽奖活动不能修改开启方式");
+ }
+ if (!lotteryEvent.getName().equals(dto.getName())) {
+ return R.fail("编辑抽奖活动不能修改抽奖名称");
+ }
+ //答题类型
+ if (lotteryEvent.getActivityType().equals(5)) {
+ //将之前的题干数据、答案选项数据删除
+ //先删除答案选项数据
+ lotteryEventQuestionsAnswersService.remove(new LambdaQueryWrapper<TLotteryEventQuestionsAnswers>()
+ .eq(TLotteryEventQuestionsAnswers::getLotteryEventId, lotteryEvent.getId()));
+ //再删除题干数据
+ lotteryEventQuestionsService.remove(new LambdaQueryWrapper<TLotteryEventQuestions>()
+ .eq(TLotteryEventQuestions::getLotteryEventId, lotteryEvent.getId()));
+ }
+ //奖品数据删除
+ /*lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>()
+ .eq(TLotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/
+ lotteryEventPrizeService.deleteByLotteryEventId(lotteryEvent.getId());
+ }
+ //新增
+ BeanUtils.copyProperties(dto, lotteryEvent);
+ lotteryEvent.setDelFlag(0);
+ if (dto.getId() == null) {
+ lotteryEvent.setId(IdUtils.simpleUUID());
+ lotteryEvent.setCreateTime(LocalDateTime.now());
+ lotteryEvent.setCreateUserId(dto.getUserId());
+ } else {
+ lotteryEvent.setUpdateTime(LocalDateTime.now());
+ lotteryEvent.setUpdateUserId(dto.getUserId());
+ }
+ //保存抽奖活动
+ this.saveOrUpdate(lotteryEvent);
+ // 保存奖品数据
+ TLotteryEvent finalLotteryEvent = lotteryEvent;//jdk8及之后 变量在初始化后确实没有被重新赋值,可直接引用,无需显式声明为 final
+ List<TLotteryEventPrize> prizeList = dto.getMgtLotteryEventPrizeDTOList().stream()
+ .map(prizeDTO -> {
+ TLotteryEventPrize prize = new TLotteryEventPrize();
+ prize.setId(IdUtils.simpleUUID());
+ prize.setLotteryEventId(finalLotteryEvent.getId());
+ prize.setPrizeType(prizeDTO.getPrizeType());
+ if (null != prizeDTO.getObjectId()) {
+ prize.setObjectId(prizeDTO.getObjectId());
+ }
+ prize.setObjectName(prizeDTO.getObjectName());
+ prize.setNumber(prizeDTO.getNumber());
+ prize.setWinRate(prizeDTO.getWinRate());
+ return prize;
+ })
+ .collect(Collectors.toList());
+// lotteryEventPrizeService.saveBatch(prizeList);
+ lotteryEventPrizeService.savePrizeList(prizeList);
+ if (dto.getActivityType().equals(5)) {
+ //保存题干数据
+ for (MgtLotteryEventQuestionDTO questionDTO : dto.getMgtLotteryQuestionDTOList()) {
+ TLotteryEventQuestions question = new TLotteryEventQuestions();
+ question.setId(IdUtils.simpleUUID());
+ question.setLotteryEventId(finalLotteryEvent.getId());
+ question.setName(questionDTO.getName());
+ question.setSort(questionDTO.getSort());
+ lotteryEventQuestionsService.save(question);
+ //保存答案选项数据
+ List<TLotteryEventQuestionsAnswers> answersList = questionDTO.getAnswersDTOList().stream()
+ .map(answersDTO -> {
+ TLotteryEventQuestionsAnswers answer = new TLotteryEventQuestionsAnswers();
+ answer.setId(IdUtils.simpleUUID());
+ answer.setLotteryEventId(finalLotteryEvent.getId());
+ answer.setLotteryEventQuestionsId(question.getId());
+ answer.setAnswers(answersDTO.getAnswers());
+ answer.setIsRight(answersDTO.getIsRight());
+ return answer;
+ }).collect(Collectors.toList());
+ lotteryEventQuestionsAnswersService.saveBatch(answersList);
+ }
+ }
+ return R.ok();
+ }
+
+ @Override
+ public Page<MgtLotteryEventPageVo> pageMgtLotteryEvent( MgtLotteryEventPageDto dto) {
+ Map<Long,Shop> map;
+ List<Shop> shopList;
+ Page<MgtLotteryEventPageVo> page = new Page<>();
+ page.setSize(dto.getPageSize());
+ page.setCurrent(dto.getPageNum());
+ page.setOptimizeCountSql(false);
+
+ if (dto.getCreateObject()!=null){
+ //根据 条件-创建对象 模糊查找门店集合
+ shopList=remoteShopService.getShopListByShopName(dto.getCreateObject());
+ if (null != shopList && !shopList.isEmpty()) {
+ List<Long> shopIds = shopList.stream().map(Shop::getShopId).collect(Collectors.toList());
+ dto.setShopIds(shopIds);
+ //转为map 方便后续取商户名称
+ map = shopList.stream().collect(Collectors.toMap(Shop::getShopId, shop -> shop));
+ } else {
+ map = new HashMap<>();
+ }
+ //判断“平台创建”是否包含了 条件-创建对象
+ if (!"平台创建".contains(dto.getCreateObject())){
+ dto.setFlag(0);//未包含,只查找门店ids
+ }
+ } else {
+ map = new HashMap<>();
+ }
+ //获取分页数据
+ Long total=this.baseMapper.pageMgtLotteryEventCount( dto);
+ page.setTotal(total);
+ page.setCurrent(dto.getPageNum());
+ page.setPages(total/dto.getPageSize());
+ //获取分页信息
+ dto.setOffset((dto.getPageNum() - 1) * dto.getPageSize());
+ List<MgtLotteryEventPageVo> voList = this.baseMapper.pageMgtLotteryEvent(dto);
+ //填充创建对象
+ voList.forEach(x->{
+ if (x.getActivityType()!=6){
+ x.setCreateObject("平台创建");
+ }else {
+ //线下抽奖,获取门店名称
+ if(map.containsKey(Long.valueOf(x.getShopId()))){
+ x.setCreateObject(map.get(Long.valueOf(x.getShopId())).getShopName());
+ }else {
+ Shop shop = remoteShopService.getShop(Long.valueOf(x.getShopId())).getData();
+ if (null != shop){
+ x.setCreateObject(shop.getShopName());
+ }
+ }
+
+ }
+
+ });
+ page.setRecords(voList);
+ return page;
+ }
+
+ @Override
+ public R<MgtLotteryEventDetailVO> getLotteryEventDetailById(String id) {
+ TLotteryEvent lotteryEvent = this.getById(id);
+ if (null == lotteryEvent) {
+ return R.fail("该抽奖活动不存在");
+ }
+ MgtLotteryEventDetailVO vo = new MgtLotteryEventDetailVO();
+ BeanUtils.copyProperties(lotteryEvent, vo);
+ if (lotteryEvent.getActivityType()==6) {
+ //线下抽奖 取商户名称
+ Shop data = remoteShopService.getShop(Long.valueOf(lotteryEvent.getShopId())).getData();
+ if (null != data) {
+ vo.setShopName(data.getShopName());
+ }
+ }
+ if(lotteryEvent.getActivityType()==5){
+ //题干数据
+ List<TLotteryEventQuestions> questionsList = lotteryEventQuestionsService.getBaseMapper().selectList(new LambdaQueryWrapper<TLotteryEventQuestions>().eq(TLotteryEventQuestions::getLotteryEventId, lotteryEvent.getId()));
+
+ List<MgtLotteryEventQuestionVO> questionsVOList = questionsList.stream().map(question -> {
+ MgtLotteryEventQuestionVO questionVO = new MgtLotteryEventQuestionVO();
+ BeanUtils.copyProperties(question, questionVO);
+ //答案选项数据
+ List<TLotteryEventQuestionsAnswers> answersList = lotteryEventQuestionsAnswersService.getBaseMapper().selectList(new LambdaQueryWrapper<TLotteryEventQuestionsAnswers>()
+ .eq(TLotteryEventQuestionsAnswers::getLotteryEventId, lotteryEvent.getId())
+ .eq(TLotteryEventQuestionsAnswers::getLotteryEventQuestionsId, questionVO.getId()));
+ questionVO.setAnswersVOList(answersList);
+ return questionVO;
+ }).collect(Collectors.toList());
+ //题干数据排序
+ // 自定义 Comparator 实现
+ Comparator<TLotteryEventQuestions> sortComparator = new Comparator<TLotteryEventQuestions>() {
+ @Override
+ public int compare(TLotteryEventQuestions q1, TLotteryEventQuestions q2) {
+ return Integer.compare(q1.getSort(), q2.getSort());
+ }
+ };
+ // 应用排序
+ Collections.sort(questionsList, sortComparator);
+ vo.setMgtLotteryQuestionVOList(questionsVOList);
+ }
+ //奖项信息
+ /*List<TLotteryEventPrize> prizeList = lotteryEventPrizeService.getBaseMapper().selectList(new LambdaQueryWrapper<TLotteryEventPrize>()
+ .eq(TLotteryEventPrize::getLotteryEventId, lotteryEvent.getId()));*/
+ List<TLotteryEventPrize> prizeList = lotteryEventPrizeService.getPrizeListByLotteryEventId(lotteryEvent.getId());
+ vo.setLotteryEventPrizeList(prizeList);
+
+ return R.ok(vo);
+ }
+
+ @Override
+ public R deleteMgtLotteryEvent(String id) {
+ TLotteryEvent lotteryEvent = this.getById(id);
+ if (null == lotteryEvent || lotteryEvent.getDelFlag()!=0) {
+ return R.ok();
+ }
+
+ //1.奖品数据删除
+/* lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>()
+ .eq(TLotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/
+ lotteryEventPrizeService.deleteByLotteryEventId(lotteryEvent.getId());
+ //2.答题类型
+ if (lotteryEvent.getActivityType().equals(5)) {
+ //先删除答案选项数据
+ lotteryEventQuestionsAnswersService.remove(new LambdaQueryWrapper<TLotteryEventQuestionsAnswers>()
+ .eq(TLotteryEventQuestionsAnswers::getLotteryEventId, lotteryEvent.getId()));
+ //再删除题干数据
+ lotteryEventQuestionsService.remove(new LambdaQueryWrapper<TLotteryEventQuestions>()
+ .eq(TLotteryEventQuestions::getLotteryEventId, lotteryEvent.getId()));
+ }
+ //3.抽奖活动删除
+ lotteryEvent.setDelFlag(1);
+ this.updateById(lotteryEvent);
+ return R.ok();
+ }
+
+ @Override
+ public R endImmediatelyLotteryEvent(String id) {
+ TLotteryEvent lotteryEvent = this.getById(id);
+ if (null == lotteryEvent || lotteryEvent.getDelFlag()!=0) {
+ return R.fail("该抽奖活动不存在");
+ }
+ LocalDateTime now = LocalDateTime.now();
+ if (now.isBefore(lotteryEvent.getStartTime()) && now.isAfter(lotteryEvent.getEndTime())) {
+ return R.fail("该抽奖活动不在活动时间范围内");
+ }
+ lotteryEvent.setEndTime(now);//将结束时间设置为当前时间
+ lotteryEvent.setUpdateUserId(SecurityUtils.getUserId());
+ lotteryEvent.setUpdateTime(now);
+ this.updateById(lotteryEvent);
+ return R.ok();
+ }
}
--
Gitblit v1.7.1