From 69cabccf54597a8ae1ca3981f179075bfc763278 Mon Sep 17 00:00:00 2001 From: liusuyi <13324259@qq.com> Date: 星期日, 16 七月 2023 17:04:59 +0800 Subject: [PATCH] 修改上传头像由上传本地改成上传minio 增加用户登录时获取融云token保存到用户 --- ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java | 8 +++ ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java | 82 +++++++++++++++++++++++------------------ ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java | 2 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml | 5 ++ ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java | 12 ++++++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java | 4 + 6 files changed, 73 insertions(+), 40 deletions(-) diff --git a/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java b/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java index 2c6f762..4d3ac10 100644 --- a/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java +++ b/ard-work/src/main/java/com/ruoyi/rongcloud/controller/RongCloudController.java @@ -38,7 +38,7 @@ return AjaxResult.success(token); } @PostMapping("/uploadPic") - @ApiOperation("涓婁紶鍥剧墖") + @ApiOperation("涓婁紶鐢ㄦ埛澶村儚") public AjaxResult uploadPic(MultipartFile file) { String url = MinioUtils.putObjectAndGetUrl("useravatar", file); diff --git a/ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java b/ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java index 07176a1..4016925 100644 --- a/ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java +++ b/ard-work/src/main/java/com/ruoyi/rongcloud/service/Impl/RongCloudServiceImpl.java @@ -1,5 +1,8 @@ package com.ruoyi.rongcloud.service.Impl; +import com.alibaba.fastjson2.JSONObject; +import com.fasterxml.jackson.databind.util.JSONPObject; +import com.ruoyi.alarm.stealAlarm.domain.ArdAlarmStealelec; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.rongcloud.domain.TokenParam; import com.ruoyi.rongcloud.service.RongCloudService; @@ -13,6 +16,7 @@ import javax.annotation.Resource; import java.util.Date; +import java.util.Map; /** * @Description: @@ -41,7 +45,9 @@ String Nonce = String.valueOf(Math.random()).split("\\.")[1]; String Timestamp = String.valueOf(new Date().getTime()); String Signature = DigestUtils.sha1Hex(appSecret + Nonce + Timestamp);//App Secret + Nonce + Timestamp - String token = rongCloudClient.getToken(rongyunApiUrl,appKey, Nonce, Timestamp, Signature, param); + String jsonStr = rongCloudClient.getToken(rongyunApiUrl,appKey, Nonce, Timestamp, Signature, param); + Map map = JSONObject.parseObject(jsonStr, Map.class); + String token = (String)map.get("token"); return token; } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java index 78f575e..b63cfeb 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysProfileController.java @@ -1,5 +1,6 @@ package com.ruoyi.web.controller.system; +import com.ruoyi.device.hiksdk.util.minio.MinioUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -128,7 +129,8 @@ if (!file.isEmpty()) { LoginUser loginUser = getLoginUser(); - String avatar = FileUploadUtils.upload(ARDConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION); + //String avatar = FileUploadUtils.upload(ARDConfig.getAvatarPath(), file, MimeTypeUtils.IMAGE_EXTENSION); + String avatar = MinioUtils.putObjectAndGetUrl("useravatar", file); if (userService.updateUserAvatar(loginUser.getUsername(), avatar)) { AjaxResult ajax = AjaxResult.success(); diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java index 2f3b193..f21d724 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java @@ -95,11 +95,23 @@ /** 鐩告満鎿嶆帶浼樺厛绾� */ private Integer cameraPriority; + + /** 鐢ㄦ埛铻嶄簯token */ + private String rongCloudToken; + public SysUser() { } + public String getRongCloudToken() { + return rongCloudToken; + } + + public void setRongCloudToken(String rongCloudToken) { + this.rongCloudToken = rongCloudToken; + } + public Integer getCameraPriority() { return cameraPriority; } diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index 3ea775d..ffdf51c 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -1,6 +1,8 @@ package com.ruoyi.framework.web.service; import javax.annotation.Resource; + +import com.ruoyi.rongcloud.service.RongCloudService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.authentication.BadCredentialsException; @@ -29,12 +31,11 @@ /** * 鐧诲綍鏍¢獙鏂规硶 - * + * * @author ruoyi */ @Component -public class SysLoginService -{ +public class SysLoginService { @Autowired private TokenService tokenService; @@ -43,83 +44,75 @@ @Autowired private RedisCache redisCache; - + @Autowired private ISysUserService userService; @Autowired private ISysConfigService configService; + @Resource + RongCloudService rongCloudService; /** * 鐧诲綍楠岃瘉 - * + * * @param username 鐢ㄦ埛鍚� * @param password 瀵嗙爜 - * @param code 楠岃瘉鐮� - * @param uuid 鍞竴鏍囪瘑 + * @param code 楠岃瘉鐮� + * @param uuid 鍞竴鏍囪瘑 * @return 缁撴灉 */ - public String login(String username, String password, String code, String uuid) - { + public String login(String username, String password, String code, String uuid) { boolean captchaEnabled = configService.selectCaptchaEnabled(); // 楠岃瘉鐮佸紑鍏� - if (captchaEnabled) - { + if (captchaEnabled) { validateCaptcha(username, code, uuid); } // 鐢ㄦ埛楠岃瘉 Authentication authentication = null; - try - { + try { UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(username, password); AuthenticationContextHolder.setContext(authenticationToken); // 璇ユ柟娉曚細鍘昏皟鐢║serDetailsServiceImpl.loadUserByUsername authentication = authenticationManager.authenticate(authenticationToken); - } - catch (Exception e) - { - if (e instanceof BadCredentialsException) - { + } catch (Exception e) { + if (e instanceof BadCredentialsException) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.password.not.match"))); throw new UserPasswordNotMatchException(); - } - else - { + } else { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, e.getMessage())); throw new ServiceException(e.getMessage()); } - } - finally - { + } finally { AuthenticationContextHolder.clearContext(); } AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"))); LoginUser loginUser = (LoginUser) authentication.getPrincipal(); recordLoginInfo(loginUser.getUserId()); // 鐢熸垚token - return tokenService.createToken(loginUser); + String token = tokenService.createToken(loginUser); + //鑾峰彇铻嶄簯token + getRongCloudToken(loginUser); + return token; } /** * 鏍¢獙楠岃瘉鐮� - * + * * @param username 鐢ㄦ埛鍚� - * @param code 楠岃瘉鐮� - * @param uuid 鍞竴鏍囪瘑 + * @param code 楠岃瘉鐮� + * @param uuid 鍞竴鏍囪瘑 * @return 缁撴灉 */ - public void validateCaptcha(String username, String code, String uuid) - { + public void validateCaptcha(String username, String code, String uuid) { String verifyKey = CacheConstants.CAPTCHA_CODE_KEY + StringUtils.nvl(uuid, ""); String captcha = redisCache.getCacheObject(verifyKey); redisCache.deleteObject(verifyKey); - if (captcha == null) - { + if (captcha == null) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"))); throw new CaptchaExpireException(); } - if (!code.equalsIgnoreCase(captcha)) - { + if (!code.equalsIgnoreCase(captcha)) { AsyncManager.me().execute(AsyncFactory.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"))); throw new CaptchaException(); } @@ -130,12 +123,29 @@ * * @param userId 鐢ㄦ埛ID */ - public void recordLoginInfo(String userId) - { + public void recordLoginInfo(String userId) { SysUser sysUser = new SysUser(); sysUser.setUserId(userId); sysUser.setLoginIp(IpUtils.getIpAddr(ServletUtils.getRequest())); sysUser.setLoginDate(DateUtils.getNowDate()); userService.updateUserProfile(sysUser); } + /** + * 鑾峰彇骞惰褰曡瀺浜憈oken + * + * @param loginUser 鐧诲綍鐢ㄦ埛 + */ + public void getRongCloudToken(LoginUser loginUser) { + try { + String userId = loginUser.getUserId(); + String nickName = loginUser.getUser().getNickName(); + String token = rongCloudService.getToken(userId, nickName); + SysUser sysUser = new SysUser(); + sysUser.setUserId(userId); + sysUser.setRongCloudToken(token); + userService.updateUser(sysUser); + } catch (Exception ex) { + throw ex; + } + } } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml index a15bc0b..585ce64 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml @@ -23,6 +23,7 @@ <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="cameraPriority" column="camera_priority"/> + <result property="rongCloudToken" column="rong_cloud_token"/> <result property="remark" column="remark"/> <association property="dept" column="dept_id" javaType="SysDept" resultMap="deptResult"/> <collection property="roles" javaType="java.util.List" resultMap="RoleResult"/> @@ -64,6 +65,7 @@ u.create_by, u.create_time, u.camera_priority, + u.rong_cloud_token, u.remark, d.dept_id, d.parent_id, @@ -86,7 +88,7 @@ <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult"> select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, - u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.camera_priority, d.dept_name, d.leader from sys_user + u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,u.camera_priority,u.rong_cloud_token, d.dept_name, d.leader from sys_user u left join sys_dept d on u.dept_id = d.dept_id where u.del_flag = '0' @@ -234,6 +236,7 @@ <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> <if test="remark != null">remark = #{remark},</if> <if test="cameraPriority != null">camera_priority = #{cameraPriority},</if> + <if test="rongCloudToken != null">rong_cloud_token = #{rongCloudToken},</if> update_time = now() </set> where user_id = #{userId} -- Gitblit v1.9.3