From d6a0c57043e8cc20694a3c678bf8e3a8f28f6499 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期四, 29 五月 2025 11:20:14 +0800 Subject: [PATCH] 新增加用户端接口 --- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java | 26 ruoyi-modules/ruoyi-member/src/main/resources/mapper/birthday/BirthdayCardMapper.xml | 32 + ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberGiftRecord.java | 14 ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java | 2 ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java | 19 ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEventQuestions.java | 6 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopAppointableTimeMapper.java | 16 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java | 97 +++++ ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java | 20 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLotteryEventController.java | 156 ++++++++ ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java | 119 +++++- ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEvent.java | 10 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/service/impl/lottery/LotteryEventServiceImpl.java | 78 +++ ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAppointableTimeServiceImpl.java | 22 + ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java | 35 + ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventInfoVo.java | 4 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventVo.java | 3 ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAppointableTimeService.java | 15 ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/UserLotteryEventVo.java | 6 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java | 303 +++++++++-------- ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java | 2 21 files changed, 735 insertions(+), 250 deletions(-) diff --git a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEvent.java b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEvent.java index 4dd2f3d..b42026e 100644 --- a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEvent.java +++ b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEvent.java @@ -60,15 +60,5 @@ */ @TableField(value = "create_time") private LocalDateTime createTime; - /** - * 核销码 - */ - @TableField(value = "verify_code") - private String verifyCode; - /** - * 是否已核销(0=否,1=是) - */ - @TableField(value = "is_verify") - private Integer isVerify; } diff --git a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEventQuestions.java b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEventQuestions.java index a3a86c7..e7f51c4 100644 --- a/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEventQuestions.java +++ b/ruoyi-api/ruoyi-api-goods/src/main/java/com/ruoyi/goods/api/domain/UserLotteryEventQuestions.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -46,4 +47,9 @@ */ @TableField(value = "status") private Integer status; + /** + * 正确率 + */ + @TableField(value = "correct_answer_rate") + private BigDecimal correctAnswerRate; } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberGiftRecord.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberGiftRecord.java index e6bd7c0..8950d83 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberGiftRecord.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/domain/poji/member/MemberGiftRecord.java @@ -49,19 +49,24 @@ * 礼品id */ @TableField("gift_id") - private Long giftId; + private String giftId; /** * 礼物来源1平台2商户 */ @TableField("gift_from") private Integer giftFrom; /** + * 奖品来源(1=生日卡,2=抽奖) + */ + @TableField("prize_from") + private Integer prizeFrom; + /** * 商户id */ @TableField("shop_id") private Long shopId; /** - * 礼物类型1优惠券2商品3现金4实物 + * 礼物类型1优惠券2商品3现金4实物5积分 */ @TableField("gift_type") private Integer giftType; @@ -100,6 +105,11 @@ */ private BigDecimal money; /** + * 积分数量 + */ + @TableField("integral_number") + private Integer integralNumber; + /** * 创建时间 */ @TableField("create_time") diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java index ec73b0e..f78331b 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteMemberFallbackFactory.java @@ -119,22 +119,28 @@ public R<Integer> getUnReplaySuggestVo() { return null; } - + @Override public R<MemberGiftRecord> getVerifyPrize(String verifyPrize) { return R.fail("获取核销奖品信息失败:" + throwable.getMessage()); } - + + + @Override + public R<MemberGiftRecord> getVerifyPrizeByGiftId(String giftId) { + return R.fail("根据礼品id获取数据失败:" + throwable.getMessage()); + } + @Override public R signShare(IntegralChangeDto integralChangeDto) { return R.fail("积分变动失败:" + throwable.getMessage()); } - + @Override public R<Integer> getAreaNewMember(List<Long> shopIdList) { return null; } - + @Override public R updateMemberShopName(MgtMemberShopNameDto mgtMemberShopNameDto) { return R.fail("更新商户绑定会员失败:" + throwable.getMessage()); @@ -165,6 +171,11 @@ public R addIntegralRecord(Integer integral, Long userId, String orderId) { return R.fail("手动添加用户积分失败:" + throwable.getMessage()); } + + @Override + public R saveMemberGiftRecord(MemberGiftRecord memberGiftRecord) { + return R.fail("添加奖品数据失败:" + throwable.getMessage()); + } }; } } diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java index 6a1aa7a..54f5d9c 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/service/RemoteMemberService.java @@ -203,6 +203,17 @@ /** + * @param giftId + * @return R<MemberGiftRecord> + * @description 根据礼品id获取数据 + * @author jqs + * @date 2023/7/8 17:43 + */ + @PostMapping("/member/getVerifyPrizeByGiftId") + public R<MemberGiftRecord> getVerifyPrizeByGiftId(@RequestBody String giftId); + + + /** * @param integralChangeDto * @return R * @description 积分变动 @@ -273,4 +284,13 @@ */ @PostMapping("/member/addIntegralRecord") R addIntegralRecord(@RequestParam("integral") Integer integral, @RequestParam("userId") Long userId, @RequestParam("orderId") String orderId); + + /** + * 添加奖品数据 + * + * @param memberGiftRecord + * @return + */ + @PostMapping("/member/saveMemberGiftRecord") + R saveMemberGiftRecord(@RequestBody MemberGiftRecord memberGiftRecord); } \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLotteryEventController.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLotteryEventController.java index 00834ab..aaec304 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLotteryEventController.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/controller/miniapp/AppLotteryEventController.java @@ -3,16 +3,16 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.UserLotteryEvent; -import com.ruoyi.goods.api.domain.UserLotteryEventQuestions; +import com.ruoyi.goods.api.domain.*; +import com.ruoyi.goods.domain.dto.AnswerQuestionDto; +import com.ruoyi.goods.domain.dto.LotteryEventQuestionsDto; import com.ruoyi.goods.domain.vo.AppLotteryEventPageVo; import com.ruoyi.goods.domain.vo.LotteryEventInfoVo; +import com.ruoyi.goods.domain.vo.LotteryEventQuestionsVo; import com.ruoyi.goods.domain.vo.LotteryEventVo; -import com.ruoyi.goods.service.lottery.ILotteryEventService; -import com.ruoyi.goods.service.lottery.IUserLotteryEventQuestionsService; -import com.ruoyi.goods.service.lottery.IUserLotteryEventService; +import com.ruoyi.goods.service.lottery.*; import com.ruoyi.system.api.domain.dto.LotteryEventListDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -23,8 +23,13 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author zhibing.pu @@ -46,7 +51,14 @@ @Resource private IUserLotteryEventQuestionsService userLotteryEventQuestionsService; + @Resource + private IUserLotteryEventQuestionsAnswersService userLotteryEventQuestionsAnswersService; + @Resource + private ILotteryEventQuestionsService lotteryEventServiceQuestionsService; + + @Resource + private ILotteryEventQuestionsAnswersService lotteryEventQuestionsAnswersService; @ResponseBody @@ -103,11 +115,141 @@ int count = userLotteryEventService.count(new QueryWrapper<UserLotteryEvent>().eq("lottery_event_id", id).eq("user_id", userId)); vo.setParticipation(count > 0); //答题抽奖需要判断是否答题完成 - if(5 == lotteryEvent.getActivityType()){ + if (5 == lotteryEvent.getActivityType()) { UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsService.getOne(new QueryWrapper<UserLotteryEventQuestions>().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()); } return R.ok(vo); } + @ResponseBody + @PostMapping("/getLotteryEventQuestions") + @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)); + LotteryEventQuestionsVo vo = new LotteryEventQuestionsVo(); + int count = lotteryEventServiceQuestionsService.count(new QueryWrapper<LotteryEventQuestions>().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); + vo.setName(questions.getName()); + List<LotteryEventQuestionsAnswers> list = lotteryEventQuestionsAnswersService.list(new QueryWrapper<LotteryEventQuestionsAnswers>().eq("lottery_event_questions_id", questions.getId())); + //封装答题 + List<Map<String, String>> options = list.stream().map(item -> { + Map<String, String> map = new HashMap<>(); + map.put("id", item.getId()); + map.put("name", item.getAnswer()); + return map; + }).collect(Collectors.toList()); + vo.setOptions(options); + } else { + //上一题 + Integer current = dto.getCurrent(); + if (-1 == dto.getStepOrDown()) { + if (current - 1 <= 0) { + return R.fail("操作失败"); + } + current--; + } else { + //下一题 + if (current >= count) { + return R.fail("操作失败"); + } + current++; + } + List<LotteryEventQuestions> list = lotteryEventServiceQuestionsService.list(new QueryWrapper<LotteryEventQuestions>().eq("lottery_event_id", dto.getId()).orderByAsc("sort")); + LotteryEventQuestions 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<Map<String, String>> options = list1.stream().map(item -> { + Map<String, String> map = new HashMap<>(); + map.put("id", item.getId()); + map.put("name", item.getAnswer()); + 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")); + if (null != one) { + vo.setAnswer(lotteryEventQuestionsAnswersService.getById(one.getLotteryEventQuestionsAnswersId()).getAnswer()); + } + } + vo.setOptions(options); + } + return R.ok(vo); + } + + @ResponseBody + @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.getAnswer().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)); + if (null == questionsServiceOne) { + questionsServiceOne = new UserLotteryEventQuestions(); + questionsServiceOne.setId(IdUtils.simpleUUID()); + questionsServiceOne.setUserId(userId); + questionsServiceOne.setLotteryEventId(dto.getId()); + questionsServiceOne.setStatus(1); + questionsServiceOne.setCreateTime(LocalDateTime.now()); + userLotteryEventQuestionsService.save(questionsServiceOne); + } + //构建或者修改答题数据 + UserLotteryEventQuestionsAnswers one = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<UserLotteryEventQuestionsAnswers>().eq("lottery_event_question_id", lotteryEventQuestions.getId()).eq("user_id", userId)); + if (null == one) { + one = new UserLotteryEventQuestionsAnswers(); + one.setId(IdUtils.simpleUUID()); + one.setLotteryEventId(dto.getId()); + one.setUserId(userId); + one.setLotteryEventQuestionId(lotteryEventQuestions.getId()); + one.setLotteryEventQuestionsAnswersId(lotteryEventQuestionsAnswers.getId()); + one.setCreateTime(LocalDateTime.now()); + } + one.setIsCorrect(0); + //答案正确 + if (null != lotteryEventQuestionsAnswers && 1 == lotteryEventQuestionsAnswers.getIsRight()) { + one.setIsCorrect(1); + } + userLotteryEventQuestionsAnswersService.saveOrUpdate(one); + return R.ok(); + } + + @ResponseBody + @PostMapping("/endAnswerQuestion/{id}") + @ApiOperation(value = "结束答题【2.0】", tags = "抽奖活动") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "抽奖活动id", required = true, dataType = "String", paramType = "path") + }) + 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)); + questionsServiceOne.setStatus(2); + questionsServiceOne.setEndTime(LocalDateTime.now()); + //计算正确率 + List<UserLotteryEventQuestionsAnswers> list = userLotteryEventQuestionsAnswersService.list(new QueryWrapper<UserLotteryEventQuestionsAnswers>().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)); + questionsServiceOne.setCorrectAnswerRate(multiply); + userLotteryEventQuestionsService.updateById(questionsServiceOne); + if (multiply.compareTo(lotteryEvent.getAccuracy()) >= 0) { + return R.ok(true); + } + return R.ok(false); + } } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventInfoVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventInfoVo.java index aad7b79..ff63166 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventInfoVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventInfoVo.java @@ -25,4 +25,8 @@ private Boolean participation; @ApiModelProperty(value = "是否继续答题(0=未开始,1=已开始,2=已结束)") private Integer continueAnswer; + @ApiModelProperty(value = "答题开始时间") + private String answerStartTime; + @ApiModelProperty(value = "答题时限") + private Integer answerTimeLimit; } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventVo.java index ba7f3e8..87b1fcd 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/LotteryEventVo.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; import java.util.List; /** @@ -24,6 +25,8 @@ private List<LotteryEventPrize> prizeList; @ApiModelProperty(value = "剩余次数") private Integer laveTimes; + @ApiModelProperty(value = "答题正确率") + private BigDecimal correctAnswerRate; @ApiModelProperty(value = "您的奖品") private List<UserLotteryEventVo> yourPrizeList; } diff --git a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/UserLotteryEventVo.java b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/UserLotteryEventVo.java index 775a125..ed3cd97 100644 --- a/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/UserLotteryEventVo.java +++ b/ruoyi-modules/ruoyi-goods/src/main/java/com/ruoyi/goods/domain/vo/UserLotteryEventVo.java @@ -19,4 +19,10 @@ private Integer number; @ApiModelProperty("核销码") private String verifyCode; + @ApiModelProperty("是否已核销(0=否,1=是)") + private Integer isVerify; + @ApiModelProperty("核销时间") + private String verifyTime; + @ApiModelProperty("核销门店") + private String verifyShop; } 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..b83e9cb 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 @@ -10,22 +10,27 @@ 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.api.domain.UserLotteryEventQuestions; 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.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.IUserLotteryEventQuestionsService; import com.ruoyi.goods.service.lottery.IUserLotteryEventService; +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 javax.annotation.Resource; -import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.TimeUnit; @@ -54,7 +59,10 @@ private RedissonClient redissonClient; @Resource - private IUserLotteryEventQuestionsAnswersService userLotteryEventQuestionsService; + private IUserLotteryEventQuestionsService userLotteryEventQuestionsAnswersService; + + @Resource + private RemoteShopService remoteShopService; /** @@ -65,6 +73,7 @@ */ @Override public LotteryEventVo getLotteryEvent(String id) { + Long userId = SecurityUtils.getUserId(); LotteryEvent lotteryEvent = this.getById(id); //构建返回结果 LotteryEventVo vo = new LotteryEventVo(); @@ -76,14 +85,30 @@ //查询抽检活动奖品 List<LotteryEventPrize> lotteryEventPrizeList = lotteryEventPrizeService.list(new QueryWrapper<LotteryEventPrize>().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)); + 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()); + 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); @@ -100,11 +125,12 @@ @Override public R lotteryDraw(String id) { Long userId = SecurityUtils.getUserId(); + Member member = remoteMemberService.getMember(userId).getData(); LotteryEvent lotteryEvent = this.getById(id); //判断答题抽奖是否满足抽奖条件 if (lotteryEvent.getActivityType() == 5) { - BigDecimal correctAnswerRate = userLotteryEventQuestionsService.getCorrectAnswerRate(userId, id); - if (correctAnswerRate.compareTo(lotteryEvent.getAccuracy()) < 0) { + UserLotteryEventQuestions questionsServiceOne = userLotteryEventQuestionsAnswersService.getOne(new QueryWrapper<UserLotteryEventQuestions>().eq("lottery_event_id", id).eq("user_id", userId)); + if (questionsServiceOne.getCorrectAnswerRate().compareTo(lotteryEvent.getAccuracy()) < 0) { return R.fail("答题抽奖失败,答题正确率低于活动要求"); } } @@ -145,11 +171,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,6 +181,39 @@ } userLotteryEvent.setCreateTime(LocalDateTime.now()); userLotteryEventService.save(userLotteryEvent); + //添加奖品数据 + 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.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(); } } catch (Exception e) { diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java index 8dd6dda..c9af95a 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/console/MemberController.java @@ -1,5 +1,6 @@ package com.ruoyi.member.controller.console; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.member.service.birthday.BirthdayCardService; @@ -25,58 +26,53 @@ @RestController @RequestMapping("/member") public class MemberController extends BaseController { - + @Resource private MemberService memberService; - + @Resource private MemberSuggestService memberSuggestService; - + @Resource private MemberGiftRecordService memberGiftRecordService; - + @Resource private BirthdayCardService birthdayCardService; - + @Resource private RemoteShopService remoteShopService; - - - - - + + /** - * @description: getMember - * @param: userId - * @return: R<Member> - * @author jqs34 - * @date: 2023/4/30 12:49 - */ - + * @description: getMember + * @param: userId + * @return: R<Member> + * @author jqs34 + * @date: 2023/4/30 12:49 + */ + @PostMapping("/getMember") - public R<Member> getMember(@RequestBody Long userId) - { + public R<Member> getMember(@RequestBody Long userId) { Member member = memberService.getByUserId(userId); - if(member ==null){ + if (member == null) { return R.fail("获取会员失败!"); } return R.ok(member); } - + /** * 小程序登录 */ @PostMapping("/miniLogin") @ApiOperation("小程序登录") - public R<AppMiniLoginVo> getMemberByCode(@RequestBody AppMiniLoginDto appMiniLoginDto) - { + public R<AppMiniLoginVo> getMemberByCode(@RequestBody AppMiniLoginDto appMiniLoginDto) { AppMiniLoginVo appMiniLoginVo = memberService.getMemberByCode(appMiniLoginDto); - if(appMiniLoginVo ==null){ + if (appMiniLoginVo == null) { return R.fail("登录失败!"); } return R.ok(appMiniLoginVo); } - + @PostMapping(value = "/miniRegister") @ApiOperation(value = "小程序注册") public R<AppMiniRegisterVo> miniRegister(@RequestBody AppMiniRegisterDto appUserRegisterDto) { @@ -86,241 +82,242 @@ } return R.ok(appUserRegisterVo); } - - - + + /** * 更新会员绑定商户 + * * @param appMemberBindingDto * @return */ @PostMapping("/updateMemberBinding") - public R updateMemberBinding(@RequestBody AppMemberBindingDto appMemberBindingDto) - { + public R updateMemberBinding(@RequestBody AppMemberBindingDto appMemberBindingDto) { memberService.updateMemberBinding(appMemberBindingDto); return R.ok(); } - + /** * 更新会员商品类型 + * * @param appMemberGoodsTypeDto * @return */ @PostMapping("/updateMemberGoodsType") - public R updateMemberGoodsType(@RequestBody AppMemberGoodsTypeDto appMemberGoodsTypeDto) - { + public R updateMemberGoodsType(@RequestBody AppMemberGoodsTypeDto appMemberGoodsTypeDto) { memberService.updateMemberGoodsType(appMemberGoodsTypeDto); return R.ok(); } - + /** * 通过手机号获取会员 + * * @param mobile * @return */ @PostMapping("/getMemberByMobile") - public R<Member> getMemberByMobile(@RequestBody String mobile) - { + public R<Member> getMemberByMobile(@RequestBody String mobile) { Member member = memberService.getByMobile(mobile); return R.ok(member); } - + /** * 订单创建新用户 + * * @param member * @return */ @PostMapping("/createNewMember") - public R createNewMember(@RequestBody Member member) - { + public R createNewMember(@RequestBody Member member) { memberService.createNewMember(member); return R.ok(); } - + /** - * @description 删除用户标签 - * @author jqs - * @date 2023/6/8 15:17 * @param tag - * @return R + * @return R + * @description 删除用户标签 + * @author jqs + * @date 2023/6/8 15:17 */ @PostMapping("/deleteMemberTag") - public R deleteMemberTag(@RequestBody String tag) - { + public R deleteMemberTag(@RequestBody String tag) { memberService.deleteMemberTag(tag); return R.ok(); } - + /** - * @description 删除会员建议标签 - * @author jqs - * @date 2023/6/9 9:43 * @param suggestTag - * @return R + * @return R + * @description 删除会员建议标签 + * @author jqs + * @date 2023/6/9 9:43 */ @PostMapping("/deleteMemberSuggestTag") - public R deleteMemberSuggestTag(@RequestBody String suggestTag) - { + public R deleteMemberSuggestTag(@RequestBody String suggestTag) { memberSuggestService.deleteMemberSuggestTag(suggestTag); return R.ok(); } - - + + /** - * @description 通过ids获取用户简易返回 - * @author jqs - * @date 2023/6/16 11:05 * @param mgtBaseBathDto - * @return R<List<MgtSimpleMemberVo>> + * @return R<List < MgtSimpleMemberVo>> + * @description 通过ids获取用户简易返回 + * @author jqs + * @date 2023/6/16 11:05 */ @PostMapping("/listSimpleVoByIds") - public R<List<MgtSimpleMemberVo>> listSimpleVoByIds(@RequestBody String userIds) - {List<MgtSimpleMemberVo> simpleMemberVoList = memberService.listSimpleVoByIds(userIds); + public R<List<MgtSimpleMemberVo>> listSimpleVoByIds(@RequestBody String userIds) { + List<MgtSimpleMemberVo> simpleMemberVoList = memberService.listSimpleVoByIds(userIds); return R.ok(simpleMemberVoList); } - + /** - * @description - * @author jqs - * @date 2023/6/16 12:47 * @param mgtUserIdByKeywordDto - * @return R<MgtUserIdByKeywordVo> + * @return R<MgtUserIdByKeywordVo> + * @description + * @author jqs + * @date 2023/6/16 12:47 */ @PostMapping("/getUserIdByKeyword") - public R<MgtUserIdByKeywordVo> getUserIdByKeyword(@RequestBody MgtUserIdByKeywordDto mgtUserIdByKeywordDto) - { + public R<MgtUserIdByKeywordVo> getUserIdByKeyword(@RequestBody MgtUserIdByKeywordDto mgtUserIdByKeywordDto) { MgtUserIdByKeywordVo mgtUserIdByKeywordVo = memberService.getUserIdByKeyword(mgtUserIdByKeywordDto); return R.ok(mgtUserIdByKeywordVo); } - + /** - * @description boardMemberTotal - * @param - * @return R<MgtBulletinBoardVo> - * @author jqs34 - * @date 2023/6/18 16:45 - */ + * @param + * @return R<MgtBulletinBoardVo> + * @description boardMemberTotal + * @author jqs34 + * @date 2023/6/18 16:45 + */ @PostMapping("/boardMemberTotal") - public R<MgtBulletinBoardVo> boardMemberTotal(@RequestBody BoardMemberTotalDto boardMemberTotalDto) - { + public R<MgtBulletinBoardVo> boardMemberTotal(@RequestBody BoardMemberTotalDto boardMemberTotalDto) { List<Shop> shopList = remoteShopService.getShopBySysUserIds(boardMemberTotalDto); List<Long> shopIds = shopList.stream().map(Shop::getShopId).collect(Collectors.toList()); MgtBulletinBoardVo bulletinBoardVo = memberService.boardMemberTotal(shopIds); return R.ok(bulletinBoardVo); } - + /** - * @description 筛选userId年龄段 - * @author jqs - * @date 2023/6/20 14:31 * @param mgtActivityAgeDto - * @return R<List<Long>> + * @return R<List < Long>> + * @description 筛选userId年龄段 + * @author jqs + * @date 2023/6/20 14:31 */ @PostMapping("/listUserIdByAge") - public R<List<Long>> listUserIdByAge(@RequestBody MgtActivityAgeDto mgtActivityAgeDto) - { + public R<List<Long>> listUserIdByAge(@RequestBody MgtActivityAgeDto mgtActivityAgeDto) { List<Long> userIdList = memberService.listUserIdByAge(mgtActivityAgeDto); return R.ok(userIdList); } - + /** - * @description 通过shopId获取userId - * @author jqs - * @date 2023/6/21 17:11 * @param shopIdlist - * @return R<List<Long>> + * @return R<List < Long>> + * @description 通过shopId获取userId + * @author jqs + * @date 2023/6/21 17:11 */ @PostMapping("/listUserIdByShopId") - public R<List<Long>> listUserIdByShopId(@RequestBody List<Long> shopIdlist) - { + public R<List<Long>> listUserIdByShopId(@RequestBody List<Long> shopIdlist) { List<Long> userIdList = memberService.listUserIdByShopId(shopIdlist); return R.ok(userIdList); } - + /** - * @description 通过shopId获取user统计 - * @author jqs - * @date 2023/6/21 17:22 * @param shopIdlist - * @return R<MgtShopTotalMemberVo> + * @return R<MgtShopTotalMemberVo> + * @description 通过shopId获取user统计 + * @author jqs + * @date 2023/6/21 17:22 */ @PostMapping("/getUserTotalByShopId") - public R<MgtShopTotalMemberVo> getUserTotalByShopId(@RequestBody List<Long> shopIdlist) - { + public R<MgtShopTotalMemberVo> getUserTotalByShopId(@RequestBody List<Long> shopIdlist) { MgtShopTotalMemberVo shopTotalMemberVo = memberService.getUserTotalByShopId(shopIdlist); return R.ok(shopTotalMemberVo); } - + /** - * @description 更新会员统计 - * @author jqs - * @date 2023/6/28 17:52 * @param memberTotalChangeDto - * @return R + * @return R + * @description 更新会员统计 + * @author jqs + * @date 2023/6/28 17:52 */ @PostMapping("/changeMemberTotal") - public R changeMemberTotal(@RequestBody MemberTotalChangeDto memberTotalChangeDto) - { + public R changeMemberTotal(@RequestBody MemberTotalChangeDto memberTotalChangeDto) { memberService.changeMemberTotal(memberTotalChangeDto); return R.ok(); } - + /** - * @description 获取各年龄层userId - * @author jqs - * @date 2023/7/4 9:49 * @param merTotalDto - * @return R<MerOrderAgeUserVo> + * @return R<MerOrderAgeUserVo> + * @description 获取各年龄层userId + * @author jqs + * @date 2023/7/4 9:49 */ @PostMapping("/listOrderAgeUser") - public R<List<MerOrderAgeUserVo>> listOrderAgeUser(@RequestBody MerTotalDto merTotalDto) - { + public R<List<MerOrderAgeUserVo>> listOrderAgeUser(@RequestBody MerTotalDto merTotalDto) { List<MerOrderAgeUserVo> orderAgeUserVoList = memberService.listOrderAgeUser(merTotalDto); return R.ok(orderAgeUserVoList); } - + /** - * @description 获取未回复数量 - * @author jqs - * @date 2023/7/5 12:49 * @param - * @return R<Integer> + * @return R<Integer> + * @description 获取未回复数量 + * @author jqs + * @date 2023/7/5 12:49 */ @PostMapping("/getUnReplaySuggestVo") - public R<Integer> getUnReplaySuggestVo() - { + public R<Integer> getUnReplaySuggestVo() { Integer count = memberSuggestService.getUnReplaySuggestVo(); return R.ok(count); } - + /** - * @description 获取核销奖品 - * @author jqs - * @date 2023/7/8 17:43 * @param verifyPrize - * @return R<MemberGiftRecord> + * @return R<MemberGiftRecord> + * @description 获取核销奖品 + * @author jqs + * @date 2023/7/8 17:43 */ @PostMapping("/getVerifyPrize") - public R<MemberGiftRecord> getVerifyPrize(@RequestBody String verifyPrize) - { + public R<MemberGiftRecord> getVerifyPrize(@RequestBody String verifyPrize) { MemberGiftRecord memberGiftRecord = memberGiftRecordService.getById(verifyPrize); return R.ok(memberGiftRecord); } - + + /** - * @description 核销奖品 - * @author jqs - * @date 2023/8/10 11:56 + * 根据礼品id获取数据 + * + * @param giftId + * @return + */ + @PostMapping("/getVerifyPrizeByGiftId") + public R<MemberGiftRecord> getVerifyPrizeByGiftId(@RequestBody String giftId) { + MemberGiftRecord memberGiftRecord = memberGiftRecordService.getOne(new QueryWrapper<MemberGiftRecord>().eq("gift_id", giftId)); + return R.ok(memberGiftRecord); + } + + + /** * @param merVerifyPrizeFinalDto - * @return R + * @return R + * @description 核销奖品 + * @author jqs + * @date 2023/8/10 11:56 */ @PostMapping("/verifyPrize") - public R verifyPrize(@RequestBody MerVerifyPrizeFinalDto merVerifyPrizeFinalDto) - { + public R verifyPrize(@RequestBody MerVerifyPrizeFinalDto merVerifyPrizeFinalDto) { memberGiftRecordService.verifyPrize(merVerifyPrizeFinalDto); return R.ok(); } - + /** * @description 积分变动 * @author jqs @@ -333,28 +330,27 @@ memberService.changeIntegral(integralChangeDto); return R.ok(); } - + /** - * @description 统计商户今日新增会员 - * @author jqs - * @date 2023/7/14 20:00 * @param shopIdList - * @return R<Integer> + * @return R<Integer> + * @description 统计商户今日新增会员 + * @author jqs + * @date 2023/7/14 20:00 */ @PostMapping("/getAreaNewMember") - public R<Integer> getAreaNewMember(@RequestBody List<Long> shopIdList) - { + public R<Integer> getAreaNewMember(@RequestBody List<Long> shopIdList) { Integer count = memberService.getAreaNewMember(shopIdList); return R.ok(count); } - - + + /** - * @description 更新会员绑定商户名 - * @author jqs - * @date 2023/7/26 17:07 + * @description 更新会员绑定商户名 + * @author jqs + * @date 2023/7/26 17:07 * @param mgtMemberShopNameDto - * @return R + * @return R */ @PostMapping("/updateMemberShopName") public R updateMemberShopName(@RequestBody MgtMemberShopNameDto mgtMemberShopNameDto) { @@ -386,4 +382,17 @@ public R addIntegralRecord(@RequestParam("integral") Integer integral, @RequestParam("userId") Long userId, @RequestParam("orderId") String orderId) { return memberService.addIntegralRecord(integral, userId, orderId); } + + + /** + * 添加奖品记录 + * + * @param memberGiftRecord + * @return + */ + @PostMapping("/saveMemberGiftRecord") + public R saveMemberGiftRecord(@RequestBody MemberGiftRecord memberGiftRecord) { + memberGiftRecordService.save(memberGiftRecord); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java index bb0db64..270e667 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppCouponController.java @@ -1,25 +1,34 @@ package com.ruoyi.member.controller.miniapp; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.service.LotteryEventClient; import com.ruoyi.member.domain.dto.AppMemberCouponPageDto; +import com.ruoyi.member.domain.pojo.coupon.Coupon; import com.ruoyi.member.domain.vo.AppGetAbleCouponPageVo; import com.ruoyi.member.domain.vo.AppMemberCouponPageVo; +import com.ruoyi.member.domain.vo.CouponInfoVo; import com.ruoyi.member.service.coupon.CouponService; import com.ruoyi.member.service.member.MemberCouponService; import com.ruoyi.member.service.member.MemberService; import com.ruoyi.system.api.domain.dto.AppBaseGetDto; import com.ruoyi.system.api.domain.dto.AppPageDto; +import com.ruoyi.system.api.domain.poji.goods.Goods; import com.ruoyi.system.api.domain.poji.member.Member; +import com.ruoyi.system.api.domain.poji.member.MemberCoupon; +import com.ruoyi.system.api.service.RemoteGoodsService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.text.SimpleDateFormat; import java.util.List; /** @@ -33,17 +42,24 @@ @RestController @RequestMapping("/app/coupon") public class AppCouponController { - - + + @Resource private CouponService couponService; - + @Resource private MemberService memberService; - + @Resource private MemberCouponService memberCouponService; - + + @Resource + private RemoteGoodsService remoteGoodsService; + + @Resource + private LotteryEventClient lotteryEventClient; + + @RequestMapping(value = "/pageAppUserGetAbleCoupon", method = RequestMethod.POST) @ApiOperation(value = "用户分页获取可领取优惠券列表") public R<Page<AppGetAbleCouponPageVo>> pagePlatformMerCoupon(@RequestBody AppPageDto appPageDto) { @@ -53,7 +69,7 @@ Page<AppGetAbleCouponPageVo> page = new Page<>(); page.setSize(appPageDto.getPageSize()); page.setCurrent(appPageDto.getPageNum()); - List<AppGetAbleCouponPageVo> unGetCouponPageVoList = couponService.pageAppUserGetAbleCoupon(page,appPageDto,member); + List<AppGetAbleCouponPageVo> unGetCouponPageVoList = couponService.pageAppUserGetAbleCoupon(page, appPageDto, member); return R.ok(page.setRecords(unGetCouponPageVoList)); } @@ -77,7 +93,66 @@ Page<AppMemberCouponPageVo> page = new Page<>(); page.setSize(appMemberCouponPageDto.getPageSize()); page.setCurrent(appMemberCouponPageDto.getPageNum()); - List<AppMemberCouponPageVo> memberCouponPageVoList = memberCouponService.pageAppUserGetCoupon(page,appMemberCouponPageDto, member); + List<AppMemberCouponPageVo> memberCouponPageVoList = memberCouponService.pageAppUserGetCoupon(page, appMemberCouponPageDto, member); return R.ok(page.setRecords(memberCouponPageVoList)); } + + @ResponseBody + @PostMapping("/getCouponInfo/{couponId}") + @ApiOperation(value = "获取优惠券详情【2.0】", tags = "领券中心") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "优惠券id", required = true, dataType = "String", paramType = "path") + }) + public R<CouponInfoVo> getCouponInfo(@PathVariable("couponId") String couponId) { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + Coupon coupon = couponService.getById(couponId); + CouponInfoVo vo = new CouponInfoVo(); + vo.setId(coupon.getCouponId()); + vo.setName(coupon.getCouponName()); + vo.setType(coupon.getCouponType()); + vo.setMoneyThreshold(coupon.getMoneyThreshold()); + vo.setDiscountPercent(coupon.getDiscountPercent()); + vo.setDiscountMoney(coupon.getDiscountMoney()); + vo.setValidType(coupon.getValidTimeType()); + vo.setValidDays(coupon.getValidDay()); + vo.setValidStartTime(sdf.format(coupon.getValidStartTime())); + vo.setValidEndTime(sdf.format(coupon.getValidEndTime())); + vo.setPropagandaPoster(coupon.getPropagandaPoster()); + vo.setUseGoods(""); + //构建特定商品数据 + if (StringUtils.isNotEmpty(coupon.getRelGoodsIds())) { + String relGoodsIds = coupon.getRelGoodsIds(); + List<Goods> data = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData(); + StringBuilder sb = new StringBuilder(); + for (Goods goods : data) { + sb.append(goods.getGoodsName()).append(","); + } + vo.setUseGoods(sb.substring(0, sb.length() - 1)); + } + vo.setLaveNum(coupon.getSendLimitFlag()); + vo.setReceiveNum(coupon.getSendLimitNumber()); + int count = memberCouponService.count(new QueryWrapper<MemberCoupon>().eq("coupon_id", couponId).eq("del_flag", 0)); + vo.setLaveNum(coupon.getSendLimitNumber() - count); + MemberCoupon one = memberCouponService.getOne(new QueryWrapper<MemberCoupon>().eq("coupon_id", couponId).eq("user_id", SecurityUtils.getUserId())); + if (one != null) { + vo.setStatus(one.getCouponStatus()); + } + return R.ok(vo); + } + + + @ResponseBody + @PostMapping("/shareCoupon/{couponId}") + @ApiOperation(value = "分享优惠券【2.0】", tags = "领券中心") + @ApiImplicitParams({ + @ApiImplicitParam(name = "id", value = "优惠券id", required = true, dataType = "String", paramType = "path") + }) + public R<Boolean> shareCoupon(@PathVariable("couponId") String couponId) { + //检测是否可以抽奖 + List<LotteryEvent> data = lotteryEventClient.getLotteryEventList(3).getData(); + if (data.size() > 0) { + return R.ok(true); + } + return R.ok(false); + } } diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java index 1533e98..51cd570 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/controller/miniapp/AppMemberController.java @@ -158,7 +158,7 @@ } @RequestMapping(value = "/pageAppMemberPrize", method = RequestMethod.POST) - @ApiOperation(value = "分页获取用户奖品列表") + @ApiOperation(value = "分页获取用户奖品列表【2.0】") public R<Page<AppMemberPrizePageVo>> pageAppMemberPrize(@RequestBody AppPageDto appPageDto) { Long userId = SecurityUtils.getUserId(); appPageDto.setUserId(userId); diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java index f2c2a80..238a73e 100644 --- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java +++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java @@ -543,6 +543,7 @@ memberGiftRecord.setDelFlag(0); memberGiftRecord.setVerifyStatus(1); memberGiftRecord.setGiftFrom(1); + memberGiftRecord.setPrizeFrom(1); memberGiftRecord.setGiftYear(currentYear); memberGiftRecord.setCreateTime(new Date()); memberGiftRecord.setUserId(userId); @@ -622,6 +623,7 @@ memberGiftRecord.setDelFlag(0); memberGiftRecord.setVerifyStatus(1); memberGiftRecord.setGiftFrom(2); + memberGiftRecord.setPrizeFrom(1); memberGiftRecord.setShopId(shopId); memberGiftRecord.setGiftYear(currentYear); memberGiftRecord.setCreateTime(new Date()); @@ -682,23 +684,23 @@ appBirthdayCardVo.setBirthdayGiftVoList(birthdayGiftVoList); return appBirthdayCardVo; } - + /** - * @description - * @author jqs - * @date 2023/7/11 18:02 * @param page * @param userId - * @return List<AppMemberPrizePageVo> + * @return List<AppMemberPrizePageVo> + * @description + * @author jqs + * @date 2023/7/11 18:02 */ @Override - public List<AppMemberPrizePageVo> pageAppMemberPrize(Page page, Long userId){ + public List<AppMemberPrizePageVo> pageAppMemberPrize(Page page, Long userId) { List<AppMemberPrizePageVo> memberPrizePageVoList = birthdayCardMapper.pageAppMemberPrize(page, userId); - if(memberPrizePageVoList!=null&&!memberPrizePageVoList.isEmpty()){ + if (memberPrizePageVoList != null && !memberPrizePageVoList.isEmpty()) { HashSet<Long> shopIdSet = new HashSet<>(); - for(AppMemberPrizePageVo appMemberPrizePageVo : memberPrizePageVoList){ - appMemberPrizePageVo.setVerifyCode("3-"+appMemberPrizePageVo.getPrizeId()); - if(appMemberPrizePageVo.getShopId()!=null){ + for (AppMemberPrizePageVo appMemberPrizePageVo : memberPrizePageVoList) { + appMemberPrizePageVo.setVerifyCode("3-" + appMemberPrizePageVo.getPrizeId()); + if (appMemberPrizePageVo.getShopId() != null) { shopIdSet.add(appMemberPrizePageVo.getShopId()); } } @@ -708,8 +710,8 @@ List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData(); Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream() .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity())); - for(AppMemberPrizePageVo appMemberPrizePageVo : memberPrizePageVoList){ - if(appMemberPrizePageVo.getShopId()!=null){ + for (AppMemberPrizePageVo appMemberPrizePageVo : memberPrizePageVoList) { + if (appMemberPrizePageVo.getShopId() != null) { appMemberPrizePageVo.setVerifyShopName(shopMap.get(appMemberPrizePageVo.getShopId()).getShopName()); } } diff --git a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/birthday/BirthdayCardMapper.xml b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/birthday/BirthdayCardMapper.xml index 0e02a5e..93a003c 100644 --- a/ruoyi-modules/ruoyi-member/src/main/resources/mapper/birthday/BirthdayCardMapper.xml +++ b/ruoyi-modules/ruoyi-member/src/main/resources/mapper/birthday/BirthdayCardMapper.xml @@ -17,21 +17,25 @@ </select> <select id="pageAppMemberPrize" resultType="com.ruoyi.member.domain.vo.AppMemberPrizePageVo"> - SELECT - prize_id prizeId, - CASE gift_type - WHEN 1 THEN CONCAT(coupon_name,"优惠券") - WHEN 2 THEN CONCAT(goods_name,"商品") - WHEN 4 THEN CONCAT(gift_name,"实物") - WHEN 3 THEN CONCAT("现金",money,"元") - END prizeName, - "生日卡" prizeFrom, - verify_status verifyStatus, - create_time createTime, - verify_time verifyTime, - shop_id shopId + SELECT prize_id prizeId, + CASE gift_type + WHEN 1 THEN CONCAT(coupon_name, "优惠券") + WHEN 2 THEN CONCAT(goods_name, "商品") + WHEN 4 THEN CONCAT(gift_name, "实物") + WHEN 3 THEN CONCAT("现金", money, "元") + WHEN 5 THEN "积分" + END prizeName, + CASE prize_from + WHEN 1 THEN "生日卡" + ELSE "抽奖" + END prizeFrom, + verify_status verifyStatus, + create_time createTime, + verify_time verifyTime, + shop_id shopId FROM t_member_gift_record - WHERE del_flag = 0 AND user_id = #{userId} + WHERE del_flag = 0 + AND user_id = #{userId} ORDER BY verify_status ASC </select> </mapper> diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java index fda482f..7f472e7 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/domain/pojo/order/Order.java @@ -56,7 +56,7 @@ private String outTradeNo; /** - * 订单来源1.商城2.秒杀活动3.线下创建 + * 订单来源1.商城2.秒杀活动3.线下创建4.抽奖 */ @TableField("order_from") private Integer orderFrom; diff --git a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java index bba0315..1ab53ad 100644 --- a/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java +++ b/ruoyi-modules/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/order/OrderServiceImpl.java @@ -2413,20 +2413,20 @@ Long shopId = shopRelUserVo.getShopId(); Shop shop = remoteShopService.getShop(shopId).getData(); //平台奖品判断 - if (memberGiftRecord.getGiftFrom() == 1) { + if (memberGiftRecord.getGiftFrom() == 1 && memberGiftRecord.getPrizeFrom() == 1) { BirthdayCard birthdayCard = remoteMemberService.getBirthdayCard().getData(); //判断生日活动状态 - if(birthdayCard!=null&&birthdayCard.getCardStatus()==1){ + if (birthdayCard != null && birthdayCard.getCardStatus() == 1) { shop = remoteShopService.getShop(shopId).getData(); //判断指定区域全部店铺 - if(birthdayCard.getAreaFlag()==2&&birthdayCard.getShopFlag()==1&&!StringUtils.checkString(birthdayCard.getDesignatedArea(),shop.getShopCityCode())){ + if (birthdayCard.getAreaFlag() == 2 && birthdayCard.getShopFlag() == 1 && !StringUtils.checkString(birthdayCard.getDesignatedArea(), shop.getShopCityCode())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } //判断指定店铺 - if(birthdayCard.getShopFlag()==2&&!StringUtils.checkString(birthdayCard.getApplicableShop(),shopId.toString())){ + if (birthdayCard.getShopFlag() == 2 && !StringUtils.checkString(birthdayCard.getApplicableShop(), shopId.toString())) { throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } - }else{ + } else { throw new ServiceException(AppErrorConstant.BIRTHDAY_CARD_ERROR); } } @@ -2435,29 +2435,35 @@ throw new ServiceException(AppErrorConstant.VERIFY_SHOP_ERROR); } Member member = remoteMemberService.getMember(memberGiftRecord.getUserId()).getData(); - + merVerifyAwardVo.setUserName(member.getRealName()); merVerifyAwardVo.setUserMobile(member.getMobile()); - if (memberGiftRecord.getGiftFrom() == 1) { - merVerifyAwardVo.setGiftFrom("平台生日卡"); + if (memberGiftRecord.getPrizeFrom() == 1) { + if (memberGiftRecord.getGiftFrom() == 1) { + merVerifyAwardVo.setGiftFrom("平台生日卡"); + } else { + merVerifyAwardVo.setGiftFrom("商户生日卡"); + } } else { - merVerifyAwardVo.setGiftFrom("商户生日卡"); + merVerifyAwardVo.setGiftFrom("抽奖"); } merVerifyAwardVo.setGiftType(memberGiftRecord.getGiftType()); List<BirthdayGiftSendDto> giftSendDtoList = new ArrayList<>(); BirthdayGiftSendDto birthdayGiftSendDto = new BirthdayGiftSendDto(); switch (memberGiftRecord.getGiftType()) { case 1: - merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); - merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber())); - birthdayGiftSendDto.setUserId(memberGiftRecord.getUserId()); - birthdayGiftSendDto.setGiftType(memberGiftRecord.getGiftType()); - birthdayGiftSendDto.setGiftFrom(memberGiftRecord.getGiftFrom()); - birthdayGiftSendDto.setShopId(memberGiftRecord.getShopId()); - birthdayGiftSendDto.setCouponId(memberGiftRecord.getCouponId()); - birthdayGiftSendDto.setCouponNumber(memberGiftRecord.getCouponNumber()); - giftSendDtoList.add(birthdayGiftSendDto); - remoteCouponService.sendCouponGift(giftSendDtoList); + if (memberGiftRecord.getPrizeFrom() == 1) { + merVerifyAwardVo.setGiftName(memberGiftRecord.getCouponName()); + merVerifyAwardVo.setGiftNumber(Double.valueOf(memberGiftRecord.getCouponNumber())); + birthdayGiftSendDto.setUserId(memberGiftRecord.getUserId()); + birthdayGiftSendDto.setGiftType(memberGiftRecord.getGiftType()); + birthdayGiftSendDto.setGiftFrom(memberGiftRecord.getGiftFrom()); + birthdayGiftSendDto.setShopId(memberGiftRecord.getShopId()); + birthdayGiftSendDto.setCouponId(memberGiftRecord.getCouponId()); + birthdayGiftSendDto.setCouponNumber(memberGiftRecord.getCouponNumber()); + giftSendDtoList.add(birthdayGiftSendDto); + remoteCouponService.sendCouponGift(giftSendDtoList); + } break; case 2: Goods goods = remoteGoodsService.getGoods(memberGiftRecord.getGoodsId()).getData(); @@ -2480,10 +2486,16 @@ birthdayGiftSendDto.setGoodsNumber(memberGiftRecord.getGoodsNumber()); giftSendDtoList.add(birthdayGiftSendDto); consumerGoodsService.sendGoodsGift(giftSendDtoList); + //抽奖奖品中的平台商品需要生成订单数据 + if (memberGiftRecord.getPrizeFrom() == 2) { + addOrder(memberGiftRecord.getShopId(), memberGiftRecord.getUserId(), goods, memberGiftRecord.getGoodsNumber(), memberGiftRecord.getGiftId()); + } break; case 3: - merVerifyAwardVo.setGiftName("现金"); - merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue()); + if (memberGiftRecord.getPrizeFrom() == 1) { + merVerifyAwardVo.setGiftName("现金"); + merVerifyAwardVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue()); + } break; case 4: merVerifyAwardVo.setGiftName(memberGiftRecord.getGiftName()); @@ -2511,8 +2523,65 @@ merVerifyAwardVo.setVerifyStatus(2); return merVerifyAwardVo; } - - + + + /** + * 核销抽奖的平台商品生成订单 + * + * @param shopId + * @param userId + * @param goods + * @param goodsNum + */ + public void addOrder(Long shopId, Long userId, Goods goods, Integer goodsNum, String giftId) { + Order order = new Order(); + order.setOrderId(IdUtils.simpleUUID()); + order.setDelFlag(0); + order.setOrderStatus(3); + order.setOrderNo(CodeFactoryUtil.getShopOrderNo()); + order.setOrderFrom(4); + order.setShopId(shopId); + order.setUserId(userId); + order.setOrderMoney(BigDecimal.ZERO); + order.setCouponMoney(BigDecimal.ZERO); + order.setDiscountMoney(BigDecimal.ZERO); + order.setReceivableMoney(BigDecimal.ZERO); + order.setPayType(1); + order.setPayMoney(BigDecimal.ZERO); + order.setOrderRemark("抽奖订单"); + order.setCreateTime(new Date()); + order.setPayTime(new Date()); + order.setUseTime(new Date()); + order.setUseUserId(userId); + order.setGoodsNum(goodsNum); + order.setReceivableDeposit(BigDecimal.ZERO); + order.setCloseFlag(1); + order.setActivityId(giftId); + this.save(order); + OrderGoods orderGoods = new OrderGoods(); + orderGoods.setOrderGoodsId(IdUtils.simpleUUID()); + orderGoods.setDelFlag(0); + orderGoods.setOrderId(order.getOrderId()); + orderGoods.setGoodsId(goods.getGoodsId()); + orderGoods.setBuyNum(goodsNum); + orderGoods.setGoodsPrice(goods.getSalesPrice()); + orderGoods.setGoodsDeposit(goods.getSubscription()); + orderGoods.setGoodsTotalMoney(goods.getSalesPrice().multiply(new BigDecimal(goodsNum))); + orderGoods.setGoodsReceivableMoney(BigDecimal.ZERO); + orderGoods.setCycleNumFlag(goods.getCycleNumFlag()); + orderGoods.setServiceNum(goods.getServiceNum()); + orderGoods.setGoodsType(goods.getGoodsType()); + orderGoods.setGoodsName(goods.getGoodsName()); + GoodsFile goodsFile = remoteGoodsService.getGoodsFile(goods.getGoodsId()).getData(); + if (null != goodsFile) { + orderGoods.setGoodsPicture(goodsFile.getFileUrl()); + } + orderGoods.setGoodsIntroduction(goods.getGoodsIntroduction()); + orderGoods.setGoodsTag(goods.getGoodsTags()); + orderGoodsService.save(orderGoods); + } + + /** * 收银未结清订单列表 * @@ -2529,14 +2598,14 @@ if (merMemberNoClearOrderVo.getUnPaidMoney() == null) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } - if(merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig)<0){ + if (merMemberNoClearOrderVo.getUnPaidMoney().compareTo(zeroBig) < 0) { merMemberNoClearOrderVo.setUnPaidMoney(zeroBig); } } } return merMemberNoClearOrderVoList; } - + /** * 结清订单 * diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java index e73b8fb..a55bab3 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/controller/miniapp/AppHomeController.java @@ -3,11 +3,14 @@ import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.plugins.Page; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.shop.domain.dto.AppNearbyShopDto; +import com.ruoyi.shop.domain.dto.MyAppointmentListDto; import com.ruoyi.shop.domain.vo.AppNearbyShopVo; import com.ruoyi.shop.domain.vo.AppShopInfoVo; +import com.ruoyi.shop.domain.vo.MyAppointmentListVo; import com.ruoyi.shop.service.shop.ShopAppointableTimeService; import com.ruoyi.shop.service.shop.ShopNonAppointableTimeService; import com.ruoyi.shop.service.shop.ShopService; @@ -21,10 +24,7 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.log4j.Log4j2; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.time.LocalDateTime; @@ -104,4 +104,31 @@ shopAppointableTimeService.save(one); return R.ok(); } + + @RequestMapping(value = "/getMyAppointmentList", method = RequestMethod.POST) + @ApiOperation(value = "获取我的预约列表【2.0】") + public R<Page<MyAppointmentListVo>> getMyAppointmentList(@RequestBody MyAppointmentListDto dto) { + Page<MyAppointmentListVo> page = new Page<>(); + page.setSize(dto.getPageSize()); + page.setCurrent(dto.getPageNum()); + List<MyAppointmentListVo> myAppointmentListVos = shopAppointableTimeService.pageMyAppointmentList(page, dto); + return R.ok(page.setRecords(myAppointmentListVos)); + } + + + @RequestMapping(value = "/cancelAppointmentTime/{id}", method = RequestMethod.POST) + @ApiOperation(value = "取消预约【2.0】") + public R cancelAppointmentTime(@PathVariable("id") String id) { + Long userId = SecurityUtils.getUserId(); + ShopAppointableTime one = shopAppointableTimeService.getById(id); + if (null == one) { + return R.fail("预约不存在"); + } + if (!one.getUserId().equals(userId)) { + return R.fail("不能取消别人的预约"); + } + one.setStatus(0); + shopAppointableTimeService.updateById(one); + return R.ok(); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopAppointableTimeMapper.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopAppointableTimeMapper.java index 3cfdc6e..36a7535 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopAppointableTimeMapper.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/mapper/shop/ShopAppointableTimeMapper.java @@ -1,11 +1,27 @@ package com.ruoyi.shop.mapper.shop; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.plugins.Page; +import com.ruoyi.shop.domain.vo.MyAppointmentListVo; import com.ruoyi.system.api.domain.poji.shop.ShopAppointableTime; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** * @author zhibing.pu * @Date 2025/5/26 15:13 */ public interface ShopAppointableTimeMapper extends BaseMapper<ShopAppointableTime> { + + + /** + * 分页查询我的预约列表 + * + * @param page + * @param userId + * @param status + * @return + */ + List<MyAppointmentListVo> pageMyAppointmentList(Page<MyAppointmentListVo> page, @Param("userId") Long userId, @Param("status") Integer status); } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAppointableTimeServiceImpl.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAppointableTimeServiceImpl.java index 00ea027..2cf08f1 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAppointableTimeServiceImpl.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/impl/shop/ShopAppointableTimeServiceImpl.java @@ -1,13 +1,35 @@ package com.ruoyi.shop.service.impl.shop; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.plugins.Page; +import com.ruoyi.common.security.utils.SecurityUtils; +import com.ruoyi.shop.domain.dto.MyAppointmentListDto; +import com.ruoyi.shop.domain.vo.MyAppointmentListVo; import com.ruoyi.shop.mapper.shop.ShopAppointableTimeMapper; import com.ruoyi.shop.service.shop.ShopAppointableTimeService; import com.ruoyi.system.api.domain.poji.shop.ShopAppointableTime; +import org.springframework.stereotype.Service; + +import java.util.List; /** * @author zhibing.pu * @Date 2025/5/26 15:15 */ +@Service public class ShopAppointableTimeServiceImpl extends ServiceImpl<ShopAppointableTimeMapper, ShopAppointableTime> implements ShopAppointableTimeService { + + + /** + * 分页查询我的预约 + * + * @param page + * @param dto + * @return + */ + @Override + public List<MyAppointmentListVo> pageMyAppointmentList(Page<MyAppointmentListVo> page, MyAppointmentListDto dto) { + Long userId = SecurityUtils.getUserId(); + return this.baseMapper.pageMyAppointmentList(page, userId, dto.getStatus()); + } } diff --git a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAppointableTimeService.java b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAppointableTimeService.java index 052c43d..76476e1 100644 --- a/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAppointableTimeService.java +++ b/ruoyi-modules/ruoyi-shop/src/main/java/com/ruoyi/shop/service/shop/ShopAppointableTimeService.java @@ -1,11 +1,26 @@ package com.ruoyi.shop.service.shop; import com.baomidou.mybatisplus.extension.service.IService; +import com.baomidou.mybatisplus.plugins.Page; +import com.ruoyi.shop.domain.dto.MyAppointmentListDto; +import com.ruoyi.shop.domain.vo.MyAppointmentListVo; import com.ruoyi.system.api.domain.poji.shop.ShopAppointableTime; + +import java.util.List; /** * @author zhibing.pu * @Date 2025/5/26 15:14 */ public interface ShopAppointableTimeService extends IService<ShopAppointableTime> { + + + /** + * 获取用户预约列表 + * + * @param page + * @param dto + * @return + */ + List<MyAppointmentListVo> pageMyAppointmentList(Page<MyAppointmentListVo> page, MyAppointmentListDto dto); } -- Gitblit v1.7.1