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));
+ }
}