diff --git a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/controller/gpt/UserController.java b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/controller/gpt/UserController.java index f0c3669..929085b 100644 --- a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/controller/gpt/UserController.java +++ b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/controller/gpt/UserController.java @@ -4,6 +4,7 @@ import com.inspur.llm.chat.base.base.BaseController; import com.inspur.llm.chat.gpt.constant.SysLogTypeConstant; import com.inspur.llm.chat.gpt.enums.BusinessTypeEnum; import com.inspur.llm.chat.gpt.pojo.annotation.Log; +import com.inspur.llm.chat.gpt.pojo.command.SysUserPasswordCommand; import com.inspur.llm.chat.gpt.pojo.command.UserCommand; import com.inspur.llm.chat.gpt.pojo.entity.IPageInfo; import com.inspur.llm.chat.gpt.pojo.entity.Query; @@ -105,6 +106,19 @@ public class UserController extends BaseController { return userService.updateUser(command); } + /** + * 管理员重置用户密码 + * + * @author: Auto + * @date: 2026-04-08 + * @version: 1.0.0 + */ + @PutMapping("/password/reset") + @Log(type = SysLogTypeConstant.DEFAULT, businessType = BusinessTypeEnum.UPDATE) + public ResponseInfo resetPassword(@RequestBody SysUserPasswordCommand command) { + return userService.resetPassword(command); + } + /** * 批量删除会员用户 * diff --git a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/pojo/entity/User.java b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/pojo/entity/User.java index d3bd05f..c17c176 100644 --- a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/pojo/entity/User.java +++ b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/pojo/entity/User.java @@ -104,6 +104,11 @@ public class User extends BaseEntity { */ private Integer status; + /** + * 是否管理员 0否 1是 + */ + private Boolean admind; + /** * 是否删除 0->未删除;1->已删除 */ diff --git a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/pojo/vo/UserVO.java b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/pojo/vo/UserVO.java index aeea2ea..39532d1 100644 --- a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/pojo/vo/UserVO.java +++ b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/pojo/vo/UserVO.java @@ -108,4 +108,9 @@ public class UserVO implements Serializable { */ private Integer status; + /** + * 是否管理员 0否 1是 + */ + private Boolean admind; + } diff --git a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/service/IUserService.java b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/service/IUserService.java index aa1a12c..beff660 100644 --- a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/service/IUserService.java +++ b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/service/IUserService.java @@ -119,4 +119,12 @@ public interface IUserService extends IService { */ ResponseInfo removeUserById(Long id); + /** + * 管理员重置用户密码 + * + * @param command 包含用户id和新密码 + * @return 结果 + */ + ResponseInfo resetPassword(SysUserPasswordCommand command); + } diff --git a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/service/impl/UserServiceImpl.java b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/service/impl/UserServiceImpl.java index 59b4004..5a03a98 100644 --- a/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/service/impl/UserServiceImpl.java +++ b/chat_web_backend/src/main/java/com/inspur/llm/chat/gpt/service/impl/UserServiceImpl.java @@ -108,10 +108,17 @@ public class UserServiceImpl extends ServiceImpl implements IU } user = DozerUtil.convertor(command, User.class); user.setCreateUser(command.getOperater()); - String name = "手机用户" + RandomUtil.randomString(6); user.setUid(UUID.fastUUID().toString()); - user.setName(name); - user.setNickName(name); + if (ValidatorUtil.isNull(user.getName()) || user.getName().isEmpty()) { + String name = "手机用户" + RandomUtil.randomString(6); + user.setName(name); + user.setNickName(name); + } else if (ValidatorUtil.isNull(user.getNickName()) || user.getNickName().isEmpty()) { + user.setNickName(user.getName()); + } + if (ValidatorUtil.isNotNull(command.getPassword()) && !command.getPassword().isEmpty()) { + user.setPassword(JWTPasswordEncoder.bcryptEncode(command.getPassword())); + } user.setType(UserTypeEnum.TEL.getValue()); userMapper.insert(user); return ResponseInfo.success(); @@ -185,4 +192,13 @@ public class UserServiceImpl extends ServiceImpl implements IU return ResponseInfo.success(); } + @Override + @Transactional(rollbackFor = Exception.class, transactionManager = "masterTransactionManager") + public ResponseInfo resetPassword(SysUserPasswordCommand command) { + User user = getUser(command.getId()); + user.setPassword(JWTPasswordEncoder.bcryptEncode(command.getNewPassword())); + userMapper.updateById(user); + return ResponseInfo.success(); + } + } diff --git a/chat_web_backend/src/main/resources/mapper/gpt/UserMapper.xml b/chat_web_backend/src/main/resources/mapper/gpt/UserMapper.xml index 163cc66..45bcfda 100644 --- a/chat_web_backend/src/main/resources/mapper/gpt/UserMapper.xml +++ b/chat_web_backend/src/main/resources/mapper/gpt/UserMapper.xml @@ -24,13 +24,14 @@ + t.id, t.create_user, t.create_time, t.update_user, t.update_time, t.login_time, t.uid, t.name, t.nick_name, t.tel, t.password, - t.avatar, t.openid, t.unionid, t.ip, t.context, t.num, t.share_id, t.type, t.status, t.deleted + t.avatar, t.openid, t.unionid, t.ip, t.context, t.num, t.share_id, t.type, t.status, t.admind, t.deleted diff --git a/chat_web_front/src/api/index.ts b/chat_web_front/src/api/index.ts index bea6499..fb85922 100644 --- a/chat_web_front/src/api/index.ts +++ b/chat_web_front/src/api/index.ts @@ -996,4 +996,45 @@ export function fetchLoginStatus() { return get({ url: '/app/api/auth/loginStatus' }) -} \ No newline at end of file +} + +// ****************************用户管理 - 开始******************************** +// 用户分页列表 +export function fetchUserPage(data: { current: number; size: number; keyword?: string }) { + return get({ + url: '/gpt/user/page', + data, + }) +} + +// 新增用户 +export function createUser(data: object) { + return post({ + url: '/gpt/user', + data, + }) +} + +// 修改用户 +export function editUser(data: object) { + return put({ + url: '/gpt/user', + data, + }) +} + +// 删除用户 +export function deleteUser(ids: string) { + return post({ + url: `/gpt/user/${ids}`, + }) +} + +// 管理员重置用户密码 +export function resetUserPassword(data: { id: number; newPassword: string }) { + return put({ + url: '/gpt/user/password/reset', + data, + }) +} +// ****************************用户管理 - 结束******************************** \ No newline at end of file diff --git a/chat_web_front/src/components/Operates.vue b/chat_web_front/src/components/Operates.vue index 35ba142..bf3b143 100644 --- a/chat_web_front/src/components/Operates.vue +++ b/chat_web_front/src/components/Operates.vue @@ -15,13 +15,26 @@
- - + + +
+
+ + 个人中心 +
+
+ + 用户管理 +
+ +
+ + 退出登录 +
+
+
@@ -29,10 +42,12 @@ + + diff --git a/chat_web_front/src/views/userManage/index.vue b/chat_web_front/src/views/userManage/index.vue new file mode 100644 index 0000000..328c8a6 --- /dev/null +++ b/chat_web_front/src/views/userManage/index.vue @@ -0,0 +1,296 @@ + + + + +