Merge pull request 'master' (#11) from master into dev
Reviewed-on: https://git.landaiqing.space/Schisandra-Cloud-Storage/schisandra-cloud-storage/pulls/11
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package com.schisandra.auth.api;
|
||||
|
||||
import com.schisandra.auth.entity.Result;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
|
@@ -120,7 +120,13 @@ public class SchisandraAuthPermissionController {
|
||||
return Result.fail("删除权限信息失败");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 查询用户菜单权限
|
||||
* @param: [userId]
|
||||
* @return: com.schisandra.auth.common.entity.Result<java.lang.Object>
|
||||
* @author: landaiqing
|
||||
* @date: 2024/7/8 下午4:09
|
||||
*/
|
||||
@GetMapping("selectUserPermission")
|
||||
public Result<Object> selectUserPermission(@RequestParam("userId") Long userId) {
|
||||
if (userId == null) {
|
||||
|
@@ -1,6 +1,5 @@
|
||||
package com.schisandra.auth.application.controller;
|
||||
|
||||
import cn.dev33.satoken.stp.SaTokenInfo;
|
||||
import cn.dev33.satoken.stp.StpUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
@@ -32,9 +31,12 @@ import org.apache.commons.lang3.ObjectUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.cache.annotation.Cacheable;
|
||||
import org.springframework.http.HttpRequest;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -367,7 +369,7 @@ public class SchisandraAuthUserController {
|
||||
public Result getClientToken(String clientId) {
|
||||
String key = redisUtil.buildKey(WX_LOGIN_TOKEN, clientId);
|
||||
String result = redisUtil.get(key);
|
||||
if(StringUtils.isBlank(result)){
|
||||
if (StringUtils.isBlank(result)) {
|
||||
return Result.fail();
|
||||
}
|
||||
return Result.ok(JSONObject.parseObject(result));
|
||||
|
@@ -32,7 +32,7 @@ public class SchisandraAuthPermissionDTO implements Serializable {
|
||||
/**
|
||||
* 权限路径
|
||||
*/
|
||||
private String menuUrl;
|
||||
private String path;
|
||||
/**
|
||||
* 权限状态
|
||||
*/
|
||||
@@ -49,25 +49,6 @@ public class SchisandraAuthPermissionDTO implements Serializable {
|
||||
* 权限标识
|
||||
*/
|
||||
private String permissionKey;
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String createdBy;
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createdTime;
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private String updateBy;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
/**
|
||||
* 是否删除
|
||||
*/
|
||||
private Integer isDeleted;
|
||||
|
||||
|
||||
|
@@ -2,11 +2,33 @@ package com.schisandra.auth.common.utils;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @ClassName: Tree
|
||||
* @Author: landaiqing
|
||||
* @Description:
|
||||
* @CreateTime: 2024/01/05 15:32
|
||||
*/
|
||||
|
||||
public class TreeUtils {
|
||||
|
||||
/**
|
||||
* @param nodesList 数据
|
||||
* @param pid 父ID
|
||||
* @param idFieldName ID字段名称
|
||||
* @param parentIdFieldName 父ID字段名称
|
||||
* @param childrenFieldName 子集字段名称
|
||||
* @param function 操作子集函数 通常可以做排序 如:stream -> stream.sorted(Comparator.comparing(TreeNode::getId, Comparator.reverseOrder())) 根据ID倒序
|
||||
* 如果不想排序直接 stream -> stream
|
||||
* @param <T>
|
||||
* @param <R>
|
||||
* @return
|
||||
*/
|
||||
public static <T, R> List<T> buildTree(List<T> nodesList, R pid, String idFieldName, String parentIdFieldName, String childrenFieldName, Function<Stream<T>, Stream<T>> function) {
|
||||
|
||||
Map<Object, List<T>> map = nodesList.stream().collect(Collectors.groupingBy(a -> {
|
||||
try {
|
||||
Field field = a.getClass().getDeclaredField(parentIdFieldName);
|
||||
@@ -18,6 +40,7 @@ public class TreeUtils {
|
||||
}));
|
||||
|
||||
List<T> roots = new ArrayList<>();
|
||||
|
||||
// 逐层构建树结构
|
||||
roots.addAll(function.apply(Optional.ofNullable(map.get(pid)).orElse(new ArrayList<>()).stream()).collect(Collectors.toList()));
|
||||
Queue<T> queue = new LinkedList<>(roots);
|
||||
@@ -41,7 +64,8 @@ public class TreeUtils {
|
||||
throw new RuntimeException("Error reading id field: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
return roots;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@@ -26,7 +26,7 @@ SchisandraAuthPermissionBO implements Serializable {
|
||||
|
||||
private Integer type;
|
||||
|
||||
private String menuUrl;
|
||||
private String path;
|
||||
|
||||
private Integer status;
|
||||
|
||||
|
@@ -52,11 +52,11 @@ public class SchisandraAuthPermissionDomainServiceImpl implements SchisandraAuth
|
||||
public Result<Object> selectUserPermissionTree(Long userId) {
|
||||
SchisandraAuthUserRole schisandraAuthRole = schisandraAuthUserRoleService.queryById(userId);
|
||||
if (schisandraAuthRole == null||schisandraAuthRole.getRoleId()==null) {
|
||||
return Result.ok("用户没有角色");
|
||||
return Result.fail("用户没有角色");
|
||||
}
|
||||
List<SchisandraAuthRolePermission> schisandraAuthRolePermissions = schisandraAuthRolePermissionService.queryByRoleId(schisandraAuthRole.getRoleId());
|
||||
if (schisandraAuthRolePermissions.size()==0){
|
||||
return Result.ok("当前角色用户没有权限");
|
||||
return Result.fail("当前角色用户没有权限");
|
||||
}
|
||||
List<SchisandraAuthPermissionBO> schisandraAuthPermissions =new ArrayList<>();
|
||||
List<SchisandraAuthPermissionBO> schisandraAuthPermissionParents = new ArrayList<>();
|
||||
@@ -77,55 +77,58 @@ public class SchisandraAuthPermissionDomainServiceImpl implements SchisandraAuth
|
||||
|
||||
/**
|
||||
* @description: 更新
|
||||
* @param: [schisandraAuthPermissionBO]
|
||||
* @return: java.lang.Object
|
||||
* @param: [schisandraAuthPermissionBO]
|
||||
* @return: java.lang.Object
|
||||
* @author zhang
|
||||
* @date: 2024/4/17 17:06
|
||||
*/
|
||||
*/
|
||||
@Override
|
||||
public int update(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
||||
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
||||
return schisandraAuthPermissionService.update(schisandraAuthPermission);
|
||||
}
|
||||
/**
|
||||
* @description: 删除
|
||||
* @param: [schisandraAuthPermissionBO]
|
||||
* @return: java.lang.Object
|
||||
* @author zhang
|
||||
* @date: 2024/4/17 17:06
|
||||
*/
|
||||
|
||||
/**
|
||||
* @description: 删除
|
||||
* @param: [schisandraAuthPermissionBO]
|
||||
* @return: java.lang.Object
|
||||
* @author zhang
|
||||
* @date: 2024/4/17 17:06
|
||||
*/
|
||||
@Override
|
||||
public Object delete(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
||||
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
||||
boolean schisandraAuthPermission1 =schisandraAuthPermissionService.deleteById(schisandraAuthPermission.getId());
|
||||
boolean schisandraAuthPermission1 = schisandraAuthPermissionService.deleteById(schisandraAuthPermission.getId());
|
||||
return schisandraAuthPermission1;
|
||||
}
|
||||
/**
|
||||
* @description: 插入
|
||||
* @param: [schisandraAuthPermissionBO]
|
||||
* @return: java.lang.Object
|
||||
* @author zhang
|
||||
* @date: 2024/4/17 17:06
|
||||
*/
|
||||
|
||||
/**
|
||||
* @description: 插入
|
||||
* @param: [schisandraAuthPermissionBO]
|
||||
* @return: java.lang.Object
|
||||
* @author zhang
|
||||
* @date: 2024/4/17 17:06
|
||||
*/
|
||||
@Override
|
||||
public Object insert(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
||||
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
||||
SchisandraAuthPermission schisandraAuthPermission1 =schisandraAuthPermissionService.insert(schisandraAuthPermission);
|
||||
SchisandraAuthPermission schisandraAuthPermission1 = schisandraAuthPermissionService.insert(schisandraAuthPermission);
|
||||
return schisandraAuthPermission1;
|
||||
}
|
||||
/**
|
||||
* @description: 查询
|
||||
* @param: [schisandraAuthPermissionBO]
|
||||
* @return: java.lang.Object
|
||||
* @author zhang
|
||||
* @date: 2024/4/17 17:07
|
||||
*/
|
||||
|
||||
/**
|
||||
* @description: 查询
|
||||
* @param: [schisandraAuthPermissionBO]
|
||||
* @return: java.lang.Object
|
||||
* @author zhang
|
||||
* @date: 2024/4/17 17:07
|
||||
*/
|
||||
@Override
|
||||
public SchisandraAuthPermissionBO select(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
||||
|
||||
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
||||
|
||||
SchisandraAuthPermission schisandraAuthPermission1 =schisandraAuthPermissionService.queryById(schisandraAuthPermission.getId());
|
||||
SchisandraAuthPermission schisandraAuthPermission1 = schisandraAuthPermissionService.queryById(schisandraAuthPermission.getId());
|
||||
SchisandraAuthPermissionBO schisandraAuthPermissionBO1 = SchisandraAuthPermissionBOConverter.INSTANCE.convertEntityToBO(schisandraAuthPermission1);
|
||||
return schisandraAuthPermissionBO1;
|
||||
}
|
||||
|
@@ -29,7 +29,7 @@ public class SchisandraAuthPermission implements Serializable {
|
||||
|
||||
private Integer type;
|
||||
|
||||
private String menuUrl;
|
||||
private String path;
|
||||
|
||||
private Integer status;
|
||||
|
||||
|
@@ -102,7 +102,7 @@ public class SchisandraSocialUserServiceImpl implements SchisandraSocialUserServ
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 根据appId和openId查询用户
|
||||
* @description: 根据openId查询用户
|
||||
* @param: [appId, openId]
|
||||
* @return: com.schisandra.auth.infra.basic.entity.SchisandraSocialUser
|
||||
* @author: landaiqing
|
||||
|
@@ -7,7 +7,7 @@
|
||||
<result property="name" column="name" jdbcType="VARCHAR"/>
|
||||
<result property="parentId" column="parent_id" jdbcType="INTEGER"/>
|
||||
<result property="type" column="type" jdbcType="INTEGER"/>
|
||||
<result property="menuUrl" column="menu_url" jdbcType="VARCHAR"/>
|
||||
<result property="path" column="path" jdbcType="VARCHAR"/>
|
||||
<result property="status" column="status" jdbcType="INTEGER"/>
|
||||
<result property="show" column="show" jdbcType="INTEGER"/>
|
||||
<result property="icon" column="icon" jdbcType="VARCHAR"/>
|
||||
|
@@ -2,21 +2,16 @@ package com.schisandra.oss.application.controller;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
|
||||
import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssAliDTO;
|
||||
import com.schisandra.oss.application.oss.core.ali.AliOssClient;
|
||||
import com.schisandra.oss.application.oss.core.ali.AliOssConfiguration;
|
||||
|
||||
import com.schisandra.oss.application.oss.model.OssInfo;
|
||||
import com.schisandra.oss.common.entity.Result;
|
||||
import com.schisandra.oss.domain.bo.SchisandraOssAliBO;
|
||||
import com.schisandra.oss.domain.redis.RedisUtil;
|
||||
import com.schisandra.oss.domain.service.SchisandraOssAliDomainService;
|
||||
|
||||
import com.schisandra.oss.infra.basic.dao.SchisandraOssAliDao;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -33,7 +28,7 @@ import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* controller
|
||||
* controller
|
||||
*
|
||||
* @author landaiqing
|
||||
* @since 2024-05-14 20:45:32
|
||||
@@ -54,6 +49,7 @@ public class SchisandraOssAliController {
|
||||
|
||||
/**
|
||||
* 返回ali表所有数据
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("returnAll")
|
||||
@@ -62,9 +58,8 @@ public class SchisandraOssAliController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
@GetMapping("init")
|
||||
public void init(@RequestParam String userId){
|
||||
public void init(@RequestParam String userId) {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssAliController.init.userId:{}", userId);
|
||||
}
|
||||
@@ -98,7 +93,6 @@ public class SchisandraOssAliController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 修改
|
||||
*/
|
||||
@@ -146,22 +140,21 @@ public class SchisandraOssAliController {
|
||||
* @date: 2024/7/5 13:55
|
||||
*/
|
||||
@GetMapping("listDir")
|
||||
public Result<String> listAliDir(@RequestParam String userId,@RequestParam String bucket,@RequestParam String prefix) throws Exception {
|
||||
public Result<String> listAliDir(@RequestParam String userId, @RequestParam String bucket, @RequestParam String prefix) throws Exception {
|
||||
Preconditions.checkNotNull(userId, "不能为空");
|
||||
AliOssClient bean = SpringUtil.getBean(userId);
|
||||
bean.getAliOssConfig().setBucketName(bucket);
|
||||
if(prefix==null)
|
||||
prefix="";
|
||||
return Result.ok(bean.listAliInfo(bucket,prefix));
|
||||
if (prefix == null)
|
||||
prefix = "";
|
||||
return Result.ok(bean.listAliInfo(bucket, prefix));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 查找bucket
|
||||
*
|
||||
* @param userId
|
||||
*/
|
||||
|
||||
@PostMapping("seleteBucket")
|
||||
public Result<String> seleteBucket(@RequestParam String userId) {
|
||||
Preconditions.checkNotNull(userId, "不能为空");
|
||||
@@ -187,6 +180,7 @@ public class SchisandraOssAliController {
|
||||
|
||||
/**
|
||||
* 删除bucket
|
||||
*
|
||||
* @param userId
|
||||
* @param bucket
|
||||
* @return
|
||||
@@ -214,15 +208,15 @@ public class SchisandraOssAliController {
|
||||
Preconditions.checkNotNull(bucket, "不能为空");
|
||||
|
||||
//设置热力图
|
||||
Date date =new Date();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,formattedDate);
|
||||
int count=1;
|
||||
if (redisUtil.exist(key)){
|
||||
count= Integer.parseInt(redisUtil.get(key));
|
||||
redisUtil.set(key, String.valueOf(count+1));
|
||||
}else {
|
||||
String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate);
|
||||
int count = 1;
|
||||
if (redisUtil.exist(key)) {
|
||||
count = Integer.parseInt(redisUtil.get(key));
|
||||
redisUtil.set(key, String.valueOf(count + 1));
|
||||
} else {
|
||||
redisUtil.set(key, String.valueOf(1));
|
||||
}
|
||||
// 获取文件输入流
|
||||
@@ -233,7 +227,6 @@ public class SchisandraOssAliController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @description: 下载文件
|
||||
* @param: [schisandraOssMinioDTO]
|
||||
@@ -251,8 +244,9 @@ public class SchisandraOssAliController {
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filePath.substring(filePath.lastIndexOf("/") + 1), "UTF-8"));
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
bean.downLoad(output,filePath);
|
||||
bean.downLoad(output, filePath);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 删除文件
|
||||
* @param: [schisandraOssAliDTO]
|
||||
@@ -288,7 +282,7 @@ public class SchisandraOssAliController {
|
||||
bean.getAliOssConfig().setBucketName(bucket);
|
||||
try {
|
||||
bean.rename(oldFileName, newFileName);
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
return Result.ok();
|
||||
|
@@ -3,21 +3,16 @@ package com.schisandra.oss.application.controller;
|
||||
import cn.hutool.core.util.ZipUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.amazonaws.util.IOUtils;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.gson.Gson;
|
||||
import com.schisandra.oss.application.convert.SchisandraOssMinioDTOConverter;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssAliDTO;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssMinioDTO;
|
||||
import com.schisandra.oss.application.oss.core.minio.MinioOssClient;
|
||||
import com.schisandra.oss.application.oss.core.minio.MinioOssConfiguration;
|
||||
import com.schisandra.oss.application.oss.model.OssInfo;
|
||||
import com.schisandra.oss.common.entity.Result;
|
||||
import com.schisandra.oss.domain.bo.SchisandraOssMinioBO;
|
||||
import com.schisandra.oss.domain.redis.RedisUtil;
|
||||
import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService;
|
||||
import io.minio.errors.*;
|
||||
import lombok.Data;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
@@ -31,8 +26,9 @@ import java.net.URLEncoder;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* controller
|
||||
@@ -58,6 +54,7 @@ public class SchisandraOssMinioController {
|
||||
|
||||
/**
|
||||
* 返回minio表所有数据
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("returnAll")
|
||||
@@ -87,6 +84,7 @@ public class SchisandraOssMinioController {
|
||||
log.error("用户: {}-> minio 初始化完成!", userId);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 获取文件目录信息
|
||||
* @param: [target, userId, dirName]
|
||||
@@ -95,7 +93,7 @@ public class SchisandraOssMinioController {
|
||||
* @date: 2024/6/26 13:55
|
||||
*/
|
||||
@GetMapping("listMinioDir")
|
||||
public Result<String> listMinioInfo( @RequestParam String userId, @RequestParam String dirName,@RequestParam String bucket) throws Exception {
|
||||
public Result<String> listMinioInfo(@RequestParam String userId, @RequestParam String dirName, @RequestParam String bucket) throws Exception {
|
||||
Preconditions.checkNotNull(userId, "不能为空");
|
||||
MinioOssClient bean = SpringUtil.getBean(userId);
|
||||
bean.getMinioOssConfig().setBucketName(bucket);
|
||||
@@ -110,21 +108,21 @@ public class SchisandraOssMinioController {
|
||||
* @date: 2024/6/26 13:56
|
||||
*/
|
||||
@GetMapping("downloadMinioFile")
|
||||
public void getMinioFile(@RequestParam String bucket, @RequestParam String userId, @RequestParam List<String> listObjectsArgs , HttpServletResponse response) throws Exception {
|
||||
public void getMinioFile(@RequestParam String bucket, @RequestParam String userId, @RequestParam List<String> listObjectsArgs, HttpServletResponse response) throws Exception {
|
||||
Preconditions.checkNotNull(bucket, "不能为空");
|
||||
Preconditions.checkNotNull(userId, "不能为空");
|
||||
Preconditions.checkNotNull(listObjectsArgs, "不能为空");
|
||||
MinioOssClient bean = SpringUtil.getBean(userId);
|
||||
bean.getMinioOssConfig().setBucketName(bucket);
|
||||
HashMap<String, InputStream> list=bean.getTargetDir(listObjectsArgs);
|
||||
HashMap<String, InputStream> list = bean.getTargetDir(listObjectsArgs);
|
||||
ServletOutputStream output = response.getOutputStream();
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("下载.zip", "UTF-8"));
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
String[] path = new String[list.size()];
|
||||
InputStream[] inputStreams= new InputStream[list.size()];
|
||||
path=list.keySet().toArray(path);
|
||||
inputStreams=list.values().toArray(inputStreams);
|
||||
InputStream[] inputStreams = new InputStream[list.size()];
|
||||
path = list.keySet().toArray(path);
|
||||
inputStreams = list.values().toArray(inputStreams);
|
||||
ZipUtil.zip(output, path, inputStreams);
|
||||
}
|
||||
|
||||
@@ -159,15 +157,15 @@ public class SchisandraOssMinioController {
|
||||
Preconditions.checkNotNull(fileName, "不能为空");
|
||||
Preconditions.checkNotNull(bucket, "不能为空");
|
||||
//设置热力图
|
||||
Date date =new Date();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,formattedDate);
|
||||
int count=1;
|
||||
if (redisUtil.exist(key)){
|
||||
count= Integer.parseInt(redisUtil.get(key));
|
||||
redisUtil.set(key, String.valueOf(count+1));
|
||||
}else {
|
||||
String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate);
|
||||
int count = 1;
|
||||
if (redisUtil.exist(key)) {
|
||||
count = Integer.parseInt(redisUtil.get(key));
|
||||
redisUtil.set(key, String.valueOf(count + 1));
|
||||
} else {
|
||||
redisUtil.set(key, String.valueOf(1));
|
||||
}
|
||||
|
||||
@@ -198,11 +196,12 @@ public class SchisandraOssMinioController {
|
||||
bean.getMinioOssConfig().setBucketName(bucket);
|
||||
try {
|
||||
bean.rename(oldFileName, newFileName);
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 拷贝文件
|
||||
* @param: [userId, bucket, oldFilePath, newFilePath]
|
||||
@@ -221,11 +220,12 @@ public class SchisandraOssMinioController {
|
||||
bean.getMinioOssConfig().setBucketName(bucket);
|
||||
try {
|
||||
bean.copy(oldFilePath, newFilePath);
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 预览文件
|
||||
* @param: [userId, bucket, filePath]
|
||||
@@ -245,7 +245,9 @@ public class SchisandraOssMinioController {
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 分享文件
|
||||
* @param: [userId, bucket, filePath]
|
||||
@@ -261,7 +263,7 @@ public class SchisandraOssMinioController {
|
||||
MinioOssClient bean = SpringUtil.getBean(userId);
|
||||
bean.getMinioOssConfig().setBucketName(bucket);
|
||||
try {
|
||||
return Result.ok(bean.shareMinioFile(filePath,time));
|
||||
return Result.ok(bean.shareMinioFile(filePath, time));
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
@@ -280,6 +282,7 @@ public class SchisandraOssMinioController {
|
||||
MinioOssClient bean = SpringUtil.getBean(userId);
|
||||
return Result.ok(bean.selectAllBucket());
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 创建bucket
|
||||
* @param: [userId, bucket]
|
||||
@@ -386,7 +389,7 @@ public class SchisandraOssMinioController {
|
||||
log.error("容器获取失败!");
|
||||
return null;
|
||||
}
|
||||
return Result.ok(bean.getInfo(fileName,true));
|
||||
return Result.ok(bean.getInfo(fileName, true));
|
||||
}
|
||||
|
||||
@GetMapping("getAllMinioInfo")
|
||||
@@ -397,11 +400,6 @@ public class SchisandraOssMinioController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
private void parameterCheck(SchisandraOssMinioDTO schisandraOssMinioDTO) {
|
||||
Preconditions.checkNotNull(schisandraOssMinioDTO.getId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssMinioDTO.getUserId(), "不能为空");
|
||||
|
@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.schisandra.oss.application.convert.SchisandraOssQiniuDTOConverter;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssQiniuDTO;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssUpDTO;
|
||||
import com.schisandra.oss.application.oss.core.qiniu.QiNiuOssClient;
|
||||
import com.schisandra.oss.application.oss.core.qiniu.QiNiuOssConfiguration;
|
||||
import com.schisandra.oss.application.oss.model.OssInfo;
|
||||
@@ -16,6 +15,7 @@ import com.schisandra.oss.domain.service.SchisandraOssQiniuDomainService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
@@ -48,6 +48,7 @@ public class SchisandraOssQiniuController {
|
||||
|
||||
/**
|
||||
* 返回七牛表所有数据
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("returnAll")
|
||||
@@ -86,7 +87,7 @@ public class SchisandraOssQiniuController {
|
||||
bean.getQiNiuOssConfig().setBucketName(bucket);
|
||||
try {
|
||||
bean.rename(oldFileName, newFileName);
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
return Result.ok();
|
||||
@@ -110,7 +111,7 @@ public class SchisandraOssQiniuController {
|
||||
bean.getQiNiuOssConfig().setBucketName(bucket);
|
||||
try {
|
||||
bean.copy(oldFilePath, newFilePath);
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
return Result.ok();
|
||||
@@ -125,7 +126,7 @@ public class SchisandraOssQiniuController {
|
||||
* @date: 2024/7/8 13:56
|
||||
*/
|
||||
@GetMapping("downloadFile")
|
||||
public void download_open(@RequestParam String userId,@RequestParam String endpoint, @RequestParam String filename,HttpServletResponse response) throws IOException {
|
||||
public void download_open(@RequestParam String userId, @RequestParam String endpoint, @RequestParam String filename, HttpServletResponse response) throws IOException {
|
||||
QiNiuOssClient bean = SpringUtil.getBean(userId);
|
||||
bean.getQiNiuOssConfig().setEndpoint(endpoint);
|
||||
ServletOutputStream output = response.getOutputStream();
|
||||
@@ -134,7 +135,7 @@ public class SchisandraOssQiniuController {
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
|
||||
bean.downLoad_open(output,filename,endpoint);
|
||||
bean.downLoad_open(output, filename, endpoint);
|
||||
}
|
||||
|
||||
|
||||
@@ -169,15 +170,15 @@ public class SchisandraOssQiniuController {
|
||||
Preconditions.checkNotNull(bucket, "不能为空");
|
||||
|
||||
//设置热力图
|
||||
Date date =new Date();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,formattedDate);
|
||||
int count=1;
|
||||
if (redisUtil.exist(key)){
|
||||
count= Integer.parseInt(redisUtil.get(key));
|
||||
redisUtil.set(key, String.valueOf(count+1));
|
||||
}else {
|
||||
String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate);
|
||||
int count = 1;
|
||||
if (redisUtil.exist(key)) {
|
||||
count = Integer.parseInt(redisUtil.get(key));
|
||||
redisUtil.set(key, String.valueOf(count + 1));
|
||||
} else {
|
||||
redisUtil.set(key, String.valueOf(1));
|
||||
}
|
||||
|
||||
@@ -219,19 +220,20 @@ public class SchisandraOssQiniuController {
|
||||
|
||||
/**
|
||||
* 创建桶createbucket
|
||||
*
|
||||
* @param userId
|
||||
* @param bucket
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("createBucket")
|
||||
public Result<String> createBucket(@RequestParam String userId, @RequestParam String bucket,@RequestParam String region) {
|
||||
public Result<String> createBucket(@RequestParam String userId, @RequestParam String bucket, @RequestParam String region) {
|
||||
Preconditions.checkNotNull(userId, "不能为空");
|
||||
Preconditions.checkNotNull(bucket, "不能为空");
|
||||
QiNiuOssClient bean = SpringUtil.getBean(userId);
|
||||
bean.getQiNiuOssConfig().setBucketName(bucket);
|
||||
bean.getQiNiuOssConfig().setRegion(region);
|
||||
try {
|
||||
return Result.ok(bean.createBucket(bucket,region));
|
||||
return Result.ok(bean.createBucket(bucket, region));
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
@@ -259,7 +261,6 @@ public class SchisandraOssQiniuController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 新增七牛云对象存储配置表
|
||||
*/
|
||||
|
@@ -5,10 +5,6 @@ import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.schisandra.oss.application.convert.SchisandraOssSftpDTOConverter;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssSftpDTO;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssUpDTO;
|
||||
import com.schisandra.oss.application.oss.core.ali.AliOssClient;
|
||||
import com.schisandra.oss.application.oss.core.ftp.FtpOssClient;
|
||||
import com.schisandra.oss.application.oss.core.ftp.FtpOssConfiguration;
|
||||
import com.schisandra.oss.application.oss.core.qiniu.QiNiuOssClient;
|
||||
import com.schisandra.oss.application.oss.core.sftp.SftpOssClient;
|
||||
import com.schisandra.oss.application.oss.core.sftp.SftpOssConfiguration;
|
||||
@@ -55,6 +51,7 @@ public class SchisandraOssSftpController {
|
||||
|
||||
/**
|
||||
* 返回up表所有数据
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("returnAll")
|
||||
@@ -77,7 +74,7 @@ public class SchisandraOssSftpController {
|
||||
QiNiuOssClient bean = SpringUtil.getBean(userId);
|
||||
try {
|
||||
bean.copy(oldFilePath, newFilePath);
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
return Result.ok();
|
||||
@@ -87,7 +84,7 @@ public class SchisandraOssSftpController {
|
||||
* 重命名
|
||||
*/
|
||||
@PostMapping("renameFile")
|
||||
public Result renameSftpFile(@RequestParam String userId, @RequestParam String oldFileName, @RequestParam String newFileName) throws IOException {
|
||||
public Result renameSftpFile(@RequestParam String userId, @RequestParam String oldFileName, @RequestParam String newFileName) throws IOException {
|
||||
|
||||
Preconditions.checkNotNull(userId, "不能为空");
|
||||
Preconditions.checkNotNull(oldFileName, "不能为空");
|
||||
@@ -95,7 +92,7 @@ public class SchisandraOssSftpController {
|
||||
SftpOssClient bean = SpringUtil.getBean(userId);
|
||||
try {
|
||||
bean.rename(oldFileName, newFileName);
|
||||
}catch (Exception e){
|
||||
} catch (Exception e) {
|
||||
return Result.fail(e.getMessage());
|
||||
}
|
||||
return Result.ok();
|
||||
@@ -131,7 +128,7 @@ public class SchisandraOssSftpController {
|
||||
*/
|
||||
|
||||
@GetMapping("downloadFile")
|
||||
public void downloadSftpFile(@RequestParam String userId, @RequestParam String filename, HttpServletResponse response) throws IOException {
|
||||
public void downloadSftpFile(@RequestParam String userId, @RequestParam String filename, HttpServletResponse response) throws IOException {
|
||||
SftpOssClient bean = SpringUtil.getBean(userId);
|
||||
ServletOutputStream output = response.getOutputStream();
|
||||
|
||||
@@ -139,7 +136,7 @@ public class SchisandraOssSftpController {
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
response.setContentType("application/vnd.ms-excel");
|
||||
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
|
||||
bean.downLoad(output,filename);
|
||||
bean.downLoad(output, filename);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -147,21 +144,21 @@ public class SchisandraOssSftpController {
|
||||
*/
|
||||
@PostMapping("uploadFile")
|
||||
@SneakyThrows
|
||||
public Result<OssInfo> uploadSftpFile(@RequestParam String userId , @RequestParam MultipartFile file, @RequestParam String fileName) {
|
||||
public Result<OssInfo> uploadSftpFile(@RequestParam String userId, @RequestParam MultipartFile file, @RequestParam String fileName) {
|
||||
Preconditions.checkNotNull(userId, "不能为空");
|
||||
Preconditions.checkNotNull(fileName, "不能为空");
|
||||
|
||||
|
||||
//设置热力图
|
||||
Date date =new Date();
|
||||
Date date = new Date();
|
||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
String formattedDate = dateFormat.format(date);
|
||||
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,formattedDate);
|
||||
int count=1;
|
||||
if (redisUtil.exist(key)){
|
||||
count= Integer.parseInt(redisUtil.get(key));
|
||||
redisUtil.set(key, String.valueOf(count+1));
|
||||
}else {
|
||||
String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate);
|
||||
int count = 1;
|
||||
if (redisUtil.exist(key)) {
|
||||
count = Integer.parseInt(redisUtil.get(key));
|
||||
redisUtil.set(key, String.valueOf(count + 1));
|
||||
} else {
|
||||
redisUtil.set(key, String.valueOf(1));
|
||||
}
|
||||
|
||||
|
@@ -1,20 +1,25 @@
|
||||
package com.schisandra.oss.application.controller;
|
||||
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.schisandra.oss.application.convert.SchisandraOssUpDTOConverter;
|
||||
import com.schisandra.oss.application.dto.SchisandraOssUpDTO;
|
||||
import com.schisandra.oss.application.oss.core.up.UpOssClient;
|
||||
import com.schisandra.oss.application.oss.core.up.UpOssConfiguration;
|
||||
import com.schisandra.oss.application.oss.model.OssInfo;
|
||||
import com.schisandra.oss.common.entity.Result;
|
||||
import com.schisandra.oss.domain.bo.SchisandraOssUpBO;
|
||||
import com.schisandra.oss.domain.service.SchisandraOssUpDomainService;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.ServletOutputStream;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.InputStream;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -35,6 +40,7 @@ public class SchisandraOssUpController {
|
||||
|
||||
/**
|
||||
* 返回up表所有数据
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("returnAll")
|
||||
@@ -43,35 +49,106 @@ public class SchisandraOssUpController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增又拍云对象存储配置表
|
||||
* @description: 初始化
|
||||
* @param: []
|
||||
* @return: void
|
||||
* @author: landaiqing
|
||||
* @date: 2024/6/28 上午11:36
|
||||
*/
|
||||
@RequestMapping("add")
|
||||
@PostMapping("init")
|
||||
public void init(@RequestParam("userId") String userId) {
|
||||
try {
|
||||
upOssConfiguration.upOssClient(userId);
|
||||
log.info("用户:{} 又拍云oss初始化成功", userId);
|
||||
} catch (Exception e) {
|
||||
log.error("用户:{} 又拍云oss初始化失败", userId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 获取指定文件信息
|
||||
* @param: [userId,fileName]
|
||||
* @return: com.schisandra.oss.common.entity.Result
|
||||
* @author: landaiqing
|
||||
* @date: 2024/6/28 上午11:42
|
||||
*/
|
||||
@PostMapping("getInfo")
|
||||
public Result getInfo(@RequestParam("userId") String userId, @RequestParam("fileName") String fileName) {
|
||||
UpOssClient bean = SpringUtil.getBean(userId);
|
||||
OssInfo info = bean.getInfo(fileName);
|
||||
return Result.ok(info);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 单个文件上传
|
||||
* @param: [userId, fileName, file, isOverride]
|
||||
* @return: com.schisandra.oss.common.entity.Result
|
||||
* @author: landaiqing
|
||||
* @date: 2024/6/28 下午3:00
|
||||
*/
|
||||
@SneakyThrows
|
||||
@PostMapping("upload")
|
||||
public Result upload(@RequestParam("userId") String userId, @RequestParam("file") MultipartFile file, @RequestParam("isOverride") Boolean isOverride) {
|
||||
UpOssClient bean = SpringUtil.getBean(userId);
|
||||
String originalFileName = file.getOriginalFilename();
|
||||
InputStream is = file.getInputStream();
|
||||
OssInfo ossInfo = bean.upLoad(is, originalFileName, isOverride);
|
||||
return Result.ok(ossInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 删除文件
|
||||
* @param: [userId, fileName]
|
||||
* @return: com.schisandra.oss.common.entity.Result
|
||||
* @author: landaiqing
|
||||
* @date: 2024/6/28 下午3:21
|
||||
*/
|
||||
@PostMapping("deleteFile")
|
||||
public Result deleteFile(@RequestParam("userId") String userId, @RequestParam("fileName") String fileName) {
|
||||
UpOssClient bean = SpringUtil.getBean(userId);
|
||||
bean.delete(fileName);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 下载文件
|
||||
* @param: [userId, fileName, response]
|
||||
* @return: com.schisandra.oss.common.entity.Result
|
||||
* @author: landaiqing
|
||||
* @date: 2024/6/28 下午3:55
|
||||
*/
|
||||
@SneakyThrows
|
||||
@GetMapping("download")
|
||||
public Result download(@RequestParam("userId") String userId, @RequestParam("fileName") String fileName, HttpServletResponse response) {
|
||||
UpOssClient bean = SpringUtil.getBean(userId);
|
||||
ServletOutputStream output = response.getOutputStream();
|
||||
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
|
||||
response.setContentType("application/octet-stream");
|
||||
response.setCharacterEncoding("UTF-8");
|
||||
bean.downLoad(output, fileName);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: 新增又拍云对象存储配置
|
||||
* @param: [schisandraOssUpDTO]
|
||||
* @return: com.schisandra.oss.common.entity.Result<java.lang.Boolean>
|
||||
* @author: landaiqing
|
||||
* @date: 2024/6/28 下午3:14
|
||||
*/
|
||||
@PostMapping("add")
|
||||
public Result<Boolean> add(@RequestBody SchisandraOssUpDTO schisandraOssUpDTO) {
|
||||
|
||||
try {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssUpController.add.dto:{}", JSON.toJSONString(schisandraOssUpDTO));
|
||||
}
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBasePath(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBucketName(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserName(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getPassword(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getTimeout(), "默认的超时时间:30秒不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getApiDomain(), "默认为自动识别接入点不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getPartSize(), "分片大小,默认5MB不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getTaskNum(), "并发线程数,默认等于CPU的核数不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getStatus(), "状态不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getOpenAdvancedSetup(), "是否开启高级设置不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreatedBy(), "创建人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreatedTime(), "创建时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUpdateTime(), "更新时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUpdateBy(), "更新人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getIsDeleted(), "是否删除 0 未删除 1已删除不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getExtraJson(), "额外字段不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreateBucket(), "当桶不存在,是否创建不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCheckBucket(), "启动检测桶,是否存在不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserId(), "UserId不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBasePath(), "BasePath不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBucketName(), "BucketName不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserName(), "UserName不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getPassword(), "Password不能为空");
|
||||
SchisandraOssUpBO SchisandraOssUpBO = SchisandraOssUpDTOConverter.INSTANCE.convertDTOToBO(schisandraOssUpDTO);
|
||||
return Result.ok(schisandraOssUpDomainService.add(SchisandraOssUpBO));
|
||||
} catch (Exception e) {
|
||||
@@ -82,35 +159,19 @@ public class SchisandraOssUpController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改又拍云对象存储配置表
|
||||
* @description: 修改又拍云对象存储配置
|
||||
* @param: [schisandraOssUpDTO]
|
||||
* @return: com.schisandra.oss.common.entity.Result<java.lang.Boolean>
|
||||
* @author: landaiqing
|
||||
* @date: 2024/6/28 下午3:14
|
||||
*/
|
||||
@RequestMapping("update")
|
||||
@PostMapping("update")
|
||||
public Result<Boolean> update(@RequestBody SchisandraOssUpDTO schisandraOssUpDTO) {
|
||||
|
||||
try {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssUpController.update.dto:{}", JSON.toJSONString(schisandraOssUpDTO));
|
||||
}
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBasePath(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBucketName(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserName(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getPassword(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getTimeout(), "默认的超时时间:30秒不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getApiDomain(), "默认为自动识别接入点不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getPartSize(), "分片大小,默认5MB不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getTaskNum(), "并发线程数,默认等于CPU的核数不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getStatus(), "状态不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getOpenAdvancedSetup(), "是否开启高级设置不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreatedBy(), "创建人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreatedTime(), "创建时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUpdateTime(), "更新时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUpdateBy(), "更新人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getIsDeleted(), "是否删除 0 未删除 1已删除不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getExtraJson(), "额外字段不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreateBucket(), "当桶不存在,是否创建不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCheckBucket(), "启动检测桶,是否存在不能为空");
|
||||
SchisandraOssUpBO schisandraOssUpBO = SchisandraOssUpDTOConverter.INSTANCE.convertDTOToBO(schisandraOssUpDTO);
|
||||
return Result.ok(schisandraOssUpDomainService.update(schisandraOssUpBO));
|
||||
} catch (Exception e) {
|
||||
@@ -120,36 +181,22 @@ public class SchisandraOssUpController {
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 删除又拍云对象存储配置表
|
||||
* @description: 删除又拍云对象存储配置
|
||||
* @param: [schisandraOssUpDTO]
|
||||
* @return: com.schisandra.oss.common.entity.Result<java.lang.Boolean>
|
||||
* @author: landaiqing
|
||||
* @date: 2024/6/28 下午3:14
|
||||
*/
|
||||
@RequestMapping("delete")
|
||||
@DeleteMapping("delete")
|
||||
public Result<Boolean> delete(@RequestBody SchisandraOssUpDTO schisandraOssUpDTO) {
|
||||
|
||||
try {
|
||||
if (log.isInfoEnabled()) {
|
||||
log.info("SchisandraOssUpController.delete.dto:{}", JSON.toJSONString(schisandraOssUpDTO));
|
||||
}
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserId(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBasePath(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBucketName(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserName(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getPassword(), "不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getTimeout(), "默认的超时时间:30秒不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getApiDomain(), "默认为自动识别接入点不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getPartSize(), "分片大小,默认5MB不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getTaskNum(), "并发线程数,默认等于CPU的核数不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getStatus(), "状态不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getOpenAdvancedSetup(), "是否开启高级设置不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreatedBy(), "创建人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreatedTime(), "创建时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUpdateTime(), "更新时间不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUpdateBy(), "更新人不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getIsDeleted(), "是否删除 0 未删除 1已删除不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getExtraJson(), "额外字段不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCreateBucket(), "当桶不存在,是否创建不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getCheckBucket(), "启动检测桶,是否存在不能为空");
|
||||
Preconditions.checkNotNull(schisandraOssUpDTO.getId(), "Id不能为空");
|
||||
SchisandraOssUpBO schisandraOssUpBO = SchisandraOssUpDTOConverter.INSTANCE.convertDTOToBO(schisandraOssUpDTO);
|
||||
return Result.ok(schisandraOssUpDomainService.delete(schisandraOssUpBO));
|
||||
} catch (Exception e) {
|
||||
|
@@ -45,6 +45,8 @@ public class SchisandraOssTencentDTO implements Serializable {
|
||||
*/
|
||||
private String secretKey;
|
||||
|
||||
private String appId;
|
||||
|
||||
/**
|
||||
* 地域
|
||||
*/
|
||||
|
@@ -22,6 +22,7 @@ import com.schisandra.oss.application.oss.utils.OssPathUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.InputStream;
|
||||
|
@@ -29,7 +29,7 @@ public class AwsOssConfig {
|
||||
|
||||
private AwsRegion region;
|
||||
|
||||
private DefaultsMode mode;
|
||||
private DefaultsMode mode;
|
||||
|
||||
private AwsOssClientConfig clientConfig;
|
||||
/**
|
||||
|
@@ -20,36 +20,35 @@ import com.schisandra.oss.application.oss.utils.OssPathUtil;
|
||||
import com.upyun.ParallelUploader;
|
||||
import com.upyun.RestManager;
|
||||
import com.upyun.UpException;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import okhttp3.Headers;
|
||||
import okhttp3.Response;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* @author zlg
|
||||
* @description:
|
||||
* @param:
|
||||
* @return:
|
||||
* @author zlg
|
||||
* @date: 2024/6/25 14:40
|
||||
*/
|
||||
@Slf4j
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@Component
|
||||
public class UpOssClient implements StandardOssClient {
|
||||
|
||||
public static final String REST_OBJECT_NAME = "restManager";
|
||||
public static final String PARALLEL_OBJECT_NAME = "parallelUploader";
|
||||
|
||||
private RestManager restManager;
|
||||
private ParallelUploader parallelUploader;
|
||||
private UpOssConfig upOssConfig;
|
||||
@@ -206,8 +205,8 @@ public class UpOssClient implements StandardOssClient {
|
||||
Response fileInfo = restManager.getFileInfo(key);
|
||||
Headers headers = fileInfo.headers();
|
||||
ossInfo.setLength(headers.get(RestManager.PARAMS.X_UPYUN_FILE_SIZE.getValue()));
|
||||
ossInfo.setCreateTime(DateUtil.date(headers.getDate(RestManager.PARAMS.X_UPYUN_FILE_DATE.getValue())).toString(DatePattern.NORM_DATETIME_PATTERN));
|
||||
ossInfo.setLastUpdateTime(DateUtil.date(headers.getDate(RestManager.PARAMS.X_UPYUN_FILE_DATE.getValue())).toString(DatePattern.NORM_DATETIME_PATTERN));
|
||||
ossInfo.setCreateTime(DateUtil.date(Long.parseLong(Objects.requireNonNull(headers.get(RestManager.PARAMS.X_UPYUN_FILE_DATE.getValue())))).toString(DatePattern.NORM_DATETIME_PATTERN));
|
||||
ossInfo.setLastUpdateTime(DateUtil.date(Long.parseLong(Objects.requireNonNull(headers.get(RestManager.PARAMS.X_UPYUN_FILE_DATE.getValue())))).toString(DatePattern.NORM_DATETIME_PATTERN));
|
||||
} else {
|
||||
ossInfo = getDirectoryOssInfo(key);
|
||||
}
|
||||
|
@@ -68,26 +68,32 @@ public class UpOssConfiguration {
|
||||
public StandardOssClient upOssClient(String userId) {
|
||||
SchisandraOssUpBO schisandraOssUpBO = schisandraOssUpDomainService.getUpOssConfig(userId);
|
||||
SchisandraOssUpDTO schisandraOssUpDTO = SchisandraOssUpDTOConverter.INSTANCE.convertBOToDTO(schisandraOssUpBO);
|
||||
log.info("Up oss配置信息获取成功:{}", schisandraOssUpDTO);
|
||||
if (ObjectUtil.isEmpty(schisandraOssUpDTO)) {
|
||||
log.error("Up oss配置信息获取失败");
|
||||
return null;
|
||||
}
|
||||
String userName = schisandraOssUpDTO.getUserName();
|
||||
String password = schisandraOssUpDTO.getPassword();
|
||||
String bucketName = schisandraOssUpDTO.getBucketName();
|
||||
String basePath = schisandraOssUpDTO.getBasePath();
|
||||
UpOssConfig upOssConfig = new UpOssConfig();
|
||||
upOssConfig.setUserName(userName);
|
||||
upOssConfig.setPassword(password);
|
||||
upOssConfig.setBucketName(bucketName);
|
||||
upOssConfig.setBasePath(basePath);
|
||||
SpringUtil.registerBean(userId, upOssClient(upOssConfig));
|
||||
return upOssClient(upOssConfig);
|
||||
|
||||
}
|
||||
|
||||
private StandardOssClient upOssClient(UpOssConfig upOssConfig) {
|
||||
private UpOssClient upOssClient(UpOssConfig upOssConfig) {
|
||||
RestManager restManager = restManager(upOssConfig);
|
||||
ParallelUploader parallelUploader = parallelUploader(upOssConfig);
|
||||
return upOssClient(restManager, parallelUploader, upOssConfig);
|
||||
}
|
||||
|
||||
public StandardOssClient upOssClient(RestManager restManager, ParallelUploader parallelUploader, UpOssConfig upOssConfig) {
|
||||
public UpOssClient upOssClient(RestManager restManager, ParallelUploader parallelUploader, UpOssConfig upOssConfig) {
|
||||
return new UpOssClient(restManager, parallelUploader, upOssConfig);
|
||||
}
|
||||
|
||||
|
@@ -1,8 +1,7 @@
|
||||
package com.schisandra.oss.domain.service.impl;
|
||||
|
||||
import com.schisandra.oss.common.enums.IsDeletedFlagEnum;
|
||||
import com.schisandra.oss.domain.convert.SchisandraFileHeatmapBOConverter;
|
||||
import com.schisandra.oss.domain.bo.SchisandraFileHeatmapBO;
|
||||
import com.schisandra.oss.domain.convert.SchisandraFileHeatmapBOConverter;
|
||||
import com.schisandra.oss.domain.service.SchisandraFileHeatmapDomainService;
|
||||
import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap;
|
||||
import com.schisandra.oss.infra.basic.service.SchisandraFileHeatmapService;
|
||||
|
@@ -8,7 +8,6 @@ import com.schisandra.oss.domain.service.SchisandraOssAliDomainService;
|
||||
import com.schisandra.oss.infra.basic.entity.SchisandraOssAli;
|
||||
import com.schisandra.oss.infra.basic.service.SchisandraOssAliService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.slf4j.Logger;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@@ -58,7 +57,7 @@ public class SchisandraOssAliDomainServiceImpl implements SchisandraOssAliDomain
|
||||
|
||||
|
||||
@Override
|
||||
public List<SchisandraOssAliBO> selectAll(){
|
||||
public List<SchisandraOssAliBO> selectAll() {
|
||||
List<SchisandraOssAli> list = schisandraOssAliService.selectAll();
|
||||
List<SchisandraOssAliBO> schisandraOssAliBO_list = new ArrayList<>();
|
||||
for (SchisandraOssAli schisandraOssAli : list) {
|
||||
|
@@ -55,9 +55,8 @@ public class SchisandraOssTencent implements Serializable {
|
||||
*/
|
||||
@Column("secret_key")
|
||||
private String secretKey;
|
||||
|
||||
/**
|
||||
* 地域
|
||||
*
|
||||
*/
|
||||
@Column("app_id")
|
||||
private String appId;
|
||||
|
@@ -124,6 +124,11 @@
|
||||
<artifactId>schisandra-cloud-storage-auth-api</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||
<version>2.4.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<dependencyManagement>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
package com.schisandra.wechat.config;
|
||||
package com.schisandra.wechat.config.job;
|
||||
|
||||
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
|
||||
import org.slf4j.Logger;
|
@@ -0,0 +1,15 @@
|
||||
package com.schisandra.wechat.config.websocket;
|
||||
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
|
||||
|
||||
@Configuration
|
||||
public class WebSocketConfig {
|
||||
|
||||
@Bean
|
||||
public ServerEndpointExporter serverEndpointExporter() {
|
||||
return new ServerEndpointExporter();
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,29 @@
|
||||
package com.schisandra.wechat.config.websocket;
|
||||
|
||||
import com.alibaba.nacos.common.utils.CollectionUtils;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.websocket.HandshakeResponse;
|
||||
import javax.websocket.server.HandshakeRequest;
|
||||
import javax.websocket.server.ServerEndpointConfig;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Component
|
||||
public class WebSocketServerConfig extends ServerEndpointConfig.Configurator {
|
||||
|
||||
@Override
|
||||
public boolean checkOrigin(String originHeaderValue) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void modifyHandshake(ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) {
|
||||
Map<String, List<String>> parameterMap = request.getParameterMap();
|
||||
List<String> erpList = parameterMap.get("clientId");
|
||||
if(!CollectionUtils.isEmpty(erpList)){
|
||||
sec.getUserProperties().put("clientId", erpList.get(0));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
package com.schisandra.wechat.config;
|
||||
package com.schisandra.wechat.config.wx;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.context.annotation.Bean;
|
@@ -1,4 +1,4 @@
|
||||
package com.schisandra.wechat.config;
|
||||
package com.schisandra.wechat.config.wx;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
@@ -1,4 +1,4 @@
|
||||
package com.schisandra.wechat.config;
|
||||
package com.schisandra.wechat.config.wx;
|
||||
|
||||
import lombok.Data;
|
||||
|
@@ -1,11 +1,12 @@
|
||||
package com.schisandra.wechat.controller;
|
||||
|
||||
import com.schisandra.wechat.common.entity.Result;
|
||||
import com.schisandra.wechat.config.WxConfig;
|
||||
import com.schisandra.wechat.config.wx.WxConfig;
|
||||
import com.schisandra.wechat.dto.AccessTokenResult;
|
||||
import com.schisandra.wechat.dto.MpQrCodeCreateRequest;
|
||||
import com.schisandra.wechat.dto.MpQrCodeCreateResult;
|
||||
import com.schisandra.wechat.service.WXService;
|
||||
import com.schisandra.wechat.websocket.WeChatSocket;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@@ -14,7 +15,6 @@ import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @Classname WxController
|
||||
@@ -32,8 +32,9 @@ public class WxController {
|
||||
@Resource
|
||||
private WXService wxService;
|
||||
@Resource
|
||||
WxConfig wxConfig;
|
||||
|
||||
private WxConfig wxConfig;
|
||||
@Resource
|
||||
private WeChatSocket weChatSocket;
|
||||
/**
|
||||
* @description: 获取微信access_token
|
||||
* @param: []
|
||||
|
@@ -1,6 +1,6 @@
|
||||
package com.schisandra.wechat.job;
|
||||
|
||||
import com.schisandra.wechat.config.WxConfig;
|
||||
import com.schisandra.wechat.config.wx.WxConfig;
|
||||
import com.schisandra.wechat.service.WXService;
|
||||
import com.xxl.job.core.context.XxlJobHelper;
|
||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
||||
|
@@ -5,21 +5,23 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||
import com.schisandra.wechat.aes.AesException;
|
||||
import com.schisandra.wechat.common.exception.ParameterException;
|
||||
import com.schisandra.wechat.config.WxConfig;
|
||||
import com.schisandra.wechat.common.redis.RedisUtil;
|
||||
import com.schisandra.wechat.config.wx.WxConfig;
|
||||
import com.schisandra.wechat.dto.MpBaseEventRequest;
|
||||
import com.schisandra.wechat.dto.MpCommonRequest;
|
||||
import com.schisandra.wechat.dto.MpSubscribeEventRequest;
|
||||
import com.schisandra.wechat.dto.MpTextEventRequest;
|
||||
import com.schisandra.wechat.rpc.AuthUserRpc;
|
||||
import com.schisandra.wechat.service.WxMpEventService;
|
||||
import com.schisandra.wechat.websocket.WeChatSocket;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.logging.log4j.util.Strings;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import java.io.IOException;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.Arrays;
|
||||
@@ -30,9 +32,7 @@ import java.util.Objects;
|
||||
@Slf4j
|
||||
public class WxMpEventServiceImpl implements WxMpEventService {
|
||||
@Resource
|
||||
ApplicationContext applicationContext;
|
||||
@Resource
|
||||
WxConfig wxConfig;
|
||||
private WxConfig wxConfig;
|
||||
|
||||
@Resource
|
||||
private AuthUserRpc authUserRpc;
|
||||
@@ -68,20 +68,33 @@ public class WxMpEventServiceImpl implements WxMpEventService {
|
||||
MpTextEventRequest mpTextEventRequest = mapper.convertValue(object, MpTextEventRequest.class);
|
||||
log.info(mpTextEventRequest.toString());
|
||||
log.info("推送消息:MpTextEventRequest...");
|
||||
// applicationContext.publishEvent(mpTextEventRequest);
|
||||
//...
|
||||
}
|
||||
if ("event".equals(mpBaseEventRequest.getMsgType())) {
|
||||
MpSubscribeEventRequest mpSubscribeEventRequest = mapper.convertValue(object, MpSubscribeEventRequest.class);
|
||||
log.info(mpSubscribeEventRequest.toString());
|
||||
log.info("推送消息:MpSubscribeEventRequest...");
|
||||
// applicationContext.publishEvent(mpSubscribeEventRequest);
|
||||
// ...
|
||||
if ("subscribe".equals(mpSubscribeEventRequest.getEvent())
|
||||
&& Strings.isNotBlank(mpSubscribeEventRequest.getEventKey())) {
|
||||
String[] keys = mpSubscribeEventRequest.getEventKey().split("_");
|
||||
if ("qrscene".equals(keys[0]) && "ScanReg".equals(keys[1])) {
|
||||
log.info("AppId:{},ClientId:{}", keys[2], keys[3]);
|
||||
authUserRpc.wechatRegister(keys[2], mpSubscribeEventRequest.getFromUserName(), keys[3]);
|
||||
return null;
|
||||
Boolean result = authUserRpc.wechatRegister(keys[2], mpSubscribeEventRequest.getFromUserName(), keys[3]);
|
||||
String replyContent;
|
||||
if (result){
|
||||
replyContent = "登录成功!";
|
||||
}else{
|
||||
replyContent = "登录失败!";
|
||||
}
|
||||
String content = "<xml>\n" +
|
||||
" <ToUserName><![CDATA[" + mpSubscribeEventRequest.getFromUserName() + "]]></ToUserName>\n" +
|
||||
" <FromUserName><![CDATA[" + mpSubscribeEventRequest.getToUserName() + "]]></FromUserName>\n" +
|
||||
" <CreateTime>12345678</CreateTime>\n" +
|
||||
" <MsgType><![CDATA[text]]></MsgType>\n" +
|
||||
" <Content><![CDATA[" + replyContent + "]]></Content>\n" +
|
||||
"</xml>";
|
||||
return content;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,9 +103,21 @@ public class WxMpEventServiceImpl implements WxMpEventService {
|
||||
String[] keys = mpSubscribeEventRequest.getEventKey().split("_");
|
||||
if ("ScanReg".equals(keys[0])) {
|
||||
log.info("AppId:{},ClientId:{}", keys[1], keys[2]);
|
||||
authUserRpc.wechatRegister(keys[1], mpSubscribeEventRequest.getFromUserName(), keys[2]);
|
||||
|
||||
return null;
|
||||
Boolean result = authUserRpc.wechatRegister(keys[1], mpSubscribeEventRequest.getFromUserName(), keys[2]);
|
||||
String replyContent;
|
||||
if (result){
|
||||
replyContent = "登录成功!";
|
||||
}else{
|
||||
replyContent = "登录失败!";
|
||||
}
|
||||
String content = "<xml>\n" +
|
||||
" <ToUserName><![CDATA[" + mpSubscribeEventRequest.getFromUserName() + "]]></ToUserName>\n" +
|
||||
" <FromUserName><![CDATA[" + mpSubscribeEventRequest.getToUserName() + "]]></FromUserName>\n" +
|
||||
" <CreateTime>12345678</CreateTime>\n" +
|
||||
" <MsgType><![CDATA[text]]></MsgType>\n" +
|
||||
" <Content><![CDATA[" + replyContent + "]]></Content>\n" +
|
||||
"</xml>";
|
||||
return content;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,139 @@
|
||||
package com.schisandra.wechat.websocket;
|
||||
|
||||
|
||||
import com.schisandra.wechat.config.websocket.WebSocketServerConfig;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.websocket.*;
|
||||
import javax.websocket.server.ServerEndpoint;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
@Slf4j
|
||||
@ServerEndpoint(value = "/wx/socket", configurator = WebSocketServerConfig.class)
|
||||
@Component
|
||||
public class WeChatSocket {
|
||||
|
||||
/**
|
||||
* 记录当前在线连接数
|
||||
*/
|
||||
private static final AtomicInteger onlineCount = new AtomicInteger(0);
|
||||
|
||||
/**
|
||||
* 存放所有在线的客户端
|
||||
*/
|
||||
private static final Map<String, WeChatSocket> clients = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* 与某个客户端的连接会话,需要通过它来给客户端发送数据
|
||||
*/
|
||||
@Getter
|
||||
private Session session;
|
||||
|
||||
/**
|
||||
* clientId唯一标识
|
||||
*/
|
||||
private String clientId = "";
|
||||
|
||||
/**
|
||||
* 连接建立成功调用的方法
|
||||
*/
|
||||
@OnOpen
|
||||
public void onOpen(Session session, EndpointConfig conf) throws IOException {
|
||||
//获取用户信息
|
||||
try {
|
||||
Map<String, Object> usclientIdroperties = conf.getUserProperties();
|
||||
String clientId = (String) usclientIdroperties.get("clientId");
|
||||
this.clientId = clientId;
|
||||
this.session = session;
|
||||
if (clients.containsKey(this.clientId)) {
|
||||
clients.get(this.clientId).session.close();
|
||||
clients.remove(this.clientId);
|
||||
onlineCount.decrementAndGet();
|
||||
}
|
||||
clients.put(this.clientId, this);
|
||||
onlineCount.incrementAndGet();
|
||||
log.info("有新连接加入:{},当前在线人数为:{}", clientId, onlineCount.get());
|
||||
sendMessage("连接成功", this.session);
|
||||
} catch (Exception e) {
|
||||
log.error("建立链接错误{}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 连接关闭调用的方法
|
||||
*/
|
||||
@OnClose
|
||||
public void onClose() {
|
||||
try {
|
||||
if (clients.containsKey(clientId)) {
|
||||
clients.get(clientId).session.close();
|
||||
clients.remove(clientId);
|
||||
onlineCount.decrementAndGet();
|
||||
}
|
||||
log.info("有一连接关闭:{},当前在线人数为:{}", this.clientId, onlineCount.get());
|
||||
} catch (Exception e) {
|
||||
log.error("连接关闭错误,错误原因{}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 收到客户端消息后调用的方法
|
||||
*/
|
||||
@OnMessage
|
||||
public void onMessage(String message, Session session) {
|
||||
log.info("服务端收到客户端[{}]的消息:{}", this.clientId, message);
|
||||
//心跳机制
|
||||
if (message.equals("ping")) {
|
||||
this.sendMessage("pong", session);
|
||||
}
|
||||
}
|
||||
|
||||
@OnError
|
||||
public void onError(Session session, Throwable error) {
|
||||
log.error("Socket:{},发生错误,错误原因{}", clientId, error.getMessage(), error);
|
||||
try {
|
||||
session.close();
|
||||
} catch (Exception e) {
|
||||
log.error("onError.Exception{}", e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 指定发送消息
|
||||
*/
|
||||
public void sendMessage(String message, Session session) {
|
||||
log.info("服务端给客户端[{}]发送消息{}", this.clientId, message);
|
||||
try {
|
||||
session.getBasicRemote().sendText(message);
|
||||
} catch (IOException e) {
|
||||
log.error("{}发送消息发生异常,异常原因{}", this.clientId, message);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 群发消息
|
||||
*/
|
||||
public void sendMessage(String message) {
|
||||
for (Map.Entry<String, WeChatSocket> sessionEntry : clients.entrySet()) {
|
||||
String clientId = sessionEntry.getKey();
|
||||
WeChatSocket socket = sessionEntry.getValue();
|
||||
Session session = socket.session;
|
||||
log.info("服务端给客户端[{}]发送消息{}", clientId, message);
|
||||
try {
|
||||
session.getBasicRemote().sendText(message);
|
||||
} catch (IOException e) {
|
||||
log.error("{}发送消息发生异常,异常原因{}", this.clientId, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public WeChatSocket getSocket(String userName) {
|
||||
return clients.get(userName);
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user