From e4eaabefaaa2ca95f809c47a11712c3bee56e1b5 Mon Sep 17 00:00:00 2001 From: luofl <1442745593@qq.com> Date: 星期四, 20 二月 2025 15:07:09 +0800 Subject: [PATCH] 修改物流信息导入模板 --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/AppUserController.java | 253 ++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 204 insertions(+), 49 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 3810f15..7f61832 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,6 +1,7 @@ package com.ruoyi.account.controller; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -36,6 +37,7 @@ 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.*; @@ -63,6 +65,7 @@ @Api(tags = {"登录注册-小程序"}) @RestController @RequestMapping("/app-user") +@Slf4j public class AppUserController extends BaseController { @Resource @@ -128,6 +131,7 @@ @PostMapping("/getAppUserById") public AppUser getAppUserById(@RequestParam("id") Long id) { + System.out.println("根据id获取用户:"+id); return appUserService.getById(id); } @@ -230,7 +234,7 @@ if(StringUtils.isEmpty(user.getQrCode())){ //获取微信推广二维码 String fileName = UUID.randomUUID() + ".jpg"; - String getwxacodeunlimit = weChatUtil.getwxacodeunlimit("pages/login/login", "id=" + user.getId(), EnvVersion.RELEASE, filePath + fileName); + String getwxacodeunlimit = weChatUtil.getwxacodeunlimit("pages/start/start", "id=" + user.getId(), EnvVersion.RELEASE, filePath + fileName); user.setQrCode(getwxacodeunlimit); appUserService.updateById(user); } @@ -396,13 +400,42 @@ @GetMapping("/change") @ApiOperation(value = "推广中心", tags = {"小程序-推广中心"}) public R<AppUser> change(@ApiParam("换绑用户手机号") String phone) { + Long userId1 = tokenService.getLoginUserApplet().getUserid(); AppUser byId = appUserService.getById(userId1); + + + +// List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>() +// .eq(AppUser::getInviteUserId, userId1) +// .eq(AppUser::getPhone, phone)); +// if (!CollectionUtils.isEmpty(appUserList)){ +// return R.fail("绑定关系已存在!"); +// } //获取绑定门店 - AppUser user = appUserService.lambdaQuery().eq(AppUser::getPhone, phone).one(); + AppUser user = appUserService.lambdaQuery() + .eq(AppUser::getPhone, phone) + .eq(AppUser::getDelFlag, 0) + .eq(AppUser::getStatus, 1) + .one(); + + + // 获取当前用户的所有下级 + List<AppUser> allSubordinates = getAllSubordinates(byId.getId()); + long count = allSubordinates.stream().filter(appUser -> appUser.getId().equals(user.getId())).count(); + if (count > 0) { + return R.fail("绑定关系已存在!"); + } + if (user == null) { return R.fail("当前手机号未注册"); } + + Long userId = user.getId(); + if (userId.equals(byId.getId())) { + return R.fail("不能选择自己为绑定人。"); + } + byId.setInviteUserId(user.getId()); appUserService.updateById(byId); return R.ok(); @@ -415,6 +448,14 @@ 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/start/start", "id=" + user.getId(), EnvVersion.RELEASE, filePath + fileName); + user.setQrCode(getwxacodeunlimit); + appUserService.updateById(user); + } + //当前用户的推荐人信息 if (user.getInviteUserId() != null) { AppUser inviteUser = appUserService.getById(user.getInviteUserId()); @@ -428,27 +469,45 @@ user.setShopName(shop.getName()); } } - List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>() - .ne(AppUser::getStatus, 3) - .eq(AppUser::getDelFlag, 0)); ArrayList<Long> userIds = new ArrayList<>(); userIds.add(userId); - getUserAncestorList(user,userIds,new ArrayList<>(),appUserList); -// Long count1 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 1).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); -// Long count2 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 2).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); -// Long count3 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 3).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); -// Long count4 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 4).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); -// Long count5 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 5).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); -// Long count6 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 6).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); -// Long count7 = appUserService.lambdaQuery().ne(AppUser::getStatus,3).eq(AppUser::getVipId, 7).eq(AppUser::getInviteUserId, userId).or().eq(AppUser::getTopInviteId,userId).count(); -// user.setCount1(count1); -// user.setCount2(count2); -// user.setCount3(count3); -// user.setCount4(count4); -// user.setCount5(count5); -// user.setCount6(count6); -// user.setCount7(count7); - + // 获取当前用户的所有下级 + List<AppUser> allSubordinates = getAllSubordinates(userId); + // 统计下级中每种会员类型的人数 + Map<Integer, Long> countMap = allSubordinates.stream() + .collect(Collectors.groupingBy(AppUser::getVipId, Collectors.counting())); + countMap.forEach((vipId, count) -> { + switch (vipId) { + case 1: + Long count1 = user.getCount1() == null ? 0 : user.getCount1(); + user.setCount1(count1 + count); + break; + case 2: + Long count2 = user.getCount2() == null ? 0 : user.getCount2(); + user.setCount2(count2 + count); + break; + case 3: + Long count3 = user.getCount3() == null ? 0 : user.getCount3(); + user.setCount3(count3 + count); + break; + case 4: + Long count4 = user.getCount4() == null ? 0 : user.getCount4(); + user.setCount4(count4 + count); + break; + case 5: + Long count5 = user.getCount5() == null ? 0 : user.getCount5(); + user.setCount5(count5 + count); + break; + case 6: + Long count6 = user.getCount6() == null ? 0 : user.getCount6(); + user.setCount6(count6 + count); + break; + case 7: + Long count7 = user.getCount7() == null ? 0 : user.getCount7(); + user.setCount7(count7 + count); + break; + } + }); List<UserSignRecord> list = userSignRecordService.lambdaQuery().eq(UserSignRecord::getSignDay, LocalDate.now()) .eq(UserSignRecord::getAppUserId,userId).list(); if (!list.isEmpty()) { @@ -458,20 +517,26 @@ } return R.ok(user); } - public void getUserAncestorList(AppUser user,List<Long> userIds, List<AppUser> children,List<AppUser> list) { - children = list.stream().filter(u -> userIds.contains(u.getInviteUserId()) || userIds.contains(u.getTopInviteId())).collect(Collectors.toList()); - if(!CollectionUtils.isEmpty(children)){ - user.setCount1((user.getCount1() == null ? 0L : user.getCount1()) + children.stream().filter(e->e.getVipId() == 1).count()); - user.setCount2((user.getCount2() == null ? 0L : user.getCount2()) + children.stream().filter(e->e.getVipId() == 2).count()); - user.setCount3((user.getCount3() == null ? 0L : user.getCount3()) + children.stream().filter(e->e.getVipId() == 3).count()); - user.setCount4((user.getCount4() == null ? 0L : user.getCount4()) + children.stream().filter(e->e.getVipId() == 4).count()); - user.setCount5((user.getCount5() == null ? 0L : user.getCount5()) + children.stream().filter(e->e.getVipId() == 5).count()); - user.setCount6((user.getCount6() == null ? 0L : user.getCount6()) + children.stream().filter(e->e.getVipId() == 6).count()); - user.setCount7((user.getCount7() == null ? 0L : user.getCount7()) + children.stream().filter(e->e.getVipId() == 7).count()); - List<Long> userIdList = children.stream().map(AppUser::getId).collect(Collectors.toList()); - getUserAncestorList(user,userIdList, children,list); + + // 递归获取指定用户的所有下级 + public List<AppUser> getAllSubordinates(Long userId) { + List<AppUser> allSubordinates = new ArrayList<>(); + + List<AppUser> directChildren = appUserService.list(new LambdaQueryWrapper<AppUser>() + .eq(AppUser::getInviteUserId, userId)); + + for (AppUser child : directChildren) { + allSubordinates.add(child); // 添加直接下级 + allSubordinates.addAll(getAllSubordinates(child.getId())); // 递归添加间接下级 } + return allSubordinates; } + + + + + + @GetMapping("/index/change") @ApiOperation(value = "修改个人资料", tags = {"小程序-个人中心首页"}) @@ -527,6 +592,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); + } + /** * 根据用户电话模糊搜索用户列表 @@ -538,6 +613,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); } @@ -674,7 +758,9 @@ AppUser byId = appUserService.getById(id); byId.setStatus(status); appUserService.updateById(byId); - loginout(id); + if (status == 2){ + loginout(id); + } return R.ok(); } @@ -683,6 +769,9 @@ 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; @@ -713,6 +802,14 @@ if (userId.equals(inviteId)) { return R.fail("不能选择自己为绑定人。"); } + + List<AppUser> appUserList = appUserService.list(new LambdaQueryWrapper<AppUser>() + .eq(AppUser::getInviteUserId, id) + .eq(AppUser::getId, inviteId)); + if (!CollectionUtils.isEmpty(appUserList)){ + return R.fail("绑定关系已存在!"); + } + byId.setInviteUserId(inviteId); byId.setTopInviteId(getTop(inviteId)); appUserService.updateById(byId); @@ -744,7 +841,7 @@ @GetMapping("/detail") @ApiOperation(value = "用户列表-详情", tags = {"管理后台"}) - public R<AppUser> detail(Long id, Integer shopId, Integer pageNum, Integer pageSize) { + public R<AppUser> detail(Long id, Integer shopId) { Long userid = tokenService.getLoginUser().getUserid(); SysUser sysUser = sysUserClient.getSysUser(userid).getData(); AppUser byId = appUserService.getById(id); @@ -774,8 +871,8 @@ if (lastOrder.getData() != null) { byId.setLastOrderTime(lastOrder.getData().getCreateTime()); } - Page<AppUser> page = appUserService.page(Page.of(pageNum, pageSize), new LambdaQueryWrapper<AppUser>().eq(AppUser::getInviteUserId, id)); - byId.setBottomUsersPage(page); + List<AppUser> list = appUserService.lambdaQuery().eq(AppUser::getInviteUserId, id).list(); + byId.setBottomUsers(list); //消费总金额 if(null == shopId || 1 == sysUser.getRoleType()){ shopId = -1; @@ -793,6 +890,20 @@ } return R.ok(byId); } + + /** + * 获取指定用户的下级用户 + */ + @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); + } + + + @@ -815,21 +926,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; @@ -837,8 +951,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); } @@ -930,13 +1063,29 @@ 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(); + if(null != data){ + 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<>()) @@ -944,7 +1093,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); @@ -962,9 +1115,12 @@ } } }); + Integer objectId = 0; + if(sysUser.getRoleType() == 2){ + objectId = sysUser.getObjectId(); + } - - R<Map<String, BigDecimal>> shopStatistics = shopClient.getShopStatistics(); + R<Map<String, BigDecimal>> shopStatistics = shopClient.getShopStatistics(objectId); Map<String, BigDecimal> data = shopStatistics.getData(); BigDecimal totalServiceFee = BigDecimal.ZERO; BigDecimal totalUserCommission = BigDecimal.ZERO; @@ -1016,7 +1172,6 @@ totalPartnerCommission = totalPartnerCommission.add(dailyCommissions.getOrDefault(7, BigDecimal.ZERO)); // 用户分销总金额 - BigDecimal add = commissionDate.getNormalCommission().add(commissionDate.getGoldCommission()).add(commissionDate.getDiamondCommission()).add(commissionDate.getAgentCommission()) .add(commissionDate.getSuperAgentCommission()).add(commissionDate.getTopAgentCommission()).add(commissionDate.getPartnerCommission()); commissionDate.setTotalCommission(add); -- Gitblit v1.7.1