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