From f0ca7d146e94c08dd1b79388e405813b1777c145 Mon Sep 17 00:00:00 2001 From: luodangjia <luodangjia> Date: 星期四, 22 八月 2024 10:19:19 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ruoyi-service/ruoyi-account/src/main/java/com/ruoyi/account/controller/TAppUserController.java | 97 ++++++++++++++++++++++++++++++++++-------------- 1 files changed, 69 insertions(+), 28 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 951a6b9..3e381b6 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 @@ -1,61 +1,51 @@ package com.ruoyi.account.controller; -import cn.hutool.core.date.DateTime; -import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.account.api.dto.*; import com.ruoyi.account.api.model.*; -import com.ruoyi.account.api.vo.CouponListVOVO; import com.ruoyi.account.service.*; import com.ruoyi.account.util.PointDetailUtil; import com.ruoyi.account.util.SignDayUtil; -import com.ruoyi.account.wx.body.resp.Code2SessionRespBody; -import com.ruoyi.account.wx.body.resq.Code2SessionResqBody; import com.ruoyi.account.wx.model.WeixinProperties; -import com.ruoyi.account.wx.tools.WxAppletTools; import com.ruoyi.account.util.GiveVipUtil; import com.ruoyi.common.core.constant.Constants; import com.ruoyi.common.core.domain.R; +import com.ruoyi.common.core.enums.status.AppUserStatusEnum; +import com.ruoyi.common.core.utils.JwtUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.core.utils.bean.BeanUtils; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.core.web.domain.BasePojo; -import com.ruoyi.common.core.web.page.PageInfo; import com.ruoyi.common.redis.service.RedisService; -import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.common.security.auth.AuthUtil; import com.ruoyi.common.security.service.TokenService; +import com.ruoyi.common.security.utils.SecurityUtils; import com.ruoyi.order.api.feignClient.ChargingOrderClient; import com.ruoyi.order.api.feignClient.ExchangeOrderClient; import com.ruoyi.order.api.model.TChargingOrder; import com.ruoyi.order.api.model.TExchangeOrder; +import com.ruoyi.other.api.dto.UnitListQueryDto; import com.ruoyi.other.api.domain.TCompany; import com.ruoyi.other.api.domain.TCoupon; import com.ruoyi.other.api.domain.TIntegralRule; import com.ruoyi.other.api.domain.TUserTag; import com.ruoyi.other.api.feignClient.IntegralRuleClient; import com.ruoyi.other.api.feignClient.OtherClient; -import com.ruoyi.system.api.domain.SysRole; -import com.ruoyi.system.api.model.LoginUser; import com.ruoyi.system.api.model.LoginUserApplet; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; -import org.apache.poi.ss.formula.functions.T; import lombok.extern.slf4j.Slf4j; -import org.aspectj.weaver.loadtime.Aj; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.time.Duration; import java.time.LocalDate; import java.time.LocalDateTime; @@ -155,7 +145,7 @@ @ApiOperation(value = "单位下拉框", tags = {"用户管理-单位管理"}) - @PostMapping(value = "/unit/select") + @GetMapping(value = "/unit/select") public R<List<TCompany>> unitSelect() { UnitListQueryDto unitListQueryDto = new UnitListQueryDto(); unitListQueryDto.setPageCurr(1); @@ -218,16 +208,19 @@ 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()); + if (one!=null) { + //设置最新的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())); //累计充电次数 R<Long> useOrderCount = chargingOrderClient.useOrderCount(appUser.getId()); appUser.setOrderCount(useOrderCount.getData()); + appUser.setUid(appUser.getId().toString()); } return R.ok(page); @@ -243,12 +236,15 @@ } //列表查询 Page<TAppUser> page = appUserService.lambdaQuery() + .ge(TAppUser::getVipEndTime, LocalDateTime.now()) .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) + .ge(userListQueryDto.getVipEndTime1() != null, TAppUser::getVipEndTime, userListQueryDto.getVipEndTime1() == null ? null : LocalDateTime.now().plusDays(userListQueryDto.getVipEndTime1())) + .le(userListQueryDto.getVipEndTime2() != null, TAppUser::getVipEndTime, userListQueryDto.getVipEndTime2() == null ? null : LocalDateTime.now().plusDays(userListQueryDto.getVipEndTime2())) + .in(!userIds.isEmpty(), TAppUser::getId, userIds) .page(Page.of(userListQueryDto.getPageCurr(), userListQueryDto.getPageSize())); if (page.getRecords().isEmpty()){ return R.ok(page); @@ -262,15 +258,19 @@ //拿到最新的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()); + if (one!=null) { + R<TUserTag> byIdTag = otherClient.getByIdTag(one.getUserTagId()); + if (byIdTag.getData() != null) { + appUser.setTagName(byIdTag.getData().getName()); + } } //匹配vipMap的值 appUser.setVipName(vipMap.getData().get(appUser.getVipId())); //累计充电次数 R<Long> useOrderCount = chargingOrderClient.useOrderCount(appUser.getId()); appUser.setOrderCount(useOrderCount.getData()); + appUser.setLastDays( Duration.between(LocalDateTime.now(), appUser.getVipEndTime()).toDays()); + appUser.setUid(appUser.getId().toString()); } return R.ok(page); @@ -362,7 +362,7 @@ } @ApiOperation(value = "用户详情", tags = {"用户管理-用户列表"}) - @PostMapping(value = "/user/detail/{id}") + @GetMapping(value = "/user/detail/{id}") public R<UserDetailDto> userDetail(@PathVariable Long id) { TAppUser user = appUserService.getById(id); UserDetailDto userDetailDto = new UserDetailDto(); @@ -434,6 +434,28 @@ return R.ok(); } + @ApiOperation(value = "修改单位", tags = {"后台-用户管理-用户列表"}) + @PostMapping(value = "/user/unit/change") + public R unitChange(@RequestBody UnitChangeDto unitChangeDto) { + for (String s : unitChangeDto.getIds().split(",")) { + TAppUser byId = appUserService.getById(s); + byId.setCompanyId(unitChangeDto.getUnitId()); + appUserService.updateById(byId); + } + return R.ok(); + } + + @ApiOperation(value = "删除用户", tags = {"后台-用户管理-用户列表"}) + @DeleteMapping(value = "/user/delete") + public R userDelete(String ids) { + String[] split = ids.split(","); + for (String s : split) { + appUserService.removeById(s); + } + return R.ok(); + + } + @ApiOperation(value = "个人中心信息", tags = {"小程序-个人中心"}) @PostMapping(value = "/user/info") public R<AppUserInfoDto> info() { @@ -488,7 +510,11 @@ @ApiOperation(value = "赠送会员", tags = {"用户管理-用户列表"}) @PostMapping(value = "/user/give/vip") public R giveVip(@RequestBody GiveVipDto giveVipDto) { - TAppUser nowUser = appUserService.getById(giveVipDto.getUserId()); + String[] split = giveVipDto.getUserIds().split(","); + for (String s : split) { + + + TAppUser nowUser = appUserService.getById(s); int plusDay = 0; if (giveVipDto.getType() == 1) { @@ -504,7 +530,7 @@ appUserService.updateById(nowUser); //执行一次赠送优惠卷的定时任务 - + } return R.ok(); } @@ -526,6 +552,21 @@ return AjaxResult.success(); } + @ApiOperation(value = "注销接口", tags = {"小程序-用户管理-注销账号"}) + @DeleteMapping("/logoff") + public AjaxResult<?> logoff(HttpServletRequest request) { + String token = SecurityUtils.getToken(request); + if (StringUtils.isNotEmpty(token)) + { + String userId = JwtUtils.getUserId(token); + // 账号注销 + appUserService.update(Wrappers.<TAppUser>lambdaUpdate().set(TAppUser::getStatus, AppUserStatusEnum.LOGOFF.getCode()).eq(TAppUser::getId, userId)); + // 删除用户缓存记录 + AuthUtil.logoutByToken(token); + } + return AjaxResult.success(); + } + /** * 根据用户id查询用户信息 * @param appUserIds 用户id -- Gitblit v1.7.1