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;
|
package com.schisandra.auth.api;
|
||||||
|
|
||||||
|
import com.schisandra.auth.entity.Result;
|
||||||
import org.springframework.cloud.openfeign.FeignClient;
|
import org.springframework.cloud.openfeign.FeignClient;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
@@ -120,7 +120,13 @@ public class SchisandraAuthPermissionController {
|
|||||||
return Result.fail("删除权限信息失败");
|
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")
|
@GetMapping("selectUserPermission")
|
||||||
public Result<Object> selectUserPermission(@RequestParam("userId") Long userId) {
|
public Result<Object> selectUserPermission(@RequestParam("userId") Long userId) {
|
||||||
if (userId == null) {
|
if (userId == null) {
|
||||||
|
@@ -1,6 +1,5 @@
|
|||||||
package com.schisandra.auth.application.controller;
|
package com.schisandra.auth.application.controller;
|
||||||
|
|
||||||
import cn.dev33.satoken.stp.SaTokenInfo;
|
|
||||||
import cn.dev33.satoken.stp.StpUtil;
|
import cn.dev33.satoken.stp.StpUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
@@ -32,9 +31,12 @@ import org.apache.commons.lang3.ObjectUtils;
|
|||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.cache.annotation.Cacheable;
|
import org.springframework.cache.annotation.Cacheable;
|
||||||
|
import org.springframework.http.HttpRequest;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -367,7 +369,7 @@ public class SchisandraAuthUserController {
|
|||||||
public Result getClientToken(String clientId) {
|
public Result getClientToken(String clientId) {
|
||||||
String key = redisUtil.buildKey(WX_LOGIN_TOKEN, clientId);
|
String key = redisUtil.buildKey(WX_LOGIN_TOKEN, clientId);
|
||||||
String result = redisUtil.get(key);
|
String result = redisUtil.get(key);
|
||||||
if(StringUtils.isBlank(result)){
|
if (StringUtils.isBlank(result)) {
|
||||||
return Result.fail();
|
return Result.fail();
|
||||||
}
|
}
|
||||||
return Result.ok(JSONObject.parseObject(result));
|
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 permissionKey;
|
||||||
/**
|
|
||||||
* 创建人
|
|
||||||
*/
|
|
||||||
private String createdBy;
|
|
||||||
/**
|
|
||||||
* 创建时间
|
|
||||||
*/
|
|
||||||
private Date createdTime;
|
|
||||||
/**
|
|
||||||
* 更新人
|
|
||||||
*/
|
|
||||||
private String updateBy;
|
|
||||||
/**
|
|
||||||
* 更新时间
|
|
||||||
*/
|
|
||||||
private Date updateTime;
|
|
||||||
/**
|
|
||||||
* 是否删除
|
|
||||||
*/
|
|
||||||
private Integer isDeleted;
|
private Integer isDeleted;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -2,11 +2,33 @@ package com.schisandra.auth.common.utils;
|
|||||||
|
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import java.util.function.Function;
|
|
||||||
|
/**
|
||||||
|
* @ClassName: Tree
|
||||||
|
* @Author: landaiqing
|
||||||
|
* @Description:
|
||||||
|
* @CreateTime: 2024/01/05 15:32
|
||||||
|
*/
|
||||||
|
|
||||||
public class TreeUtils {
|
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) {
|
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 -> {
|
Map<Object, List<T>> map = nodesList.stream().collect(Collectors.groupingBy(a -> {
|
||||||
try {
|
try {
|
||||||
Field field = a.getClass().getDeclaredField(parentIdFieldName);
|
Field field = a.getClass().getDeclaredField(parentIdFieldName);
|
||||||
@@ -18,6 +40,7 @@ public class TreeUtils {
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
List<T> roots = new ArrayList<>();
|
List<T> roots = new ArrayList<>();
|
||||||
|
|
||||||
// 逐层构建树结构
|
// 逐层构建树结构
|
||||||
roots.addAll(function.apply(Optional.ofNullable(map.get(pid)).orElse(new ArrayList<>()).stream()).collect(Collectors.toList()));
|
roots.addAll(function.apply(Optional.ofNullable(map.get(pid)).orElse(new ArrayList<>()).stream()).collect(Collectors.toList()));
|
||||||
Queue<T> queue = new LinkedList<>(roots);
|
Queue<T> queue = new LinkedList<>(roots);
|
||||||
@@ -41,6 +64,7 @@ public class TreeUtils {
|
|||||||
throw new RuntimeException("Error reading id field: " + e.getMessage());
|
throw new RuntimeException("Error reading id field: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return roots;
|
return roots;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -26,7 +26,7 @@ SchisandraAuthPermissionBO implements Serializable {
|
|||||||
|
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
private String menuUrl;
|
private String path;
|
||||||
|
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@@ -52,11 +52,11 @@ public class SchisandraAuthPermissionDomainServiceImpl implements SchisandraAuth
|
|||||||
public Result<Object> selectUserPermissionTree(Long userId) {
|
public Result<Object> selectUserPermissionTree(Long userId) {
|
||||||
SchisandraAuthUserRole schisandraAuthRole = schisandraAuthUserRoleService.queryById(userId);
|
SchisandraAuthUserRole schisandraAuthRole = schisandraAuthUserRoleService.queryById(userId);
|
||||||
if (schisandraAuthRole == null||schisandraAuthRole.getRoleId()==null) {
|
if (schisandraAuthRole == null||schisandraAuthRole.getRoleId()==null) {
|
||||||
return Result.ok("用户没有角色");
|
return Result.fail("用户没有角色");
|
||||||
}
|
}
|
||||||
List<SchisandraAuthRolePermission> schisandraAuthRolePermissions = schisandraAuthRolePermissionService.queryByRoleId(schisandraAuthRole.getRoleId());
|
List<SchisandraAuthRolePermission> schisandraAuthRolePermissions = schisandraAuthRolePermissionService.queryByRoleId(schisandraAuthRole.getRoleId());
|
||||||
if (schisandraAuthRolePermissions.size()==0){
|
if (schisandraAuthRolePermissions.size()==0){
|
||||||
return Result.ok("当前角色用户没有权限");
|
return Result.fail("当前角色用户没有权限");
|
||||||
}
|
}
|
||||||
List<SchisandraAuthPermissionBO> schisandraAuthPermissions =new ArrayList<>();
|
List<SchisandraAuthPermissionBO> schisandraAuthPermissions =new ArrayList<>();
|
||||||
List<SchisandraAuthPermissionBO> schisandraAuthPermissionParents = new ArrayList<>();
|
List<SchisandraAuthPermissionBO> schisandraAuthPermissionParents = new ArrayList<>();
|
||||||
@@ -87,45 +87,48 @@ public class SchisandraAuthPermissionDomainServiceImpl implements SchisandraAuth
|
|||||||
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
||||||
return schisandraAuthPermissionService.update(schisandraAuthPermission);
|
return schisandraAuthPermissionService.update(schisandraAuthPermission);
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @description: 删除
|
/**
|
||||||
* @param: [schisandraAuthPermissionBO]
|
* @description: 删除
|
||||||
* @return: java.lang.Object
|
* @param: [schisandraAuthPermissionBO]
|
||||||
* @author zhang
|
* @return: java.lang.Object
|
||||||
* @date: 2024/4/17 17:06
|
* @author zhang
|
||||||
*/
|
* @date: 2024/4/17 17:06
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Object delete(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
public Object delete(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
||||||
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
||||||
boolean schisandraAuthPermission1 =schisandraAuthPermissionService.deleteById(schisandraAuthPermission.getId());
|
boolean schisandraAuthPermission1 = schisandraAuthPermissionService.deleteById(schisandraAuthPermission.getId());
|
||||||
return schisandraAuthPermission1;
|
return schisandraAuthPermission1;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @description: 插入
|
/**
|
||||||
* @param: [schisandraAuthPermissionBO]
|
* @description: 插入
|
||||||
* @return: java.lang.Object
|
* @param: [schisandraAuthPermissionBO]
|
||||||
* @author zhang
|
* @return: java.lang.Object
|
||||||
* @date: 2024/4/17 17:06
|
* @author zhang
|
||||||
*/
|
* @date: 2024/4/17 17:06
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Object insert(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
public Object insert(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
||||||
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(schisandraAuthPermissionBO);
|
||||||
SchisandraAuthPermission schisandraAuthPermission1 =schisandraAuthPermissionService.insert(schisandraAuthPermission);
|
SchisandraAuthPermission schisandraAuthPermission1 = schisandraAuthPermissionService.insert(schisandraAuthPermission);
|
||||||
return schisandraAuthPermission1;
|
return schisandraAuthPermission1;
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @description: 查询
|
/**
|
||||||
* @param: [schisandraAuthPermissionBO]
|
* @description: 查询
|
||||||
* @return: java.lang.Object
|
* @param: [schisandraAuthPermissionBO]
|
||||||
* @author zhang
|
* @return: java.lang.Object
|
||||||
* @date: 2024/4/17 17:07
|
* @author zhang
|
||||||
*/
|
* @date: 2024/4/17 17:07
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public SchisandraAuthPermissionBO select(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
public SchisandraAuthPermissionBO select(SchisandraAuthPermissionBO schisandraAuthPermissionBO) {
|
||||||
|
|
||||||
SchisandraAuthPermission schisandraAuthPermission = SchisandraAuthPermissionBOConverter.INSTANCE.convertBOToEntity(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);
|
SchisandraAuthPermissionBO schisandraAuthPermissionBO1 = SchisandraAuthPermissionBOConverter.INSTANCE.convertEntityToBO(schisandraAuthPermission1);
|
||||||
return schisandraAuthPermissionBO1;
|
return schisandraAuthPermissionBO1;
|
||||||
}
|
}
|
||||||
|
@@ -29,7 +29,7 @@ public class SchisandraAuthPermission implements Serializable {
|
|||||||
|
|
||||||
private Integer type;
|
private Integer type;
|
||||||
|
|
||||||
private String menuUrl;
|
private String path;
|
||||||
|
|
||||||
private Integer status;
|
private Integer status;
|
||||||
|
|
||||||
|
@@ -102,7 +102,7 @@ public class SchisandraSocialUserServiceImpl implements SchisandraSocialUserServ
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 根据appId和openId查询用户
|
* @description: 根据openId查询用户
|
||||||
* @param: [appId, openId]
|
* @param: [appId, openId]
|
||||||
* @return: com.schisandra.auth.infra.basic.entity.SchisandraSocialUser
|
* @return: com.schisandra.auth.infra.basic.entity.SchisandraSocialUser
|
||||||
* @author: landaiqing
|
* @author: landaiqing
|
||||||
|
@@ -7,7 +7,7 @@
|
|||||||
<result property="name" column="name" jdbcType="VARCHAR"/>
|
<result property="name" column="name" jdbcType="VARCHAR"/>
|
||||||
<result property="parentId" column="parent_id" jdbcType="INTEGER"/>
|
<result property="parentId" column="parent_id" jdbcType="INTEGER"/>
|
||||||
<result property="type" column="type" 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="status" column="status" jdbcType="INTEGER"/>
|
||||||
<result property="show" column="show" jdbcType="INTEGER"/>
|
<result property="show" column="show" jdbcType="INTEGER"/>
|
||||||
<result property="icon" column="icon" jdbcType="VARCHAR"/>
|
<result property="icon" column="icon" jdbcType="VARCHAR"/>
|
||||||
|
@@ -2,21 +2,16 @@ package com.schisandra.oss.application.controller;
|
|||||||
|
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
|
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter;
|
import com.schisandra.oss.application.convert.SchisandraOssAliDTOConverter;
|
||||||
import com.schisandra.oss.application.dto.SchisandraOssAliDTO;
|
import com.schisandra.oss.application.dto.SchisandraOssAliDTO;
|
||||||
import com.schisandra.oss.application.oss.core.ali.AliOssClient;
|
import com.schisandra.oss.application.oss.core.ali.AliOssClient;
|
||||||
import com.schisandra.oss.application.oss.core.ali.AliOssConfiguration;
|
import com.schisandra.oss.application.oss.core.ali.AliOssConfiguration;
|
||||||
|
|
||||||
import com.schisandra.oss.application.oss.model.OssInfo;
|
import com.schisandra.oss.application.oss.model.OssInfo;
|
||||||
import com.schisandra.oss.common.entity.Result;
|
import com.schisandra.oss.common.entity.Result;
|
||||||
import com.schisandra.oss.domain.bo.SchisandraOssAliBO;
|
import com.schisandra.oss.domain.bo.SchisandraOssAliBO;
|
||||||
import com.schisandra.oss.domain.redis.RedisUtil;
|
import com.schisandra.oss.domain.redis.RedisUtil;
|
||||||
import com.schisandra.oss.domain.service.SchisandraOssAliDomainService;
|
import com.schisandra.oss.domain.service.SchisandraOssAliDomainService;
|
||||||
|
|
||||||
import com.schisandra.oss.infra.basic.dao.SchisandraOssAliDao;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -33,7 +28,7 @@ import java.util.List;
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* controller
|
* controller
|
||||||
*
|
*
|
||||||
* @author landaiqing
|
* @author landaiqing
|
||||||
* @since 2024-05-14 20:45:32
|
* @since 2024-05-14 20:45:32
|
||||||
@@ -54,6 +49,7 @@ public class SchisandraOssAliController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回ali表所有数据
|
* 返回ali表所有数据
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("returnAll")
|
@GetMapping("returnAll")
|
||||||
@@ -62,9 +58,8 @@ public class SchisandraOssAliController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@GetMapping("init")
|
@GetMapping("init")
|
||||||
public void init(@RequestParam String userId){
|
public void init(@RequestParam String userId) {
|
||||||
if (log.isInfoEnabled()) {
|
if (log.isInfoEnabled()) {
|
||||||
log.info("SchisandraOssAliController.init.userId:{}", userId);
|
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
|
* @date: 2024/7/5 13:55
|
||||||
*/
|
*/
|
||||||
@GetMapping("listDir")
|
@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, "不能为空");
|
Preconditions.checkNotNull(userId, "不能为空");
|
||||||
AliOssClient bean = SpringUtil.getBean(userId);
|
AliOssClient bean = SpringUtil.getBean(userId);
|
||||||
bean.getAliOssConfig().setBucketName(bucket);
|
bean.getAliOssConfig().setBucketName(bucket);
|
||||||
if(prefix==null)
|
if (prefix == null)
|
||||||
prefix="";
|
prefix = "";
|
||||||
return Result.ok(bean.listAliInfo(bucket,prefix));
|
return Result.ok(bean.listAliInfo(bucket, prefix));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查找bucket
|
* 查找bucket
|
||||||
|
*
|
||||||
* @param userId
|
* @param userId
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@PostMapping("seleteBucket")
|
@PostMapping("seleteBucket")
|
||||||
public Result<String> seleteBucket(@RequestParam String userId) {
|
public Result<String> seleteBucket(@RequestParam String userId) {
|
||||||
Preconditions.checkNotNull(userId, "不能为空");
|
Preconditions.checkNotNull(userId, "不能为空");
|
||||||
@@ -187,6 +180,7 @@ public class SchisandraOssAliController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除bucket
|
* 删除bucket
|
||||||
|
*
|
||||||
* @param userId
|
* @param userId
|
||||||
* @param bucket
|
* @param bucket
|
||||||
* @return
|
* @return
|
||||||
@@ -214,15 +208,15 @@ public class SchisandraOssAliController {
|
|||||||
Preconditions.checkNotNull(bucket, "不能为空");
|
Preconditions.checkNotNull(bucket, "不能为空");
|
||||||
|
|
||||||
//设置热力图
|
//设置热力图
|
||||||
Date date =new Date();
|
Date date = new Date();
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
String formattedDate = dateFormat.format(date);
|
String formattedDate = dateFormat.format(date);
|
||||||
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,formattedDate);
|
String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate);
|
||||||
int count=1;
|
int count = 1;
|
||||||
if (redisUtil.exist(key)){
|
if (redisUtil.exist(key)) {
|
||||||
count= Integer.parseInt(redisUtil.get(key));
|
count = Integer.parseInt(redisUtil.get(key));
|
||||||
redisUtil.set(key, String.valueOf(count+1));
|
redisUtil.set(key, String.valueOf(count + 1));
|
||||||
}else {
|
} else {
|
||||||
redisUtil.set(key, String.valueOf(1));
|
redisUtil.set(key, String.valueOf(1));
|
||||||
}
|
}
|
||||||
// 获取文件输入流
|
// 获取文件输入流
|
||||||
@@ -233,7 +227,6 @@ public class SchisandraOssAliController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 下载文件
|
* @description: 下载文件
|
||||||
* @param: [schisandraOssMinioDTO]
|
* @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.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(filePath.substring(filePath.lastIndexOf("/") + 1), "UTF-8"));
|
||||||
response.setContentType("application/octet-stream");
|
response.setContentType("application/octet-stream");
|
||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding("UTF-8");
|
||||||
bean.downLoad(output,filePath);
|
bean.downLoad(output, filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 删除文件
|
* @description: 删除文件
|
||||||
* @param: [schisandraOssAliDTO]
|
* @param: [schisandraOssAliDTO]
|
||||||
@@ -288,7 +282,7 @@ public class SchisandraOssAliController {
|
|||||||
bean.getAliOssConfig().setBucketName(bucket);
|
bean.getAliOssConfig().setBucketName(bucket);
|
||||||
try {
|
try {
|
||||||
bean.rename(oldFileName, newFileName);
|
bean.rename(oldFileName, newFileName);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
|
@@ -3,21 +3,16 @@ package com.schisandra.oss.application.controller;
|
|||||||
import cn.hutool.core.util.ZipUtil;
|
import cn.hutool.core.util.ZipUtil;
|
||||||
import cn.hutool.extra.spring.SpringUtil;
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.amazonaws.util.IOUtils;
|
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.schisandra.oss.application.convert.SchisandraOssMinioDTOConverter;
|
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.dto.SchisandraOssMinioDTO;
|
||||||
import com.schisandra.oss.application.oss.core.minio.MinioOssClient;
|
import com.schisandra.oss.application.oss.core.minio.MinioOssClient;
|
||||||
import com.schisandra.oss.application.oss.core.minio.MinioOssConfiguration;
|
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.common.entity.Result;
|
||||||
import com.schisandra.oss.domain.bo.SchisandraOssMinioBO;
|
import com.schisandra.oss.domain.bo.SchisandraOssMinioBO;
|
||||||
import com.schisandra.oss.domain.redis.RedisUtil;
|
import com.schisandra.oss.domain.redis.RedisUtil;
|
||||||
import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService;
|
import com.schisandra.oss.domain.service.SchisandraOssMinioDomainService;
|
||||||
import io.minio.errors.*;
|
import io.minio.errors.*;
|
||||||
import lombok.Data;
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
@@ -31,8 +26,9 @@ import java.net.URLEncoder;
|
|||||||
import java.security.InvalidKeyException;
|
import java.security.InvalidKeyException;
|
||||||
import java.security.NoSuchAlgorithmException;
|
import java.security.NoSuchAlgorithmException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.Date;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* controller
|
* controller
|
||||||
@@ -58,6 +54,7 @@ public class SchisandraOssMinioController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回minio表所有数据
|
* 返回minio表所有数据
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("returnAll")
|
@GetMapping("returnAll")
|
||||||
@@ -87,6 +84,7 @@ public class SchisandraOssMinioController {
|
|||||||
log.error("用户: {}-> minio 初始化完成!", userId);
|
log.error("用户: {}-> minio 初始化完成!", userId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 获取文件目录信息
|
* @description: 获取文件目录信息
|
||||||
* @param: [target, userId, dirName]
|
* @param: [target, userId, dirName]
|
||||||
@@ -95,7 +93,7 @@ public class SchisandraOssMinioController {
|
|||||||
* @date: 2024/6/26 13:55
|
* @date: 2024/6/26 13:55
|
||||||
*/
|
*/
|
||||||
@GetMapping("listMinioDir")
|
@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, "不能为空");
|
Preconditions.checkNotNull(userId, "不能为空");
|
||||||
MinioOssClient bean = SpringUtil.getBean(userId);
|
MinioOssClient bean = SpringUtil.getBean(userId);
|
||||||
bean.getMinioOssConfig().setBucketName(bucket);
|
bean.getMinioOssConfig().setBucketName(bucket);
|
||||||
@@ -110,21 +108,21 @@ public class SchisandraOssMinioController {
|
|||||||
* @date: 2024/6/26 13:56
|
* @date: 2024/6/26 13:56
|
||||||
*/
|
*/
|
||||||
@GetMapping("downloadMinioFile")
|
@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(bucket, "不能为空");
|
||||||
Preconditions.checkNotNull(userId, "不能为空");
|
Preconditions.checkNotNull(userId, "不能为空");
|
||||||
Preconditions.checkNotNull(listObjectsArgs, "不能为空");
|
Preconditions.checkNotNull(listObjectsArgs, "不能为空");
|
||||||
MinioOssClient bean = SpringUtil.getBean(userId);
|
MinioOssClient bean = SpringUtil.getBean(userId);
|
||||||
bean.getMinioOssConfig().setBucketName(bucket);
|
bean.getMinioOssConfig().setBucketName(bucket);
|
||||||
HashMap<String, InputStream> list=bean.getTargetDir(listObjectsArgs);
|
HashMap<String, InputStream> list = bean.getTargetDir(listObjectsArgs);
|
||||||
ServletOutputStream output = response.getOutputStream();
|
ServletOutputStream output = response.getOutputStream();
|
||||||
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("下载.zip", "UTF-8"));
|
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("下载.zip", "UTF-8"));
|
||||||
response.setContentType("application/octet-stream");
|
response.setContentType("application/octet-stream");
|
||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding("UTF-8");
|
||||||
String[] path = new String[list.size()];
|
String[] path = new String[list.size()];
|
||||||
InputStream[] inputStreams= new InputStream[list.size()];
|
InputStream[] inputStreams = new InputStream[list.size()];
|
||||||
path=list.keySet().toArray(path);
|
path = list.keySet().toArray(path);
|
||||||
inputStreams=list.values().toArray(inputStreams);
|
inputStreams = list.values().toArray(inputStreams);
|
||||||
ZipUtil.zip(output, path, inputStreams);
|
ZipUtil.zip(output, path, inputStreams);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -159,15 +157,15 @@ public class SchisandraOssMinioController {
|
|||||||
Preconditions.checkNotNull(fileName, "不能为空");
|
Preconditions.checkNotNull(fileName, "不能为空");
|
||||||
Preconditions.checkNotNull(bucket, "不能为空");
|
Preconditions.checkNotNull(bucket, "不能为空");
|
||||||
//设置热力图
|
//设置热力图
|
||||||
Date date =new Date();
|
Date date = new Date();
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
String formattedDate = dateFormat.format(date);
|
String formattedDate = dateFormat.format(date);
|
||||||
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,formattedDate);
|
String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate);
|
||||||
int count=1;
|
int count = 1;
|
||||||
if (redisUtil.exist(key)){
|
if (redisUtil.exist(key)) {
|
||||||
count= Integer.parseInt(redisUtil.get(key));
|
count = Integer.parseInt(redisUtil.get(key));
|
||||||
redisUtil.set(key, String.valueOf(count+1));
|
redisUtil.set(key, String.valueOf(count + 1));
|
||||||
}else {
|
} else {
|
||||||
redisUtil.set(key, String.valueOf(1));
|
redisUtil.set(key, String.valueOf(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -198,11 +196,12 @@ public class SchisandraOssMinioController {
|
|||||||
bean.getMinioOssConfig().setBucketName(bucket);
|
bean.getMinioOssConfig().setBucketName(bucket);
|
||||||
try {
|
try {
|
||||||
bean.rename(oldFileName, newFileName);
|
bean.rename(oldFileName, newFileName);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 拷贝文件
|
* @description: 拷贝文件
|
||||||
* @param: [userId, bucket, oldFilePath, newFilePath]
|
* @param: [userId, bucket, oldFilePath, newFilePath]
|
||||||
@@ -221,11 +220,12 @@ public class SchisandraOssMinioController {
|
|||||||
bean.getMinioOssConfig().setBucketName(bucket);
|
bean.getMinioOssConfig().setBucketName(bucket);
|
||||||
try {
|
try {
|
||||||
bean.copy(oldFilePath, newFilePath);
|
bean.copy(oldFilePath, newFilePath);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 预览文件
|
* @description: 预览文件
|
||||||
* @param: [userId, bucket, filePath]
|
* @param: [userId, bucket, filePath]
|
||||||
@@ -245,7 +245,9 @@ public class SchisandraOssMinioController {
|
|||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 分享文件
|
* @description: 分享文件
|
||||||
* @param: [userId, bucket, filePath]
|
* @param: [userId, bucket, filePath]
|
||||||
@@ -261,7 +263,7 @@ public class SchisandraOssMinioController {
|
|||||||
MinioOssClient bean = SpringUtil.getBean(userId);
|
MinioOssClient bean = SpringUtil.getBean(userId);
|
||||||
bean.getMinioOssConfig().setBucketName(bucket);
|
bean.getMinioOssConfig().setBucketName(bucket);
|
||||||
try {
|
try {
|
||||||
return Result.ok(bean.shareMinioFile(filePath,time));
|
return Result.ok(bean.shareMinioFile(filePath, time));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
@@ -280,6 +282,7 @@ public class SchisandraOssMinioController {
|
|||||||
MinioOssClient bean = SpringUtil.getBean(userId);
|
MinioOssClient bean = SpringUtil.getBean(userId);
|
||||||
return Result.ok(bean.selectAllBucket());
|
return Result.ok(bean.selectAllBucket());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description: 创建bucket
|
* @description: 创建bucket
|
||||||
* @param: [userId, bucket]
|
* @param: [userId, bucket]
|
||||||
@@ -386,7 +389,7 @@ public class SchisandraOssMinioController {
|
|||||||
log.error("容器获取失败!");
|
log.error("容器获取失败!");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return Result.ok(bean.getInfo(fileName,true));
|
return Result.ok(bean.getInfo(fileName, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GetMapping("getAllMinioInfo")
|
@GetMapping("getAllMinioInfo")
|
||||||
@@ -397,11 +400,6 @@ public class SchisandraOssMinioController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void parameterCheck(SchisandraOssMinioDTO schisandraOssMinioDTO) {
|
private void parameterCheck(SchisandraOssMinioDTO schisandraOssMinioDTO) {
|
||||||
Preconditions.checkNotNull(schisandraOssMinioDTO.getId(), "不能为空");
|
Preconditions.checkNotNull(schisandraOssMinioDTO.getId(), "不能为空");
|
||||||
Preconditions.checkNotNull(schisandraOssMinioDTO.getUserId(), "不能为空");
|
Preconditions.checkNotNull(schisandraOssMinioDTO.getUserId(), "不能为空");
|
||||||
|
@@ -5,7 +5,6 @@ import com.alibaba.fastjson.JSON;
|
|||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.schisandra.oss.application.convert.SchisandraOssQiniuDTOConverter;
|
import com.schisandra.oss.application.convert.SchisandraOssQiniuDTOConverter;
|
||||||
import com.schisandra.oss.application.dto.SchisandraOssQiniuDTO;
|
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.QiNiuOssClient;
|
||||||
import com.schisandra.oss.application.oss.core.qiniu.QiNiuOssConfiguration;
|
import com.schisandra.oss.application.oss.core.qiniu.QiNiuOssConfiguration;
|
||||||
import com.schisandra.oss.application.oss.model.OssInfo;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.ServletOutputStream;
|
import javax.servlet.ServletOutputStream;
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
@@ -48,6 +48,7 @@ public class SchisandraOssQiniuController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回七牛表所有数据
|
* 返回七牛表所有数据
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("returnAll")
|
@GetMapping("returnAll")
|
||||||
@@ -86,7 +87,7 @@ public class SchisandraOssQiniuController {
|
|||||||
bean.getQiNiuOssConfig().setBucketName(bucket);
|
bean.getQiNiuOssConfig().setBucketName(bucket);
|
||||||
try {
|
try {
|
||||||
bean.rename(oldFileName, newFileName);
|
bean.rename(oldFileName, newFileName);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
@@ -110,7 +111,7 @@ public class SchisandraOssQiniuController {
|
|||||||
bean.getQiNiuOssConfig().setBucketName(bucket);
|
bean.getQiNiuOssConfig().setBucketName(bucket);
|
||||||
try {
|
try {
|
||||||
bean.copy(oldFilePath, newFilePath);
|
bean.copy(oldFilePath, newFilePath);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
@@ -125,7 +126,7 @@ public class SchisandraOssQiniuController {
|
|||||||
* @date: 2024/7/8 13:56
|
* @date: 2024/7/8 13:56
|
||||||
*/
|
*/
|
||||||
@GetMapping("downloadFile")
|
@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);
|
QiNiuOssClient bean = SpringUtil.getBean(userId);
|
||||||
bean.getQiNiuOssConfig().setEndpoint(endpoint);
|
bean.getQiNiuOssConfig().setEndpoint(endpoint);
|
||||||
ServletOutputStream output = response.getOutputStream();
|
ServletOutputStream output = response.getOutputStream();
|
||||||
@@ -134,7 +135,7 @@ public class SchisandraOssQiniuController {
|
|||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding("UTF-8");
|
||||||
response.setContentType("application/vnd.ms-excel");
|
response.setContentType("application/vnd.ms-excel");
|
||||||
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
|
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, "不能为空");
|
Preconditions.checkNotNull(bucket, "不能为空");
|
||||||
|
|
||||||
//设置热力图
|
//设置热力图
|
||||||
Date date =new Date();
|
Date date = new Date();
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
String formattedDate = dateFormat.format(date);
|
String formattedDate = dateFormat.format(date);
|
||||||
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,formattedDate);
|
String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate);
|
||||||
int count=1;
|
int count = 1;
|
||||||
if (redisUtil.exist(key)){
|
if (redisUtil.exist(key)) {
|
||||||
count= Integer.parseInt(redisUtil.get(key));
|
count = Integer.parseInt(redisUtil.get(key));
|
||||||
redisUtil.set(key, String.valueOf(count+1));
|
redisUtil.set(key, String.valueOf(count + 1));
|
||||||
}else {
|
} else {
|
||||||
redisUtil.set(key, String.valueOf(1));
|
redisUtil.set(key, String.valueOf(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -219,19 +220,20 @@ public class SchisandraOssQiniuController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 创建桶createbucket
|
* 创建桶createbucket
|
||||||
|
*
|
||||||
* @param userId
|
* @param userId
|
||||||
* @param bucket
|
* @param bucket
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@PostMapping("createBucket")
|
@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(userId, "不能为空");
|
||||||
Preconditions.checkNotNull(bucket, "不能为空");
|
Preconditions.checkNotNull(bucket, "不能为空");
|
||||||
QiNiuOssClient bean = SpringUtil.getBean(userId);
|
QiNiuOssClient bean = SpringUtil.getBean(userId);
|
||||||
bean.getQiNiuOssConfig().setBucketName(bucket);
|
bean.getQiNiuOssConfig().setBucketName(bucket);
|
||||||
bean.getQiNiuOssConfig().setRegion(region);
|
bean.getQiNiuOssConfig().setRegion(region);
|
||||||
try {
|
try {
|
||||||
return Result.ok(bean.createBucket(bucket,region));
|
return Result.ok(bean.createBucket(bucket, region));
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new RuntimeException(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.google.common.base.Preconditions;
|
||||||
import com.schisandra.oss.application.convert.SchisandraOssSftpDTOConverter;
|
import com.schisandra.oss.application.convert.SchisandraOssSftpDTOConverter;
|
||||||
import com.schisandra.oss.application.dto.SchisandraOssSftpDTO;
|
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.qiniu.QiNiuOssClient;
|
||||||
import com.schisandra.oss.application.oss.core.sftp.SftpOssClient;
|
import com.schisandra.oss.application.oss.core.sftp.SftpOssClient;
|
||||||
import com.schisandra.oss.application.oss.core.sftp.SftpOssConfiguration;
|
import com.schisandra.oss.application.oss.core.sftp.SftpOssConfiguration;
|
||||||
@@ -55,6 +51,7 @@ public class SchisandraOssSftpController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回up表所有数据
|
* 返回up表所有数据
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("returnAll")
|
@GetMapping("returnAll")
|
||||||
@@ -77,7 +74,7 @@ public class SchisandraOssSftpController {
|
|||||||
QiNiuOssClient bean = SpringUtil.getBean(userId);
|
QiNiuOssClient bean = SpringUtil.getBean(userId);
|
||||||
try {
|
try {
|
||||||
bean.copy(oldFilePath, newFilePath);
|
bean.copy(oldFilePath, newFilePath);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
@@ -87,7 +84,7 @@ public class SchisandraOssSftpController {
|
|||||||
* 重命名
|
* 重命名
|
||||||
*/
|
*/
|
||||||
@PostMapping("renameFile")
|
@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(userId, "不能为空");
|
||||||
Preconditions.checkNotNull(oldFileName, "不能为空");
|
Preconditions.checkNotNull(oldFileName, "不能为空");
|
||||||
@@ -95,7 +92,7 @@ public class SchisandraOssSftpController {
|
|||||||
SftpOssClient bean = SpringUtil.getBean(userId);
|
SftpOssClient bean = SpringUtil.getBean(userId);
|
||||||
try {
|
try {
|
||||||
bean.rename(oldFileName, newFileName);
|
bean.rename(oldFileName, newFileName);
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
return Result.fail(e.getMessage());
|
return Result.fail(e.getMessage());
|
||||||
}
|
}
|
||||||
return Result.ok();
|
return Result.ok();
|
||||||
@@ -131,7 +128,7 @@ public class SchisandraOssSftpController {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
@GetMapping("downloadFile")
|
@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);
|
SftpOssClient bean = SpringUtil.getBean(userId);
|
||||||
ServletOutputStream output = response.getOutputStream();
|
ServletOutputStream output = response.getOutputStream();
|
||||||
|
|
||||||
@@ -139,7 +136,7 @@ public class SchisandraOssSftpController {
|
|||||||
response.setCharacterEncoding("UTF-8");
|
response.setCharacterEncoding("UTF-8");
|
||||||
response.setContentType("application/vnd.ms-excel");
|
response.setContentType("application/vnd.ms-excel");
|
||||||
response.setHeader("Content-disposition", "attachment;filename=" + URLEncoder.encode(filename, "utf-8"));
|
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")
|
@PostMapping("uploadFile")
|
||||||
@SneakyThrows
|
@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(userId, "不能为空");
|
||||||
Preconditions.checkNotNull(fileName, "不能为空");
|
Preconditions.checkNotNull(fileName, "不能为空");
|
||||||
|
|
||||||
|
|
||||||
//设置热力图
|
//设置热力图
|
||||||
Date date =new Date();
|
Date date = new Date();
|
||||||
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||||
String formattedDate = dateFormat.format(date);
|
String formattedDate = dateFormat.format(date);
|
||||||
String key = redisUtil.buildKey(USER_OSS_PREFIX+":"+userId,formattedDate);
|
String key = redisUtil.buildKey(USER_OSS_PREFIX + ":" + userId, formattedDate);
|
||||||
int count=1;
|
int count = 1;
|
||||||
if (redisUtil.exist(key)){
|
if (redisUtil.exist(key)) {
|
||||||
count= Integer.parseInt(redisUtil.get(key));
|
count = Integer.parseInt(redisUtil.get(key));
|
||||||
redisUtil.set(key, String.valueOf(count+1));
|
redisUtil.set(key, String.valueOf(count + 1));
|
||||||
}else {
|
} else {
|
||||||
redisUtil.set(key, String.valueOf(1));
|
redisUtil.set(key, String.valueOf(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,20 +1,25 @@
|
|||||||
package com.schisandra.oss.application.controller;
|
package com.schisandra.oss.application.controller;
|
||||||
|
|
||||||
|
import cn.hutool.extra.spring.SpringUtil;
|
||||||
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSON;
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.schisandra.oss.application.convert.SchisandraOssUpDTOConverter;
|
import com.schisandra.oss.application.convert.SchisandraOssUpDTOConverter;
|
||||||
import com.schisandra.oss.application.dto.SchisandraOssUpDTO;
|
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.core.up.UpOssConfiguration;
|
||||||
|
import com.schisandra.oss.application.oss.model.OssInfo;
|
||||||
import com.schisandra.oss.common.entity.Result;
|
import com.schisandra.oss.common.entity.Result;
|
||||||
import com.schisandra.oss.domain.bo.SchisandraOssUpBO;
|
import com.schisandra.oss.domain.bo.SchisandraOssUpBO;
|
||||||
import com.schisandra.oss.domain.service.SchisandraOssUpDomainService;
|
import com.schisandra.oss.domain.service.SchisandraOssUpDomainService;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import javax.servlet.ServletOutputStream;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.InputStream;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,6 +40,7 @@ public class SchisandraOssUpController {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 返回up表所有数据
|
* 返回up表所有数据
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@GetMapping("returnAll")
|
@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) {
|
public Result<Boolean> add(@RequestBody SchisandraOssUpDTO schisandraOssUpDTO) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (log.isInfoEnabled()) {
|
if (log.isInfoEnabled()) {
|
||||||
log.info("SchisandraOssUpController.add.dto:{}", JSON.toJSONString(schisandraOssUpDTO));
|
log.info("SchisandraOssUpController.add.dto:{}", JSON.toJSONString(schisandraOssUpDTO));
|
||||||
}
|
}
|
||||||
Preconditions.checkNotNull(schisandraOssUpDTO.getId(), "不能为空");
|
Preconditions.checkNotNull(schisandraOssUpDTO.getUserId(), "UserId不能为空");
|
||||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserId(), "不能为空");
|
Preconditions.checkNotNull(schisandraOssUpDTO.getBasePath(), "BasePath不能为空");
|
||||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBasePath(), "不能为空");
|
Preconditions.checkNotNull(schisandraOssUpDTO.getBucketName(), "BucketName不能为空");
|
||||||
Preconditions.checkNotNull(schisandraOssUpDTO.getBucketName(), "不能为空");
|
Preconditions.checkNotNull(schisandraOssUpDTO.getUserName(), "UserName不能为空");
|
||||||
Preconditions.checkNotNull(schisandraOssUpDTO.getUserName(), "不能为空");
|
Preconditions.checkNotNull(schisandraOssUpDTO.getPassword(), "Password不能为空");
|
||||||
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);
|
SchisandraOssUpBO SchisandraOssUpBO = SchisandraOssUpDTOConverter.INSTANCE.convertDTOToBO(schisandraOssUpDTO);
|
||||||
return Result.ok(schisandraOssUpDomainService.add(SchisandraOssUpBO));
|
return Result.ok(schisandraOssUpDomainService.add(SchisandraOssUpBO));
|
||||||
} catch (Exception e) {
|
} 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) {
|
public Result<Boolean> update(@RequestBody SchisandraOssUpDTO schisandraOssUpDTO) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (log.isInfoEnabled()) {
|
if (log.isInfoEnabled()) {
|
||||||
log.info("SchisandraOssUpController.update.dto:{}", JSON.toJSONString(schisandraOssUpDTO));
|
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);
|
SchisandraOssUpBO schisandraOssUpBO = SchisandraOssUpDTOConverter.INSTANCE.convertDTOToBO(schisandraOssUpDTO);
|
||||||
return Result.ok(schisandraOssUpDomainService.update(schisandraOssUpBO));
|
return Result.ok(schisandraOssUpDomainService.update(schisandraOssUpBO));
|
||||||
} catch (Exception e) {
|
} 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) {
|
public Result<Boolean> delete(@RequestBody SchisandraOssUpDTO schisandraOssUpDTO) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (log.isInfoEnabled()) {
|
if (log.isInfoEnabled()) {
|
||||||
log.info("SchisandraOssUpController.delete.dto:{}", JSON.toJSONString(schisandraOssUpDTO));
|
log.info("SchisandraOssUpController.delete.dto:{}", JSON.toJSONString(schisandraOssUpDTO));
|
||||||
}
|
}
|
||||||
Preconditions.checkNotNull(schisandraOssUpDTO.getId(), "不能为空");
|
Preconditions.checkNotNull(schisandraOssUpDTO.getId(), "Id不能为空");
|
||||||
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);
|
SchisandraOssUpBO schisandraOssUpBO = SchisandraOssUpDTOConverter.INSTANCE.convertDTOToBO(schisandraOssUpDTO);
|
||||||
return Result.ok(schisandraOssUpDomainService.delete(schisandraOssUpBO));
|
return Result.ok(schisandraOssUpDomainService.delete(schisandraOssUpBO));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
@@ -45,6 +45,8 @@ public class SchisandraOssTencentDTO implements Serializable {
|
|||||||
*/
|
*/
|
||||||
private String secretKey;
|
private String secretKey;
|
||||||
|
|
||||||
|
private String appId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 地域
|
* 地域
|
||||||
*/
|
*/
|
||||||
|
@@ -22,6 +22,7 @@ import com.schisandra.oss.application.oss.utils.OssPathUtil;
|
|||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
@@ -29,7 +29,7 @@ public class AwsOssConfig {
|
|||||||
|
|
||||||
private AwsRegion region;
|
private AwsRegion region;
|
||||||
|
|
||||||
private DefaultsMode mode;
|
private DefaultsMode mode;
|
||||||
|
|
||||||
private AwsOssClientConfig clientConfig;
|
private AwsOssClientConfig clientConfig;
|
||||||
/**
|
/**
|
||||||
|
@@ -20,36 +20,35 @@ import com.schisandra.oss.application.oss.utils.OssPathUtil;
|
|||||||
import com.upyun.ParallelUploader;
|
import com.upyun.ParallelUploader;
|
||||||
import com.upyun.RestManager;
|
import com.upyun.RestManager;
|
||||||
import com.upyun.UpException;
|
import com.upyun.UpException;
|
||||||
|
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.SneakyThrows;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import okhttp3.Headers;
|
import okhttp3.Headers;
|
||||||
import okhttp3.Response;
|
import okhttp3.Response;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @author zlg
|
||||||
* @description:
|
* @description:
|
||||||
* @param:
|
* @param:
|
||||||
* @return:
|
* @return:
|
||||||
* @author zlg
|
|
||||||
* @date: 2024/6/25 14:40
|
* @date: 2024/6/25 14:40
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Data
|
@Data
|
||||||
@AllArgsConstructor
|
@AllArgsConstructor
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
|
@Component
|
||||||
public class UpOssClient implements StandardOssClient {
|
public class UpOssClient implements StandardOssClient {
|
||||||
|
|
||||||
public static final String REST_OBJECT_NAME = "restManager";
|
public static final String REST_OBJECT_NAME = "restManager";
|
||||||
public static final String PARALLEL_OBJECT_NAME = "parallelUploader";
|
public static final String PARALLEL_OBJECT_NAME = "parallelUploader";
|
||||||
|
|
||||||
private RestManager restManager;
|
private RestManager restManager;
|
||||||
private ParallelUploader parallelUploader;
|
private ParallelUploader parallelUploader;
|
||||||
private UpOssConfig upOssConfig;
|
private UpOssConfig upOssConfig;
|
||||||
@@ -206,8 +205,8 @@ public class UpOssClient implements StandardOssClient {
|
|||||||
Response fileInfo = restManager.getFileInfo(key);
|
Response fileInfo = restManager.getFileInfo(key);
|
||||||
Headers headers = fileInfo.headers();
|
Headers headers = fileInfo.headers();
|
||||||
ossInfo.setLength(headers.get(RestManager.PARAMS.X_UPYUN_FILE_SIZE.getValue()));
|
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.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(headers.getDate(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 {
|
} else {
|
||||||
ossInfo = getDirectoryOssInfo(key);
|
ossInfo = getDirectoryOssInfo(key);
|
||||||
}
|
}
|
||||||
|
@@ -68,26 +68,32 @@ public class UpOssConfiguration {
|
|||||||
public StandardOssClient upOssClient(String userId) {
|
public StandardOssClient upOssClient(String userId) {
|
||||||
SchisandraOssUpBO schisandraOssUpBO = schisandraOssUpDomainService.getUpOssConfig(userId);
|
SchisandraOssUpBO schisandraOssUpBO = schisandraOssUpDomainService.getUpOssConfig(userId);
|
||||||
SchisandraOssUpDTO schisandraOssUpDTO = SchisandraOssUpDTOConverter.INSTANCE.convertBOToDTO(schisandraOssUpBO);
|
SchisandraOssUpDTO schisandraOssUpDTO = SchisandraOssUpDTOConverter.INSTANCE.convertBOToDTO(schisandraOssUpBO);
|
||||||
|
log.info("Up oss配置信息获取成功:{}", schisandraOssUpDTO);
|
||||||
if (ObjectUtil.isEmpty(schisandraOssUpDTO)) {
|
if (ObjectUtil.isEmpty(schisandraOssUpDTO)) {
|
||||||
log.error("Up oss配置信息获取失败");
|
log.error("Up oss配置信息获取失败");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
String userName = schisandraOssUpDTO.getUserName();
|
String userName = schisandraOssUpDTO.getUserName();
|
||||||
String password = schisandraOssUpDTO.getPassword();
|
String password = schisandraOssUpDTO.getPassword();
|
||||||
|
String bucketName = schisandraOssUpDTO.getBucketName();
|
||||||
|
String basePath = schisandraOssUpDTO.getBasePath();
|
||||||
UpOssConfig upOssConfig = new UpOssConfig();
|
UpOssConfig upOssConfig = new UpOssConfig();
|
||||||
upOssConfig.setUserName(userName);
|
upOssConfig.setUserName(userName);
|
||||||
upOssConfig.setPassword(password);
|
upOssConfig.setPassword(password);
|
||||||
|
upOssConfig.setBucketName(bucketName);
|
||||||
|
upOssConfig.setBasePath(basePath);
|
||||||
|
SpringUtil.registerBean(userId, upOssClient(upOssConfig));
|
||||||
return upOssClient(upOssConfig);
|
return upOssClient(upOssConfig);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private StandardOssClient upOssClient(UpOssConfig upOssConfig) {
|
private UpOssClient upOssClient(UpOssConfig upOssConfig) {
|
||||||
RestManager restManager = restManager(upOssConfig);
|
RestManager restManager = restManager(upOssConfig);
|
||||||
ParallelUploader parallelUploader = parallelUploader(upOssConfig);
|
ParallelUploader parallelUploader = parallelUploader(upOssConfig);
|
||||||
return upOssClient(restManager, 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);
|
return new UpOssClient(restManager, parallelUploader, upOssConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
package com.schisandra.oss.domain.service.impl;
|
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.bo.SchisandraFileHeatmapBO;
|
||||||
|
import com.schisandra.oss.domain.convert.SchisandraFileHeatmapBOConverter;
|
||||||
import com.schisandra.oss.domain.service.SchisandraFileHeatmapDomainService;
|
import com.schisandra.oss.domain.service.SchisandraFileHeatmapDomainService;
|
||||||
import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap;
|
import com.schisandra.oss.infra.basic.entity.SchisandraFileHeatmap;
|
||||||
import com.schisandra.oss.infra.basic.service.SchisandraFileHeatmapService;
|
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.entity.SchisandraOssAli;
|
||||||
import com.schisandra.oss.infra.basic.service.SchisandraOssAliService;
|
import com.schisandra.oss.infra.basic.service.SchisandraOssAliService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
@@ -58,7 +57,7 @@ public class SchisandraOssAliDomainServiceImpl implements SchisandraOssAliDomain
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SchisandraOssAliBO> selectAll(){
|
public List<SchisandraOssAliBO> selectAll() {
|
||||||
List<SchisandraOssAli> list = schisandraOssAliService.selectAll();
|
List<SchisandraOssAli> list = schisandraOssAliService.selectAll();
|
||||||
List<SchisandraOssAliBO> schisandraOssAliBO_list = new ArrayList<>();
|
List<SchisandraOssAliBO> schisandraOssAliBO_list = new ArrayList<>();
|
||||||
for (SchisandraOssAli schisandraOssAli : list) {
|
for (SchisandraOssAli schisandraOssAli : list) {
|
||||||
|
@@ -55,9 +55,8 @@ public class SchisandraOssTencent implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@Column("secret_key")
|
@Column("secret_key")
|
||||||
private String secretKey;
|
private String secretKey;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 地域
|
*
|
||||||
*/
|
*/
|
||||||
@Column("app_id")
|
@Column("app_id")
|
||||||
private String appId;
|
private String appId;
|
||||||
|
@@ -124,6 +124,11 @@
|
|||||||
<artifactId>schisandra-cloud-storage-auth-api</artifactId>
|
<artifactId>schisandra-cloud-storage-auth-api</artifactId>
|
||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.boot</groupId>
|
||||||
|
<artifactId>spring-boot-starter-websocket</artifactId>
|
||||||
|
<version>2.4.2</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<dependencyManagement>
|
<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 com.xxl.job.core.executor.impl.XxlJobSpringExecutor;
|
||||||
import org.slf4j.Logger;
|
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 lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.context.annotation.Bean;
|
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 lombok.Data;
|
||||||
import org.springframework.boot.context.properties.ConfigurationProperties;
|
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;
|
import lombok.Data;
|
||||||
|
|
@@ -1,11 +1,12 @@
|
|||||||
package com.schisandra.wechat.controller;
|
package com.schisandra.wechat.controller;
|
||||||
|
|
||||||
import com.schisandra.wechat.common.entity.Result;
|
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.AccessTokenResult;
|
||||||
import com.schisandra.wechat.dto.MpQrCodeCreateRequest;
|
import com.schisandra.wechat.dto.MpQrCodeCreateRequest;
|
||||||
import com.schisandra.wechat.dto.MpQrCodeCreateResult;
|
import com.schisandra.wechat.dto.MpQrCodeCreateResult;
|
||||||
import com.schisandra.wechat.service.WXService;
|
import com.schisandra.wechat.service.WXService;
|
||||||
|
import com.schisandra.wechat.websocket.WeChatSocket;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.logging.log4j.util.Strings;
|
import org.apache.logging.log4j.util.Strings;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
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 org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Classname WxController
|
* @Classname WxController
|
||||||
@@ -32,8 +32,9 @@ public class WxController {
|
|||||||
@Resource
|
@Resource
|
||||||
private WXService wxService;
|
private WXService wxService;
|
||||||
@Resource
|
@Resource
|
||||||
WxConfig wxConfig;
|
private WxConfig wxConfig;
|
||||||
|
@Resource
|
||||||
|
private WeChatSocket weChatSocket;
|
||||||
/**
|
/**
|
||||||
* @description: 获取微信access_token
|
* @description: 获取微信access_token
|
||||||
* @param: []
|
* @param: []
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
package com.schisandra.wechat.job;
|
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.schisandra.wechat.service.WXService;
|
||||||
import com.xxl.job.core.context.XxlJobHelper;
|
import com.xxl.job.core.context.XxlJobHelper;
|
||||||
import com.xxl.job.core.handler.annotation.XxlJob;
|
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.fasterxml.jackson.dataformat.xml.XmlMapper;
|
||||||
import com.schisandra.wechat.aes.AesException;
|
import com.schisandra.wechat.aes.AesException;
|
||||||
import com.schisandra.wechat.common.exception.ParameterException;
|
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.MpBaseEventRequest;
|
||||||
import com.schisandra.wechat.dto.MpCommonRequest;
|
import com.schisandra.wechat.dto.MpCommonRequest;
|
||||||
import com.schisandra.wechat.dto.MpSubscribeEventRequest;
|
import com.schisandra.wechat.dto.MpSubscribeEventRequest;
|
||||||
import com.schisandra.wechat.dto.MpTextEventRequest;
|
import com.schisandra.wechat.dto.MpTextEventRequest;
|
||||||
import com.schisandra.wechat.rpc.AuthUserRpc;
|
import com.schisandra.wechat.rpc.AuthUserRpc;
|
||||||
import com.schisandra.wechat.service.WxMpEventService;
|
import com.schisandra.wechat.service.WxMpEventService;
|
||||||
|
import com.schisandra.wechat.websocket.WeChatSocket;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.logging.log4j.util.Strings;
|
import org.apache.logging.log4j.util.Strings;
|
||||||
import org.springframework.context.ApplicationContext;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpSession;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.security.MessageDigest;
|
import java.security.MessageDigest;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
@@ -30,9 +32,7 @@ import java.util.Objects;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class WxMpEventServiceImpl implements WxMpEventService {
|
public class WxMpEventServiceImpl implements WxMpEventService {
|
||||||
@Resource
|
@Resource
|
||||||
ApplicationContext applicationContext;
|
private WxConfig wxConfig;
|
||||||
@Resource
|
|
||||||
WxConfig wxConfig;
|
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private AuthUserRpc authUserRpc;
|
private AuthUserRpc authUserRpc;
|
||||||
@@ -68,20 +68,33 @@ public class WxMpEventServiceImpl implements WxMpEventService {
|
|||||||
MpTextEventRequest mpTextEventRequest = mapper.convertValue(object, MpTextEventRequest.class);
|
MpTextEventRequest mpTextEventRequest = mapper.convertValue(object, MpTextEventRequest.class);
|
||||||
log.info(mpTextEventRequest.toString());
|
log.info(mpTextEventRequest.toString());
|
||||||
log.info("推送消息:MpTextEventRequest...");
|
log.info("推送消息:MpTextEventRequest...");
|
||||||
// applicationContext.publishEvent(mpTextEventRequest);
|
//...
|
||||||
}
|
}
|
||||||
if ("event".equals(mpBaseEventRequest.getMsgType())) {
|
if ("event".equals(mpBaseEventRequest.getMsgType())) {
|
||||||
MpSubscribeEventRequest mpSubscribeEventRequest = mapper.convertValue(object, MpSubscribeEventRequest.class);
|
MpSubscribeEventRequest mpSubscribeEventRequest = mapper.convertValue(object, MpSubscribeEventRequest.class);
|
||||||
log.info(mpSubscribeEventRequest.toString());
|
log.info(mpSubscribeEventRequest.toString());
|
||||||
log.info("推送消息:MpSubscribeEventRequest...");
|
log.info("推送消息:MpSubscribeEventRequest...");
|
||||||
// applicationContext.publishEvent(mpSubscribeEventRequest);
|
// ...
|
||||||
if ("subscribe".equals(mpSubscribeEventRequest.getEvent())
|
if ("subscribe".equals(mpSubscribeEventRequest.getEvent())
|
||||||
&& Strings.isNotBlank(mpSubscribeEventRequest.getEventKey())) {
|
&& Strings.isNotBlank(mpSubscribeEventRequest.getEventKey())) {
|
||||||
String[] keys = mpSubscribeEventRequest.getEventKey().split("_");
|
String[] keys = mpSubscribeEventRequest.getEventKey().split("_");
|
||||||
if ("qrscene".equals(keys[0]) && "ScanReg".equals(keys[1])) {
|
if ("qrscene".equals(keys[0]) && "ScanReg".equals(keys[1])) {
|
||||||
log.info("AppId:{},ClientId:{}", keys[2], keys[3]);
|
log.info("AppId:{},ClientId:{}", keys[2], keys[3]);
|
||||||
authUserRpc.wechatRegister(keys[2], mpSubscribeEventRequest.getFromUserName(), keys[3]);
|
Boolean result = authUserRpc.wechatRegister(keys[2], mpSubscribeEventRequest.getFromUserName(), keys[3]);
|
||||||
return null;
|
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("_");
|
String[] keys = mpSubscribeEventRequest.getEventKey().split("_");
|
||||||
if ("ScanReg".equals(keys[0])) {
|
if ("ScanReg".equals(keys[0])) {
|
||||||
log.info("AppId:{},ClientId:{}", keys[1], keys[2]);
|
log.info("AppId:{},ClientId:{}", keys[1], keys[2]);
|
||||||
authUserRpc.wechatRegister(keys[1], mpSubscribeEventRequest.getFromUserName(), keys[2]);
|
Boolean result = authUserRpc.wechatRegister(keys[1], mpSubscribeEventRequest.getFromUserName(), keys[2]);
|
||||||
|
String replyContent;
|
||||||
return null;
|
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