diff --git a/src/main/java/com/peanut/modules/master/controller/UserVipController.java b/src/main/java/com/peanut/modules/master/controller/UserVipController.java index e45a8634..767b0fd2 100644 --- a/src/main/java/com/peanut/modules/master/controller/UserVipController.java +++ b/src/main/java/com/peanut/modules/master/controller/UserVipController.java @@ -68,9 +68,13 @@ public class UserVipController { Long.parseLong(params.get("current").toString()), Long.parseLong(params.get("limit").toString())), wrapper); List users = page.getRecords(); for (MyUserEntity user : users) { - List userVips = userVipService.list(new LambdaQueryWrapper() + List userVips = userVipService.list(new MPJLambdaWrapper() + .rightJoin("(select max(end_time) endTime,type from user_vip where del_flag =0 and user_id = "+user.getId()+" group by type)" + + " t1 on t1.endTime = t.end_time and t1.type = t.type") + .selectAll(UserVip.class) .eq(UserVip::getUserId, user.getId()) - .eq(StringUtils.isNotEmpty(params.get("state").toString()),UserVip::getState, params.get("state").toString())); + .eq(StringUtils.isNotEmpty(params.get("state").toString()),UserVip::getState, params.get("state").toString()) + .orderByAsc(UserVip::getEndTime,UserVip::getType)); user.setUserVips(userVips); for(UserVip userVip : userVips){ userVip.setUserVipLogs(userVipLogService.list(new LambdaQueryWrapper() @@ -169,12 +173,26 @@ public class UserVipController { public R getUserVipInfoByUserId(@RequestBody Map params) { List userVips = userVipService.list(new LambdaQueryWrapper() .eq(UserVip::getUserId,params.get("userId").toString()) - .eq("0".equals(params.get("state").toString()),UserVip::getState,params.get("state").toString())); + .eq("0".equals(params.get("state").toString()),UserVip::getState,params.get("state").toString()) + .orderByDesc(UserVip::getEndTime)); + Map map = new HashMap<>(); + List resUserVips = new ArrayList<>(); + //将失效详情添加到有效条目里 for (UserVip userVip : userVips) { - userVip.setUserVipLogs(userVipLogService.list(new LambdaQueryWrapper() - .eq(UserVipLog::getUserVipId,userVip.getId()))); + if (!map.containsKey(userVip.getType()+"")){ + userVip.setUserVipLogs(userVipLogService.list(new LambdaQueryWrapper() + .eq(UserVipLog::getUserVipId,userVip.getId()))); + map.put(userVip.getType()+"",userVip); + resUserVips.add(userVip); + }else { + UserVip uv = (UserVip) map.get(userVip.getType()+""); + List list = uv.getUserVipLogs(); + list.addAll(userVipLogService.list(new LambdaQueryWrapper() + .eq(UserVipLog::getUserVipId,userVip.getId()))); + uv.setUserVipLogs(list); + } } - return R.ok().put("userVips", userVips); + return R.ok().put("userVips", resUserVips); } @RequestMapping("/addUserVipLog")