| | |
| | | package cc.mrbird.febs.mall.service.impl; |
| | | |
| | | import cc.mrbird.febs.common.configure.FebsConfigure; |
| | | import cc.mrbird.febs.common.entity.FebsResponse; |
| | | import cc.mrbird.febs.common.enumerates.*; |
| | | import cc.mrbird.febs.common.exception.FebsException; |
| | |
| | | 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.dto.memberLevel.*; |
| | | import cc.mrbird.febs.mall.dto.signActivity.ApiNewGiftSettingDto; |
| | | import cc.mrbird.febs.mall.entity.*; |
| | | import cc.mrbird.febs.mall.mapper.*; |
| | | import cc.mrbird.febs.mall.service.*; |
| | | import cc.mrbird.febs.mall.vo.*; |
| | | import cc.mrbird.febs.mall.vo.memberLevel.*; |
| | | import cc.mrbird.febs.mall.vo.sale.ApiSaleRecordInfoVo; |
| | | 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.mapper.MallVipConfigMapper; |
| | | import cn.hutool.core.bean.BeanUtil; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import cn.hutool.core.date.DateTime; |
| | | import cn.hutool.core.date.DateUnit; |
| | | import cn.hutool.core.date.DateUtil; |
| | | import cn.hutool.core.util.IdUtil; |
| | |
| | | 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.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import lombok.RequiredArgsConstructor; |
| | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.*; |
| | | import java.util.concurrent.CompletableFuture; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | |
| | | private final MallDoctorMapper mallDoctorMapper; |
| | | private final HappyMemberLevelMapper happyMemberLevelMapper; |
| | | private final IApiMallMemberWalletService mallMemberWalletService; |
| | | private final HappyMemberLabelRecordMapper happyMemberLabelRecordMapper; |
| | | private final HappyMemberLabelMapper happyMemberLabelMapper; |
| | | private final FebsConfigure febsConfigure; |
| | | |
| | | |
| | | @Value("${spring.profiles.active}") |
| | |
| | | |
| | | HappyMemberLevel happyMemberLevel = happyMemberLevelMapper.selectOne( |
| | | new LambdaQueryWrapper<HappyMemberLevel>() |
| | | .select(HappyMemberLevel::getName) |
| | | .select(HappyMemberLevel::getName, HappyMemberLevel::getIconPng) |
| | | .eq(HappyMemberLevel::getCode, mallMember.getDirector()) |
| | | ); |
| | | if(happyMemberLevel != null){ |
| | |
| | | mallMemberVo.setScore(wallet.getScore()); |
| | | mallMemberVo.setPrizeScore(wallet.getPrizeScore()); |
| | | // mallMemberVo.setTotalCost(mallOrderInfoMapper.selectTotalAmount(id)); |
| | | |
| | | List<HappyMemberLabelRecord> happyMemberLabelRecords = happyMemberLabelRecordMapper.selectList( |
| | | new LambdaQueryWrapper<HappyMemberLabelRecord>() |
| | | .eq(HappyMemberLabelRecord::getMemberId, id) |
| | | .orderByDesc(HappyMemberLabelRecord::getId) |
| | | .last("limit 5") |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyMemberLabelRecords)){ |
| | | Set<Long> collect = happyMemberLabelRecords.stream().map(HappyMemberLabelRecord::getLabelId).collect(Collectors.toSet()); |
| | | List<HappyMemberLabel> happyMemberLabels = happyMemberLabelMapper.selectList( |
| | | new LambdaQueryWrapper<HappyMemberLabel>() |
| | | .select(HappyMemberLabel::getIconPng, HappyMemberLabel::getName) |
| | | .in(HappyMemberLabel::getId, collect) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyMemberLabels)){ |
| | | ArrayList<ApiLabelInfoVo> apiMemberLabelVos = new ArrayList<>(); |
| | | for (HappyMemberLabel happyMemberLabel : happyMemberLabels) { |
| | | ApiLabelInfoVo apiLabelInfoVo = new ApiLabelInfoVo(); |
| | | apiLabelInfoVo.setIconPng(happyMemberLabel.getIconPng()); |
| | | apiLabelInfoVo.setName(happyMemberLabel.getName()); |
| | | apiMemberLabelVos.add(apiLabelInfoVo); |
| | | } |
| | | mallMemberVo.setLabelList(apiMemberLabelVos); |
| | | } |
| | | } |
| | | return new FebsResponse().success().data(mallMemberVo); |
| | | } |
| | | |
| | |
| | | |
| | | //分销员的邀请码赠送优惠卷 |
| | | if (StrUtil.isNotBlank(apiXcxLoginDto.getInviteId())) { |
| | | GetCouponDto getCouponDto = new GetCouponDto(); |
| | | getCouponDto.setInviteId(apiXcxLoginDto.getInviteId()); |
| | | scanCoupon(getCouponDto); |
| | | String couponUUID = IdUtil.simpleUUID(); |
| | | //通过邀请人信息,获取能领取的优惠卷信息 |
| | | MallMember refMember = this.baseMapper.selectInfoByInviteId(apiXcxLoginDto.getInviteId()); |
| | | if(ObjectUtil.isNotEmpty(refMember)){ |
| | | SalemanCoupon salemanCoupon = salemanCouponMapper.selectByMemberId(refMember.getId()); |
| | | if(ObjectUtil.isNotEmpty(salemanCoupon)){ |
| | | Long couponId = salemanCoupon.getCouponId(); |
| | | List<MallMemberCoupon> mallMemberCoupons = mallMemberCouponMapper.selectListByMemberIdCouponIdWithOutInviteId(mallMember.getId(), couponId); |
| | | if(CollUtil.isEmpty(mallMemberCoupons)){ |
| | | //商品优惠卷如果绑定了,那么当前登陆者获取一张卷 |
| | | MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(couponId); |
| | | MallMemberCoupon mallMemberCoupon = new MallMemberCoupon(); |
| | | mallMemberCoupon.setCouponId(couponId); |
| | | mallMemberCoupon.setCouponName(mallGoodsCoupon.getName()); |
| | | mallMemberCoupon.setMemberId(mallMember.getId()); |
| | | mallMemberCoupon.setCouponUuid(couponUUID); |
| | | mallMemberCoupon.setInviteId(refMember.getInviteId()); |
| | | mallMemberCoupon.setState(1); |
| | | mallMemberCoupon.setExpireTime(DateUtil.offsetDay(DateUtil.date(),mallGoodsCoupon.getExpireDay())); |
| | | mallMemberCouponMapper.insert(mallMemberCoupon); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | if (MallMember.ACCOUNT_STATUS_DISABLED.equals(mallMember.getAccountStatus())) { |
| | |
| | | if(apiMemberNewGiftSettingVo.getState() == 1 && apiMemberNewGiftSettingVo.getOpenState() == 1){ |
| | | |
| | | mallMember.setNewGift(1); |
| | | mallMember.setLastLoginTime(new Date()); |
| | | this.baseMapper.updateById(mallMember); |
| | | |
| | | BigDecimal prizeScore = new BigDecimal(StrUtil.isBlank(apiNewGiftSettingDto.getPrizeScore()) ? "0" : apiNewGiftSettingDto.getPrizeScore()) |
| | | .setScale(0, RoundingMode.HALF_DOWN); |
| | |
| | | } |
| | | } |
| | | |
| | | mallMember.setLastLoginTime(new Date()); |
| | | this.baseMapper.updateById(mallMember); |
| | | |
| | | // this.baseMapper.updateLastLoginTime(memberId,new Date()); |
| | | |
| | | return new FebsResponse().success().data(apiMemberNewGiftSettingVo); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse getLabelList() { |
| | | |
| | | // 获取当前登录用户的ID |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | |
| | | ArrayList<ApiMemberLabelVo> apiMemberLabelVos = new ArrayList<>(); |
| | | |
| | | List<HappyMemberLabelRecord> happyMemberLabelRecords = happyMemberLabelRecordMapper.selectList( |
| | | new LambdaQueryWrapper<HappyMemberLabelRecord>() |
| | | .eq(HappyMemberLabelRecord::getMemberId,memberId) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyMemberLabelRecords)){ |
| | | Set<Long> collect = happyMemberLabelRecords.stream().map(HappyMemberLabelRecord::getLabelId).collect(Collectors.toSet()); |
| | | List<HappyMemberLabel> happyMemberLabels = happyMemberLabelMapper.selectList( |
| | | new LambdaQueryWrapper<HappyMemberLabel>() |
| | | .select( HappyMemberLabel::getId, HappyMemberLabel::getCode,HappyMemberLabel::getIconPng, HappyMemberLabel::getName, HappyMemberLabel::getContent, HappyMemberLabel::getHeaderPng) |
| | | .in(HappyMemberLabel::getId, collect) |
| | | .orderByDesc(HappyMemberLabel::getCode) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyMemberLabels)){ |
| | | for (HappyMemberLabel happyMemberLabel : happyMemberLabels) { |
| | | ApiMemberLabelVo apiMemberLabelVo = new ApiMemberLabelVo(); |
| | | apiMemberLabelVo.setId(happyMemberLabel.getId()); |
| | | apiMemberLabelVo.setCode(happyMemberLabel.getCode()); |
| | | apiMemberLabelVo.setName(happyMemberLabel.getName()); |
| | | apiMemberLabelVo.setContent(happyMemberLabel.getContent()); |
| | | apiMemberLabelVo.setHeaderPng(happyMemberLabel.getHeaderPng()); |
| | | apiMemberLabelVo.setIconPng(happyMemberLabel.getIconPng()); |
| | | apiMemberLabelVos.add(apiMemberLabelVo); |
| | | } |
| | | } |
| | | } |
| | | |
| | | return new FebsResponse().success().data(apiMemberLabelVos); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse getLabelListById(ApiMemberLabelInfoDto dto) { |
| | | // 获取当前登录用户的ID |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | |
| | | List<ApiMemberLabelInfoVo> apiMemberLabelInfoVos = new ArrayList<>(); |
| | | |
| | | HappyMemberLabelRecord happyMemberLabelRecord = happyMemberLabelRecordMapper.selectOne( |
| | | Wrappers.lambdaQuery(HappyMemberLabelRecord.class) |
| | | .eq(HappyMemberLabelRecord::getMemberId, memberId) |
| | | .eq(HappyMemberLabelRecord::getLabelId, dto.getId()) |
| | | ); |
| | | if(ObjectUtil.isEmpty(happyMemberLabelRecord)){ |
| | | throw new FebsException("您没有该会员标签"); |
| | | } |
| | | HappyMemberLabel happyMemberLabel = happyMemberLabelMapper.selectById(dto.getId()); |
| | | if(ObjectUtil.isEmpty(happyMemberLabel)){ |
| | | throw new FebsException("您没有该会员标签"); |
| | | } |
| | | if(!ObjectUtil.equal(happyMemberLabel.getCode(),1)){ |
| | | throw new FebsException("没有查看权限"); |
| | | } |
| | | |
| | | List<HappyMemberLabel> happyMemberLabels = happyMemberLabelMapper.selectList( |
| | | Wrappers.lambdaQuery(HappyMemberLabel.class) |
| | | .eq(HappyMemberLabel::getParentId, dto.getId()) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyMemberLabels)){ |
| | | for (HappyMemberLabel happyMemberLabelItem : happyMemberLabels) { |
| | | ApiMemberLabelInfoVo apiMemberLabelInfoVo = new ApiMemberLabelInfoVo(); |
| | | |
| | | apiMemberLabelInfoVo.setId(happyMemberLabelItem.getId()); |
| | | apiMemberLabelInfoVo.setName(happyMemberLabelItem.getName()); |
| | | apiMemberLabelInfoVos.add(apiMemberLabelInfoVo); |
| | | } |
| | | } |
| | | |
| | | return new FebsResponse().success().data(apiMemberLabelInfoVos); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse scoreRecord(ApiScoreRecordInfoDto dto) { |
| | | // 初始化结果列表 |
| | | List<ApiScoreRecordInfoVo> apiSaleRecordInfoVos = new ArrayList<>(); |
| | | |
| | | List<HappyMemberLabel> happyMemberLabels = happyMemberLabelMapper.selectList( |
| | | Wrappers.lambdaQuery(HappyMemberLabel.class) |
| | | .eq(HappyMemberLabel::getCode, 1) |
| | | .eq(HappyMemberLabel::getParentId, 0) |
| | | ); |
| | | if(CollUtil.isEmpty(happyMemberLabels)){ |
| | | return new FebsResponse().success().data(apiSaleRecordInfoVos); |
| | | } |
| | | |
| | | // 获取类型参数 |
| | | Integer type = dto.getType(); |
| | | // 校验类型参数,确保其为1(月)或2(周) |
| | | if (type == null || (type != 1 && type != 2 && type != 3)) { |
| | | return new FebsResponse().fail().message("非法的类型参数"); |
| | | } |
| | | DateTime startTime = DateUtil.beginOfMonth(new Date()); |
| | | if(1 == type){ |
| | | startTime = DateUtil.beginOfMonth(new Date()); |
| | | } |
| | | if(2 == type){ |
| | | startTime = DateUtil.beginOfWeek(new Date()); |
| | | } |
| | | if(3 == type){ |
| | | startTime = DateUtil.beginOfYear(new Date()); |
| | | } |
| | | |
| | | // 合并查询所有子标签 |
| | | Set<Long> parentIds = happyMemberLabels.stream() |
| | | .map(HappyMemberLabel::getId) |
| | | .collect(Collectors.toSet()); |
| | | |
| | | List<HappyMemberLabel> allChildLabels = happyMemberLabelMapper.selectList( |
| | | Wrappers.lambdaQuery(HappyMemberLabel.class) |
| | | .in(HappyMemberLabel::getParentId, parentIds) |
| | | ); |
| | | |
| | | Map<Long, List<HappyMemberLabel>> childLabelMap = new HashMap<>(); |
| | | if (CollUtil.isNotEmpty(allChildLabels)) { |
| | | childLabelMap = allChildLabels.stream() |
| | | .collect(Collectors.groupingBy(HappyMemberLabel::getParentId)); |
| | | } |
| | | |
| | | // 提取所有子标签 ID |
| | | Set<Long> labelIds = allChildLabels.stream() |
| | | .map(HappyMemberLabel::getId) |
| | | .collect(Collectors.toSet()); |
| | | |
| | | // 获取所有绑定关系 |
| | | List<HappyMemberLabelRecord> labelRecords = CollUtil.isEmpty(labelIds) ? Collections.emptyList() : |
| | | happyMemberLabelRecordMapper.selectList( |
| | | Wrappers.lambdaQuery(HappyMemberLabelRecord.class) |
| | | .in(HappyMemberLabelRecord::getLabelId, labelIds) |
| | | ); |
| | | |
| | | Map<Long, Set<Long>> labelToMembersMap = new HashMap<>(); |
| | | if (CollUtil.isNotEmpty(labelRecords)) { |
| | | labelToMembersMap = labelRecords.stream() |
| | | .collect(Collectors.groupingBy( |
| | | HappyMemberLabelRecord::getLabelId, |
| | | Collectors.mapping(HappyMemberLabelRecord::getMemberId, Collectors.toSet()) |
| | | )); |
| | | } |
| | | |
| | | Set<Long> memberIds = labelToMembersMap.values().stream() |
| | | .flatMap(Set::stream) |
| | | .collect(Collectors.toSet()); |
| | | |
| | | // 获取资金流 |
| | | List<MallMoneyFlow> moneyFlows = CollUtil.isEmpty(memberIds) ? Collections.emptyList() : |
| | | mallMoneyFlowMapper.selectList( |
| | | Wrappers.lambdaQuery(MallMoneyFlow.class) |
| | | .select(MallMoneyFlow::getAmount, MallMoneyFlow::getMemberId) |
| | | .in(MallMoneyFlow::getMemberId, memberIds) |
| | | .eq(MallMoneyFlow::getFlowType, FlowTypeEnum.PRIZE_SCORE.getValue()) |
| | | .gt(MallMoneyFlow::getAmount, BigDecimal.ZERO) |
| | | .ge(MallMoneyFlow::getCreatedTime, startTime) |
| | | ); |
| | | |
| | | Map<Long, BigDecimal> memberScoreMap = new HashMap<>(); |
| | | if (CollUtil.isNotEmpty(moneyFlows)) { |
| | | memberScoreMap = moneyFlows.stream() |
| | | .collect(Collectors.groupingBy( |
| | | MallMoneyFlow::getMemberId, |
| | | Collectors.mapping(MallMoneyFlow::getAmount, Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)) |
| | | )); |
| | | } |
| | | |
| | | List<CompletableFuture<ApiScoreRecordInfoVo>> futures = new ArrayList<>(); |
| | | |
| | | Map<Long, List<HappyMemberLabel>> finalChildLabelMap = childLabelMap; |
| | | Map<Long, Set<Long>> finalLabelToMembersMap = labelToMembersMap; |
| | | Map<Long, BigDecimal> finalMemberScoreMap = memberScoreMap; |
| | | happyMemberLabels.forEach(item -> { |
| | | CompletableFuture<ApiScoreRecordInfoVo> uCompletableFuture = CompletableFuture.supplyAsync(() -> { |
| | | ApiScoreRecordInfoVo vo = new ApiScoreRecordInfoVo(); |
| | | vo.setName(item.getName()); |
| | | vo.setAvatar(item.getIconPng()); |
| | | vo.setScore(BigDecimal.ZERO); |
| | | |
| | | List<HappyMemberLabel> children = finalChildLabelMap.getOrDefault(item.getId(), Collections.emptyList()); |
| | | if (CollUtil.isEmpty(children)) { |
| | | return vo; |
| | | } |
| | | |
| | | Set<Long> childIds = children.stream().map(HappyMemberLabel::getId).collect(Collectors.toSet()); |
| | | Set<Long> members = new HashSet<>(); |
| | | for (Long childId : childIds) { |
| | | Set<Long> ids = finalLabelToMembersMap.getOrDefault(childId, Collections.emptySet()); |
| | | members.addAll(ids); |
| | | } |
| | | |
| | | if (CollUtil.isEmpty(members)) { |
| | | return vo; |
| | | } |
| | | |
| | | BigDecimal total = BigDecimal.ZERO; |
| | | for (Long memberId : members) { |
| | | total = total.add(finalMemberScoreMap.getOrDefault(memberId, BigDecimal.ZERO)); |
| | | } |
| | | vo.setScore(total.setScale(0, RoundingMode.DOWN)); |
| | | return vo; |
| | | }, febsConfigure.asyncThreadPoolTaskExecutor()).exceptionally(ex -> { |
| | | // 异常兜底返回默认值 |
| | | ApiScoreRecordInfoVo vo = new ApiScoreRecordInfoVo(); |
| | | vo.setName(item.getName()); |
| | | vo.setAvatar(item.getIconPng()); |
| | | vo.setScore(BigDecimal.ZERO); |
| | | return vo; |
| | | }); |
| | | |
| | | futures.add(uCompletableFuture); |
| | | }); |
| | | // 等待所有任务完成 |
| | | CompletableFuture<Void> allOf = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); |
| | | allOf.join(); // 阻塞直到所有任务完成 |
| | | |
| | | //等任务结束,获取返回结果 |
| | | apiSaleRecordInfoVos = futures.stream() |
| | | .map(CompletableFuture::join) |
| | | .sorted(Comparator.comparing(ApiScoreRecordInfoVo::getScore).reversed()) |
| | | .collect(Collectors.toList()); |
| | | |
| | | |
| | | // 返回成功响应,包含销售记录信息 |
| | | return new FebsResponse().success().data(apiSaleRecordInfoVos); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse getMemberLabelListById(ApiMemberLabelItemDto dto) { |
| | | |
| | | // 获取当前登录用户的ID |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | |
| | | List<ApiMemberLabelItemVo> apiMemberLabelItemVos = new ArrayList<>(); |
| | | |
| | | Integer labelId = dto.getLabelId(); |
| | | List<HappyMemberLabelRecord> happyMemberLabelRecords = happyMemberLabelRecordMapper.selectList( |
| | | Wrappers.lambdaQuery(HappyMemberLabelRecord.class) |
| | | .eq(HappyMemberLabelRecord::getLabelId, labelId) |
| | | ); |
| | | if(CollUtil.isNotEmpty(happyMemberLabelRecords)){ |
| | | |
| | | //stream流操作happyMemberLabelRecords,返回memberId的set集合 |
| | | Set<Long> memberIdSet = happyMemberLabelRecords.stream().map(HappyMemberLabelRecord::getMemberId).collect(Collectors.toSet()); |
| | | List<MallMember> mallMembers = this.baseMapper.selectList( |
| | | Wrappers.lambdaQuery(MallMember.class) |
| | | .select(MallMember::getId, MallMember::getName, MallMember::getPhone, MallMember::getAvatar) |
| | | .in(MallMember::getId, memberIdSet) |
| | | .eq(MallMember::getAccountStatus, MallMember.ACCOUNT_STATUS_ENABLE) |
| | | ); |
| | | |
| | | List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList( |
| | | Wrappers.lambdaQuery(MallMoneyFlow.class) |
| | | .select(MallMoneyFlow::getAmount, MallMoneyFlow::getMemberId) |
| | | .in(MallMoneyFlow::getMemberId, memberIdSet) |
| | | .eq(MallMoneyFlow::getFlowType, FlowTypeEnum.PRIZE_SCORE.getValue()) |
| | | .gt(MallMoneyFlow::getAmount, BigDecimal.ZERO) |
| | | ); |
| | | //stream流操作mallMoneyFlows,返回一个map<Long,BigDecimal>,其中key为memberId,value为mallMoneyFlow的memberId等于key的amount的总和 |
| | | Map<Long, BigDecimal> prizeScoreMap = mallMoneyFlows.stream() |
| | | .filter(Objects::nonNull) // 防止 MallMoneyFlow 为 null |
| | | .collect(Collectors.groupingBy( |
| | | MallMoneyFlow::getMemberId, |
| | | Collectors.mapping( |
| | | MallMoneyFlow::getAmount, |
| | | Collectors.reducing(BigDecimal.ZERO, BigDecimal::add) |
| | | ) |
| | | )); |
| | | for (MallMember mallMember : mallMembers){ |
| | | ApiMemberLabelItemVo apiMemberLabelItemVo = new ApiMemberLabelItemVo(); |
| | | apiMemberLabelItemVo.setName(mallMember.getName()); |
| | | apiMemberLabelItemVo.setAvatar(mallMember.getAvatar()); |
| | | apiMemberLabelItemVo.setPhone(mallMember.getPhone()); |
| | | apiMemberLabelItemVo.setScore(prizeScoreMap.get(mallMember.getId()).setScale(0,RoundingMode.DOWN)); |
| | | apiMemberLabelItemVos.add(apiMemberLabelItemVo); |
| | | } |
| | | } |
| | | |
| | | return new FebsResponse().success().data(apiMemberLabelItemVos); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse addLabelMember(ApiMemberLabelAddDto dto) { |
| | | |
| | | // 获取当前登录用户的ID |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | |
| | | ApiMemberLabelAddVo apiMemberLabelAddVo = new ApiMemberLabelAddVo(); |
| | | |
| | | Integer labelId = dto.getLabelId(); |
| | | String phone = dto.getPhone(); |
| | | |
| | | List<MallMember> mallMembers = this.baseMapper.selectList( |
| | | Wrappers.lambdaQuery(MallMember.class) |
| | | .eq(MallMember::getPhone, phone) |
| | | ); |
| | | if(CollUtil.isEmpty(mallMembers)){ |
| | | throw new FebsException("未查询到用户"); |
| | | } |
| | | |
| | | MallMember mallMember = mallMembers.get(0); |
| | | apiMemberLabelAddVo.setMemberId(mallMember.getId()); |
| | | apiMemberLabelAddVo.setName(mallMember.getName()); |
| | | apiMemberLabelAddVo.setPhone(mallMember.getPhone()); |
| | | |
| | | HappyMemberLabel happyMemberLabel = happyMemberLabelMapper.selectById(labelId); |
| | | apiMemberLabelAddVo.setLabelId(happyMemberLabel.getId()); |
| | | apiMemberLabelAddVo.setLabelName(happyMemberLabel.getName()); |
| | | |
| | | //获取会员标签 |
| | | Integer integer = happyMemberLabelRecordMapper.selectCount( |
| | | Wrappers.lambdaQuery(HappyMemberLabelRecord.class) |
| | | .eq(HappyMemberLabelRecord::getMemberId, mallMember.getId()) |
| | | .eq(HappyMemberLabelRecord::getLabelId, labelId) |
| | | ); |
| | | if(integer > 0){ |
| | | apiMemberLabelAddVo.setState(0); |
| | | }else{ |
| | | apiMemberLabelAddVo.setState(1); |
| | | } |
| | | return new FebsResponse().success().data(apiMemberLabelAddVo); |
| | | } |
| | | |
| | | @Override |
| | | public FebsResponse insureLabelMember(ApiMemberLabelInsureDto dto) { |
| | | |
| | | // 获取当前登录用户的ID |
| | | Long memberId = LoginUserUtil.getLoginUser().getId(); |
| | | Long labelId = dto.getLabelId(); |
| | | Long insureMemberId = dto.getMemberId(); |
| | | |
| | | HappyMemberLabel happyMemberLabel = happyMemberLabelMapper.selectById(labelId); |
| | | if(ObjectUtil.isEmpty(happyMemberLabel)){ |
| | | throw new FebsException("会员标签不存在"); |
| | | } |
| | | if(happyMemberLabel.getParentId() == 0){ |
| | | throw new FebsException("会员标签不存在"); |
| | | } |
| | | |
| | | Long parentId = happyMemberLabel.getParentId(); |
| | | HappyMemberLabel happyMemberLabelParent = happyMemberLabelMapper.selectById(parentId); |
| | | if(ObjectUtil.isEmpty(happyMemberLabelParent)){ |
| | | throw new FebsException("会员标签不存在"); |
| | | } |
| | | if(happyMemberLabelParent.getCode() != 1){ |
| | | throw new FebsException("权限不足"); |
| | | } |
| | | |
| | | List<HappyMemberLabelRecord> happyMemberLabelRecordsParent = happyMemberLabelRecordMapper.selectList( |
| | | Wrappers.lambdaQuery(HappyMemberLabelRecord.class) |
| | | .eq(HappyMemberLabelRecord::getMemberId, memberId) |
| | | .eq(HappyMemberLabelRecord::getLabelId, parentId) |
| | | ); |
| | | if(ObjectUtil.isEmpty(happyMemberLabelRecordsParent)){ |
| | | throw new FebsException("权限不足"); |
| | | } |
| | | |
| | | |
| | | List<HappyMemberLabelRecord> happyMemberLabelRecords = happyMemberLabelRecordMapper.selectList( |
| | | Wrappers.lambdaQuery(HappyMemberLabelRecord.class) |
| | | .eq(HappyMemberLabelRecord::getMemberId, insureMemberId) |
| | | .eq(HappyMemberLabelRecord::getLabelId, labelId) |
| | | ); |
| | | if(CollUtil.isEmpty(happyMemberLabelRecords)){ |
| | | HappyMemberLabelRecord happyMemberLabelRecord = new HappyMemberLabelRecord(); |
| | | happyMemberLabelRecord.setMemberId(insureMemberId); |
| | | happyMemberLabelRecord.setLabelId(labelId); |
| | | happyMemberLabelRecordMapper.insert(happyMemberLabelRecord); |
| | | } |
| | | |
| | | return new FebsResponse().success().message("操作成功"); |
| | | } |
| | | |
| | | // public static void main(String[] args) { |
| | | // Long userld = 16425L; |
| | | // String shopAccount = "爱和美医疗"; |