From f615ec5c9239327740948501627545f8e78e2a9e Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期二, 18 三月 2025 09:07:26 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 147 +++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 119 insertions(+), 28 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java index e139d0f..e99289b 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java @@ -1,8 +1,10 @@ package com.ruoyi.account.controller; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; @@ -31,7 +33,6 @@ import com.ruoyi.other.api.domain.VipSetting; import com.ruoyi.other.api.feignClient.ShopBalanceStatementClient; import com.ruoyi.other.api.feignClient.ShopClient; -import com.ruoyi.other.api.feignClient.StoreClient; import com.ruoyi.other.api.feignClient.VipSettingClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; @@ -73,8 +74,6 @@ @Resource private AppUserService appUserService; @Resource - private StoreClient storeClient; - @Resource private UserCouponService userCouponService; @Resource @@ -83,8 +82,6 @@ private VipSettingClient vipSettingClient; @Resource private UserPointService userPointService; - @Resource - private VipSettingService vipSettingService; @Resource private AppUserMapper appUserMapper; @Resource @@ -108,6 +105,9 @@ @Resource private WeChatUtil weChatUtil; + + @Resource + private IAppUserGiveawayTemporaryService appUserGiveawayTemporaryService; @Value("${file.upload.location}") private String filePath; @@ -172,7 +172,7 @@ @PostMapping("/getCouponCount") public R<Long> getCouponCount(@RequestParam("userId") Long userId, @RequestParam("couponId") Integer couponId) { LambdaQueryChainWrapper<UserCoupon> chainWrapper = userCouponService.lambdaQuery().eq(UserCoupon::getCouponId, couponId); - if(null != userId && -1 == userId){ + if(null != userId && -1 != userId){ chainWrapper.eq(UserCoupon::getAppUserId, userId); } Long count = chainWrapper.count(); @@ -291,6 +291,16 @@ } } + if (user.getShopName() == null){ + user.setShopName(""); + } + if (user.getShopCover() == null){ + user.setShopCover(""); + } + if (user.getShopAddress() == null){ + user.setShopAddress(""); + } + //指导老师 allSuperiors.stream() .filter(superiors -> superiors.getVipId() != null && superiors.getVipId() > 3) @@ -300,12 +310,23 @@ user.setTeacherPhone(superiors.getPhone()); }); + if (user.getTeacher() == null){ + user.setTeacher(""); + } + if (user.getTeacherPhone() == null){ + user.setTeacherPhone(""); + } + + //获取绑定上级 if (user.getInviteUserId() != null) { AppUser byId = appUserService.getById(user.getInviteUserId()); user.setTopUser(byId); + }else { + AppUser topUser = new AppUser(); + user.setTopUser(topUser); } //获取绑定下级列表 List<AppUser> list = appUserService.lambdaQuery() @@ -534,6 +555,11 @@ } else { user.setIsSign(0); } + + List<AppUserGiveawayTemporary> temporaryList = appUserGiveawayTemporaryService.list(new LambdaQueryWrapper<AppUserGiveawayTemporary>() + .eq(AppUserGiveawayTemporary::getAppUserId, userId)); + + user.setLavePoint(temporaryList.stream().mapToInt(AppUserGiveawayTemporary::getTotalPoint).sum() + user.getTotalPoint()); return R.ok(user); } @@ -663,14 +689,42 @@ return R.ok(list); } + + @GetMapping("/getUserPointsPage") + @ApiOperation(value = "用户列表", tags = {"管理后台"}) + public R<IPage<AppUser>> getUserPointsPage(@ApiParam("页码") @RequestParam Integer pageNum, + @ApiParam("每一页数据大小") Integer pageSize, + AppUser appUser) { + + Long userId = tokenService.getLoginUser().getUserid(); + SysUser data = sysUserClient.getSysUser(userId).getData(); + + QueryWrapper<AppUser> queryWrapper = new QueryWrapper<>(); + if (data.getRoleType() == 2) { + Integer shopId = data.getObjectId(); + List<Order> orders = orderClient.getRedeemedOrdersByShop(shopId).getData(); + List<Long> userIds = orders.stream().map(Order::getAppUserId).collect(Collectors.toList()); + queryWrapper.in(!CollectionUtils.isEmpty(userIds), "id", userIds) + .like(StringUtils.isNotEmpty( appUser.getName()),"name", appUser.getName()); + } + queryWrapper.eq("del_flag", 0); + queryWrapper.ne("status", 3); + + List<AppUser> appUserList = appUserService.list(queryWrapper); + Page<AppUser> objectPage = Page.of(pageNum, pageSize); + objectPage.setRecords(appUserList); + return R.ok(objectPage); + + } + /** * 获取用户列表 */ @GetMapping("/getAppuserPage") - @ApiOperation(value = "用户列表", tags = {"管理后台"}) public R<IPage<AppUser>> getAppuserPage(@ApiParam("页码") @RequestParam Integer pageNum, - @ApiParam("每一页数据大小") Integer pageSize, - AppUser appUser) { + @ApiParam("每一页数据大小") Integer pageSize, + AppUser appUser){ + Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = sysUserClient.getSysUser(userid).getData(); Integer shopId = null; @@ -696,6 +750,8 @@ } return R.ok(appuserPage); } + + @GetMapping("/shop/getAppuserPage") @ApiOperation(value = "用户列表", tags = {"门店后台"}) @@ -803,17 +859,17 @@ } private void loginout(Long userId) { + // 获取所有符合模式的缓存键 Collection<String> keys = redisService.keys(CacheConstants.LOGIN_TOKEN_KEY + "*"); - if (!CollectionUtils.isEmpty(keys)) { - for (String key : keys) { - LoginUser user = redisService.getCacheObject(key); - if (user == null || user.getUserid() == null) { - continue; - } - if (user.getUserid().equals(userId)) { - redisService.deleteObject(key); - break; - } + if (CollectionUtils.isEmpty(keys)) { + return; // 如果没有匹配的键,直接返回 + } + + // 遍历所有键并删除与指定用户ID相关的登录信息 + for (String key : keys) { + LoginUser user = redisService.getCacheObject(key); + if (user != null && userId.equals(user.getUserid())) { + redisService.deleteObject(key); } } } @@ -1047,15 +1103,46 @@ @GetMapping("/statistics") @ApiOperation(value = "用户统计", tags = {"管理后台-首页统计-用户统计"}) public R<UserStatistics> statistics() { - Long userid = tokenService.getLoginUser().getUserid(); - SysUser data = sysUserClient.getSysUser(userid).getData(); - Integer shopId = null; - Set<Long> userId = null; - if(data.getRoleType() == 2){ - shopId = data.getObjectId(); - userId = orderClient.getAppUserByShoppingShop(shopId).getData(); + Long userId = tokenService.getLoginUser().getUserid(); + SysUser data = sysUserClient.getSysUser(userId).getData(); + + QueryWrapper<AppUser> queryWrapper = new QueryWrapper<>(); + if (data.getRoleType() == 2) { + Integer shopId = data.getObjectId(); + List<Order> orders = orderClient.getRedeemedOrdersByShop(shopId).getData(); + List<Long> userIds = orders.stream().map(Order::getAppUserId).collect(Collectors.toList()); + queryWrapper.in(!CollectionUtils.isEmpty(userIds), "id", userIds); // userIds 不为空时,查询 id 在 userIds 中 } - UserStatistics userStatistics = appUserMapper.getUserStatistics(shopId, userId); + queryWrapper.eq("del_flag", 0); + queryWrapper.ne("status", 3); + List<AppUser> appUserList = appUserService.list(queryWrapper); + + Map<Integer, Long> vipIdCountMap = appUserList.stream() + .collect(Collectors.groupingBy(AppUser::getVipId, Collectors.counting())); + + UserStatistics userStatistics = new UserStatistics(); + userStatistics.setTotalUser(appUserList.size()); + userStatistics.setConsumerUser(vipIdCountMap.getOrDefault(0, 0L).intValue() + + vipIdCountMap.getOrDefault(1, 0L).intValue() + + vipIdCountMap.getOrDefault(2, 0L).intValue() + + vipIdCountMap.getOrDefault(3, 0L).intValue()); + userStatistics.setCommonUser(vipIdCountMap.getOrDefault(1, 0L).intValue()); + userStatistics.setGoldUser(vipIdCountMap.getOrDefault(2, 0L).intValue()); + userStatistics.setDiamondUser(vipIdCountMap.getOrDefault(3, 0L).intValue()); + userStatistics.setEntrepreneurUser(vipIdCountMap.getOrDefault(4, 0L).intValue() + + vipIdCountMap.getOrDefault(5, 0L).intValue() + + vipIdCountMap.getOrDefault(6, 0L).intValue() + + vipIdCountMap.getOrDefault(7, 0L).intValue()); + userStatistics.setProxyUser(vipIdCountMap.getOrDefault(4, 0L).intValue()); + userStatistics.setAgentUser(vipIdCountMap.getOrDefault(5, 0L).intValue()); + userStatistics.setTotalAgentUser(vipIdCountMap.getOrDefault(6, 0L).intValue()); + userStatistics.setPartnerUser(vipIdCountMap.getOrDefault(7, 0L).intValue()); + + long shopUserCount = appUserList.stream() + .filter(appUser -> appUser.getUserType() == 2) + .count(); + userStatistics.setShopUser((int) shopUserCount); + return R.ok(userStatistics); } @@ -1283,7 +1370,11 @@ public void vipUpgrade(@RequestParam("appUserId") Long appUserId){ appUserService.vipUpgrade(appUserId); } - + + @PostMapping("/vipConsumption") + public void vipConsumption(@RequestParam("appUserId") Long appUserId){ + appUserService.vipConsumption(appUserId); + } /** * 检查会员降级 -- Gitblit v1.7.1