From 0b413f3fd67110cfd7752f27eb171bde06edc4b4 Mon Sep 17 00:00:00 2001
From: jiangqs <jiangqs>
Date: 星期五, 18 八月 2023 18:56:39 +0800
Subject: [PATCH] bug
---
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java | 221 ++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 203 insertions(+), 18 deletions(-)
diff --git a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
index 212b96f..e54413b 100644
--- a/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
+++ b/ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -1,22 +1,34 @@
package com.ruoyi.member.service.impl.member;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.exception.ServiceException;
-import com.ruoyi.member.domain.pojo.coupon.Coupon;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.member.domain.dto.AppMemberCouponPageDto;
+import com.ruoyi.member.domain.dto.MemberSelectCouponDto;
+import com.ruoyi.member.domain.dto.MerGoodsCouponListDto;
+import com.ruoyi.member.domain.vo.AppMemberCouponPageVo;
import com.ruoyi.member.mapper.member.MemberCouponMapper;
-import com.ruoyi.member.service.coupon.CouponService;
import com.ruoyi.member.service.member.MemberCouponService;
import com.ruoyi.system.api.constant.AppErrorConstant;
+import com.ruoyi.system.api.domain.dto.MerBaseDto;
+import com.ruoyi.system.api.domain.dto.MgtBaseBathDto;
import com.ruoyi.system.api.domain.poji.goods.Goods;
import com.ruoyi.system.api.domain.poji.member.MemberCoupon;
import com.ruoyi.system.api.domain.vo.AppMemberCouponVo;
+import com.ruoyi.system.api.domain.vo.MerMemberCouponVo;
import com.ruoyi.system.api.domain.vo.MerVerifyCouponGetVo;
+import com.ruoyi.system.api.domain.vo.MgtSimpleShopVo;
import com.ruoyi.system.api.service.RemoteGoodsService;
+import com.ruoyi.system.api.service.RemoteShopService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
-import java.util.Date;
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.function.Function;
+import java.util.stream.Collectors;
/**
* <p>
@@ -36,7 +48,8 @@
private RemoteGoodsService remoteGoodsService;
@Resource
- private CouponService couponService;
+ private RemoteShopService remoteShopService;
+
/**
* @description: TODO
@@ -45,8 +58,8 @@
* @version 1.0
*/
@Override
- public List<AppMemberCouponVo> listVoMemberCouponByUserId(Long userId){
- List<AppMemberCouponVo> appMemberCouponVoList = memberCouponMapper.listVoMemberCouponByUserId(userId);
+ public List<AppMemberCouponVo> listVoMemberCouponByUserId(MerBaseDto merBaseDto){
+ List<AppMemberCouponVo> appMemberCouponVoList = memberCouponMapper.listVoMemberCouponByUserId(merBaseDto);
return appMemberCouponVoList;
}
@@ -70,7 +83,7 @@
throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
} else if (couponStatus == 2) {
throw new ServiceException(AppErrorConstant.COUPON_USED);
- } else if (couponStatus != 0) {
+ } else if (couponStatus != 1) {
throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
}
// 检查优惠券类型
@@ -86,13 +99,12 @@
merVerifyCouponGetVo.setGoodsList(goodsList);
}
merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId());
- Coupon coupon = couponService.getById(memberCoupon.getCouponId());
- // 设置优惠券来源
- if (coupon.getCouponFrom() == 1) {
- merVerifyCouponGetVo.setCouponFrom("平台");
- } else {
+ if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) {
merVerifyCouponGetVo.setCouponFrom("商户");
+ } else {
+ merVerifyCouponGetVo.setCouponFrom("平台");
}
+ merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
return merVerifyCouponGetVo;
}
@@ -113,7 +125,7 @@
throw new ServiceException(AppErrorConstant.COUPON_EXPIRED);
}else if(memberCoupon.getCouponStatus()==2){
throw new ServiceException(AppErrorConstant.COUPON_USED);
- }else if(memberCoupon.getCouponStatus()!=0){
+ }else if(memberCoupon.getCouponStatus()!=1){
throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
}
if(memberCoupon.getCouponType()!=4){
@@ -127,16 +139,189 @@
merVerifyCouponGetVo.setGoodsList(goodsList);
}
merVerifyCouponGetVo.setMemberCouponId(memberCoupon.getId());
- Coupon coupon = couponService.getById(memberCoupon.getCouponId());
- if (coupon.getCouponFrom()==1) {
- merVerifyCouponGetVo.setCouponFrom("平台");
- } else {
+ if (memberCoupon.getShopId()!=null&&memberCoupon.getShopId()>0) {
merVerifyCouponGetVo.setCouponFrom("商户");
+ } else {
+ merVerifyCouponGetVo.setCouponFrom("平台");
}
memberCoupon.setCouponStatus(2);
+
memberCoupon.setUseTime(new Date());
this.saveOrUpdate(memberCoupon);
merVerifyCouponGetVo.setMemberCoupon(memberCoupon);
return merVerifyCouponGetVo;
}
+
+ /**
+ * @description
+ * @author jqs
+ * @date 2023/6/29 11:42
+ * @param userId
+ * @param couponId
+ * @return Integer
+ */
+ @Override
+ public Integer totalMemberCouponByUserAndCoupon(Long userId,String couponId){
+ LambdaQueryWrapper<MemberCoupon> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(MemberCoupon::getUserId,userId);
+ queryWrapper.eq(MemberCoupon::getCouponId,couponId);
+ Integer total = this.count(queryWrapper);
+ return total;
+ }
+
+ /**
+ * @description 用户分页获取已领取优惠券列表
+ * @author jqs
+ * @date 2023/7/11 16:25
+ * @param page
+ * @param appMemberCouponPageDto
+ * @return List<AppMemberCouponPageVo>
+ */
+ @Override
+ public List<AppMemberCouponPageVo> pageAppUserGetCoupon(Page page, AppMemberCouponPageDto appMemberCouponPageDto){
+ List<AppMemberCouponPageVo> memberCouponPageVoList = memberCouponMapper.pageAppUserGetCoupon(page, appMemberCouponPageDto);
+ if(!memberCouponPageVoList.isEmpty()){
+ String relGoodsIds;
+ List<Goods> goodsList;
+ List<String> goodsLimitList = null;
+ HashSet<Long> shopIdSet = new HashSet<>();
+ for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){
+ if(appGetAbleCouponPageVo.getShopId()!=null){
+ shopIdSet.add(appGetAbleCouponPageVo.getShopId());
+ }
+ if(appGetAbleCouponPageVo.getCouponType()==4){
+ appGetAbleCouponPageVo.setVerifyCode("2-"+appGetAbleCouponPageVo.getMemberCouponId());
+ }
+ }
+ String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
+ MgtBaseBathDto mgtBaseBathDto = new MgtBaseBathDto();
+ mgtBaseBathDto.setIds(shopJoinedString);
+ List<MgtSimpleShopVo> simpleShopVoList = remoteShopService.listShopSimpleVoByIds(mgtBaseBathDto).getData();
+ Map<Long, MgtSimpleShopVo> shopMap = simpleShopVoList.stream()
+ .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
+ for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){
+ relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds();
+ if(StringUtils.isNotBlank(relGoodsIds)){
+ goodsList = remoteGoodsService.listGoodsByGoodsId(relGoodsIds).getData();
+ if(goodsList!=null&&!goodsList.isEmpty()){
+ goodsLimitList = goodsList.stream().map(goods -> {
+ String goodsName = goods.getGoodsName();
+ goodsName = "限制" + goodsName + "适用";
+ return goodsName;
+ }).collect(Collectors.toList());
+ }
+ }else{
+ goodsLimitList = new ArrayList<>();
+ if(appGetAbleCouponPageVo.getShopId()!=null){
+ goodsLimitList.add(shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName()+"通用");
+ }else{
+ goodsLimitList.add("全场通用");
+ }
+ }
+ appGetAbleCouponPageVo.setGoodsLimitList(goodsLimitList);
+ if(appGetAbleCouponPageVo.getShopId()!=null){
+ appGetAbleCouponPageVo.setVerifyShopName(shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName());
+ }
+ }
+ }
+ return memberCouponPageVoList;
+ }
+
+ /**
+ * @description 定时检查优惠券过期
+ * @author jqs
+ * @date 2023/7/12 19:19
+ * @param
+ * @return void
+ */
+ @Override
+ public void timingCheckMemberCoupon(){
+ memberCouponMapper.timingCheckMemberCoupon();
+ }
+
+ /**
+ * @description 使用优惠券
+ * @author jqs
+ * @date 2023/7/13 19:38
+ * @param memberCouponIds
+ * @return void
+ */
+ @Override
+ public void useMemberCoupon(String memberCouponIds){
+ memberCouponMapper.useMemberCoupon(memberCouponIds);
+ }
+
+ /**
+ * @description 使用优惠券
+ * @author jqs
+ * @date 2023/7/13 19:38
+ * @param memberCouponIds
+ * @return void
+ */
+ @Override
+ public void backMemberCoupon(String memberCouponIds){
+ memberCouponMapper.backMemberCoupon(memberCouponIds);
+ }
+
+ /**
+ * @description
+ * @author jqs
+ * @date 2023/7/19 17:35
+ * @param
+ * @return List<MerMemberCouponVo>
+ */
+ @Override
+ public List<MerMemberCouponVo> listMerShopGoodsMemberCoupon(MerGoodsCouponListDto merGoodsCouponListDto){
+ List<MerMemberCouponVo> merMemberCouponVoList = memberCouponMapper.listMerShopGoodsMemberCoupon(merGoodsCouponListDto);
+ if(merMemberCouponVoList!=null&&merMemberCouponVoList.size()>0){
+ List<MemberSelectCouponDto> goodsCpuponList = merGoodsCouponListDto.getGoodsCpuponList();
+ List<String> selectCouponList = new ArrayList<>();
+ Map<String, String> selectCouponMap = new HashMap<>();
+ Boolean checkSelect = false;
+ if(merGoodsCouponListDto.getGoodsCpuponList()!=null&&merGoodsCouponListDto.getGoodsCpuponList().size()>0) {
+ for (MemberSelectCouponDto couponDto : goodsCpuponList) {
+ selectCouponList.add(couponDto.getMemberCouponId());
+ selectCouponMap.put(couponDto.getMemberCouponId(), couponDto.getGoodsId());
+ }
+ checkSelect = true;
+ }
+ Iterator<MerMemberCouponVo> iterator = merMemberCouponVoList.iterator();
+ while (iterator.hasNext()) {
+ MerMemberCouponVo couponVo = iterator.next();
+ log.debug("couponVo"+couponVo.toString());
+ if(checkSelect){
+ if (selectCouponList.contains(couponVo.getMemberCouponId()) && selectCouponMap.containsKey(couponVo.getMemberCouponId())) {
+ String goodsId = selectCouponMap.get(couponVo.getMemberCouponId());
+ if (!merGoodsCouponListDto.getGoodsId().equals(goodsId)) {
+ iterator.remove();
+ continue;
+ }
+ }
+ }
+ if(merGoodsCouponListDto.getBuyNum()!=null&&merGoodsCouponListDto.getSalesPrice()!=null){
+ if(couponVo.getCouponType()==1){
+ BigDecimal goodsMoney = merGoodsCouponListDto.getSalesPrice().multiply(new BigDecimal(merGoodsCouponListDto.getBuyNum().toString()));
+ if(goodsMoney.compareTo(couponVo.getMoneyThreshold())<0){
+ iterator.remove();
+ }
+ }
+ }
+ }
+ }
+ return merMemberCouponVoList;
+ }
+
+
+ /**
+ * @description 确认核销优惠券
+ * @author jqs
+ * @date 2023/8/15 11:21
+ * @param memberCouponId
+ * @param shopId
+ * @return void
+ */
+ @Override
+ public void sureMemberCoupon(String memberCouponId,Long shopId){
+ memberCouponMapper.sureMemberCoupon(memberCouponId, shopId);
+ }
}
--
Gitblit v1.7.1