From 27be613f1844e2d3da825681ab8141cc1064b76f Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期四, 08 八月 2024 17:04:48 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 133 +++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 129 insertions(+), 4 deletions(-) diff --git a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java index c261e65..8377509 100644 --- a/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java +++ b/ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java @@ -4,11 +4,23 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.dto.UnitListQueryDto; +import com.ruoyi.account.api.dto.UserDetailDto; +import com.ruoyi.account.api.dto.UserListQueryDto; import com.ruoyi.account.api.model.TAppUser; +import com.ruoyi.account.api.model.TAppUserCar; +import com.ruoyi.account.api.model.TAppUserTag; +import com.ruoyi.account.api.model.TAppUserVipDetail; +import com.ruoyi.account.service.TAppUserCarService; import com.ruoyi.account.service.TAppUserService; +import com.ruoyi.account.service.TAppUserTagService; +import com.ruoyi.account.service.TAppUserVipDetailService; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.utils.bean.BeanUtils; +import com.ruoyi.common.core.web.domain.BasePojo; import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.other.api.domain.TCompany; +import com.ruoyi.other.api.domain.TUserTag; import com.ruoyi.other.api.feignClient.OtherClient; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -16,6 +28,13 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * <p> @@ -33,6 +52,16 @@ private OtherClient otherClient; @Resource private TAppUserService appUserService; + @Resource + private TAppUserTagService appUserTagService; + + @Resource + private TAppUserVipDetailService tAppUserVipDetailService; + @Resource + private ChargingOrderClient chargingOrderClient; + + @Resource + private TAppUserCarService appUserCarService; @ApiOperation(value = "单位管理列表", tags = {"用户管理-单位管理"}) @PostMapping(value = "/unit/page") @@ -63,21 +92,117 @@ } - @ApiOperation(value = "用户列表", tags = {"用户管理-用户管理"}) + @ApiOperation(value = "用户列表", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/page") - public R<Page<TCompany>> userPage(@RequestBody UnitListQueryDto unitListQueryDto) { + public R<Page<TAppUser>> userPage(@RequestBody UserListQueryDto userListQueryDto) { + List<Long> userIds = new ArrayList<>(); - //拿到标签tag + //如果要筛选标签。用标签获取useids + if (userListQueryDto.getUserTagId() != null){ + userIds = appUserTagService.lambdaQuery().eq(TAppUserTag::getUserTagId, userListQueryDto.getUserTagId()).list().stream().map(TAppUserTag::getAppUserId).collect(Collectors.toList()); + } - //拿到会员map + //列表查询 + Page<TAppUser> page = appUserService.lambdaQuery() + .like(userListQueryDto.getUserPhone() != null && !"".equals(userListQueryDto.getUserPhone()), TAppUser::getPhone, userListQueryDto.getUserPhone()) + .eq(userListQueryDto.getCompanyId() != null, TAppUser::getCompanyId, userListQueryDto.getCompanyId()) + .eq(userListQueryDto.getCityCode() != null && !"".equals(userListQueryDto.getCityCode()), TAppUser::getCityCode, userListQueryDto.getCityCode()) + .eq(userListQueryDto.getStatus() != null, TAppUser::getStatus, userListQueryDto.getStatus()) + .eq(userListQueryDto.getVipTypeId() != null, TAppUser::getVipId, userListQueryDto.getVipTypeId()) + .in(!userIds.isEmpty(),TAppUser::getId,userIds) + .page(Page.of(userListQueryDto.getPageCurr(), userListQueryDto.getPageSize())); + + if (page.getRecords().isEmpty()){ + return R.ok(page); + } + List<Integer> vipIds = new ArrayList<>(); + vipIds = page.getRecords().stream().map(TAppUser::getVipId).collect(Collectors.toList()); + //获取会员map + R<Map<Integer, String>> vipMap = otherClient.getVipMap(vipIds); + //循环处理 + for (TAppUser appUser : page.getRecords()) { + //拿到最新的tagId + TAppUserTag one = appUserTagService.lambdaQuery().eq(TAppUserTag::getAppUserId, appUser.getId()).orderByDesc(TAppUserTag::getCreateTime).last("limit 1").one(); + //设置最新的tagName + R<TUserTag> byIdTag = otherClient.getByIdTag(one.getUserTagId()); + if (byIdTag.getData()!=null) { + appUser.setTagName(byIdTag.getData().getName()); + } + //匹配vipMap的值 + appUser.setVipName(vipMap.getData().get(appUser.getVipId())); + } + return R.ok(page); + } + @ApiOperation(value = "用户添加编辑", tags = {"用户管理-用户列表"}) + @PostMapping(value = "/user/addOrUpdate") + public R addOrUpdate(@RequestBody TAppUser tAppUser) { + if (tAppUser.getId() != null){ + //为编辑操作,要进行vip的逻辑处理 + TAppUser nowUser = appUserService.getById(tAppUser.getId()); + //会员结束时间不为空 + if (tAppUser.getVipEndTime()!=null&&tAppUser.getVipEndTime()!=nowUser.getVipEndTime()){ + //计算改变后的结束时间和当前结束时间差距了多少时间 + Duration duration = Duration.between(tAppUser.getVipEndTime(), nowUser.getVipEndTime()); + List<TAppUserVipDetail> detailList = tAppUserVipDetailService.lambdaQuery().eq(TAppUserVipDetail::getAppUserId, tAppUser.getId()).gt(TAppUserVipDetail::getEndTime, LocalDateTime.now()).orderByAsc(TAppUserVipDetail::getStartTime).list(); + //如果是增加,则将明细表里当前会员的结束时间往后移,并将其余未开始会员的开始时间和结束时间往后移 + if (tAppUser.getVipEndTime().isAfter(nowUser.getVipEndTime())){ + for (int i = 0; i < detailList.size(); i++) { + TAppUserVipDetail tAppUserVipDetail = detailList.get(i); + if (i == 0 ){ + tAppUserVipDetail.setEndTime(tAppUser.getVipEndTime().plus(duration)); + }else { + tAppUserVipDetail.setStartTime(tAppUserVipDetail.getStartTime().plus(duration)); + tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().plus(duration)); + } + } + }else { + //如果是减少,将当前会员结束时间减少,并将其余会员开始和结束时间都往前移动 + for (int i = 0; i < detailList.size(); i++) { + TAppUserVipDetail tAppUserVipDetail = detailList.get(i); + if (i == 0 ){ + tAppUserVipDetail.setEndTime(tAppUser.getVipEndTime().minus(duration)); + }else { + tAppUserVipDetail.setStartTime(tAppUserVipDetail.getStartTime().minus(duration)); + tAppUserVipDetail.setEndTime(tAppUserVipDetail.getEndTime().minus(duration)); + } + } + } + } + } + appUserService.saveOrUpdate(tAppUser); return R.ok(); } + @ApiOperation(value = "用户详情", tags = {"用户管理-用户列表"}) + @PostMapping(value = "/user/detail/{id}") + public R<UserDetailDto> userDetail(@PathVariable Long id) { + TAppUser user = appUserService.getById(id); + UserDetailDto userDetailDto = new UserDetailDto(); + BeanUtils.copyProperties(user,userDetailDto); + if (user.getVipId()!=null) { + R<Map<Integer, String>> vipMap = otherClient.getVipMap(Arrays.asList(user.getVipId())); + user.setVipName(vipMap.getData().get(user.getVipId())); + } + //获取累计充电数量 + R<Long> useOrderCount = chargingOrderClient.useOrderCount(user.getId()); + userDetailDto.setOrderCount(useOrderCount.getData()); + R<TCompany> tCompanyR = otherClient.unitDetail(user.getCompanyId()); + if (tCompanyR.getData()!=null){ + userDetailDto.setUnitName(tCompanyR.getData().getName()); + } + List<TAppUserCar> carList = appUserCarService.lambdaQuery().eq(TAppUserCar::getAppUserId, id).orderByDesc(BasePojo::getCreateTime).list(); + userDetailDto.setCarList(carList); + + List<Integer> tagIds = appUserTagService.lambdaQuery().eq(TAppUserTag::getAppUserId, id).orderByDesc(TAppUserTag::getCreateTime).list().stream().map(TAppUserTag::getUserTagId).collect(Collectors.toList()); + R<Map<Integer, String>> tagMap = otherClient.getTagMap(tagIds); + userDetailDto.setTagName(tagMap.getData().values().toString()); + return R.ok(userDetailDto); + } } -- Gitblit v1.7.1