From 3ce20cae9f4a5676cf489dde30b0e72a0f763c30 Mon Sep 17 00:00:00 2001 From: zzc <1278921369@qq.com> Date: Thu, 15 Aug 2024 01:35:20 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BF=A1=E6=81=AF=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=BF=81=E7=A7=BB=E5=8F=8A=E5=85=B6=E4=BB=96=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/app/EqHomeController.java | 27 +++ .../web/controller/app/EqUserController.java | 228 ++++++++++++++++++ .../dromara/web/domain/bo/EqUserConfigBo.java | 2 +- 3 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqUserController.java diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java index 20c2cdd96..0e81fa1af 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqHomeController.java @@ -6,6 +6,10 @@ import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.exception.ServiceException; import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.satoken.utils.LoginHelper; @@ -50,6 +54,17 @@ public class EqHomeController extends BaseController { return R.ok(eqUserConfigService.userConfig()); } + /** + * 修改用户配置 + * @param bo + * @return + */ + @Log(title = "用户配置", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping("/editUserConfig") + public R editUserConfig(@Validated(EditGroup.class) @RequestBody EqUserConfigBo bo) { + return toAjax(eqUserConfigService.updateByBo(bo)); + } /** * 首页切换 查询家庭主体 */ @@ -134,6 +149,18 @@ public class EqHomeController extends BaseController { return R.ok(eqAreaService.queryList(bo)); } + /** + * 新增分布 + * @param bo + * @return + */ + @Log(title = "分布管理", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping("areaAdd") + public R areaAdd(@Validated(AddGroup.class) @RequestBody EqAreaBo bo) { + return toAjax(eqAreaService.insertByBo(bo)); + } + /** * 首页查看设备列表 */ diff --git a/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqUserController.java b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqUserController.java new file mode 100644 index 000000000..eee9f556d --- /dev/null +++ b/ruoyi-admin/src/main/java/org/dromara/web/controller/app/EqUserController.java @@ -0,0 +1,228 @@ +package org.dromara.web.controller.app; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.secure.BCrypt; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.io.FileUtil; +import cn.hutool.core.util.ArrayUtil; +import cn.hutool.core.util.ObjectUtil; +import jakarta.validation.constraints.NotEmpty; +import lombok.RequiredArgsConstructor; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.domain.model.LoginUser; +import org.dromara.common.core.exception.ServiceException; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.core.utils.file.MimeTypeUtils; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.satoken.utils.LoginHelper; +import org.dromara.common.tenant.helper.TenantHelper; +import org.dromara.common.web.core.BaseController; +import org.dromara.system.domain.bo.SysUserBo; +import org.dromara.system.domain.bo.SysUserPasswordBo; +import org.dromara.system.domain.bo.SysUserProfileBo; +import org.dromara.system.domain.vo.AvatarVo; +import org.dromara.system.domain.vo.SysOssVo; +import org.dromara.system.domain.vo.SysUserVo; +import org.dromara.system.domain.vo.UserInfoVo; +import org.dromara.system.service.*; +import org.dromara.web.domain.bo.EqAppHomeBo; +import org.dromara.web.domain.bo.EqAreaBo; +import org.dromara.web.domain.bo.EqEquipmentBo; +import org.dromara.web.domain.bo.EqShareBo; +import org.dromara.web.domain.vo.EqAreaVo; +import org.dromara.web.domain.vo.EqEquipmentVo; +import org.dromara.web.domain.vo.EqShareVo; +import org.dromara.web.domain.vo.EqUserConfigVo; +import org.dromara.web.service.IEqAreaService; +import org.dromara.web.service.IEqEquipmentService; +import org.dromara.web.service.IEqShareService; +import org.dromara.web.service.IEqUserConfigService; +import org.springframework.http.MediaType; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Arrays; +import java.util.List; + +/** + * app用户相关 + * + * @author zzc + * @date 2024-07-14 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/app/user") +public class EqUserController extends BaseController { + + private final ISysUserService userService; + private final ISysRoleService roleService; + private final ISysPostService postService; + private final ISysDeptService deptService; + private final ISysTenantService tenantService; + private final ISysOssService ossService; + + /** + * 获取用户信息 + * + * @return 用户信息 + */ + @GetMapping("/getInfo") + public R getInfo() { + UserInfoVo userInfoVo = new UserInfoVo(); + LoginUser loginUser = LoginHelper.getLoginUser(); + if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) { + // 超级管理员 如果重新加载用户信息需清除动态租户 + TenantHelper.clearDynamic(); + } + SysUserVo user = userService.selectUserById(loginUser.getUserId()); + if (ObjectUtil.isNull(user)) { + return R.fail("没有权限访问用户数据!"); + } + userInfoVo.setUser(user); + userInfoVo.setPermissions(loginUser.getMenuPermission()); + userInfoVo.setRoles(loginUser.getRolePermission()); + return R.ok(userInfoVo); + } + + + /* *//** + * 修改用户 + *//* + @Log(title = "用户管理", businessType = BusinessType.UPDATE) + @PutMapping + public R edit(@Validated @RequestBody SysUserBo user) { + userService.checkUserAllowed(user.getUserId()); + userService.checkUserDataScope(user.getUserId()); + deptService.checkDeptDataScope(user.getDeptId()); + if (!userService.checkUserNameUnique(user)) { + return R.fail("修改用户'" + user.getUserName() + "'失败,登录账号已存在"); + } else if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { + return R.fail("修改用户'" + user.getUserName() + "'失败,手机号码已存在"); + } else if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { + return R.fail("修改用户'" + user.getUserName() + "'失败,邮箱账号已存在"); + } + return toAjax(userService.updateUser(user)); + }*/ + + + /** + * 删除用户 + * 删除当前登录用户 + * @param + */ + @Log(title = "用户管理", businessType = BusinessType.DELETE) + @DeleteMapping("") + public R remove() { + Long[] userIds = {LoginHelper.getUserId()}; + return toAjax(userService.deleteUserByIds(userIds)); + } + + + /** + * 修改用户信息 + */ + @RepeatSubmit + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping + public R updateProfile(@Validated @RequestBody SysUserProfileBo profile) { + SysUserBo user = BeanUtil.toBean(profile, SysUserBo.class); + user.setUserId(LoginHelper.getUserId()); + String username = LoginHelper.getUsername(); + if (StringUtils.isNotEmpty(user.getPhonenumber()) && !userService.checkPhoneUnique(user)) { + return R.fail("修改用户'" + username + "'失败,手机号码已存在"); + } + if (StringUtils.isNotEmpty(user.getEmail()) && !userService.checkEmailUnique(user)) { + return R.fail("修改用户'" + username + "'失败,邮箱账号已存在"); + } + if (userService.updateUserProfile(user) > 0) { + return R.ok(); + } + return R.fail("修改个人信息异常,请联系管理员"); + } + + /** + * 重置密码 + * + * @param bo 新旧密码 + */ + @RepeatSubmit + //@ApiEncrypt + @Log(title = "个人信息", businessType = BusinessType.UPDATE) + @PutMapping("/updatePwd") + public R updatePwd(@Validated @RequestBody SysUserPasswordBo bo) { + SysUserVo user = userService.selectUserById(LoginHelper.getUserId()); + String password = user.getPassword(); + if (!BCrypt.checkpw(bo.getOldPassword(), password)) { + return R.fail("修改密码失败,旧密码错误"); + } + if (BCrypt.checkpw(bo.getNewPassword(), password)) { + return R.fail("新密码不能与旧密码相同"); + } + + if (userService.resetUserPwd(user.getUserId(), BCrypt.hashpw(bo.getNewPassword())) > 0) { + return R.ok(); + } + return R.fail("修改密码异常,请联系管理员"); + } + + /** + * 头像上传 + * + * @param avatarfile 用户头像 + */ + @RepeatSubmit + @Log(title = "用户头像", businessType = BusinessType.UPDATE) + @PostMapping(value = "/avatar", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public R avatar(@RequestPart("avatarfile") MultipartFile avatarfile) { + if (!avatarfile.isEmpty()) { + String extension = FileUtil.extName(avatarfile.getOriginalFilename()); + if (!StringUtils.equalsAnyIgnoreCase(extension, MimeTypeUtils.IMAGE_EXTENSION)) { + return R.fail("文件格式不正确,请上传" + Arrays.toString(MimeTypeUtils.IMAGE_EXTENSION) + "格式"); + } + SysOssVo oss = ossService.upload(avatarfile); + String avatar = oss.getUrl(); + if (userService.updateUserAvatar(LoginHelper.getUserId(), oss.getOssId())) { + AvatarVo avatarVo = new AvatarVo(); + avatarVo.setImgUrl(avatar); + return R.ok(avatarVo); + } + } + return R.fail("上传图片异常,请联系管理员"); + } + + + + + + + + + + + /** + * 密码验证 + * @param bo + * @return + */ + @GetMapping("/checkPassword") + public R checkPassword(EqAppHomeBo bo){ + //密码验证 + if (bo.getUserId()==null||bo.getPassword()== null) throw new ServiceException("用户ID或密码不能为空"); + SysUserVo sysUserVo = userService.selectUserById(bo.getUserId()); + if (sysUserVo == null) throw new ServiceException("用户不存在"); + return R.ok(BCrypt.checkpw(bo.getPassword(), sysUserVo.getPassword())); + } + + + private final IEqShareService eqShareService; + + +} + diff --git a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqUserConfigBo.java b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqUserConfigBo.java index 8918f1573..517845e57 100644 --- a/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqUserConfigBo.java +++ b/ruoyi-admin/src/main/java/org/dromara/web/domain/bo/EqUserConfigBo.java @@ -41,7 +41,7 @@ public class EqUserConfigBo extends BaseEntity { /** * 时间格式 */ - @NotNull(message = "时间格式不能为空", groups = { AddGroup.class, EditGroup.class }) +// @NotNull(message = "时间格式不能为空", groups = { AddGroup.class, EditGroup.class }) private String timeFormat; /**