| | |
| | | |
| | | 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> |
| | |
| | | |
| | | @Resource |
| | | private BirthdayGiftService birthdayGiftService; |
| | | |
| | | @Resource |
| | | private RemoteShopService remoteShopService; |
| | | |
| | | @Resource |
| | | private MemberGiftRecordService memberGiftRecordService; |
| | | |
| | | @Resource |
| | | private RemoteCouponService remoteCouponService; |
| | | |
| | | @Resource |
| | | private RemoteOrderService remoteOrderService; |
| | | |
| | | /** |
| | | * @description 平台编辑生日卡 |
| | |
| | | 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; |
| | | } |
| | | } |