From 810d81a44d78bc3e7c42c2f116cc9968ab04baef Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 07 二月 2025 15:57:28 +0800 Subject: [PATCH] 修改门店首页统计bug --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 196 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 184 insertions(+), 12 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 f422024..e9b6927 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 @@ -12,11 +12,16 @@ import com.ruoyi.account.mapper.AppUserMapper; import com.ruoyi.account.service.*; import com.ruoyi.account.util.ObsUploadUtil; +import com.ruoyi.account.util.weChat.EnvVersion; +import com.ruoyi.account.util.weChat.WeChatUtil; import com.ruoyi.account.vo.*; +import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.core.web.page.PageInfo; +import com.ruoyi.common.redis.service.RedisService; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.order.feignClient.OrderClient; import com.ruoyi.order.feignClient.RemoteOrderGoodsClient; @@ -30,7 +35,10 @@ import com.ruoyi.other.api.feignClient.VipSettingClient; import com.ruoyi.system.api.domain.SysUser; import com.ruoyi.system.api.feignClient.SysUserClient; +import com.ruoyi.system.api.model.LoginUser; import io.swagger.annotations.*; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -57,6 +65,7 @@ @Api(tags = {"登录注册-小程序"}) @RestController @RequestMapping("/app-user") +@Slf4j public class AppUserController extends BaseController { @Resource @@ -92,6 +101,16 @@ private UserCancellationLogService userCancellationLogService; @Resource private BalanceChangeRecordService balanceChangeRecordService; + @Resource + private UserChangeLogService userChangeLogService; + @Resource + private RedisService redisService; + + @Resource + private WeChatUtil weChatUtil; + + @Value("${file.upload.location}") + private String filePath; @ResponseBody @@ -114,6 +133,17 @@ public AppUser getAppUserById(@RequestParam("id") Long id) { return appUserService.getById(id); } + + @PostMapping("/getBaseUserById") + public R<Map<String, Object>> getBaseUserById(@RequestParam("id") Long id) { + AppUser appUser = appUserService.getById(id); + Map<String, Object> map = new HashMap<>(); + map.put("id", appUser.getId()); + map.put("name", appUser.getName()); + map.put("phone", appUser.getPhone()); + return R.ok(map); + } + @ResponseBody @PostMapping("/editAppUserById") @@ -200,6 +230,13 @@ public R<AppUser> info() { Long userId = tokenService.getLoginUserApplet().getUserid(); AppUser user = appUserService.getById(userId); + if(StringUtils.isEmpty(user.getQrCode())){ + //获取微信推广二维码 + String fileName = UUID.randomUUID() + ".jpg"; + String getwxacodeunlimit = weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + user.getId(), EnvVersion.RELEASE, filePath + fileName); + user.setQrCode(getwxacodeunlimit); + appUserService.updateById(user); + } return R.ok(user); } @@ -258,49 +295,87 @@ .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .list(); + + Long vip1Count1 =0L; + Long vip1Count2 =0L; + Long vip1Count3 =0L; + Long vip1Count4 =0L; + Long vip1Count5 =0L; + Long vip1Count6 =0L; + Long vip1Count7 =0L; for (AppUser appUser : list) { + if (appUser.getVipId() == 1){ + vip1Count1++; + } + if (appUser.getVipId() == 2){ + vip1Count2++; + } + if (appUser.getVipId() == 3){ + vip1Count3++; + } + if (appUser.getVipId() == 4){ + vip1Count4++; + } + if (appUser.getVipId() == 5){ + vip1Count5++; + } + if (appUser.getVipId() == 6){ + vip1Count6++; + } + if (appUser.getVipId() == 7){ + vip1Count7++; + } + Long count1 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 1) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); + vip1Count1 += count1; + Long count2 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 2) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); + vip1Count2 += count2; Long count3 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 3) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); + vip1Count3 += count3; Long count4 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 4) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); + vip1Count4 += count4; Long count5 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 5) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); + vip1Count5 += count5; Long count6 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 6) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); + vip1Count6 += count6; Long count7 = appUserService.lambdaQuery() .eq(AppUser::getVipId, 7) .eq(AppUser::getInviteUserId, appUser.getId()) .eq(AppUser::getDelFlag, 0) .ne(AppUser::getStatus, 3) .count(); + vip1Count7 += count7; appUser.setCount1(count1); appUser.setCount2(count2); appUser.setCount3(count3); @@ -310,7 +385,13 @@ appUser.setCount7(count7); } user.setBottomUsers(list); - + user.setCount1(vip1Count1); + user.setCount2(vip1Count2); + user.setCount3(vip1Count3); + user.setCount4(vip1Count4); + user.setCount5(vip1Count5); + user.setCount6(vip1Count6); + user.setCount7(vip1Count7); return R.ok(user); } @@ -449,6 +530,16 @@ .like(AppUser::getName, name)); return R.ok(list); } + /** + * 根据用户名称模糊搜索用户列表,不过滤状态 + */ + @GetMapping("/getAppUserByNameNoFilter") + public R<List<AppUser>> getAppUserByNameNoFilter(@RequestParam("name") String name) { + List<AppUser> list = appUserService.list(new LambdaQueryWrapper<AppUser>() + .like(AppUser::getName, name)); + return R.ok(list); + } + /** * 根据用户电话模糊搜索用户列表 @@ -460,6 +551,15 @@ public R<List<AppUser>> getAppUserByPhone(@RequestParam("phone") String phone) { List<AppUser> list = appUserService.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1) .like(AppUser::getPhone, phone)); + return R.ok(list); + } + + /** + * 更具用户电话模糊查询用户列表,不过滤状态 + */ + @GetMapping("/getAppUserByPhoneNoFilter") + public R<List<AppUser>> getAppUserByPhoneNoFilter(@RequestParam("phone") String phone) { + List<AppUser> list = appUserService.getAppUserByPhoneNoFilter(phone); return R.ok(list); } @@ -596,7 +696,26 @@ AppUser byId = appUserService.getById(id); byId.setStatus(status); appUserService.updateById(byId); + if (status == 2){ + loginout(id); + } return R.ok(); + } + + 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; + } + } + } } @GetMapping("/select") @@ -702,8 +821,21 @@ return R.ok(byId); } - @Resource - private UserChangeLogService userChangeLogService; + /** + * 获取指定用户的下级用户 + */ + @GetMapping("/bottom/list") + @ApiOperation(value = "用户列表-下级用户", tags = {"管理后台"}) + public R<Page<AppUser>> bottom(Integer pageNum, Integer pageSize, Long userId){ + Page<AppUser> page = appUserService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<AppUser>() + .eq(AppUser::getInviteUserId, userId)); + return R.ok(page); + } + + + + + @GetMapping("/change/vip") @ApiOperation(value = "用户列表-修改会员等级", tags = {"管理后台"}) @@ -724,21 +856,24 @@ byId.setVipId(vipId); appUserService.updateById(byId); return R.ok(); - } @GetMapping("/bottom") @ApiOperation(value = "用户列表-绑定下级列表", tags = {"管理后台"}) public R<Page<AppUser>> bottom(Long id, Integer pageNum, Integer pageSize) { //绑定下级 - Page<AppUser> page = appUserService.lambdaQuery().eq(AppUser::getInviteUserId, id).page(Page.of(pageNum, pageSize)); + Page<AppUser> page = appUserService.lambdaQuery() + .eq(AppUser::getInviteUserId, id) + .eq(AppUser::getDelFlag, 0) + .eq(AppUser::getStatus, 1) + .page(Page.of(pageNum, pageSize)); return R.ok(page); } @GetMapping("/orders") @ApiOperation(value = "用户列表-订单列表", tags = {"管理后台"}) - public R<List<Order>> orders(Long id) { + public R<JSONObject> orders(Long id,Integer pageNum, Integer pageSize) { Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = sysUserClient.getSysUser(userid).getData(); Integer shopId = -1; @@ -746,8 +881,27 @@ shopId = sysUser.getObjectId(); } R<List<Order>> listR = remoteOrderGoodsClient.byUserId(id,shopId); - return R.ok(listR.getData()); - + List<Order> data = listR.getData(); + Integer total = data.size(); + // 手动分页 + if (data != null && data.size() > 0) { + if (pageNum == null || pageNum == 0) { + pageNum = 1; + } + if (pageSize == null || pageSize == 0) { + pageSize = 10; + } + data = data.stream() + .skip((pageNum - 1) * pageSize) + .limit(pageSize) + .collect(Collectors.toList()); + } + JSONObject jsonObject = new JSONObject(); + jsonObject.put("records", data); + jsonObject.put("total", total); + jsonObject.put("size", pageSize); + jsonObject.put("current", pageNum); + return R.ok(jsonObject); } @@ -839,13 +993,27 @@ if (cd.getStartTime().isAfter(cd.getEndTime())) { return R.fail("开始时间不能大于结束时间"); } + Long userid = tokenService.getLoginUser().getUserid(); + SysUser sysUser = sysUserClient.getSysUser(userid).getData(); Map<String, Map<Integer, BigDecimal>> dailyVipCommissions = new TreeMap<>(); getDatesBetween(cd.getStartTime(), cd.getEndTime()).forEach(date -> { for (int i = 1; i < 8; i++){ - List<BalanceChangeRecord> list = balanceChangeRecordService.list(new LambdaQueryWrapper<BalanceChangeRecord>() + LambdaQueryWrapper<BalanceChangeRecord> queryWrapper = new LambdaQueryWrapper<BalanceChangeRecord>() .between(BalanceChangeRecord::getCreateTime, date, date.plusDays(1)) - .eq(BalanceChangeRecord::getChangeType,4) - .eq(BalanceChangeRecord::getVipId, i)); + .eq(BalanceChangeRecord::getChangeType, 4) + .eq(BalanceChangeRecord::getVipId, i); + if(sysUser.getRoleType() == 2){ + Integer objectId = sysUser.getObjectId(); + List<AppUser> list = appUserService.list(new LambdaQueryWrapper<AppUser>().eq(AppUser::getShopId, objectId).eq(AppUser::getDelFlag, 0).eq(AppUser::getStatus, 1)); + List<Long> appUserIds = list.stream().map(AppUser::getId).collect(Collectors.toList()); + Set<Long> data = orderClient.getAppUserByShoppingShop(objectId).getData(); + appUserIds.addAll(data); + if(appUserIds.size() == 0){ + appUserIds.add(-1L); + } + queryWrapper.in(BalanceChangeRecord::getAppUserId, appUserIds); + } + List<BalanceChangeRecord> list = balanceChangeRecordService.list(queryWrapper); BigDecimal reduce = list.stream().map(BalanceChangeRecord::getChangeAmount).reduce(BigDecimal.ZERO, BigDecimal::add); String dateKey = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); dailyVipCommissions.computeIfAbsent(dateKey, k -> new HashMap<>()) @@ -853,7 +1021,11 @@ } for (int i = 1; i < 4; i++){ - R<List<ShopBalanceStatement>> r = shopBalanceStatementClient.getShopBalanceStatementList2(i, date); + Integer objectId = 0; + if(sysUser.getRoleType() == 2){ + objectId = sysUser.getObjectId(); + } + R<List<ShopBalanceStatement>> r = shopBalanceStatementClient.getShopBalanceStatementList2(i, objectId, date); if (!CollectionUtils.isEmpty(r.getData())){ List<ShopBalanceStatement> list = r.getData(); BigDecimal reduce = list.stream().map(ShopBalanceStatement::getVariableAmount).reduce(BigDecimal.ZERO, BigDecimal::add); -- Gitblit v1.7.1