ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEvent.java
File was renamed from ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEvent.java @@ -21,7 +21,7 @@ @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_lottery_event") public class LotteryEvent { public class TLotteryEvent { /** * 主键 */ @@ -134,5 +134,5 @@ @TableField(exist = false) @ApiModelProperty("奖品列表") private List<LotteryEventPrize> prizes; private List<TLotteryEventPrize> prizes; } ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEventPrize.java
File was renamed from ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEventPrize.java @@ -15,7 +15,7 @@ */ @Data @TableName("t_lottery_event_prize") public class LotteryEventPrize { public class TLotteryEventPrize { /** * 主键 */ ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEventQuestions.java
File was renamed from ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEventQuestions.java @@ -12,7 +12,7 @@ */ @Data @TableName("t_lottery_event_questions") public class LotteryEventQuestions { public class TLotteryEventQuestions { /** * 数据id */ ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TLotteryEventQuestionsAnswers.java
File was renamed from ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/LotteryEventQuestionsAnswers.java @@ -10,7 +10,7 @@ */ @Data @TableName("t_lottery_event_questions_answers") public class LotteryEventQuestionsAnswers { public class TLotteryEventQuestionsAnswers { /** * id */ ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TUserLotteryEvent.java
File was renamed from ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEvent.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotations.TableName; import com.baomidou.mybatisplus.enums.IdType; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import java.time.LocalDateTime; @@ -13,8 +15,10 @@ * @Date 2025/5/12 10:34 */ @Data @EqualsAndHashCode(callSuper = false) @Accessors(chain = true) @TableName("t_user_lottery_event") public class UserLotteryEvent { public class TUserLotteryEvent { /** * 主键 */ ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TUserLotteryEventQuestions.java
File was renamed from ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEventQuestions.java @@ -16,7 +16,7 @@ */ @Data @TableName("t_user_lottery_event_questions") public class UserLotteryEventQuestions { public class TUserLotteryEventQuestions { /** * id */ ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/TUserLotteryEventQuestionsAnswers.java
File was renamed from ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEventQuestionsAnswers.java @@ -15,7 +15,7 @@ */ @Data @TableName("t_user_lottery_event_questions_answers") public class UserLotteryEventQuestionsAnswers { public class TUserLotteryEventQuestionsAnswers { /** * id */ ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/factory/LotteryEventFallbackFactory.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.api.factory; import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.service.LotteryEventClient; import org.springframework.cloud.openfeign.FallbackFactory; @@ -17,7 +17,7 @@ return new LotteryEventClient() { @Override public R<List<LotteryEvent>> getLotteryEventList(Integer activityType) { public R<List<TLotteryEvent>> getLotteryEventList(Integer activityType) { return R.fail("根据开启方式获取活动列表失败:" + cause.getMessage()); } }; ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/service/LotteryEventClient.java
@@ -2,7 +2,7 @@ import com.ruoyi.common.core.constant.ServiceNameConstants; import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.factory.LotteryEventFallbackFactory; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -20,9 +20,10 @@ /** * 根据开启方式获取活动列表 * * @param activityType * @return */ @PostMapping("/lotteryEvent/getLotteryEventList") R<List<LotteryEvent>> getLotteryEventList(@RequestParam("activityType") Integer activityType); R<List<TLotteryEvent>> getLotteryEventList(@RequestParam("activityType") Integer activityType); } ruoyi-auth/src/main/java/com/ruoyi/auth/controller/TokenController.java
@@ -1,20 +1,5 @@ package com.ruoyi.auth.controller; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto; import com.ruoyi.system.api.model.AppMiniLoginDto; import com.ruoyi.system.api.model.AppMiniLoginVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.auth.form.LoginBody; import com.ruoyi.auth.form.RegisterBody; import com.ruoyi.auth.service.SysLoginService; @@ -24,8 +9,22 @@ import com.ruoyi.common.security.auth.AuthUtil; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.system.api.domain.dto.AppMiniRegisterDto; import com.ruoyi.system.api.model.AppMiniLoginDto; import com.ruoyi.system.api.model.AppMiniLoginVo; import com.ruoyi.system.api.model.LoginUser; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; @@ -78,7 +77,7 @@ Map<String, Object> miniToken = tokenService.createMiniToken(appMiniLoginVo); //判断新用户是都符合抽奖条件 miniToken.put("lotteryDraw", false); List<LotteryEvent> data = lotteryEventClient.getLotteryEventList(1).getData(); List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(1).getData(); if (data.size() > 0) { miniToken.put("lotteryDraw", true); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/business/MerLotteryEventController.java
@@ -5,8 +5,8 @@ import com.ruoyi.common.core.domain.R; 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.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventPrize; import com.ruoyi.goods.domain.dto.DelShopLotteryDrawDto; import com.ruoyi.goods.domain.dto.ShopLotteryDrawListDto; import com.ruoyi.goods.domain.dto.ShopWinningRecordDto; @@ -75,7 +75,7 @@ @RequestMapping(value = "/delShopLotteryDraw", method = RequestMethod.POST) @ApiOperation(value = "门店删除抽奖活动【2.0】") public R delShopLotteryDraw(@RequestBody DelShopLotteryDrawDto dto) { LotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); TLotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); if (null == lotteryEvent) { return R.fail("抽奖活动不存在"); } @@ -93,15 +93,15 @@ @RequestMapping(value = "/getShopLotteryDrawInfo", method = RequestMethod.POST) @ApiOperation(value = "获取门店抽奖详情【2.0】") public R<LotteryEvent> getShopLotteryDrawInfo(@RequestBody DelShopLotteryDrawDto dto) { LotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); public R<TLotteryEvent> getShopLotteryDrawInfo(@RequestBody DelShopLotteryDrawDto dto) { TLotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); if (null == lotteryEvent) { return R.fail("抽奖活动不存在"); } if (!lotteryEvent.getShopId().equals(dto.getShopId())) { return R.fail("查询失败"); } List<LotteryEventPrize> list = lotteryEventPrizeService.list(new LambdaQueryWrapper<LotteryEventPrize>().eq(LotteryEventPrize::getLotteryEventId, dto.getId())); List<TLotteryEventPrize> list = lotteryEventPrizeService.list(new LambdaQueryWrapper<TLotteryEventPrize>().eq(TLotteryEventPrize::getLotteryEventId, dto.getId())); lotteryEvent.setPrizes(list); return R.ok(lotteryEvent); } @@ -109,7 +109,7 @@ @RequestMapping(value = "/editShopLotteryDraw", method = RequestMethod.POST) @ApiOperation(value = "保存门店抽奖【2.0】") public R editShopLotteryDraw(@RequestBody LotteryEvent lotteryEvent) { public R editShopLotteryDraw(@RequestBody TLotteryEvent lotteryEvent) { if (lotteryEvent.getId() == null) { lotteryEvent.setId(IdUtils.simpleUUID()); } @@ -117,9 +117,9 @@ lotteryEvent.setUpdateUserId(SecurityUtils.getUserId()); lotteryEventService.saveOrUpdate(lotteryEvent); //先删除原有的奖品 lotteryEventPrizeService.remove(new LambdaQueryWrapper<LotteryEventPrize>().eq(LotteryEventPrize::getLotteryEventId, lotteryEvent.getId())); lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>().eq(TLotteryEventPrize::getLotteryEventId, lotteryEvent.getId())); //添加新的奖品 List<LotteryEventPrize> prizes = lotteryEvent.getPrizes(); List<TLotteryEventPrize> prizes = lotteryEvent.getPrizes(); prizes.forEach(s -> { s.setId(IdUtils.simpleUUID()); if (s.getPrizeType() == 2 && StringUtils.isEmpty(s.getObjectName())) { @@ -135,7 +135,7 @@ @RequestMapping(value = "/getShopWinningRecord", method = RequestMethod.POST) @ApiOperation(value = "获取中奖记录列表【2.0】") public R<Page<ShopWinningRecordVo>> getShopWinningRecord(@RequestBody ShopWinningRecordDto dto) { LotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); TLotteryEvent lotteryEvent = lotteryEventService.getById(dto.getId()); if (null == lotteryEvent) { return R.fail("抽奖活动不存在"); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/concole/LotteryEventController.java
@@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.service.lottery.ILotteryEventService; import org.springframework.web.bind.annotation.*; @@ -29,9 +29,9 @@ */ @ResponseBody @PostMapping("/getLotteryEventList") public R<List<LotteryEvent>> getLotteryEventList(@RequestParam("activityType") Integer activityType) { List<LotteryEvent> list = lotteryEventService.list(new LambdaQueryWrapper<LotteryEvent>().eq(LotteryEvent::getActivityType, activityType) .eq(LotteryEvent::getDelFlag, 0).last(" and now() between start_time and end_time")); public R<List<TLotteryEvent>> getLotteryEventList(@RequestParam("activityType") Integer activityType) { List<TLotteryEvent> list = lotteryEventService.list(new LambdaQueryWrapper<TLotteryEvent>().eq(TLotteryEvent::getActivityType, activityType) .eq(TLotteryEvent::getDelFlag, 0).last(" and now() between start_time and end_time")); return R.ok(list); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/management/MgtLotteryEventController.java
@@ -4,7 +4,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.domain.dto.*; import com.ruoyi.goods.domain.vo.*; import com.ruoyi.goods.service.lottery.ILotteryEventService; @@ -72,7 +72,7 @@ @ApiOperation(value = "查看抽奖活动-答题情况【2.0】") public R<Page<MgtUserAnswersPageVO>> getUserAnswersPage(@RequestBody MgtUserAnswersPageDTO dto) { //检查是否答题类型 LotteryEvent lotteryEvent = lotteryEventService.getById(dto.getLotteryEventId()); TLotteryEvent lotteryEvent = lotteryEventService.getById(dto.getLotteryEventId()); if (null == lotteryEvent || lotteryEvent.getDelFlag()!=0 ){ return R.fail("该抽奖活动不存在"); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLotteryEventController.java
@@ -93,6 +93,19 @@ page.setSize(dto.getPageSize()); page.setCurrent(dto.getPageNum()); List<AppLotteryEventPageVo> activityPageVoList = lotteryEventService.pageAppLotteryEvent(page,userId); activityPageVoList.forEach(vo -> { String startTime = vo.getStartTime(); String endTime = vo.getEndTime(); if (LocalDateTime.now().isBefore(LocalDateTime.parse(startTime))) { vo.setStatus(1); } if (LocalDateTime.now().isAfter(LocalDateTime.parse(endTime))) { vo.setStatus(3); } if (LocalDateTime.now().isAfter(LocalDateTime.parse(startTime)) && LocalDateTime.now().isBefore(LocalDateTime.parse(endTime))) { vo.setStatus(2); } }); return R.ok(page.setRecords(activityPageVoList)); } @@ -105,18 +118,18 @@ }) public R<LotteryEventInfoVo> getLotteryEventInfo(@PathVariable("id") String id){ Long userId = SecurityUtils.getUserId(); LotteryEvent lotteryEvent = lotteryEventService.getById(id); TLotteryEvent lotteryEvent = lotteryEventService.getById(id); LotteryEventInfoVo vo = new LotteryEventInfoVo(); vo.setId(lotteryEvent.getId()); vo.setName(lotteryEvent.getName()); vo.setActivityProfile(lotteryEvent.getActivityProfile()); vo.setStartTime(lotteryEvent.getStartTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); vo.setActivityContent(lotteryEvent.getActivityContent()); 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)); vo.setParticipation(count > 0); //答题抽奖需要判断是否答题完成 if (5 == lotteryEvent.getActivityType()) { UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId)); TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId)); vo.setContinueAnswer(null != questionsServiceOne ? questionsServiceOne.getStatus() : 0); vo.setAnswerStartTime(null != questionsServiceOne ? questionsServiceOne.getCreateTime().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")) : null); vo.setAnswerTimeLimit(lotteryEvent.getAnsweringTime()); @@ -129,19 +142,19 @@ @ApiOperation(value = "获取答题题目【2.0】", tags = "抽奖活动") public R<LotteryEventQuestionsVo> getLotteryEventQuestions(@RequestBody LotteryEventQuestionsDto dto) { Long userId = SecurityUtils.getUserId(); UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).eq("user_id", userId)); TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).eq("user_id", userId)); LotteryEventQuestionsVo vo = new LotteryEventQuestionsVo(); int count = lotteryEventServiceQuestionsService.count(new QueryWrapper<LotteryEventQuestions>().eq("lottery_event_id", dto.getId())); int count = lotteryEventServiceQuestionsService.count(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId())); vo.setTotal(count); //没有答题,直接从第一题开始 if (null == questionsServiceOne) { if (-1 == dto.getStepOrDown()) { return R.fail("操作失败"); } LotteryEventQuestions questions = lotteryEventServiceQuestionsService.getOne(new QueryWrapper<LotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort")); vo.setCurrent(1); TLotteryEventQuestions questions = lotteryEventServiceQuestionsService.getOne(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort").last(" limit 1")); vo.setCurrent(0); vo.setName(questions.getName()); List<LotteryEventQuestionsAnswers> list = lotteryEventQuestionsAnswersService.list(new QueryWrapper<LotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", questions.getId())); List<TLotteryEventQuestionsAnswers> list = lotteryEventQuestionsAnswersService.list(new QueryWrapper<TLotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", questions.getId())); //封装答题 List<Map<String, String>> options = list.stream().map(item -> { Map<String, String> map = new HashMap<>(); @@ -165,11 +178,11 @@ } current++; } List<LotteryEventQuestions> list = lotteryEventServiceQuestionsService.list(new QueryWrapper<LotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort")); LotteryEventQuestions lotteryEventQuestions = list.get(current); List<TLotteryEventQuestions> list = lotteryEventServiceQuestionsService.list(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort")); TLotteryEventQuestions lotteryEventQuestions = list.get(current); vo.setCurrent(current); vo.setName(lotteryEventQuestions.getName()); List<LotteryEventQuestionsAnswers> list1 = lotteryEventQuestionsAnswersService.list(new QueryWrapper<LotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", lotteryEventQuestions.getId())); List<TLotteryEventQuestionsAnswers> list1 = lotteryEventQuestionsAnswersService.list(new QueryWrapper<TLotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", lotteryEventQuestions.getId())); //封装答题 List<Map<String, String>> options = list1.stream().map(item -> { Map<String, String> map = new HashMap<>(); @@ -178,7 +191,7 @@ return map; }).collect(Collectors.toList()); if (-1 == dto.getStepOrDown()) { UserLotteryEventQuestionsAnswers one = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<UserLotteryEventQuestionsAnswers>().eq("lottery_event_id", dto.getId()).eq("user_id", userId).orderByDesc("create_time").last(" limit 0, 1")); TUserLotteryEventQuestionsAnswers one = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_id", dto.getId()).eq("user_id", userId).orderByDesc("create_time").last(" limit 0, 1")); if (null != one) { vo.setAnswer(lotteryEventQuestionsAnswersService.getById(one.getLotteryEventQuestionsAnswersId()).getAnswers()); } @@ -192,15 +205,15 @@ @PostMapping("/answerQuestion") @ApiOperation(value = "答题操作【2.0】", tags = "抽奖活动") public R answerQuestion(@RequestBody AnswerQuestionDto dto) { List<LotteryEventQuestions> list = lotteryEventServiceQuestionsService.list(new QueryWrapper<LotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort")); LotteryEventQuestions lotteryEventQuestions = list.get(dto.getCurrent()); List<LotteryEventQuestionsAnswers> list1 = lotteryEventQuestionsAnswersService.list(new QueryWrapper<LotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", lotteryEventQuestions.getId())); LotteryEventQuestionsAnswers lotteryEventQuestionsAnswers = list1.stream().filter(item -> item.getAnswers().equals(dto.getAnswer())).findAny().orElse(null); List<TLotteryEventQuestions> list = lotteryEventServiceQuestionsService.list(new QueryWrapper<TLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort")); TLotteryEventQuestions lotteryEventQuestions = list.get(dto.getCurrent()); List<TLotteryEventQuestionsAnswers> list1 = lotteryEventQuestionsAnswersService.list(new QueryWrapper<TLotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", lotteryEventQuestions.getId())); TLotteryEventQuestionsAnswers lotteryEventQuestionsAnswers = list1.stream().filter(item -> item.getAnswers().equals(dto.getAnswer())).findAny().orElse(null); //构建答题数据 Long userId = SecurityUtils.getUserId(); UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).eq("user_id", userId)); TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", dto.getId()).eq("user_id", userId)); if (null == questionsServiceOne) { questionsServiceOne = new UserLotteryEventQuestions(); questionsServiceOne = new TUserLotteryEventQuestions(); questionsServiceOne.setId(IdUtils.simpleUUID()); questionsServiceOne.setUserId(userId); questionsServiceOne.setLotteryEventId(dto.getId()); @@ -209,9 +222,9 @@ userLotteryEventQuestionsService.save(questionsServiceOne); } //构建或者修改答题数据 UserLotteryEventQuestionsAnswers one = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<UserLotteryEventQuestionsAnswers>().eq("lottery_event_question_id", lotteryEventQuestions.getId()).eq("user_id", userId)); TUserLotteryEventQuestionsAnswers one = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_question_id", lotteryEventQuestions.getId()).eq("user_id", userId)); if (null == one) { one = new UserLotteryEventQuestionsAnswers(); one = new TUserLotteryEventQuestionsAnswers(); one.setId(IdUtils.simpleUUID()); one.setLotteryEventId(dto.getId()); one.setUserId(userId); @@ -236,12 +249,12 @@ }) public R<Boolean> endAnswerQuestion(@PathVariable("id") String id) { Long userId = SecurityUtils.getUserId(); LotteryEvent lotteryEvent = lotteryEventService.getById(id); UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId)); TLotteryEvent lotteryEvent = lotteryEventService.getById(id); TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId)); questionsServiceOne.setStatus(2); questionsServiceOne.setEndTime(LocalDateTime.now()); //计算正确率 List<UserLotteryEventQuestionsAnswers> list = userLotteryEventQuestionsAnswersService.list(new QueryWrapper<UserLotteryEventQuestionsAnswers>().eq("lottery_event_id", id).eq("user_id", userId)); List<TUserLotteryEventQuestionsAnswers> list = userLotteryEventQuestionsAnswersService.list(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("lottery_event_id", id).eq("user_id", userId)); int count = list.size(); int right = list.stream().filter(item -> 1 == item.getIsCorrect()).collect(Collectors.toList()).size(); BigDecimal multiply = new BigDecimal(right).divide(new BigDecimal(count), 4, BigDecimal.ROUND_HALF_UP).setScale(4, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)); ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/AppLotteryEventPageVo.java
@@ -27,4 +27,6 @@ private String coverImage; @ApiModelProperty("参与状态") private Boolean participation; @ApiModelProperty("抽奖状态(1=未开始,2=进行中,3=已结束)") private Integer status; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventVo.java
@@ -1,6 +1,6 @@ package com.ruoyi.goods.domain.vo; import com.ruoyi.goods.api.domain.LotteryEventPrize; import com.ruoyi.goods.api.domain.TLotteryEventPrize; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -22,7 +22,7 @@ @ApiModelProperty(value = "活动简介名称") private String activityProfile; @ApiModelProperty(value = "奖品列表") private List<LotteryEventPrize> prizeList; private List<TLotteryEventPrize> prizeList; @ApiModelProperty(value = "剩余次数") private Integer laveTimes; @ApiModelProperty(value = "答题正确率") ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventDetailVO.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.domain.vo; import com.fasterxml.jackson.annotation.JsonFormat; import com.ruoyi.goods.api.domain.LotteryEventPrize; import com.ruoyi.goods.api.domain.TLotteryEventPrize; import com.ruoyi.goods.domain.dto.MgtLotteryEventPrizeDTO; import com.ruoyi.goods.domain.dto.MgtLotteryEventQuestionDTO; import io.swagger.annotations.ApiModelProperty; @@ -63,6 +63,6 @@ private String activityContent; @ApiModelProperty("抽奖奖品设置") private List<LotteryEventPrize> lotteryEventPrizeList; private List<TLotteryEventPrize> lotteryEventPrizeList; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/MgtLotteryEventQuestionVO.java
@@ -1,6 +1,6 @@ package com.ruoyi.goods.domain.vo; import com.ruoyi.goods.api.domain.LotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.TLotteryEventQuestionsAnswers; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -25,6 +25,6 @@ private Integer sort; @ApiModelProperty("题干选项集合") private List<LotteryEventQuestionsAnswers> answersVOList; private List<TLotteryEventQuestionsAnswers> answersVOList; } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventMapper.java
@@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.domain.dto.MgtLotteryEventPageDto; import com.ruoyi.goods.domain.vo.AppLotteryEventPageVo; import com.ruoyi.goods.domain.vo.MgtLotteryEventPageVo; @@ -15,7 +15,7 @@ * @author zhibing.pu * @Date 2025/5/8 18:00 */ public interface LotteryEventMapper extends BaseMapper<LotteryEvent> { public interface LotteryEventMapper extends BaseMapper<TLotteryEvent> { /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventPrizeMapper.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.mapper.lottery; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.api.domain.LotteryEventPrize; import com.ruoyi.goods.api.domain.TLotteryEventPrize; import org.apache.ibatis.annotations.Param; import java.util.List; @@ -10,10 +10,10 @@ * @author zhibing.pu * @Date 2025/5/12 9:55 */ public interface LotteryEventPrizeMapper extends BaseMapper<LotteryEventPrize> { public interface LotteryEventPrizeMapper extends BaseMapper<TLotteryEventPrize> { void deleteByLotteryEventId(@Param("lotteryEventId") String lotteryEventId); void savePrizeList(@Param("list") List<LotteryEventPrize> prizeList); void savePrizeList(@Param("list") List<TLotteryEventPrize> prizeList); List<LotteryEventPrize> getPrizeListByLotteryEventId(@Param("lotteryEventId") String lotteryEventId); List<TLotteryEventPrize> getPrizeListByLotteryEventId(@Param("lotteryEventId") String lotteryEventId); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventQuestionsAnswersMapper.java
@@ -1,11 +1,11 @@ package com.ruoyi.goods.mapper.lottery; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.api.domain.LotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.TLotteryEventQuestionsAnswers; /** * @author zhibing.pu * @Date 2025/5/19 16:18 */ public interface LotteryEventQuestionsAnswersMapper extends BaseMapper<LotteryEventQuestionsAnswers> { public interface LotteryEventQuestionsAnswersMapper extends BaseMapper<TLotteryEventQuestionsAnswers> { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/LotteryEventQuestionsMapper.java
@@ -1,11 +1,11 @@ package com.ruoyi.goods.mapper.lottery; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.api.domain.LotteryEventQuestions; import com.ruoyi.goods.api.domain.TLotteryEventQuestions; /** * @author zhibing.pu * @Date 2025/5/26 18:03 */ public interface LotteryEventQuestionsMapper extends BaseMapper<LotteryEventQuestions> { public interface LotteryEventQuestionsMapper extends BaseMapper<TLotteryEventQuestions> { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventMapper.java
@@ -2,8 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.goods.api.domain.UserLotteryEvent; import com.ruoyi.goods.domain.vo.MgtLotteryEventJoinUserPageVO; import com.ruoyi.goods.api.domain.TUserLotteryEvent; import com.ruoyi.goods.domain.vo.ShopWinningRecordVo; import org.apache.ibatis.annotations.Param; @@ -14,7 +13,7 @@ * @author zhibing.pu * @Date 2025/5/12 10:40 */ public interface UserLotteryEventMapper extends BaseMapper<UserLotteryEvent> { public interface UserLotteryEventMapper extends BaseMapper<TUserLotteryEvent> { /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventQuestionsAnswersMapper.java
@@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.goods.api.domain.UserLotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.TUserLotteryEventQuestionsAnswers; import com.ruoyi.goods.domain.vo.MgtUserAnswersPageVO; import org.apache.ibatis.annotations.Param; @@ -12,6 +12,6 @@ * @author zhibing.pu * @Date 2025/5/19 16:06 */ public interface UserLotteryEventQuestionsAnswersMapper extends BaseMapper<UserLotteryEventQuestionsAnswers> { public interface UserLotteryEventQuestionsAnswersMapper extends BaseMapper<TUserLotteryEventQuestionsAnswers> { List<MgtUserAnswersPageVO> getUserAnswersPage(Page<MgtUserAnswersPageVO> page, @Param("lotteryEventId") String lotteryEventId, @Param("userId") Long userId); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/mapper/lottery/UserLotteryEventQuestionsMapper.java
@@ -1,11 +1,11 @@ package com.ruoyi.goods.mapper.lottery; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.goods.api.domain.UserLotteryEventQuestions; import com.ruoyi.goods.api.domain.TUserLotteryEventQuestions; /** * @author zhibing.pu * @Date 2025/5/26 18:19 */ public interface UserLotteryEventQuestionsMapper extends BaseMapper<UserLotteryEventQuestions> { public interface UserLotteryEventQuestionsMapper extends BaseMapper<TUserLotteryEventQuestions> { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventPrizeServiceImpl.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.service.impl.lottery; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.api.domain.LotteryEventPrize; import com.ruoyi.goods.api.domain.TLotteryEventPrize; import com.ruoyi.goods.mapper.lottery.LotteryEventPrizeMapper; import com.ruoyi.goods.service.lottery.ILotteryEventPrizeService; import org.springframework.stereotype.Service; @@ -14,19 +14,19 @@ * @Date 2025/5/12 9:56 */ @Service public class LotteryEventPrizeServiceImpl extends ServiceImpl<LotteryEventPrizeMapper, LotteryEventPrize> implements ILotteryEventPrizeService { public class LotteryEventPrizeServiceImpl extends ServiceImpl<LotteryEventPrizeMapper, TLotteryEventPrize> implements ILotteryEventPrizeService { @Override public void deleteByLotteryEventId(String lotteryEventId) { this.baseMapper.deleteByLotteryEventId(lotteryEventId); } @Override public void savePrizeList(List<LotteryEventPrize> prizeList) { public void savePrizeList(List<TLotteryEventPrize> prizeList) { this.baseMapper.savePrizeList(prizeList); } @Override public List<LotteryEventPrize> getPrizeListByLotteryEventId(String lotteryEventId) { public List<TLotteryEventPrize> getPrizeListByLotteryEventId(String lotteryEventId) { return this.baseMapper.getPrizeListByLotteryEventId(lotteryEventId); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventQuestionsAnswersServiceImpl.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.service.impl.lottery; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.api.domain.LotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.TLotteryEventQuestionsAnswers; import com.ruoyi.goods.mapper.lottery.LotteryEventQuestionsAnswersMapper; import com.ruoyi.goods.service.lottery.ILotteryEventQuestionsAnswersService; import org.springframework.stereotype.Service; @@ -11,5 +11,5 @@ * @Date 2025/5/19 16:19 */ @Service public class LotteryEventQuestionsAnswersServiceImpl extends ServiceImpl<LotteryEventQuestionsAnswersMapper, LotteryEventQuestionsAnswers> implements ILotteryEventQuestionsAnswersService { public class LotteryEventQuestionsAnswersServiceImpl extends ServiceImpl<LotteryEventQuestionsAnswersMapper, TLotteryEventQuestionsAnswers> implements ILotteryEventQuestionsAnswersService { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventQuestionsServiceImpl.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.service.impl.lottery; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.api.domain.LotteryEventQuestions; import com.ruoyi.goods.api.domain.TLotteryEventQuestions; import com.ruoyi.goods.mapper.lottery.LotteryEventQuestionsMapper; import com.ruoyi.goods.service.lottery.ILotteryEventQuestionsService; import org.springframework.stereotype.Service; @@ -11,5 +11,5 @@ * @Date 2025/5/26 18:04 */ @Service public class LotteryEventQuestionsServiceImpl extends ServiceImpl<LotteryEventQuestionsMapper, LotteryEventQuestions> implements ILotteryEventQuestionsService { public class LotteryEventQuestionsServiceImpl extends ServiceImpl<LotteryEventQuestionsMapper, TLotteryEventQuestions> implements ILotteryEventQuestionsService { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java
@@ -39,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; @@ -77,20 +77,20 @@ @Override public LotteryEventVo getLotteryEvent(String id) { Long userId = SecurityUtils.getUserId(); LotteryEvent lotteryEvent = this.getById(id); 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()) { UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId)); TUserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<TUserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId)); if (null == questionsServiceOne) { vo.setCorrectAnswerRate(questionsServiceOne.getCorrectAnswerRate()); } @@ -129,10 +129,10 @@ public R lotteryDraw(String id) { Long userId = SecurityUtils.getUserId(); Member member = remoteMemberService.getMember(userId).getData(); LotteryEvent lotteryEvent = this.getById(id); TLotteryEvent lotteryEvent = this.getById(id); //判断答题抽奖是否满足抽奖条件 if (lotteryEvent.getActivityType() == 5) { UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId)); 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("答题抽奖失败,答题正确率低于活动要求"); } @@ -144,17 +144,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); } @@ -163,9 +163,9 @@ Collections.shuffle(list); //开始获取随机数 int random = new Random().nextInt(list.size()); LotteryEventPrize lotteryEventPrize = lotteryEventPrizeList.get(random); TLotteryEventPrize lotteryEventPrize = lotteryEventPrizeList.get(random); //添加中奖商品 UserLotteryEvent userLotteryEvent = new UserLotteryEvent(); TUserLotteryEvent userLotteryEvent = new TUserLotteryEvent(); userLotteryEvent.setId(IdUtils.simpleUUID()); userLotteryEvent.setUserId(userId); userLotteryEvent.setLotteryEventId(id); @@ -258,12 +258,12 @@ @Transactional public R editLotteryEvent(MgtLotteryEventEditDTO dto) { //先检查开始-结束时间范围内,系统中是否有该活动 List<LotteryEvent> lotteryEvents = this.baseMapper.selectList(new LambdaQueryWrapper<LotteryEvent>() .eq(LotteryEvent::getDelFlag, 0)//未删除的 .eq(LotteryEvent::getActivityType, dto.getActivityType())//类型相同的 .between(LotteryEvent::getStartTime, dto.getStartTime(), dto.getEndTime())//开始时间在这个活动的(开始-结束)范围内的 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(LotteryEvent::getEndTime, dto.getStartTime(), dto.getEndTime())//结束时间在这个活动的(开始-结束)范围内的 .between(TLotteryEvent::getEndTime, dto.getStartTime(), dto.getEndTime())//结束时间在这个活动的(开始-结束)范围内的 ); if (null != lotteryEvents && !lotteryEvents.isEmpty()) { // 新增记录时直接返回错误 @@ -277,7 +277,7 @@ return R.fail("编辑抽奖活动与现有其他活动时间范围冲突"); } } LotteryEvent lotteryEvent = new LotteryEvent(); TLotteryEvent lotteryEvent = new TLotteryEvent(); if (null != dto.getId()) { //编辑 lotteryEvent=this.baseMapper.selectById(dto.getId()); @@ -294,15 +294,15 @@ if (lotteryEvent.getActivityType().equals(5)){ //将之前的题干数据、答案选项数据删除 //先删除答案选项数据 lotteryEventQuestionsAnswersService.remove(new LambdaQueryWrapper<LotteryEventQuestionsAnswers>() .eq(LotteryEventQuestionsAnswers::getLotteryEventId,lotteryEvent.getId())); lotteryEventQuestionsAnswersService.remove(new LambdaQueryWrapper<TLotteryEventQuestionsAnswers>() .eq(TLotteryEventQuestionsAnswers::getLotteryEventId, lotteryEvent.getId())); //再删除题干数据 lotteryEventQuestionsService.remove(new LambdaQueryWrapper<LotteryEventQuestions>() .eq(LotteryEventQuestions::getLotteryEventId,lotteryEvent.getId())); lotteryEventQuestionsService.remove(new LambdaQueryWrapper<TLotteryEventQuestions>() .eq(TLotteryEventQuestions::getLotteryEventId, lotteryEvent.getId())); } //奖品数据删除 /*lotteryEventPrizeService.remove(new LambdaQueryWrapper<LotteryEventPrize>() .eq(LotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/ /*lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>() .eq(TLotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/ lotteryEventPrizeService.deleteByLotteryEventId(lotteryEvent.getId()); } //新增 @@ -319,10 +319,10 @@ //保存抽奖活动 this.saveOrUpdate(lotteryEvent); // 保存奖品数据 LotteryEvent finalLotteryEvent = lotteryEvent;//jdk8及之后 变量在初始化后确实没有被重新赋值,可直接引用,无需显式声明为 final List<LotteryEventPrize> prizeList = dto.getMgtLotteryEventPrizeDTOList().stream() TLotteryEvent finalLotteryEvent = lotteryEvent;//jdk8及之后 变量在初始化后确实没有被重新赋值,可直接引用,无需显式声明为 final List<TLotteryEventPrize> prizeList = dto.getMgtLotteryEventPrizeDTOList().stream() .map(prizeDTO -> { LotteryEventPrize prize = new LotteryEventPrize(); TLotteryEventPrize prize = new TLotteryEventPrize(); prize.setId(IdUtils.simpleUUID()); prize.setLotteryEventId(finalLotteryEvent.getId()); prize.setPrizeType(prizeDTO.getPrizeType()); @@ -340,16 +340,16 @@ if (dto.getActivityType().equals(5)) { //保存题干数据 for (MgtLotteryEventQuestionDTO questionDTO : dto.getMgtLotteryQuestionDTOList()) { LotteryEventQuestions question = new LotteryEventQuestions(); TLotteryEventQuestions question = new TLotteryEventQuestions(); question.setId(IdUtils.simpleUUID()); question.setLotteryEventId(finalLotteryEvent.getId()); question.setName(questionDTO.getName()); question.setSort(questionDTO.getSort()); lotteryEventQuestionsService.save(question); //保存答案选项数据 List<LotteryEventQuestionsAnswers> answersList = questionDTO.getAnswersDTOList().stream() List<TLotteryEventQuestionsAnswers> answersList = questionDTO.getAnswersDTOList().stream() .map(answersDTO -> { LotteryEventQuestionsAnswers answer = new LotteryEventQuestionsAnswers(); TLotteryEventQuestionsAnswers answer = new TLotteryEventQuestionsAnswers(); answer.setId(IdUtils.simpleUUID()); answer.setLotteryEventId(finalLotteryEvent.getId()); answer.setLotteryEventQuestionsId(question.getId()); @@ -411,7 +411,7 @@ @Override public R<MgtLotteryEventDetailVO> getLotteryEventDetailById(String id) { LotteryEvent lotteryEvent = this.getById(id); TLotteryEvent lotteryEvent = this.getById(id); if (null == lotteryEvent) { return R.fail("该抽奖活动不存在"); } @@ -426,23 +426,23 @@ } if(lotteryEvent.getActivityType()==5){ //题干数据 List<LotteryEventQuestions> questionsList = lotteryEventQuestionsService.getBaseMapper().selectList(new LambdaQueryWrapper<LotteryEventQuestions>().eq(LotteryEventQuestions::getLotteryEventId, lotteryEvent.getId())); 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<LotteryEventQuestionsAnswers> answersList = lotteryEventQuestionsAnswersService.getBaseMapper().selectList(new LambdaQueryWrapper<LotteryEventQuestionsAnswers>() .eq(LotteryEventQuestionsAnswers::getLotteryEventId, lotteryEvent.getId()) .eq(LotteryEventQuestionsAnswers::getLotteryEventQuestionsId, questionVO.getId())); 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<LotteryEventQuestions> sortComparator = new Comparator<LotteryEventQuestions>() { Comparator<TLotteryEventQuestions> sortComparator = new Comparator<TLotteryEventQuestions>() { @Override public int compare(LotteryEventQuestions q1, LotteryEventQuestions q2) { public int compare(TLotteryEventQuestions q1, TLotteryEventQuestions q2) { return Integer.compare(q1.getSort(), q2.getSort()); } }; @@ -451,9 +451,9 @@ vo.setMgtLotteryQuestionVOList(questionsVOList); } //奖项信息 /*List<LotteryEventPrize> prizeList = lotteryEventPrizeService.getBaseMapper().selectList(new LambdaQueryWrapper<LotteryEventPrize>() .eq(LotteryEventPrize::getLotteryEventId, lotteryEvent.getId()));*/ List<LotteryEventPrize> prizeList = lotteryEventPrizeService.getPrizeListByLotteryEventId(lotteryEvent.getId()); /*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); @@ -461,23 +461,23 @@ @Override public R deleteMgtLotteryEvent(String id) { LotteryEvent lotteryEvent = this.getById(id); TLotteryEvent lotteryEvent = this.getById(id); if (null == lotteryEvent || lotteryEvent.getDelFlag()!=0) { return R.ok(); } //1.奖品数据删除 /* lotteryEventPrizeService.remove(new LambdaQueryWrapper<LotteryEventPrize>() .eq(LotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/ /* lotteryEventPrizeService.remove(new LambdaQueryWrapper<TLotteryEventPrize>() .eq(TLotteryEventPrize::getLotteryEventId,lotteryEvent.getId()));*/ lotteryEventPrizeService.deleteByLotteryEventId(lotteryEvent.getId()); //2.答题类型 if (lotteryEvent.getActivityType().equals(5)){ //先删除答案选项数据 lotteryEventQuestionsAnswersService.remove(new LambdaQueryWrapper<LotteryEventQuestionsAnswers>() .eq(LotteryEventQuestionsAnswers::getLotteryEventId,lotteryEvent.getId())); lotteryEventQuestionsAnswersService.remove(new LambdaQueryWrapper<TLotteryEventQuestionsAnswers>() .eq(TLotteryEventQuestionsAnswers::getLotteryEventId, lotteryEvent.getId())); //再删除题干数据 lotteryEventQuestionsService.remove(new LambdaQueryWrapper<LotteryEventQuestions>() .eq(LotteryEventQuestions::getLotteryEventId,lotteryEvent.getId())); lotteryEventQuestionsService.remove(new LambdaQueryWrapper<TLotteryEventQuestions>() .eq(TLotteryEventQuestions::getLotteryEventId, lotteryEvent.getId())); } //3.抽奖活动删除 lotteryEvent.setDelFlag(1); @@ -487,7 +487,7 @@ @Override public R endImmediatelyLotteryEvent(String id) { LotteryEvent lotteryEvent = this.getById(id); TLotteryEvent lotteryEvent = this.getById(id); if (null == lotteryEvent || lotteryEvent.getDelFlag()!=0) { return R.fail("该抽奖活动不存在"); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventQuestionsAnswersServiceImpl.java
@@ -3,9 +3,9 @@ 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.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.LotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.UserLotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.TUserLotteryEventQuestionsAnswers; import com.ruoyi.goods.domain.vo.MgtUserAnswersPageVO; import com.ruoyi.goods.mapper.lottery.UserLotteryEventQuestionsAnswersMapper; import com.ruoyi.goods.service.lottery.ILotteryEventQuestionsAnswersService; @@ -24,13 +24,10 @@ * @Date 2025/5/19 16:08 */ @Service public class UserLotteryEventQuestionsAnswersServiceImpl extends ServiceImpl<UserLotteryEventQuestionsAnswersMapper, UserLotteryEventQuestionsAnswers> implements IUserLotteryEventQuestionsAnswersService { public class UserLotteryEventQuestionsAnswersServiceImpl extends ServiceImpl<UserLotteryEventQuestionsAnswersMapper, TUserLotteryEventQuestionsAnswers> implements IUserLotteryEventQuestionsAnswersService { @Resource private ILotteryEventQuestionsAnswersService lotteryEventQuestionsAnswersService; /** @@ -41,9 +38,9 @@ */ @Override public BigDecimal getCorrectAnswerRate(Long userId, String lotteryEventId) { int count = this.count(new QueryWrapper<UserLotteryEventQuestionsAnswers>().eq("user_id", userId).eq("lottery_event_id", lotteryEventId).eq("is_correct", 1)); int count = this.count(new QueryWrapper<TUserLotteryEventQuestionsAnswers>().eq("user_id", userId).eq("lottery_event_id", lotteryEventId).eq("is_correct", 1)); if (count > 0) { int count1 = lotteryEventQuestionsAnswersService.count(new QueryWrapper<LotteryEventQuestionsAnswers>().eq("lottery_event_id", lotteryEventId)); int count1 = lotteryEventQuestionsAnswersService.count(new QueryWrapper<TLotteryEventQuestionsAnswers>().eq("lottery_event_id", lotteryEventId)); return new BigDecimal(count).divide(new BigDecimal(count1), 2, BigDecimal.ROUND_HALF_UP); } return BigDecimal.ZERO; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventQuestionsServiceImpl.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.service.impl.lottery; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.api.domain.UserLotteryEventQuestions; import com.ruoyi.goods.api.domain.TUserLotteryEventQuestions; import com.ruoyi.goods.mapper.lottery.UserLotteryEventQuestionsMapper; import com.ruoyi.goods.service.lottery.IUserLotteryEventQuestionsService; import org.springframework.stereotype.Service; @@ -11,5 +11,5 @@ * @Date 2025/5/26 18:19 */ @Service public class UserLotteryEventQuestionsServiceImpl extends ServiceImpl<UserLotteryEventQuestionsMapper, UserLotteryEventQuestions> implements IUserLotteryEventQuestionsService { public class UserLotteryEventQuestionsServiceImpl extends ServiceImpl<UserLotteryEventQuestionsMapper, TUserLotteryEventQuestions> implements IUserLotteryEventQuestionsService { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/UserLotteryEventServiceImpl.java
@@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.goods.api.domain.UserLotteryEvent; import com.ruoyi.goods.api.domain.TUserLotteryEvent; import com.ruoyi.goods.domain.vo.ShopWinningRecordVo; import com.ruoyi.goods.mapper.lottery.UserLotteryEventMapper; import com.ruoyi.goods.service.lottery.IUserLotteryEventService; @@ -21,7 +21,7 @@ * @Date 2025/5/12 10:41 */ @Service public class UserLotteryEventServiceImpl extends ServiceImpl<UserLotteryEventMapper, UserLotteryEvent> implements IUserLotteryEventService { public class UserLotteryEventServiceImpl extends ServiceImpl<UserLotteryEventMapper, TUserLotteryEvent> implements IUserLotteryEventService { @Resource private RemoteMemberService remoteMemberService; ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventPrizeService.java
@@ -1,7 +1,7 @@ package com.ruoyi.goods.service.lottery; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.api.domain.LotteryEventPrize; import com.ruoyi.goods.api.domain.TLotteryEventPrize; import java.util.List; @@ -9,10 +9,10 @@ * @author zhibing.pu * @Date 2025/5/12 9:56 */ public interface ILotteryEventPrizeService extends IService<LotteryEventPrize> { public interface ILotteryEventPrizeService extends IService<TLotteryEventPrize> { void deleteByLotteryEventId(String lotteryEventId); void savePrizeList(List<LotteryEventPrize> prizeList); void savePrizeList(List<TLotteryEventPrize> prizeList); List<LotteryEventPrize> getPrizeListByLotteryEventId(String lotteryEventId); List<TLotteryEventPrize> getPrizeListByLotteryEventId(String lotteryEventId); } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventQuestionsAnswersService.java
@@ -1,11 +1,11 @@ package com.ruoyi.goods.service.lottery; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.api.domain.LotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.TLotteryEventQuestionsAnswers; /** * @author zhibing.pu * @Date 2025/5/19 16:18 */ public interface ILotteryEventQuestionsAnswersService extends IService<LotteryEventQuestionsAnswers> { public interface ILotteryEventQuestionsAnswersService extends IService<TLotteryEventQuestionsAnswers> { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventQuestionsService.java
@@ -1,11 +1,11 @@ package com.ruoyi.goods.service.lottery; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.api.domain.LotteryEventQuestions; import com.ruoyi.goods.api.domain.TLotteryEventQuestions; /** * @author zhibing.pu * @Date 2025/5/26 18:03 */ public interface ILotteryEventQuestionsService extends IService<LotteryEventQuestions> { public interface ILotteryEventQuestionsService extends IService<TLotteryEventQuestions> { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/ILotteryEventService.java
@@ -3,9 +3,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.common.core.domain.R; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.domain.dto.MgtLotteryEventEditDTO; import com.ruoyi.goods.domain.dto.MgtLotteryEventJoinUserPageDTO; import com.ruoyi.goods.domain.dto.MgtLotteryEventPageDto; import com.ruoyi.goods.domain.vo.*; @@ -15,7 +14,7 @@ * @author zhibing.pu * @Date 2025/5/8 18:05 */ public interface ILotteryEventService extends IService<LotteryEvent> { public interface ILotteryEventService extends IService<TLotteryEvent> { /** ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventQuestionsAnswersService.java
@@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.api.domain.UserLotteryEventQuestionsAnswers; import com.ruoyi.goods.api.domain.TUserLotteryEventQuestionsAnswers; import com.ruoyi.goods.domain.vo.MgtUserAnswersPageVO; import java.math.BigDecimal; @@ -12,11 +12,12 @@ * @author zhibing.pu * @Date 2025/5/19 16:07 */ public interface IUserLotteryEventQuestionsAnswersService extends IService<UserLotteryEventQuestionsAnswers> { public interface IUserLotteryEventQuestionsAnswersService extends IService<TUserLotteryEventQuestionsAnswers> { /** * 获取用户答题正确率 * * @param userId * @param lotteryEventId * @return ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventQuestionsService.java
@@ -1,11 +1,11 @@ package com.ruoyi.goods.service.lottery; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.api.domain.UserLotteryEventQuestions; import com.ruoyi.goods.api.domain.TUserLotteryEventQuestions; /** * @author zhibing.pu * @Date 2025/5/26 18:19 */ public interface IUserLotteryEventQuestionsService extends IService<UserLotteryEventQuestions> { public interface IUserLotteryEventQuestionsService extends IService<TUserLotteryEventQuestions> { } ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/lottery/IUserLotteryEventService.java
@@ -2,7 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.goods.api.domain.UserLotteryEvent; import com.ruoyi.goods.api.domain.TUserLotteryEvent; import com.ruoyi.goods.domain.vo.ShopWinningRecordVo; import java.util.List; @@ -12,7 +12,7 @@ * @author zhibing.pu * @Date 2025/5/12 10:40 */ public interface IUserLotteryEventService extends IService<UserLotteryEvent> { public interface IUserLotteryEventService extends IService<TUserLotteryEvent> { /** ruoyi-modules/ruoyi-goods/src/main/resources/mapper/lottery/LotteryEventPrizeMapper.xml
@@ -28,7 +28,7 @@ DELETE FROM t_lottery_event_prize WHERE lottery_event_id = #{lotteryEventId} </delete> <select id="getPrizeListByLotteryEventId" resultType="com.ruoyi.goods.api.domain.LotteryEventPrize"> <select id="getPrizeListByLotteryEventId" resultType="com.ruoyi.goods.api.domain.TLotteryEventPrize"> select * from t_lottery_event_prize where lottery_event_id = #{lotteryEventId} </select> </mapper> ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java
@@ -5,7 +5,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.member.domain.dto.AppMemberCouponPageDto; import com.ruoyi.member.domain.pojo.coupon.Coupon; @@ -149,7 +149,7 @@ }) public R<Boolean> shareCoupon(@PathVariable("couponId") String couponId) { //检测是否可以抽奖 List<LotteryEvent> data = lotteryEventClient.getLotteryEventList(3).getData(); List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(3).getData(); if (data.size() > 0) { return R.ok(true); } ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppIntegralController.java
@@ -4,7 +4,7 @@ import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.exception.ServiceException; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.member.domain.vo.AppIntegralRecordPageVo; import com.ruoyi.member.domain.vo.AppIntegralTaskListVo; @@ -91,7 +91,7 @@ throw new ServiceException(AppErrorConstant.DOUBLE_INTEGRAL_TASK); } //判断是否可以抽奖 List<LotteryEvent> data = lotteryEventClient.getLotteryEventList(3).getData(); List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(3).getData(); return R.ok(data.size() > 0); } } ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java
@@ -29,7 +29,7 @@ import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.utils.CodeFactoryUtil; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.goods.api.domain.LotteryEvent; import com.ruoyi.goods.api.domain.TLotteryEvent; import com.ruoyi.goods.api.service.LotteryEventClient; import com.ruoyi.order.config.WxPayConfiguration; import com.ruoyi.order.domain.dto.*; @@ -1579,7 +1579,7 @@ appPlaceOrderVo.setPaySign(payArr[5]); appPlaceOrderVo.setPrepayId(orderPayment.getPrepayId()); // 返回AppPlaceOrderVo对象 List<LotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData(); List<TLotteryEvent> data = lotteryEventClient.getLotteryEventList(2).getData(); if (data.size() > 0) { long count = data.stream().filter(s -> s.getPayMoney().compareTo(order.getPayMoney()) >= 0).count(); appPlaceOrderVo.setLotteryDraw(count > 0);