From 5627daeb1ac1a29947e902f9a7efb6730ed98611 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期五, 07 七月 2023 20:35:50 +0800
Subject: [PATCH] 管理台bug和用户端生日卡

---
 ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/birthday/BirthdayCardServiceImpl.java |  240 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 232 insertions(+), 8 deletions(-)

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 ef991e7..40fe121 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
@@ -2,26 +2,30 @@
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.common.core.utils.bean.BeanUtils;
 import com.ruoyi.member.domain.dto.MerBirthdayEditDto;
 import com.ruoyi.member.domain.dto.MgtBirthdayEditDto;
 import com.ruoyi.member.domain.dto.MgtBirthdayGetDto;
 import com.ruoyi.member.domain.dto.MgtBirthdayGiftDto;
 import com.ruoyi.member.domain.pojo.birthday.BirthdayCard;
 import com.ruoyi.member.domain.pojo.birthday.BirthdayGift;
-import com.ruoyi.member.domain.vo.MerBirthdayEditInfoVo;
-import com.ruoyi.member.domain.vo.MerBirthdayGetVo;
-import com.ruoyi.member.domain.vo.MgtBirthdayGetVo;
-import com.ruoyi.member.domain.vo.MgtBirthdayGiftVo;
+import com.ruoyi.member.domain.pojo.member.MemberGiftRecord;
+import com.ruoyi.member.domain.vo.*;
 import com.ruoyi.member.mapper.birthday.BirthdayCardMapper;
 import com.ruoyi.member.service.birthday.BirthdayCardService;
 import com.ruoyi.member.service.birthday.BirthdayGiftService;
+import com.ruoyi.member.service.member.MemberGiftRecordService;
+import com.ruoyi.system.api.domain.dto.BirthdayGiftSendDto;
+import com.ruoyi.system.api.service.RemoteCouponService;
+import com.ruoyi.system.api.service.RemoteOrderService;
+import com.ruoyi.system.api.service.RemoteShopService;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.StringJoiner;
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * <p>
@@ -39,6 +43,18 @@
 
     @Resource
     private BirthdayGiftService birthdayGiftService;
+
+    @Resource
+    private RemoteShopService remoteShopService;
+
+    @Resource
+    private MemberGiftRecordService memberGiftRecordService;
+
+    @Resource
+    private RemoteCouponService remoteCouponService;
+
+    @Resource
+    private RemoteOrderService remoteOrderService;
 
     /**
      * @description  平台编辑生日卡
@@ -394,4 +410,212 @@
         birthdayCard.setCardStatus(merBirthdayEditDto.getCardStatus());
         this.saveOrUpdate(birthdayCard);
     }
+
+    /**
+     * @description 获取用户生日礼物
+     * @author  jqs
+     * @date    2023/7/7 10:55
+     * @param shopId
+     * @return  AppBirthdayCardVo
+     */
+    @Override
+    public AppBirthdayCardVo getUserBirthdayCard(Long userId,Long shopId){
+        AppBirthdayCardVo appBirthdayCardVo = new AppBirthdayCardVo();
+        String currentYear = String.valueOf(LocalDate.now().getYear());
+        List<MemberGiftRecord> memberGiftRecordList = memberGiftRecordService.listByUserIdAndYear(userId,currentYear);
+        if(memberGiftRecordList!=null&&!memberGiftRecordList.isEmpty()){
+            List<AppBirthdayGiftVo> birthdayGiftVoList = memberGiftRecordList.stream().map(
+                    memberGiftRecord -> {
+                        AppBirthdayGiftVo appBirthdayGiftVo = new AppBirthdayGiftVo();
+                        switch (memberGiftRecord.getGiftType()) {
+                            case 1:
+                                // 礼物类型为1,即优惠券
+                                appBirthdayGiftVo.setGiftName(memberGiftRecord.getCouponName());
+                                appBirthdayGiftVo.setGiftNumber(memberGiftRecord.getCouponNumber());
+                                break;
+                            case 2:
+                                // 礼物类型为2,即商品
+                                appBirthdayGiftVo.setGiftName(memberGiftRecord.getGoodsName());
+                                appBirthdayGiftVo.setGiftNumber(memberGiftRecord.getGoodsNumber());
+                                break;
+                            case 3:
+                                // 礼物类型为3,即现金
+                                appBirthdayGiftVo.setGiftName("现金");
+                                appBirthdayGiftVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
+                                break;
+                            case 4:
+                                // 礼物类型为4,即礼品
+                                appBirthdayGiftVo.setGiftName(memberGiftRecord.getCouponName());
+                                appBirthdayGiftVo.setGiftNumber(memberGiftRecord.getCouponNumber());
+                                break;
+                            default:
+                                break;
+                        }
+                        return appBirthdayGiftVo;
+                    }
+            ).collect(Collectors.toList());
+            appBirthdayCardVo.setGetGiftFlag(1);
+            appBirthdayCardVo.setBirthdayGiftVoList(birthdayGiftVoList);
+        }else{
+            appBirthdayCardVo.setGetGiftFlag(0);
+        }
+
+        return appBirthdayCardVo;
+    }
+
+    /**
+     * @description  获取用户生日礼物
+     * @author  jqs
+     * @date    2023/7/7 10:55
+     * @param shopId
+     * @return  AppBirthdayCardVo
+     */
+    @Override
+    public AppBirthdayCardVo getBirthdayGift(Long userId, Long shopId){
+        AppBirthdayCardVo appBirthdayCardVo = new AppBirthdayCardVo();
+        List<AppBirthdayGiftVo> birthdayGiftVoList = new ArrayList<>();
+        List<MemberGiftRecord> memberGiftRecordList = new ArrayList<>();
+        List<BirthdayGiftSendDto> sendGoodsList = new ArrayList<>();
+        List<BirthdayGiftSendDto> sendCouponList = new ArrayList<>();
+        AppBirthdayGiftVo appBirthdayGiftVo;
+        MemberGiftRecord memberGiftRecord;
+        BigDecimal winningProbability;
+        BigDecimal randomProbability;
+        BirthdayGiftSendDto birthdayGiftSendDto;
+        String currentYear = String.valueOf(LocalDate.now().getYear());
+        // 获取平台生日卡信息
+        BirthdayCard plBirthdayCard = birthdayCardMapper.getPlatformBirthdayCard(shopId);
+        // 如果生日卡存在
+        if (plBirthdayCard != null && plBirthdayCard.getCardStatus()==1) {
+            // 获取生日卡对应的生日礼物列表
+            List<BirthdayGift> birthdayGiftList = birthdayGiftService.listByCardId(plBirthdayCard.getCardId());
+            if(!birthdayGiftList.isEmpty()){
+                // 遍历生日礼物列表
+                for (BirthdayGift birthdayGift : birthdayGiftList) {
+                    winningProbability = birthdayGift.getWinningProbability();
+                    randomProbability = new BigDecimal(new Random().nextInt(100));
+                    if(winningProbability.compareTo(randomProbability)>0){
+                        appBirthdayGiftVo = new AppBirthdayGiftVo();
+                        memberGiftRecord = new MemberGiftRecord();
+                        birthdayGiftSendDto = new BirthdayGiftSendDto();
+                        BeanUtils.copyProperties(birthdayGift, memberGiftRecord);
+                        memberGiftRecord.setGiftFrom(1);
+                        memberGiftRecord.setGiftYear(currentYear);
+                        memberGiftRecord.setCreateTime(new Date());
+                        memberGiftRecord.setUserId(userId);
+                        birthdayGiftSendDto.setUserId(userId);
+                        birthdayGiftSendDto.setGiftFrom(1);
+                        birthdayGiftSendDto.setGiftType(birthdayGift.getGiftType());
+                        switch (birthdayGift.getGiftType()) {
+                            case 1:
+                                // 礼物类型为1,即优惠券
+                                appBirthdayGiftVo.setGiftName(birthdayGift.getCouponName());
+                                appBirthdayGiftVo.setGiftNumber(birthdayGift.getCouponNumber());
+                                birthdayGiftSendDto.setCouponId(birthdayGift.getCouponId());
+                                birthdayGiftSendDto.setCouponNumber(birthdayGift.getCouponNumber());
+                                sendGoodsList.add(birthdayGiftSendDto);
+                                break;
+                            case 2:
+                                // 礼物类型为2,即商品
+                                appBirthdayGiftVo.setGiftName(birthdayGift.getGoodsName());
+                                appBirthdayGiftVo.setGiftNumber(birthdayGift.getGoodsNumber());
+                                birthdayGiftSendDto.setGoodsId(birthdayGift.getGoodsId());
+                                birthdayGiftSendDto.setCouponNumber(birthdayGift.getGoodsNumber());
+                                sendCouponList.add(birthdayGiftSendDto);
+                                break;
+                            case 3:
+                                // 礼物类型为3,即现金
+                                appBirthdayGiftVo.setGiftName("现金");
+                                appBirthdayGiftVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
+                                break;
+                            case 4:
+                                // 礼物类型为4,即礼品
+                                appBirthdayGiftVo.setGiftName(birthdayGift.getCouponName());
+                                appBirthdayGiftVo.setGiftNumber(birthdayGift.getCouponNumber());
+                                break;
+                            default:
+                                break;
+                        }
+                        birthdayGiftVoList.add(appBirthdayGiftVo);
+                        memberGiftRecordList.add(memberGiftRecord);
+                    }
+                }
+            }
+        }
+        //获取商户营销开关状态
+        Integer marketingStatus = remoteShopService.getShopMarketingStatus(shopId).getData();
+        if(marketingStatus>1){
+            //获取商户生日卡
+            LambdaQueryWrapper<BirthdayCard> queryWrapper = new LambdaQueryWrapper<>();
+            queryWrapper.eq(BirthdayCard::getDelFlag,0);
+            queryWrapper.eq(BirthdayCard::getShopId,shopId);
+            BirthdayCard shopBirthdayCard = this.getOne(queryWrapper,false);
+            // 如果生日卡存在
+            if (shopBirthdayCard != null && shopBirthdayCard.getCardStatus()==1) {
+                // 获取生日卡对应的生日礼物列表
+                List<BirthdayGift> birthdayGiftList = birthdayGiftService.listByCardId(shopBirthdayCard.getCardId());
+                if(!birthdayGiftList.isEmpty()){
+                    // 遍历生日礼物列表
+                    for (BirthdayGift birthdayGift : birthdayGiftList) {
+                        winningProbability = birthdayGift.getWinningProbability();
+                        randomProbability = new BigDecimal(new Random().nextInt(100));
+                        if(winningProbability.compareTo(randomProbability)>0){
+                            appBirthdayGiftVo = new AppBirthdayGiftVo();
+                            memberGiftRecord = new MemberGiftRecord();
+                            birthdayGiftSendDto = new BirthdayGiftSendDto();
+                            BeanUtils.copyProperties(birthdayGift, memberGiftRecord);
+                            memberGiftRecord.setGiftFrom(2);
+                            memberGiftRecord.setShopId(shopId);
+                            memberGiftRecord.setGiftYear(currentYear);
+                            memberGiftRecord.setCreateTime(new Date());
+                            memberGiftRecord.setUserId(userId);
+                            birthdayGiftSendDto.setUserId(userId);
+                            birthdayGiftSendDto.setGiftFrom(2);
+                            birthdayGiftSendDto.setShopId(shopId);
+                            birthdayGiftSendDto.setGiftType(birthdayGift.getGiftType());
+                            switch (birthdayGift.getGiftType()) {
+                                case 1:
+                                    // 礼物类型为1,即优惠券
+                                    appBirthdayGiftVo.setGiftName(birthdayGift.getCouponName());
+                                    appBirthdayGiftVo.setGiftNumber(birthdayGift.getCouponNumber());
+                                    birthdayGiftSendDto.setCouponId(birthdayGift.getCouponId());
+                                    birthdayGiftSendDto.setCouponNumber(birthdayGift.getCouponNumber());
+                                    sendGoodsList.add(birthdayGiftSendDto);
+                                    break;
+                                case 2:
+                                    // 礼物类型为2,即商品
+                                    appBirthdayGiftVo.setGiftName(birthdayGift.getGoodsName());
+                                    appBirthdayGiftVo.setGiftNumber(birthdayGift.getGoodsNumber());
+                                    birthdayGiftSendDto.setGoodsId(birthdayGift.getGoodsId());
+                                    birthdayGiftSendDto.setCouponNumber(birthdayGift.getGoodsNumber());
+                                    sendCouponList.add(birthdayGiftSendDto);
+                                    break;
+                                case 3:
+                                    // 礼物类型为3,即现金
+                                    appBirthdayGiftVo.setGiftName("现金");
+                                    appBirthdayGiftVo.setGiftNumber(memberGiftRecord.getMoney().doubleValue());
+                                    break;
+                                case 4:
+                                    // 礼物类型为4,即礼品
+                                    appBirthdayGiftVo.setGiftName(birthdayGift.getCouponName());
+                                    appBirthdayGiftVo.setGiftNumber(birthdayGift.getCouponNumber());
+                                    break;
+                                default:
+                                    break;
+                            }
+                            birthdayGiftVoList.add(appBirthdayGiftVo);
+                            memberGiftRecordList.add(memberGiftRecord);
+                        }
+                    }
+                }
+            }
+        }
+        //发放奖品
+        remoteOrderService.sendGoodsGift(sendGoodsList);
+        remoteCouponService.sendCouponGift(sendCouponList);
+        //保存用户礼物记录
+        memberGiftRecordService.saveBatch(memberGiftRecordList);
+        appBirthdayCardVo.setBirthdayGiftVoList(birthdayGiftVoList);
+        return appBirthdayCardVo;
+    }
 }

--
Gitblit v1.7.1