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