From 954f46aaad039dd1b58f3d4f234479011ccff411 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Thu, 16 Jan 2025 11:07:31 +0800 Subject: [PATCH] fix(mall): 修复会员绑定逻辑 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallMemberServiceImpl.java | 556 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 541 insertions(+), 15 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 42c0bbd..978c1d5 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 @@ -1,15 +1,16 @@ package cc.mrbird.febs.mall.service.impl; import cc.mrbird.febs.common.entity.FebsResponse; -import cc.mrbird.febs.common.enumerates.AgentLevelEnum; import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; +import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.properties.XcxProperties; import cc.mrbird.febs.common.utils.*; import cc.mrbird.febs.mall.conversion.MallMemberConversion; import cc.mrbird.febs.mall.conversion.MallShopApplyConversion; +import cc.mrbird.febs.mall.conversion.MallStoreConversion; import cc.mrbird.febs.mall.dto.*; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; @@ -17,24 +18,31 @@ import cc.mrbird.febs.mall.vo.*; import cc.mrbird.febs.pay.model.BrandWCPayRequestData; import cc.mrbird.febs.pay.service.IXcxPayService; +import cc.mrbird.febs.pay.util.MD5; +import cc.mrbird.febs.vip.VipSettingUnAliveSettingBo; +import cc.mrbird.febs.vip.entity.MallVipConfig; +import cc.mrbird.febs.vip.mapper.MallVipConfigMapper; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.date.DateUnit; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.crypto.asymmetric.KeyType; import cn.hutool.crypto.asymmetric.RSA; +import cn.hutool.json.JSONArray; 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; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.security.SecurityProperties; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -42,6 +50,7 @@ import java.io.IOException; import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @author wzy @@ -69,6 +78,16 @@ 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; + private final MallGoodsMapper mallGoodsMapper; + + private final MallVipConfigMapper mallVipConfigMapper; + private final MallStoreMapper mallStoreMapper; + private final MallStoreItemMapper mallStoreItemMapper; + private final MallStoreMemberMapper mallStoreMemberMapper; @Value("${spring.profiles.active}") @@ -122,7 +141,6 @@ mallMember.setName(registerDto.getName()); mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); - mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name()); mallMember.setSex("男"); mallMember.setBindPhone(registerDto.getAccount()); @@ -226,6 +244,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,23 +280,29 @@ 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<MallMemberFootprint> footprintQuery = new LambdaQueryWrapper<>(); - footprintQuery.eq(MallMemberFootprint::getMemberId, id); - List<MallMemberFootprint> footprintList = mallMemberFootprintService.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()); + + MallVipConfig mallVipConfig = mallVipConfigMapper.selectVipConfigByCode(mallMember.getLevel()); + + mallMemberVo.setVipInfo(mallVipConfig); mallMemberVo.setBalance(wallet.getBalance()); // mallMemberVo.setScore(wallet.getScore()); -// mallMemberVo.setPrizeScore(wallet.getPrizeScore()); + mallMemberVo.setPrizeScore(wallet.getPrizeScore()); // mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id)); return new FebsResponse().success().data(mallMemberVo); } @@ -286,7 +319,7 @@ } } - List<MallShoppingCart> carts = mallShoppingCartMapper.selectCartGoodsList(id); + List<MallShoppingCart> carts = mallShoppingCartMapper.selectCartGoodsList(id, 1); Map<String, Object> result = new HashMap<>(); result.put("order", orderCnt); result.put("carts", carts.size()); @@ -359,6 +392,12 @@ Long id = LoginUserUtil.getLoginUser().getId(); moneyFlowDto.setMemberId(id); IPage<MoneyFlowVo> pages = mallMoneyFlowMapper.selectApiMoneyFlowInPage(page, moneyFlowDto); + + if (moneyFlowDto.getFlowType() == 3) { + pages.getRecords().forEach(item -> { + item.setDescription(ScoreFlowTypeEnum.getDescByValue(item.getType())); + }); + } return new FebsResponse().success().data(pages); } @@ -564,6 +603,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); @@ -590,9 +630,42 @@ mallMember = new MallMember(); mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); - 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); @@ -650,7 +723,22 @@ if(StrUtil.isNotEmpty(avatarUrl)){ mallMember.setAvatar(avatarUrl); } -// mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男"); + + if (StrUtil.isNotBlank(apiXcxSaveInfoDto.getRealName())) { + mallMember.setRealName(apiXcxSaveInfoDto.getRealName()); + } + + if (apiXcxSaveInfoDto.getBirthday() != null) { + mallMember.setBirthday(apiXcxSaveInfoDto.getBirthday()); + } + + List<MallVipConfig> configs = mallVipConfigMapper.selectVipConfigList(); + if (StrUtil.isBlank(mallMember.getLevel()) && CollUtil.isNotEmpty(configs)) { + MallVipConfig mallVipConfig = configs.get(0); + mallMember.setLevel(mallVipConfig.getCode()); + } + + mallMember.setSex(1 == apiXcxSaveInfoDto.getGender() ? "女" : "男"); this.baseMapper.updateById(mallMember); return new FebsResponse().success(); } @@ -670,7 +758,6 @@ mallMember.setPhone(phone); mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_ENABLE); mallMember.setAccountType(MallMember.ACCOUNT_TYPE_NORMAL); - mallMember.setLevel(AgentLevelEnum.ZERO_LEVEL.name()); this.baseMapper.insert(mallMember); String inviteId = ShareCodeUtil.toSerialCode(mallMember.getId()); @@ -832,8 +919,447 @@ return new FebsResponse().success().data(apiMallAgentRecordVo); } + @Override + public FebsResponse getCoupon(GetCouponDto getCouponDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + + String couponUUID = IdUtil.simpleUUID(); +// 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(); + MallGoods mallGoods = mallGoodsMapper.selectById(goodsId); + //验证商品存不存在,且上没上架 + if(ObjectUtil.isNotEmpty(mallGoods) + && MallGoods.ISSALE_STATUS_ENABLE == mallGoods.getIsSale()){ +// 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 scanCoupon(GetCouponDto getCouponDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + String couponUUID = IdUtil.simpleUUID(); + //通过邀请人信息,获取能领取的优惠卷信息 + 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(); + List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(memberId, couponId); + if(CollUtil.isEmpty(mallMemberCoupons)){ + //商品优惠卷如果绑定了,那么当前登陆者获取一张卷 + MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId); + MallMemberCoupon mallMemberCoupon = new MallMemberCoupon(); + mallMemberCoupon.setCouponId(couponId); + mallMemberCoupon.setCouponName(mallGoodsCoupon.getName()); + mallMemberCoupon.setMemberId(memberId); + 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 memberPayCoupon(MallMemberCouponDto mallMemberCouponDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + mallMemberCouponDto.setMemberId(memberId); + mallMemberCouponDto.setExpireTime(DateUtil.date()); +// List<Long> couponIds = couponGoodsMapper.selectByGoodId(mallMemberCouponDto.getGoodsId()); + List<Long> goodsIdList = mallMemberCouponDto.getGoodsIdList(); + List<Long> couponIds = couponGoodsMapper.selectByGoodIdList(goodsIdList); + + List<MallMemberCouponVo> mallMemberCouponVos = new ArrayList<>(); + if(CollUtil.isNotEmpty(couponIds)){ + mallMemberCouponVos = mallMemberCouponMapper.selectListCreateInPage(mallMemberCouponDto,couponIds); + } + return new FebsResponse().success().data(mallMemberCouponVos); + } + + @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()); + mallMemberCouponVo.setType(mallGoodsCoupon.getType()); + 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); } + + @Override + public Map<String, Object> loginEvent() { + MallMember loginUser = LoginUserUtil.getLoginUser(); + + MallMember member = this.baseMapper.selectById(loginUser.getId()); + + MallMember mallMember = new MallMember(); + mallMember.setId(member.getId()); + mallMember.setLastLoginTime(new Date()); + this.baseMapper.updateById(mallMember); + + DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(DataDictionaryEnum.UNALIVE_COUPON.getType(), DataDictionaryEnum.UNALIVE_COUPON.getCode()); + if (dic == null || StrUtil.isBlank(dic.getValue())) { + return new HashMap<>(); + } + + Date today = new Date(); + Date lastLoginTime = member.getLastLoginTime(); + if (lastLoginTime == null) { + lastLoginTime = new Date(); + } + + long days = DateUtil.between(DateUtil.endOfDay(lastLoginTime), DateUtil.endOfDay(today), DateUnit.DAY); + + List<VipSettingUnAliveSettingBo> list = JSONObject.parseArray(dic.getValue(), VipSettingUnAliveSettingBo.class); + List<Long> couponIds = list.stream().filter(item -> { + return item.getDay() <= days && item.getCouponId() != null; + }).map(VipSettingUnAliveSettingBo::getCouponId).collect(Collectors.toList()); + if (CollUtil.isEmpty(couponIds)) { + return new HashMap<>(); + } + + LambdaQueryWrapper<MallGoodsCoupon> query = new LambdaQueryWrapper<>(); + query.in(MallGoodsCoupon::getId, couponIds) + .eq(MallGoodsCoupon::getState, 2); + List<MallGoodsCoupon> coupons = mallGoodsCouponMapper.selectList(query); + + LambdaQueryWrapper<MallMemberCoupon> memberCouponQuery = new LambdaQueryWrapper<>(); + memberCouponQuery.in(MallMemberCoupon::getCouponId, couponIds) + .eq(MallMemberCoupon::getMemberId, member.getId()) + .eq(MallMemberCoupon::getFromType, 3) + .ge(MallMemberCoupon::getCreatedTime, DateUtil.beginOfDay(new Date())) + .le(MallMemberCoupon::getCreatedTime, DateUtil.endOfDay(new Date())); + List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectList(memberCouponQuery); + if (CollUtil.isNotEmpty(mallMemberCoupons)) { + Map<Long, MallMemberCoupon> map = mallMemberCoupons.stream().collect(Collectors.toMap(MallMemberCoupon::getCouponId, MallMemberCoupon -> MallMemberCoupon)); + coupons = coupons.stream().filter(item -> { + return map.get(item.getId()) == null; + }).collect(Collectors.toList()); + } + + if (CollUtil.isEmpty(coupons)) { + return new HashMap<>(); + } + + coupons.forEach(item -> { + MallMemberCoupon memberCoupon = new MallMemberCoupon(); + memberCoupon.setCouponId(item.getId()); + memberCoupon.setCouponName(item.getName()); + memberCoupon.setInviteId(member.getInviteId()); + memberCoupon.setCouponUuid(IdUtil.simpleUUID()); + memberCoupon.setState(1); + memberCoupon.setFromType(3); + memberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(), item.getExpireDay())); + memberCoupon.setMemberId(member.getId()); + mallMemberCouponMapper.insert(memberCoupon); + }); + + Map<String, Object> result = new HashMap<>(); + result.put("coupon", coupons); + return result; + } + + @Override + public FebsResponse storeList(MallStoreDto mallStoreDto) { + QueryWrapper<MallStore> mallStoreQueryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(mallStoreDto.getName())){ + mallStoreQueryWrapper.like("name",mallStoreDto.getName()); + } + List<MallStore> mallStores = mallStoreMapper.selectList(mallStoreQueryWrapper); + List<MallStoreVo> mallStoreVos = MallStoreConversion.INSTANCE.entitysToVos(mallStores); + return new FebsResponse().success().data(mallStoreVos); + } + + @Override + public FebsResponse storeItemList(MallStoreItemDto mallStoreItemDto) { +// QueryWrapper<MallStoreItem> mallStoreQueryWrapper = new QueryWrapper<>(); +// mallStoreQueryWrapper.like("store_id",mallStoreItemDto.getStoreId()); +// List<MallStoreItem> mallStores = mallStoreItemMapper.selectList(mallStoreQueryWrapper); + + List<MallStoreItem> mallStores = mallStoreItemMapper.selectList( + new LambdaQueryWrapper<MallStoreItem>() + .eq(MallStoreItem::getStoreId, mallStoreItemDto.getStoreId()) + ); + return new FebsResponse().success().data(mallStores); + } + + @Override + public FebsResponse bindStoreMember(BindStoreMemberDto bindStoreMemberDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + Long storeItemId = bindStoreMemberDto.getStoreItemId(); + +// QueryWrapper<MallStoreMember> objectQueryWrapper = new QueryWrapper<>(); +// objectQueryWrapper.eq("member_id",memberId); +// List<MallStoreMember> mallStoreMembers = mallStoreMemberMapper.selectList(objectQueryWrapper); + + List<MallStoreMember> mallStoreMembers = mallStoreMemberMapper.selectList( + new LambdaQueryWrapper<MallStoreMember>() + .eq(MallStoreMember::getMemberId, memberId) + .eq(MallStoreMember::getStoreItemId, bindStoreMemberDto.getStoreItemId()) + ); + if(CollUtil.isNotEmpty(mallStoreMembers)){ + return new FebsResponse().fail().message("您已经绑定过了"); + } + + MallMember mallMember = this.baseMapper.selectById(memberId); + Integer sex = "女".equals(mallMember.getSex()) ? 3 : 2; + + MallStoreItem mallStoreItem = mallStoreItemMapper.selectById(storeItemId); + HashMap<String, String> objectObjectHashMap = new HashMap<>(); + String shopAccount = mallStoreItem.getAccount(); + String shopPwd = mallStoreItem.getPassword(); + String name = bindStoreMemberDto.getName(); + String address = bindStoreMemberDto.getAddress(); + Integer age = bindStoreMemberDto.getAge(); + String phoneNumber = bindStoreMemberDto.getPhone(); + + objectObjectHashMap.put("shopAccount",shopAccount); + objectObjectHashMap.put("shopPwd",shopPwd); + objectObjectHashMap.put("name",name); + objectObjectHashMap.put("address",address); + objectObjectHashMap.put("age",age.toString()); + objectObjectHashMap.put("phoneNumber",phoneNumber); + objectObjectHashMap.put("sex",sex.toString()); + + //sign= MD5(address+age+name+phoneNumber+shopAccount+shopPwd) + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(address); + stringBuffer.append(age); + stringBuffer.append(name); + stringBuffer.append(phoneNumber); + stringBuffer.append(sex); + stringBuffer.append(shopAccount); + stringBuffer.append(shopPwd); + String sign = MD5.MD5Encode(stringBuffer.toString()); + objectObjectHashMap.put("sign",sign); + String url = "https://data.muchun.co/api/bindCustomer"; + + log.info("请求参数"+objectObjectHashMap); + String result = HttpCurlUtil.sendPost(url, objectObjectHashMap); + log.info("绑定用户"+result); + Integer retCode = JSONUtil.parseObj(result).getInt("retCode"); + String message = JSONUtil.parseObj(result).getStr("message"); + if(0 != retCode || !"绑定成功".equals(message)){ + return new FebsResponse().fail().message(message); + } + + Long bindId = JSONUtil.parseObj(result).getJSONObject("data").getLong("userId"); + List<MallStoreMember> mallStoreMembers1 = mallStoreMemberMapper.selectList( + new LambdaQueryWrapper<MallStoreMember>() + .eq(MallStoreMember::getMemberId, memberId) + .eq(MallStoreMember::getStoreItemId, mallStoreItem.getId()) + .eq(MallStoreMember::getBindId, bindId) + ); + if(CollUtil.isEmpty(mallStoreMembers1)){ + MallStoreMember mallStoreMember = new MallStoreMember(); + mallStoreMember.setMemberId(memberId); + mallStoreMember.setBindId(bindId); + mallStoreMember.setStoreId(mallStoreItem.getStoreId()); + mallStoreMember.setStoreItemId(mallStoreItem.getId()); + + mallStoreMember.setAccount(shopAccount); + mallStoreMember.setPassword(shopPwd); + + mallStoreMember.setName(name); + mallStoreMember.setAddress(address); + mallStoreMember.setAge(age); + mallStoreMember.setPhone(phoneNumber); + mallStoreMemberMapper.insert(mallStoreMember); + } + return new FebsResponse().success().message("绑定成功"); + } + + @Override + public FebsResponse bindList() { + Long memberId = LoginUserUtil.getLoginUser().getId(); + QueryWrapper<MallStoreMember> objectQueryWrapper = new QueryWrapper<>(); + objectQueryWrapper.eq("member_id",memberId); + List<MallStoreMember> mallStoreMembers = mallStoreMemberMapper.selectList(objectQueryWrapper); + + ArrayList<MallStoreMemberVo> mallStoreMemberVos = new ArrayList<>(); + for(MallStoreMember mallStoreMember : mallStoreMembers){ + MallStoreMemberVo mallStoreMemberVo = new MallStoreMemberVo(); + Long storeId = mallStoreMember.getStoreId(); + Long storeItemId = mallStoreMember.getStoreItemId(); + MallStore mallStore = mallStoreMapper.selectById(storeId); + MallStoreItem mallStoreItem = mallStoreItemMapper.selectById(storeItemId); + mallStoreMemberVo.setId(mallStoreMember.getId()); + mallStoreMemberVo.setBindInfo(mallStore.getName()+"-"+mallStoreItem.getCode()); + mallStoreMemberVos.add(mallStoreMemberVo); + } + return new FebsResponse().success().data(mallStoreMemberVos); + } + + @Override + public FebsResponse bindResult(BindResultDto bindResultDto) { + Long memberId = LoginUserUtil.getLoginUser().getId(); + MallStoreMember mallStoreMember = mallStoreMemberMapper.selectById(bindResultDto.getBindId()); + Long userld = mallStoreMember.getBindId(); + String shopAccount = mallStoreMember.getAccount(); + String shopPwd = mallStoreMember.getPassword(); + + HashMap<String, String> objectObjectHashMap = new HashMap<>(); + + objectObjectHashMap.put("shopAccount",shopAccount); + objectObjectHashMap.put("shopPwd",shopPwd); + objectObjectHashMap.put("userId",userld.toString()); + + //sign= MD5(shopAccount+shopPwd+userId) + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(shopAccount); + stringBuffer.append(shopPwd); + stringBuffer.append(userld); + String sign = MD5.MD5Encode(stringBuffer.toString()); + objectObjectHashMap.put("sign",sign); + + String url = "https://data.muchun.co/api/getCustomerCheckRecords"; + String result = HttpCurlUtil.sendPost(url, objectObjectHashMap); + Integer retCode = JSONUtil.parseObj(result).getInt("retCode"); + String message = JSONUtil.parseObj(result).getStr("message"); + if(0 != retCode){ + return new FebsResponse().fail().message(message); + } + JSONArray data = JSONUtil.parseObj(result).getJSONArray("data"); + return new FebsResponse().success().data(data); + } + + public static void main(String[] args) { + Long userld = 16425L; + String shopAccount = "爱和美医疗"; + String shopPwd = "blnka2005"; + + HashMap<String, String> objectObjectHashMap = new HashMap<>(); + + objectObjectHashMap.put("shopAccount",shopAccount); + objectObjectHashMap.put("shopPwd",shopPwd); + objectObjectHashMap.put("userId",userld.toString()); + + //sign= MD5(shopAccount+shopPwd+userId) + StringBuffer stringBuffer = new StringBuffer(); + stringBuffer.append(shopAccount); + stringBuffer.append(shopPwd); + stringBuffer.append(userld); + String sign = MD5.MD5Encode(stringBuffer.toString()); + objectObjectHashMap.put("sign",sign); + + System.out.println(sign); + + System.out.println(objectObjectHashMap); + String url = "https://data.muchun.co/api/getCustomerCheckRecords"; + String result = HttpCurlUtil.sendPost(url, objectObjectHashMap); + Integer retCode = JSONUtil.parseObj(result).getInt("retCode"); + String message = JSONUtil.parseObj(result).getStr("message"); + if(0 != retCode){ + System.out.println(message); + } + + JSONArray data = JSONUtil.parseObj(result).getJSONArray("data"); + System.out.println(data); + } + + } -- Gitblit v1.9.1