mitao
2025-01-17 afa0dbb4f54e7244835dd67ec33c3e545f122f71
ruoyi-modules/ruoyi-member/src/main/java/com/ruoyi/member/service/impl/member/MemberCouponServiceImpl.java
@@ -1,5 +1,6 @@
package com.ruoyi.member.service.impl.member;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -42,6 +43,7 @@
 * @since 2023-04-25
 */
@Service
@DS("sharding")
public class MemberCouponServiceImpl extends ServiceImpl<MemberCouponMapper, MemberCoupon> implements MemberCouponService {
    @Resource
@@ -74,7 +76,7 @@
     * @return  void
     */
    @Override
    public MerVerifyCouponGetVo getVerifyCoupon(String verifyCoupon){
    public MerVerifyCouponGetVo getVerifyCoupon(Long verifyCoupon){
        MemberCoupon memberCoupon = this.getById(verifyCoupon);
        // 检查是否存在该优惠券
        if (memberCoupon == null) {
@@ -119,7 +121,7 @@
     * @return  MerVerifyCouponGetVo
     */
    @Override
    public MerVerifyCouponGetVo sureVerifyCoupon(String memberCouponId){
    public MerVerifyCouponGetVo sureVerifyCoupon(Long memberCouponId){
        MemberCoupon memberCoupon = this.getById(memberCouponId);
        if(memberCoupon==null||memberCoupon.getDelFlag()==1){
            throw new ServiceException(AppErrorConstant.COUPON_NO_FIND);
@@ -186,7 +188,8 @@
        if(!memberCouponPageVoList.isEmpty()){
            String relGoodsIds;
            HashSet<Long> shopIdSet = new HashSet<>();
            HashSet<Long> goodsIdSet = new HashSet<>();
            HashSet<String> goodsIdSet = new HashSet<>();
            String[] goodsIdArr;
            for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){
                if(appGetAbleCouponPageVo.getShopId()!=null){
                    shopIdSet.add(appGetAbleCouponPageVo.getShopId());
@@ -194,21 +197,29 @@
                if(appGetAbleCouponPageVo.getCouponType()==4){
                    appGetAbleCouponPageVo.setVerifyCode("2-"+appGetAbleCouponPageVo.getMemberCouponId());
                }
                if(StringUtils.isNotBlank(appGetAbleCouponPageVo.getRelGoodsIds())&&!appGetAbleCouponPageVo.getRelGoodsIds().contains(",")){
                    goodsIdSet.add(Long.valueOf(appGetAbleCouponPageVo.getRelGoodsIds()));
                if(StringUtils.isNotBlank(appGetAbleCouponPageVo.getRelGoodsIds())){
                    relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds();
                    goodsIdArr = relGoodsIds.split(",");
                    for(String str : goodsIdArr){
                        goodsIdSet.add(str);
                    }
                }
            }
            //获取关联商户和商品信息并转换为Map
            String shopJoinedString = String.join(",", shopIdSet.stream().map(Object::toString).collect(Collectors.toList()));
            String shopJoinedString;
            Map<Long, MgtSimpleShopVo> shopMap = null;
            if(shopIdSet!=null&&!shopIdSet.isEmpty()) {
                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();
                shopMap = simpleShopVoList.stream()
                        .collect(Collectors.toMap(MgtSimpleShopVo::getShopId, Function.identity()));
            }
            String goodsJoinedString = null;
            if(goodsIdSet!=null&&!goodsIdSet.isEmpty()){
                goodsJoinedString = String.join(",", goodsIdSet.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()));
            Map<String, Goods> goodsMap = null;
            if(goodsJoinedString!=null){
                List<Goods> goodsList = remoteGoodsService.listGoodsByGoodsId(goodsJoinedString).getData();
@@ -216,20 +227,30 @@
                        .collect(Collectors.toMap(Goods::getGoodsId, Function.identity()));
            }
            //处理返回信息
            String shopLimit = "全场通用";
            String goodsLimit = null;
            String shopLimit = "全门店通用";
            String goodsLimit;
            StringJoiner goodsNameSj;
            for(AppMemberCouponPageVo appGetAbleCouponPageVo : memberCouponPageVoList){
                goodsLimit = null;
                goodsNameSj = new StringJoiner(",");
                //商户限制
                if(appGetAbleCouponPageVo.getShopId()!=null){
                    if(!member.getRelationShopId().equals(appGetAbleCouponPageVo.getShopId())){
                        shopLimit = shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName()+"可用";
                    }
                    shopLimit = shopMap.get(appGetAbleCouponPageVo.getShopId()).getShopName()+"可用";
                }
                appGetAbleCouponPageVo.setShopLimit(shopLimit);
                //商品限制
                relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds();
                if(StringUtils.isNotBlank(relGoodsIds)&&!relGoodsIds.contains(",")){
                    goodsLimit = goodsMap.get(relGoodsIds).getGoodsName();
                if(StringUtils.isNotBlank(relGoodsIds)){
                    relGoodsIds = appGetAbleCouponPageVo.getRelGoodsIds();
                    goodsIdArr = relGoodsIds.split(",");
                    for(String goodsIs : goodsIdArr){
                        if(goodsMap.get(goodsIs)!=null){
                            goodsNameSj.add(goodsMap.get(goodsIs).getGoodsName());
                        }else{
                            log.debug("用户优惠券未找到关联商品"+appGetAbleCouponPageVo.getMemberCouponId()+"-"+appGetAbleCouponPageVo.getRelGoodsIds());
                        }
                    }
                    goodsLimit = goodsNameSj.toString();
                }
                appGetAbleCouponPageVo.setGoodsLimit(goodsLimit);
                //核销商店
@@ -290,8 +311,8 @@
        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<>();
            List<Long> selectCouponList =  new ArrayList<>();
            Map<Long, String>  selectCouponMap = new HashMap<>();
            Boolean checkSelect = false;
            if(merGoodsCouponListDto.getGoodsCpuponList()!=null&&merGoodsCouponListDto.getGoodsCpuponList().size()>0) {
                for (MemberSelectCouponDto couponDto : goodsCpuponList) {
@@ -337,7 +358,13 @@
     * @return  void
     */
    @Override
    public void sureMemberCoupon(String memberCouponId,Long shopId){
    public void sureMemberCoupon(Long memberCouponId, Long shopId){
        memberCouponMapper.sureMemberCoupon(memberCouponId, shopId);
    }
    @Override
    @Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
    public void insert(MemberCoupon memberCoupon) {
        this.baseMapper.insert(memberCoupon);
    }
}