From 8f87cc33470decd79e68f885e61a955559544675 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 27 Dec 2023 14:37:17 +0800 Subject: [PATCH] 分享链接获取优惠卷,产生一张优惠卷后,再次进入将不在产生新的优惠卷 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 184 +++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 175 insertions(+), 9 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java index 3716d5d..60a4227 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java @@ -19,6 +19,7 @@ import cc.mrbird.febs.pay.service.IXcxPayService; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; @@ -28,6 +29,7 @@ import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -69,6 +71,10 @@ private final IMallMoneyFlowService mallMoneyFlowService; private final IMallMemberCollectionService mallMemberCollectionService; private final IMallMemberFootprintService mallMemberFootprintService; + private final SalemanCouponMapper salemanCouponMapper; + private final CouponGoodsMapper couponGoodsMapper; + private final MallGoodsCouponMapper mallGoodsCouponMapper; + private final MallMemberCouponMapper mallMemberCouponMapper; @Value("${spring.profiles.active}") @@ -226,6 +232,15 @@ @Override public FebsResponse logout() { Long id = LoginUserUtil.getLoginUser().getId(); + + String redisKey = AppContants.XCX_LOGIN_PREFIX + id; + String existToken = redisUtils.getString(redisKey); + if (StrUtil.isNotBlank(existToken)) { + Object o = redisUtils.get(existToken); + if (ObjectUtil.isNotEmpty(o)) { + redisUtils.del(existToken); + } + } redisUtils.del(AppContants.XCX_LOGIN_PREFIX + id); redisUtils.del(AppContants.XCX_LOGIN_PHONE_PREFIX + id); return new FebsResponse().success().message("退出登录"); @@ -253,21 +268,23 @@ mallMemberVo.setHasPayment(1); } - LambdaQueryWrapper<MallMemberCollection> collectionQuery = new LambdaQueryWrapper<>(); - collectionQuery.eq(MallMemberCollection::getMemberId, id); - List<MallMemberCollection> collectionList = mallMemberCollectionService.list(collectionQuery); + MemberCollectionListDto memberCollectionListDto = new MemberCollectionListDto(); + memberCollectionListDto.setPageNow(1); + memberCollectionListDto.setPageSize(10); + List<CollectionListVo> collectionList = mallMemberCollectionService.findMemberCollectionList(memberCollectionListDto); mallMemberVo.setCollectionCnt(CollUtil.isNotEmpty(collectionList) ? collectionList.size() : 0); - LambdaQueryWrapper<MallMemberCollection> footprintQuery = new LambdaQueryWrapper<>(); - footprintQuery.eq(MallMemberCollection::getMemberId, id); - List<MallMemberCollection> footprintList = mallMemberCollectionService.list(footprintQuery); - mallMemberVo.setCollectionCnt(CollUtil.isNotEmpty(footprintList) ? footprintList.size() : 0); + MemberFootprintListDto memberFootprintListDto = new MemberFootprintListDto(); + memberFootprintListDto.setPageNow(1); + memberFootprintListDto.setPageSize(10); + List<FootprintListVo> footprintList = mallMemberFootprintService.findMemberFootprintList(memberFootprintListDto); + mallMemberVo.setFootprintCnt(CollUtil.isNotEmpty(footprintList) ? footprintList.size() : 0); List<MallMember> mallMembers = this.baseMapper.selectByRefererId(mallMember.getInviteId()); mallMemberVo.setChildCnt(CollUtil.isNotEmpty(mallMembers) ? mallMembers.size() : 0); -// MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId()); -// mallMemberVo.setBalance(wallet.getBalance()); + MallMemberWallet wallet = mallMemberWalletMapper.selectWalletByMemberId(mallMemberVo.getId()); + mallMemberVo.setBalance(wallet.getBalance()); // mallMemberVo.setScore(wallet.getScore()); // mallMemberVo.setPrizeScore(wallet.getPrizeScore()); // mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id)); @@ -564,6 +581,7 @@ @Override public FebsResponse xcxLogin(ApiXcxLoginDto apiXcxLoginDto) throws IOException { + log.info("登录请求参数:{}", JSONObject.toJSONString(apiXcxLoginDto)); FebsResponse febsResponse = new FebsResponse(); String code = apiXcxLoginDto.getCode(); log.info("code:" + code); @@ -593,6 +611,40 @@ mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name()); mallMember.setOpenId(openId); mallMember.setSessionKey(sessionKey); + + if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) { + MallMember member = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId()); + if (member != null) { + mallMember.setReferrerId(member.getInviteId()); + + //推荐人和推荐人链 + boolean flag = false; + String parentId = mallMember.getReferrerId(); + if (StrUtil.isBlank(parentId)) { + flag = true; + } + String ids = ""; + while (!flag) { + if (StrUtil.isBlank(ids)) { + ids += parentId; + } else { + ids += ("," + parentId); + } + MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId); + if (parentMember == null) { + break; + } + parentId = parentMember.getReferrerId(); + if (StrUtil.isBlank(parentMember.getReferrerId())) { + flag = true; + } + } + + if (StrUtil.isNotBlank(ids)) { + mallMember.setReferrerIds(ids); + } + } + } this.baseMapper.insert(mallMember); mallMember = this.baseMapper.selectMemberByOpenId(openId); @@ -832,6 +884,120 @@ return new FebsResponse().success().data(apiMallAgentRecordVo); } + @Override + public FebsResponse getCoupon(GetCouponDto getCouponDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + + String couponUUID = getCouponDto.getCouponUUID(); + QueryWrapper<MallMemberCoupon> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("coupon_uuid",couponUUID); + List<MallMemberCoupon> mallMemberCouponDone = mallMemberCouponMapper.selectList(objectQueryWrapper); + if(CollUtil.isNotEmpty(mallMemberCouponDone)){ + return new FebsResponse().success(); + } + //通过邀请人信息,获取能领取的优惠卷信息 + MallMember mallMember = this.baseMapper.selectInfoByInviteId(getCouponDto.getInviteId()); + if(ObjectUtil.isNotEmpty(mallMember)){ + SalemanCoupon salemanCoupon = salemanCouponMapper.selectByMemberId(mallMember.getId()); + if(ObjectUtil.isNotEmpty(salemanCoupon)){ + Long couponId = salemanCoupon.getCouponId(); + Long goodsId = getCouponDto.getGoodsId(); +// List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdAndGoodsIdAndCouponId(memberId, goodsId, couponId,mallMember.getInviteId()); +// List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdAndGoodsIdAndCouponIdWithOutInviteId(memberId, goodsId, couponId); + List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdAndGoodsIdAndCouponIdWithOutInviteId(memberId, goodsId); + if(CollUtil.isEmpty(mallMemberCoupons)){ + //商品优惠卷如果绑定了,那么当前登陆者获取一张卷 + List<CouponGoods> couponGoodsList = couponGoodsMapper.selectByGoodIdAndCouponId(goodsId,couponId); + MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId); + if(CollUtil.isNotEmpty(couponGoodsList)){ + MallMemberCoupon mallMemberCoupon = new MallMemberCoupon(); + mallMemberCoupon.setCouponId(couponId); + mallMemberCoupon.setCouponName(mallGoodsCoupon.getName()); + mallMemberCoupon.setMemberId(memberId); + mallMemberCoupon.setGoodsId(goodsId); + mallMemberCoupon.setCouponUuid(couponUUID); + mallMemberCoupon.setInviteId(mallMember.getInviteId()); + mallMemberCoupon.setState(1); + mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay())); + mallMemberCouponMapper.insert(mallMemberCoupon); + } + } + } + } + return new FebsResponse().success(); + } + + @Override + public FebsResponse memberCoupon(MallMemberCouponDto mallMemberCouponDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + IPage<MallMemberCouponVo> page = new Page<>(mallMemberCouponDto.getPageNum(), mallMemberCouponDto.getPageSize()); + mallMemberCouponDto.setMemberId(memberId); + mallMemberCouponDto.setExpireTime(DateUtil.date()); + IPage<MallMemberCouponVo> pages = mallMemberCouponMapper.selectListInPage(page, mallMemberCouponDto); + return new FebsResponse().success().data(pages); + } + + @Override + public FebsResponse couponDetails(Long id) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMemberCoupon mallMemberCoupon = mallMemberCouponMapper.selectById(id); + MallMemberCouponVo mallMemberCouponVo = new MallMemberCouponVo(); + mallMemberCouponVo.setCouponName(mallMemberCoupon.getCouponName()); + MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(mallMemberCoupon.getCouponId()); + mallMemberCouponVo.setCostAmount(mallGoodsCoupon.getCostAmount()); + mallMemberCouponVo.setRealAmount(mallGoodsCoupon.getRealAmount()); + return new FebsResponse().success().data(mallMemberCouponVo); + } + + @Override + public FebsResponse setInvite(ApiSetInviteDto apiSetInviteDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallMember mallMember = this.baseMapper.selectById(memberId); + if(ObjectUtil.isNotEmpty(mallMember.getReferrerId())){ + throw new FebsException("已绑定"); + } + String inviteId = apiSetInviteDto.getInviteId(); + if(inviteId.equals(mallMember.getInviteId())){ + return new FebsResponse().success(); + } + MallMember member = this.baseMapper.selectInfoByInviteId(inviteId); + if (member != null) { + if (StrUtil.isNotBlank(member.getReferrerIds()) && member.getReferrerIds().contains(mallMember.getInviteId())) { + log.info("下级不能邀请上级"); + return new FebsResponse().success(); + } + mallMember.setReferrerId(member.getInviteId()); + + //推荐人和推荐人链 + boolean flag = false; + String parentId = mallMember.getReferrerId(); + if (StrUtil.isBlank(parentId)) { + flag = true; + } + String ids = ""; + while (!flag) { + if (StrUtil.isBlank(ids)) { + ids += parentId; + } else { + ids += ("," + parentId); + } + MallMember parentMember = this.baseMapper.selectInfoByInviteId(parentId); + if (parentMember == null) { + break; + } + parentId = parentMember.getReferrerId(); + if (StrUtil.isBlank(parentMember.getReferrerId())) { + flag = true; + } + } + if (StrUtil.isNotBlank(ids)) { + mallMember.setReferrerIds(ids); + } + this.baseMapper.updateById(mallMember); + } + return new FebsResponse().success(); + } + private String getXcxLoginUrl(String code) { String wechatLoginUrl =xcxProperties.getWecharLoginUrl(); return String.format(wechatLoginUrl, xcxProperties.getXcxAppid(), xcxProperties.getXcxSecret(), code); -- Gitblit v1.9.1