| | |
| | | import com.ruoyi.account.service.VipCenterService; |
| | | import com.ruoyi.account.service.VipSettingService; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.exception.ServiceException; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; |
| | | import com.ruoyi.order.model.Order; |
| | | import com.ruoyi.other.api.domain.Goods; |
| | | import com.ruoyi.other.api.domain.Shop; |
| | | import com.ruoyi.other.api.domain.VipGood; |
| | | import com.ruoyi.other.api.domain.VipSetting; |
| | | import com.ruoyi.other.api.feignClient.ShopClient; |
| | | import com.ruoyi.other.api.feignClient.VipGoodClient; |
| | | import com.ruoyi.system.api.model.LoginUser; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | |
| | | private VipGoodClient vipGoodClient; |
| | | @Resource |
| | | private VipSettingService vipSettingService; |
| | | @Resource |
| | | private ShopClient shopClient; |
| | | @Resource |
| | | private TokenService tokenService; |
| | | |
| | | |
| | | @Override |
| | | public Boolean checkReadyToBeProxy(Long userId,Integer vipId) { |
| | |
| | | Integer sharePoint = appUser.getSharePoint(); |
| | | // 准代理会员设置 |
| | | VipSetting vipSetting = vipSettingService.getVipSettingById(4); |
| | | // 消费积分阈值 |
| | | Integer vipLevelUpShop = vipSetting.getVipLevelUpShop(); |
| | | // 返佣积分阈值 |
| | | Integer vipLevelUpShare = vipSetting.getVipLevelUpShare(); |
| | | if (shopPoint >=vipLevelUpShop && sharePoint >= vipLevelUpShare){ |
| | | return true; |
| | | // 获取通过消费积分达成会员等级的开关 |
| | | Integer vipLevelUpShopRole = vipSetting.getVipLevelUpShopRole(); |
| | | if (vipLevelUpShopRole == 1){ |
| | | // 消费积分阈值 |
| | | Integer vipLevelUpShop = vipSetting.getVipLevelUpShop(); |
| | | // 返佣积分阈值 |
| | | Integer vipLevelUpShare = vipSetting.getVipLevelUpShare(); |
| | | // 判断是否满足消费积分和返佣积分 |
| | | if (shopPoint >=vipLevelUpShop && sharePoint >= vipLevelUpShare){ |
| | | return true; |
| | | } |
| | | } |
| | | // 直推钻石用户数阈值 |
| | | Integer vipDirectNum = vipSetting.getVipDirectNum(); |
| | | // 获取用户直推钻石用户数量 |
| | | long userDiamondsCount = appUserService.count(new LambdaQueryWrapper<AppUser>() |
| | | .eq(AppUser::getInviteUserId, userId) |
| | | .eq(AppUser::getVipId, 3)); |
| | | |
| | | Integer vipLevelUpNumRole = vipSetting.getVipLevelUpNumRole(); |
| | | if (vipLevelUpNumRole == 1){ |
| | | // 直推钻石用户数阈值 |
| | | Integer vipDirectNum = vipSetting.getVipDirectNum(); |
| | | // 获取用户直推钻石用户数量 |
| | | long userDiamondsCount = appUserService.count(new LambdaQueryWrapper<AppUser>() |
| | | .eq(AppUser::getInviteUserId, userId) |
| | | .eq(AppUser::getVipId, 3)); |
| | | // 判断是否满足直推钻石用户数量 |
| | | if (userDiamondsCount >= vipDirectNum){ |
| | | return true; |
| | | } |
| | | } |
| | | // 获取指定购买商品 |
| | | R<List<VipGood>> vipGoodsByVipId = vipGoodClient.getVipGoodsByVipId(4); |
| | | if (R.isSuccess(vipGoodsByVipId)){ |
| | | List<VipGood> vipGoods = vipGoodsByVipId.getData(); |
| | | if (CollectionUtil.isNotEmpty(vipGoods)){ |
| | | for (VipGood vipGood : vipGoods) { |
| | | String goodJson = vipGood.getGoodJson(); |
| | | Goods goods = JSONObject.parseObject(goodJson, Goods.class); |
| | | R<List<Order>> orderListByUserIdAndGoodsId = remoteOrderGoodsClient.getOrderListByUserIdAndGoodsId(userId, goods.getId()); |
| | | if (R.isSuccess(orderListByUserIdAndGoodsId)){ |
| | | List<Order> orderList = orderListByUserIdAndGoodsId.getData(); |
| | | if (CollectionUtil.isEmpty(orderList)){ |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean checkReadyToBeAgent(Long userId) { |
| | | AppUser appUser = appUserService.getById(userId); |
| | | // 消费积分 |
| | | Integer shopPoint = appUser.getShopPoint(); |
| | | // 返佣积分 |
| | | Integer sharePoint = appUser.getSharePoint(); |
| | | // 代理会员设置 |
| | | VipSetting vipSetting = vipSettingService.getVipSettingById(5); |
| | | // 获取通过消费积分达成会员等级的开关 |
| | | Integer vipLevelUpShopRole = vipSetting.getVipLevelUpShopRole(); |
| | | if (vipLevelUpShopRole == 1){ |
| | | // 消费积分阈值 |
| | | Integer vipLevelUpShop = vipSetting.getVipLevelUpShop(); |
| | | // 返佣积分阈值 |
| | | Integer vipLevelUpShare = vipSetting.getVipLevelUpShare(); |
| | | // 判断是否满足消费积分和返佣积分 |
| | | if (shopPoint >=vipLevelUpShop && sharePoint >= vipLevelUpShare){ |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | Integer vipLevelUpNumRole = vipSetting.getVipLevelUpNumRole(); |
| | | if (vipLevelUpNumRole == 1){ |
| | | // 直推钻石用户数阈值 |
| | | Integer vipDirectNum = vipSetting.getVipDirectNum(); |
| | | // 获取用户直推钻石用户数量 |
| | | long userDiamondsCount = appUserService.count(new LambdaQueryWrapper<AppUser>() |
| | | .eq(AppUser::getInviteUserId, userId) |
| | | .eq(AppUser::getVipId, 3)); |
| | | // 判断是否满足直推钻石用户数量 |
| | | if (userDiamondsCount >= vipDirectNum){ |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | R<List<VipGood>> vipGoodsByVipId = vipGoodClient.getVipGoodsByVipId(5); |
| | | if (R.isSuccess(vipGoodsByVipId)){ |
| | | List<VipGood> vipGoods = vipGoodsByVipId.getData(); |
| | | if (CollectionUtil.isNotEmpty(vipGoods)){ |
| | | for (VipGood vipGood : vipGoods) { |
| | | String goodJson = vipGood.getGoodJson(); |
| | | Goods goods = JSONObject.parseObject(goodJson, Goods.class); |
| | | R<List<Order>> orderListByUserIdAndGoodsId = remoteOrderGoodsClient.getOrderListByUserIdAndGoodsId(userId, goods.getId()); |
| | | if (R.isSuccess(orderListByUserIdAndGoodsId)){ |
| | | List<Order> orderList = orderListByUserIdAndGoodsId.getData(); |
| | | if (CollectionUtil.isEmpty(orderList)){ |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean checkReadyToBeTotalAgent(Long userId) { |
| | | AppUser appUser = appUserService.getById(userId); |
| | | // 获取总代会员设置 |
| | | VipSetting vipSetting = vipSettingService.getVipSettingById(6); |
| | | // 获取会员等级是否必须达到代理 |
| | | Integer vipLevelUpProxyRole = vipSetting.getVipLevelUpProxyRole(); |
| | | if (vipLevelUpProxyRole == 1 && appUser.getVipId() == 5){ |
| | | return true; |
| | | } |
| | | |
| | | // 消费积分 |
| | | Integer shopPoint = appUser.getShopPoint(); |
| | | // 返佣积分 |
| | | Integer sharePoint = appUser.getSharePoint(); |
| | | // 获取通过消费积分达成会员等级的开关 |
| | | Integer vipLevelUpShopRole = vipSetting.getVipLevelUpShopRole(); |
| | | if (vipLevelUpShopRole == 1){ |
| | | // 消费积分阈值 |
| | | Integer vipLevelUpShop = vipSetting.getVipLevelUpShop(); |
| | | // 返佣积分阈值 |
| | | Integer vipLevelUpShare = vipSetting.getVipLevelUpShare(); |
| | | // 判断是否满足消费积分和返佣积分 |
| | | if (shopPoint >=vipLevelUpShop && sharePoint >= vipLevelUpShare){ |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | Integer vipLevelUpNumRole = vipSetting.getVipLevelUpNumRole(); |
| | | if (vipLevelUpNumRole == 1){ |
| | | // 直推代理用户数阈值 |
| | | Integer vipDirectNum = vipSetting.getVipDirectNum(); |
| | | // 准代理用户数阈值 |
| | | Integer vipDirectVipNum = vipSetting.getVipDirectVipNum(); |
| | | // 获取用户直推代理用户数量 |
| | | List<AppUser> userAgentList = appUserService.list(new LambdaQueryWrapper<AppUser>() |
| | | .eq(AppUser::getInviteUserId, userId) |
| | | .eq(AppUser::getVipId, 5)); |
| | | |
| | | // 代理下的准代理数量 |
| | | List<Long> userQuasiAgent = userAgentList.stream().map(AppUser::getId).collect(Collectors.toList()); |
| | | long userQuasiAgentCount = appUserService.count(new LambdaQueryWrapper<AppUser>() |
| | | .in(AppUser::getInviteUserId, userQuasiAgent) |
| | | .eq(AppUser::getVipId, 4)); |
| | | |
| | | // 判断是否满足直推代理用户数量和准代理数量 |
| | | if (userAgentList.size() >= vipDirectNum && userQuasiAgentCount >= vipDirectVipNum){ |
| | | return true; |
| | | } |
| | | } |
| | | // 获取指定购买商品 |
| | | R<List<VipGood>> vipGoodsByVipId = vipGoodClient.getVipGoodsByVipId(5); |
| | | if (R.isSuccess(vipGoodsByVipId)){ |
| | | List<VipGood> vipGoods = vipGoodsByVipId.getData(); |
| | | if (CollectionUtil.isNotEmpty(vipGoods)){ |
| | | for (VipGood vipGood : vipGoods) { |
| | | String goodJson = vipGood.getGoodJson(); |
| | | Goods goods = JSONObject.parseObject(goodJson, Goods.class); |
| | | R<List<Order>> orderListByUserIdAndGoodsId = remoteOrderGoodsClient.getOrderListByUserIdAndGoodsId(userId, goods.getId()); |
| | | if (R.isSuccess(orderListByUserIdAndGoodsId)){ |
| | | List<Order> orderList = orderListByUserIdAndGoodsId.getData(); |
| | | if (CollectionUtil.isEmpty(orderList)){ |
| | | return false; |
| | | } |
| | | } |
| | | } |
| | | return true; |
| | | } |
| | | } |
| | | |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean checkReadyToBePartner(Long userId) { |
| | | AppUser appUser = appUserService.getById(userId); |
| | | // 消费积分 |
| | | Integer shopPoint = appUser.getShopPoint(); |
| | | // 返佣积分 |
| | | Integer sharePoint = appUser.getSharePoint(); |
| | | // 合伙人会员设置 |
| | | VipSetting vipSetting = vipSettingService.getVipSettingById(7); |
| | | // 获取通过消费积分达成会员等级的开关 |
| | | Integer vipLevelUpShopRole = vipSetting.getVipLevelUpShopRole(); |
| | | if (vipLevelUpShopRole == 1){ |
| | | // 消费积分阈值 |
| | | Integer vipLevelUpShop = vipSetting.getVipLevelUpShop(); |
| | | // 返佣积分阈值 |
| | | Integer vipLevelUpShare = vipSetting.getVipLevelUpShare(); |
| | | // 判断是否满足消费积分和返佣积分 |
| | | if (shopPoint >=vipLevelUpShop && sharePoint >= vipLevelUpShare){ |
| | | return true; |
| | | } |
| | | |
| | | Integer vipLevelUpNumRole = vipSetting.getVipLevelUpNumRole(); |
| | | if (vipLevelUpNumRole == 1){ |
| | | // 直推代理用户数阈值 |
| | | Integer vipDirectNum = vipSetting.getVipDirectNum(); |
| | | // 准代理用户数阈值 |
| | | Integer vipDirectVipNum = vipSetting.getVipDirectVipNum(); |
| | | // 总代用户数阈值 |
| | | Integer vipTeamVipNum = vipSetting.getVipTeamVipNum(); |
| | | // 获取开店数量阈值 |
| | | Integer vipOpenShopNum = vipSetting.getVipOpenShopNum(); |
| | | |
| | | // 获取直推用户有超过指定门店数量的用户 |
| | | List<Long> userShopList = appUserService.list(new LambdaQueryWrapper<AppUser>() |
| | | .eq(AppUser::getInviteUserId, userId)) |
| | | .stream().map(AppUser::getId).collect(Collectors.toList()); |
| | | if (CollectionUtil.isNotEmpty(userShopList)){ |
| | | R<List<Shop>> r = shopClient.getShopByUserIds(userShopList); |
| | | List<Shop> shopList = r.getData(); |
| | | if (CollectionUtil.isNotEmpty(shopList)){ |
| | | Map<Long, List<Shop>> shopUserMap = shopList.stream().collect(Collectors.groupingBy(Shop::getAppUserId)); |
| | | |
| | | // 查找 list 长度大于 3 的 key |
| | | Set<Long> shopUserIdSet = shopUserMap.entrySet().stream() |
| | | .filter(entry -> entry.getValue().size() >= vipOpenShopNum) |
| | | .map(Map.Entry::getKey) |
| | | .collect(Collectors.toSet()); |
| | | |
| | | // 获取用户直推总代理数量 |
| | | List<AppUser> userTotalAgentList = appUserService.list(new LambdaQueryWrapper<AppUser>() |
| | | .in(AppUser::getInviteUserId, shopUserIdSet) |
| | | .eq(AppUser::getVipId, 6)); |
| | | |
| | | // 获取用户直推代理用户数量 |
| | | List<AppUser> userAgentList = appUserService.list(new LambdaQueryWrapper<AppUser>() |
| | | .in(AppUser::getInviteUserId, shopUserIdSet) |
| | | .eq(AppUser::getVipId, 5)); |
| | | |
| | | // 代理下的准代理数量 |
| | | List<Long> userQuasiAgent = userAgentList.stream().map(AppUser::getId).collect(Collectors.toList()); |
| | | long userQuasiAgentCount = appUserService.count(new LambdaQueryWrapper<AppUser>() |
| | | .in(AppUser::getInviteUserId, userQuasiAgent) |
| | | .eq(AppUser::getVipId, 4)); |
| | | |
| | | // 判断是否满足直推代理用户数量和准代理数量 |
| | | return userTotalAgentList.size() >= vipTeamVipNum && userAgentList.size() >= vipDirectNum && |
| | | userQuasiAgentCount >= vipDirectVipNum; |
| | | |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public Boolean check(Integer type) { |
| | | LoginUser loginUser = tokenService.getLoginUser(); |
| | | Long userid = loginUser.getUserid(); |
| | | if (type == 4){ |
| | | return checkReadyToBeProxy(userid, type); |
| | | }else if (type == 5){ |
| | | return checkReadyToBeAgent(userid); |
| | | }else if (type == 6){ |
| | | return checkReadyToBeTotalAgent(userid); |
| | | }else if (type == 7){ |
| | | return checkReadyToBePartner(userid); |
| | | }else { |
| | | throw new ServiceException("参数错误"); |
| | | } |
| | | } |
| | | } |