From 1634565e929211de05200042c137449ca5104930 Mon Sep 17 00:00:00 2001 From: xiang Date: Tue, 24 Mar 2026 20:55:06 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B1=9F=E5=8D=97=E4=BD=93=E8=82=B2?= =?UTF-8?q?=E4=B8=AD=E5=BF=83=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/jntyzx/pojo/req/UserAddReq.java | 40 +++++++ .../jntyzx/pojo/req/UserStatusUpdateReq.java | 22 ++++ .../jntyzx/pojo/req/UserTokenUpdateReq.java | 21 ++++ .../module/jntyzx/pojo/req/UsernameReq.java | 11 ++ .../app/module/jntyzx/pojo/resp/JtUserVo.java | 6 +- xservice-core/pom.xml | 7 ++ .../jntyzx/converts/UserConverter.java | 18 +++ .../jntyzx/entity/pojo/UserTokenInfoDO.java | 2 + .../jntyzx/manage/IUserRestrictionManage.java | 4 + .../jntyzx/manage/IUserTokenInfoManage.java | 3 + .../manage/UserRestrictionManageImpl.java | 9 ++ .../manage/UserTokenInfoManageImpl.java | 28 +++++ .../jntyzx/service/IUserTokenInfoService.java | 16 +++ .../impl/UserTokenInfoServiceImpl.java | 103 ++++++++++++++++++ .../app/server/jntyzx/UserTokenServer.java | 54 ++++++++- 15 files changed, 341 insertions(+), 3 deletions(-) create mode 100644 api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserAddReq.java create mode 100644 api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserStatusUpdateReq.java create mode 100644 api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserTokenUpdateReq.java create mode 100644 api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UsernameReq.java create mode 100644 xservice-core/src/main/java/com/xiang/app/modules/jntyzx/converts/UserConverter.java diff --git a/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserAddReq.java b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserAddReq.java new file mode 100644 index 0000000..bfc14da --- /dev/null +++ b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserAddReq.java @@ -0,0 +1,40 @@ +package com.xiang.app.module.jntyzx.pojo.req; + +import lombok.Data; +import org.checkerframework.checker.units.qual.N; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class UserAddReq { + + /** + * 用户名称 + */ + @NotBlank(message = "用户名称不能为空") + private String name; + /** + * token + */ + @NotBlank(message = "token不能为空") + private String token; + /** + * wx openId + */ + @NotBlank(message = "openId不能为空") + private String openId; + + /** + * 会员卡号 + */ + @NotBlank(message = "会员卡号不能为空") + private String memberCardNo; + + /** + * 状态 0:禁用 1:启用 + */ + @NotNull(message = "用户状态不能为空") + private Integer status; +} + diff --git a/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserStatusUpdateReq.java b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserStatusUpdateReq.java new file mode 100644 index 0000000..e1d2e9e --- /dev/null +++ b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserStatusUpdateReq.java @@ -0,0 +1,22 @@ +package com.xiang.app.module.jntyzx.pojo.req; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +@Data +public class UserStatusUpdateReq { + + /** + * 用户名称 + */ + @NotBlank(message = "用户名称不能为空") + private String username; + + /** + * status + */ + @NotNull(message = "状态不能为空") + private Integer status; +} diff --git a/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserTokenUpdateReq.java b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserTokenUpdateReq.java new file mode 100644 index 0000000..43bcf23 --- /dev/null +++ b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UserTokenUpdateReq.java @@ -0,0 +1,21 @@ +package com.xiang.app.module.jntyzx.pojo.req; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class UserTokenUpdateReq { + + /** + * 用户名称 + */ + @NotBlank(message = "用户名称不能为空") + private String username; + + /** + * token + */ + @NotBlank(message = "token不能为空") + private String token; +} diff --git a/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UsernameReq.java b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UsernameReq.java new file mode 100644 index 0000000..37eaeeb --- /dev/null +++ b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/req/UsernameReq.java @@ -0,0 +1,11 @@ +package com.xiang.app.module.jntyzx.pojo.req; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class UsernameReq { + @NotBlank(message = "用户名称不能为空") + private String username; +} diff --git a/api/src/main/java/com/xiang/app/module/jntyzx/pojo/resp/JtUserVo.java b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/resp/JtUserVo.java index e74e0f1..4e60b6d 100644 --- a/api/src/main/java/com/xiang/app/module/jntyzx/pojo/resp/JtUserVo.java +++ b/api/src/main/java/com/xiang/app/module/jntyzx/pojo/resp/JtUserVo.java @@ -13,6 +13,8 @@ import java.time.LocalDateTime; @Data public class JtUserVo { + private Long userId; + /** * 用户名称 */ @@ -51,7 +53,9 @@ public class JtUserVo { /** * 封禁结束时间 */ - private String restrictionDeadline; + @DateTimeFormat(pattern = "yyyy-MM-dd Hh:mm:ss") + @JsonFormat(pattern = "yyyy-MM-dd Hh:mm:ss") + private LocalDateTime restrictionDeadline; /** * 封禁缘由 */ diff --git a/xservice-core/pom.xml b/xservice-core/pom.xml index ddefa5a..46eac95 100644 --- a/xservice-core/pom.xml +++ b/xservice-core/pom.xml @@ -17,4 +17,11 @@ UTF-8 + + + com.xiang.app + api + 1.0-SNAPSHOT + + \ No newline at end of file diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/converts/UserConverter.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/converts/UserConverter.java new file mode 100644 index 0000000..bde4d1a --- /dev/null +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/converts/UserConverter.java @@ -0,0 +1,18 @@ +package com.xiang.app.modules.jntyzx.converts; + +import com.xiang.app.module.jntyzx.pojo.resp.JtUserVo; +import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +@Mapper +public interface UserConverter { + + UserConverter INSTANCE = Mappers.getMapper(UserConverter.class); + @Mapping(source = "id", target = "userId") + JtUserVo convert(UserTokenInfoDO userTokenInfoDO); + List convert(List userTokenInfoDOs); +} diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserTokenInfoDO.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserTokenInfoDO.java index 1b0144d..e51ee88 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserTokenInfoDO.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/entity/pojo/UserTokenInfoDO.java @@ -54,4 +54,6 @@ public class UserTokenInfoDO { */ @TableField("is_restriction") private Integer isRestriction; + + private LocalDateTime updateTime; } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserRestrictionManage.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserRestrictionManage.java index 1786a1b..ddc6b3a 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserRestrictionManage.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserRestrictionManage.java @@ -3,7 +3,11 @@ package com.xiang.app.modules.jntyzx.manage; import com.baomidou.mybatisplus.extension.service.IService; import com.xiang.app.modules.jntyzx.entity.pojo.UserRestrictionInfo; +import java.util.List; + public interface IUserRestrictionManage extends IService { UserRestrictionInfo queryByUserId(Long userId); + + List queryByIdList(List idList); } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserTokenInfoManage.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserTokenInfoManage.java index cf8da61..94cc6ba 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserTokenInfoManage.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/IUserTokenInfoManage.java @@ -1,6 +1,8 @@ package com.xiang.app.modules.jntyzx.manage; import com.baomidou.mybatisplus.extension.service.IService; +import com.xiang.app.module.jntyzx.pojo.req.UserQueryReq; +import com.xiang.app.module.jntyzx.pojo.resp.JtUserVo; import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; import java.util.List; @@ -15,4 +17,5 @@ public interface IUserTokenInfoManage extends IService { List listCanOrder(); + List queryByList(UserQueryReq req); } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserRestrictionManageImpl.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserRestrictionManageImpl.java index b441e92..54467b3 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserRestrictionManageImpl.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserRestrictionManageImpl.java @@ -7,6 +7,8 @@ import com.xiang.app.modules.jntyzx.entity.pojo.UserRestrictionInfo; import com.xiang.app.modules.jntyzx.mapper.JntyzxUserRestrictionInfoMapper; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class UserRestrictionManageImpl extends ServiceImpl implements IUserRestrictionManage { @Override @@ -15,4 +17,11 @@ public class UserRestrictionManageImpl extends ServiceImpl queryByIdList(List idList) { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + lambdaQueryWrapper.in(UserRestrictionInfo::getUserId, idList); + return baseMapper.selectList(lambdaQueryWrapper); + } } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserTokenInfoManageImpl.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserTokenInfoManageImpl.java index bbfc9e5..fbb18ac 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserTokenInfoManageImpl.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/manage/UserTokenInfoManageImpl.java @@ -1,13 +1,16 @@ package com.xiang.app.modules.jntyzx.manage; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xiang.app.module.jntyzx.pojo.req.UserQueryReq; import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; import com.xiang.app.modules.jntyzx.mapper.JntyzxUserTokenInfoMapper; import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; /** * @Author: xiang @@ -27,6 +30,7 @@ public class UserTokenInfoManageImpl extends ServiceImpl lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, 1); lambdaQueryWrapper.eq(UserTokenInfoDO::getName, name); + lambdaQueryWrapper.last("limit 1"); return baseMapper.selectOne(lambdaQueryWrapper); } @@ -38,4 +42,28 @@ public class UserTokenInfoManageImpl extends ServiceImpl queryByList(UserQueryReq req) { + LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); + if (StringUtils.isNotBlank(req.getName())) { + lambdaQueryWrapper.like(UserTokenInfoDO::getName, req.getName()); + } + if (StringUtils.isNotBlank(req.getOpenId())) { + lambdaQueryWrapper.eq(UserTokenInfoDO::getOpenId, req.getOpenId()); + } + if (StringUtils.isNotBlank(req.getMemberCardNo())) { + lambdaQueryWrapper.eq(UserTokenInfoDO::getMemberCardNo, req.getMemberCardNo()); + } + if (Objects.nonNull(req.getStatus())) { + lambdaQueryWrapper.eq(UserTokenInfoDO::getStatus, req.getStatus()); + } + if (Objects.nonNull(req.getIsRestriction())) { + lambdaQueryWrapper.eq(UserTokenInfoDO::getIsRestriction, req.getIsRestriction()); + } + if (Objects.nonNull(req.getIsOrder())) { + lambdaQueryWrapper.eq(UserTokenInfoDO::getIsOrder, req.getIsOrder()); + } + return baseMapper.selectList(lambdaQueryWrapper); + } } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IUserTokenInfoService.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IUserTokenInfoService.java index 525aac1..ff5c9a0 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IUserTokenInfoService.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/IUserTokenInfoService.java @@ -1,7 +1,13 @@ package com.xiang.app.modules.jntyzx.service; +import com.xiang.app.module.jntyzx.pojo.req.UserAddReq; +import com.xiang.app.module.jntyzx.pojo.req.UserQueryReq; +import com.xiang.app.module.jntyzx.pojo.req.UsernameReq; +import com.xiang.app.module.jntyzx.pojo.resp.JtUserVo; import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; import java.util.List; /** @@ -16,4 +22,14 @@ public interface IUserTokenInfoService { boolean flushSingleToken(String name); boolean flushToken(); boolean updateTokenByName(String name, String token); + + List list(UserQueryReq req); + + Boolean updateStatusByUserName(String username, Integer status); + + Boolean refreshToken(String username); + + Boolean save(UserAddReq req); + + JtUserVo info(Long userId); } diff --git a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/UserTokenInfoServiceImpl.java b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/UserTokenInfoServiceImpl.java index fc6fb9a..57e5dc5 100644 --- a/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/UserTokenInfoServiceImpl.java +++ b/xservice-core/src/main/java/com/xiang/app/modules/jntyzx/service/impl/UserTokenInfoServiceImpl.java @@ -1,6 +1,12 @@ package com.xiang.app.modules.jntyzx.service.impl; +import com.google.common.collect.Lists; +import com.google.common.collect.Maps; import com.xiang.app.common.service.dingtalk.JtDingTalkFactory; +import com.xiang.app.module.jntyzx.pojo.req.UserAddReq; +import com.xiang.app.module.jntyzx.pojo.req.UserQueryReq; +import com.xiang.app.module.jntyzx.pojo.resp.JtUserVo; +import com.xiang.app.modules.jntyzx.converts.UserConverter; import com.xiang.app.modules.jntyzx.entity.pojo.UserRestrictionInfo; import com.xiang.app.modules.jntyzx.entity.pojo.UserTokenInfoDO; import com.xiang.app.modules.jntyzx.entity.resp.JntyzxResponse; @@ -9,6 +15,7 @@ import com.xiang.app.modules.jntyzx.manage.IUserRestrictionManage; import com.xiang.app.modules.jntyzx.manage.IUserTokenInfoManage; import com.xiang.app.modules.jntyzx.service.IJntyzxHttpService; import com.xiang.app.modules.jntyzx.service.IUserTokenInfoService; +import com.xiang.xservice.basic.exception.BusinessException; import com.xiang.xservice.basic.utils.DateUtils; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -16,8 +23,12 @@ import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.function.Function; +import java.util.stream.Collectors; /** * @Author: xiang @@ -32,6 +43,7 @@ public class UserTokenInfoServiceImpl implements IUserTokenInfoService { private final IJntyzxHttpService jntyzxHttpService; private final JtDingTalkFactory jtDingTalkFactory; private final IUserRestrictionManage userRestrictionManage; + private final UserConverter userConverter; @Override @@ -108,6 +120,97 @@ public class UserTokenInfoServiceImpl implements IUserTokenInfoService { return flag; } + @Override + public List list(UserQueryReq req) { + List userTokenInfoDOS = userTokenInfoManage.queryByList(req); + if (CollectionUtils.isEmpty(userTokenInfoDOS)) { + return Lists.newArrayList(); + } + List idList = userTokenInfoDOS.stream().map(UserTokenInfoDO::getId).toList(); + List userRestrictionInfos = userRestrictionManage.queryByIdList(idList); + Map userRestrictionInfoMap = Maps.newHashMap(); + if (CollectionUtils.isNotEmpty(userRestrictionInfos)) { + userRestrictionInfoMap.putAll( + userRestrictionInfos.stream().collect(Collectors.toMap( + UserRestrictionInfo::getUserId, Function.identity(), (a, b) -> a))); + } + List jtUserVoList = userConverter.convert(userTokenInfoDOS); + jtUserVoList.forEach(item -> { + if (userRestrictionInfoMap.containsKey(item.getUserId())) { + UserRestrictionInfo userRestrictionInfo = userRestrictionInfoMap.get(item.getUserId()); + if (Objects.nonNull(userRestrictionInfo)) { + if (userRestrictionInfo.getRestrictionDeadline().isAfter(LocalDateTime.now())) { + item.setRestrictionDeadline(userRestrictionInfo.getRestrictionDeadline()); + item.setRestrictionDesc(userRestrictionInfo.getRestrictionDesc()); + } + } + } + }); + return jtUserVoList; + } + + @Override + public Boolean updateStatusByUserName(String username, Integer status) { + if (StringUtils.isEmpty(username)) { + log.error("用户名为空"); + return false; + } + UserTokenInfoDO userTokenInfoDO = userTokenInfoManage.getByName(username); + if (Objects.isNull(userTokenInfoDO)) { + throw new BusinessException("用户不存在!"); + } + userTokenInfoDO.setStatus(status); + return userTokenInfoManage.updateById(userTokenInfoDO); + } + + @Override + public Boolean refreshToken(String username) { + if (StringUtils.isEmpty(username)) { + log.error("用户名为空"); + return false; + } + UserTokenInfoDO userTokenInfoDO = userTokenInfoManage.getByName(username); + if (Objects.isNull(userTokenInfoDO)) { + throw new BusinessException("用户不存在!"); + } + return healthDeclaration(userTokenInfoDO); + } + + @Override + public Boolean save(UserAddReq req) { + UserTokenInfoDO userTokenInfoDO = userTokenInfoManage.getByName(req.getName()); + if (Objects.nonNull(userTokenInfoDO)) { + throw new BusinessException("用户名已存在!"); + } + userTokenInfoDO = new UserTokenInfoDO(); + userTokenInfoDO.setName(req.getName()); + userTokenInfoDO.setToken(req.getToken()); + userTokenInfoDO.setOpenId(req.getOpenId()); + userTokenInfoDO.setStatus(req.getStatus()); + userTokenInfoDO.setIsOrder(1); + userTokenInfoDO.setMemberCardNo(req.getMemberCardNo()); + userTokenInfoDO.setIsRestriction(0); + userTokenInfoDO.setUpdateTime(LocalDateTime.now()); + return userTokenInfoManage.save(userTokenInfoDO); + } + + @Override + public JtUserVo info(Long userId) { + UserTokenInfoDO userTokenInfoDO = userTokenInfoManage.getById(userId); + if (Objects.isNull(userTokenInfoDO)) { + throw new BusinessException("用户不存在!"); + } + JtUserVo jtUserVo = userConverter.convert(userTokenInfoDO); + UserRestrictionInfo userRestrictionInfo = userRestrictionManage.queryByUserId(userId); + if (Objects.nonNull(userRestrictionInfo)) { + if (userRestrictionInfo.getRestrictionDeadline().isAfter(LocalDateTime.now())) { + jtUserVo.setRestrictionDeadline(userRestrictionInfo.getRestrictionDeadline()); + jtUserVo.setRestrictionDesc(userRestrictionInfo.getRestrictionDesc()); + } + } + return jtUserVo; + } + /** * 查询用户信息 * diff --git a/xservice-server/src/main/java/com/xiang/app/server/jntyzx/UserTokenServer.java b/xservice-server/src/main/java/com/xiang/app/server/jntyzx/UserTokenServer.java index 0e2af6b..8c32610 100644 --- a/xservice-server/src/main/java/com/xiang/app/server/jntyzx/UserTokenServer.java +++ b/xservice-server/src/main/java/com/xiang/app/server/jntyzx/UserTokenServer.java @@ -1,15 +1,65 @@ package com.xiang.app.server.jntyzx; +import com.xiang.app.module.jntyzx.pojo.req.UserAddReq; +import com.xiang.app.module.jntyzx.pojo.req.UserQueryReq; +import com.xiang.app.module.jntyzx.pojo.req.UserStatusUpdateReq; +import com.xiang.app.module.jntyzx.pojo.req.UserTokenUpdateReq; +import com.xiang.app.module.jntyzx.pojo.req.UsernameReq; +import com.xiang.app.module.jntyzx.pojo.resp.JtUserVo; +import com.xiang.app.modules.jntyzx.service.IUserTokenInfoService; +import com.xiang.xservice.basic.common.resp.Result; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + /** + * 江南体育中心用户管理控制器 + * * @Author: xiang * @Date: 2026-03-24 16:38 */ @RestController -@RequestMapping("/private/apps/jntyzx/user/") +@RequestMapping("/private/apps/jntyzx/user") +@RequiredArgsConstructor public class UserTokenServer { - public Result<> + private final IUserTokenInfoService userTokenInfoService; + + + @PostMapping("/list") + public Result> list(@RequestBody @NotNull(message = "请求参数不能为空") @Valid UserQueryReq req) { + return Result.data(userTokenInfoService.list(req)); + } + @GetMapping("/info/{id}") + public Result info(@PathVariable("id") Long userId) { + return Result.data(userTokenInfoService.info(userId)); + } + + @PostMapping("/updateToken") + public Result updateToken(@RequestBody @NotNull(message = "请求参数不能为空") @Valid UserTokenUpdateReq req) { + return Result.data(userTokenInfoService.updateTokenByName(req.getUsername(), req.getToken())); + } + + @PostMapping("/updateStatus") + public Result updateStatus(@RequestBody @NotNull(message = "请求参数不能为空") @Valid UserStatusUpdateReq req) { + return Result.data(userTokenInfoService.updateStatusByUserName(req.getUsername(), req.getStatus())); + } + + @PostMapping("/refreshToken") + public Result refreshToken(@RequestBody @NotNull(message = "请求参数不能为空") @Valid UsernameReq req) { + return Result.data(userTokenInfoService.refreshToken(req.getUsername())); + } + + @PostMapping("/add") + public Result addUser(@RequestBody @NotNull(message = "请求参数不能为空") @Valid UserAddReq req) { + return Result.data(userTokenInfoService.save(req)); + } }