构建对象存储

This commit is contained in:
TinyAnts 2022-03-30 19:02:05 +08:00
parent 539216f2dc
commit d3687ed741
39 changed files with 1136 additions and 169 deletions

View File

@ -0,0 +1,120 @@
package com.hxkj.admin.controller;
import com.hxkj.admin.service.IAlbumService;
import com.hxkj.admin.validate.AlbumParam;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.system.SystemAdminParam;
import com.hxkj.admin.vo.album.AlbumVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.core.PageResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.Map;
@RestController
@RequestMapping("/api/album")
public class AlbumController {
@Resource
IAlbumService iAlbumService;
/**
* 相册列表
*
* @author fzr
* @return Object
*/
@GetMapping("/albumList")
public Object albumList(@Validated PageParam pageParam,
@RequestParam Map<String, String> params) {
PageResult<AlbumVo> voPageResult = iAlbumService.albumList(pageParam, params);
return AjaxResult.success(voPageResult);
}
/**
* 相册重命名
*
* @author fzr
* @return Object
*/
@PostMapping("/albumRename")
public Object albumRename(@Validated(value = AlbumParam.rename.class) @RequestBody AlbumParam albumParam) {
iAlbumService.albumRename(albumParam.getId(), albumParam.getName());
return AjaxResult.success();
}
/**
* 相册移动
*
* @author fzr
* @return Object
*/
@PostMapping("/albumMove")
public Object albumMove(@Validated(value = AlbumParam.albumMove.class) @RequestBody AlbumParam albumParam) {
iAlbumService.albumMove(albumParam.getId(), albumParam.getCid());
return AjaxResult.success();
}
/**
* 相册删除
*
* @author fzr
* @return Object
*/
@PostMapping("/albumDel")
public Object albumDel(@Validated(value = AlbumParam.delete.class) @RequestBody AlbumParam albumParam) {
iAlbumService.albumDel(albumParam.getId());
return AjaxResult.success();
}
/**
* 分类列表
*
* @author fzr
* @return Object
*/
@PostMapping("/cateList")
public Object cateList(@RequestParam Map<String, String> params) {
iAlbumService.cateList(params);
return AjaxResult.success();
}
/**
* 分类新增
*
* @author fzr
* @return Object
*/
@PostMapping("/cateAdd")
public Object cateAdd(@Validated(value = AlbumParam.cateAdd.class) @RequestBody AlbumParam albumParam) {
iAlbumService.cateAdd(albumParam);
return AjaxResult.success();
}
/**
* 分类重命名
*
* @author fzr
* @return Object
*/
@PostMapping("/cateRename")
public Object cateRename(@Validated(value = AlbumParam.rename.class) @RequestBody AlbumParam albumParam) {
iAlbumService.cateRename(albumParam.getId(), albumParam.getName());
return AjaxResult.success();
}
/**
* 分类重命名
*
* @author fzr
* @return Object
*/
@PostMapping("/cateDel")
public Object cateDel(@Validated(value = AlbumParam.delete.class) @RequestBody AlbumParam albumParam) {
iAlbumService.cateDel(albumParam.getId());
return AjaxResult.success();
}
}

View File

@ -1,23 +1,35 @@
package com.hxkj.admin.controller;
import com.hxkj.common.utils.YmlUtil;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.plugin.storage.StorageDriver;
import com.hxkj.common.plugin.storage.engine.Aliyun;
import com.hxkj.common.plugin.storage.engine.Qiniu;
import com.hxkj.common.utils.TimeUtil;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest;
import javax.servlet.http.HttpServletRequest;
@RestController
public class IndexController {
@GetMapping("/user/add")
public void index() {
System.out.println(YmlUtil.get("server.port"));
@PostMapping("/aa")
public AjaxResult aa(HttpServletRequest request) {
MultipartFile multipartFile = ((MultipartRequest) request).getFile("file");
if (multipartFile == null) {
return AjaxResult.failed("请选择上传文件");
}
}
// Qiniu qiniu = new Qiniu();
// qiniu.upload(multipartFile);
@GetMapping("/user/update")
public void ee() {
System.out.println("小红");
new StorageDriver();
return AjaxResult.success();
}
}

View File

@ -0,0 +1,18 @@
package com.hxkj.admin.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/upload")
public class UploadController {
public Object image() {
return null;
}
public Object video() {
return null;
}
}

View File

@ -2,7 +2,7 @@ package com.hxkj.admin.controller.system;
import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysAdminParam;
import com.hxkj.admin.validate.system.SystemAdminParam;
import com.hxkj.admin.vo.system.SystemAdminVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.core.PageResult;
@ -49,12 +49,12 @@ public class SystemAdminController {
* 新增管理员
*
* @author fzr
* @param sysAdminParam 参数
* @param systemAdminParam 参数
* @return Object
*/
@PostMapping("/add")
public Object add(@Validated(value = SysAdminParam.create.class) @RequestBody SysAdminParam sysAdminParam) {
iSystemAdminService.add(sysAdminParam);
public Object add(@Validated(value = SystemAdminParam.create.class) @RequestBody SystemAdminParam systemAdminParam) {
iSystemAdminService.add(systemAdminParam);
return AjaxResult.success();
}
@ -62,12 +62,12 @@ public class SystemAdminController {
* 编辑管理员
*
* @author fzr
* @param sysAdminParam 参数
* @param systemAdminParam 参数
* @return Object
*/
@PostMapping("/edit")
public Object edit(@Validated(value = SysAdminParam.update.class) @RequestBody SysAdminParam sysAdminParam) {
iSystemAdminService.edit(sysAdminParam);
public Object edit(@Validated(value = SystemAdminParam.update.class) @RequestBody SystemAdminParam systemAdminParam) {
iSystemAdminService.edit(systemAdminParam);
return AjaxResult.success();
}
@ -78,8 +78,8 @@ public class SystemAdminController {
* @return Object
*/
@PostMapping("/del")
public Object del(@Validated(value = SysAdminParam.delete.class) @RequestBody SysAdminParam sysAdminParam) {
iSystemAdminService.del(sysAdminParam.getId());
public Object del(@Validated(value = SystemAdminParam.delete.class) @RequestBody SystemAdminParam systemAdminParam) {
iSystemAdminService.del(systemAdminParam.getId());
return AjaxResult.success();
}

View File

@ -1,7 +1,7 @@
package com.hxkj.admin.controller.system;
import com.hxkj.admin.service.ISystemLoginService;
import com.hxkj.admin.validate.SysLoginParam;
import com.hxkj.admin.validate.system.SystemLoginParam;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.exception.LoginException;
import com.hxkj.common.exception.OperateException;
@ -26,13 +26,13 @@ public class SystemLoginController {
* 登录系统
*
* @author fzr
* @param sysLoginParam 登录参数
* @param systemLoginParam 登录参数
* @return Object
*/
@PostMapping("/login")
public Object login(@Validated() @RequestBody SysLoginParam sysLoginParam) {
public Object login(@Validated() @RequestBody SystemLoginParam systemLoginParam) {
try {
Map<String, Object> map = iSystemLoginService.login(sysLoginParam);
Map<String, Object> map = iSystemLoginService.login(systemLoginParam);
return AjaxResult.success(map);
} catch (LoginException e) {
return AjaxResult.failed(e.getCode(), e.getMsg());

View File

@ -3,7 +3,7 @@ package com.hxkj.admin.controller.system;
import com.alibaba.fastjson.JSONArray;
import com.hxkj.admin.LikeAdminThreadLocal;
import com.hxkj.admin.service.ISystemMenuService;
import com.hxkj.admin.validate.SysMenuParam;
import com.hxkj.admin.validate.system.SystemMenuParam;
import com.hxkj.admin.vo.system.SystemMenuVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.validator.annotation.IDMust;
@ -63,8 +63,8 @@ public class SystemMenuController {
* @return Object
*/
@PostMapping("/add")
public Object add(@Validated(value = SysMenuParam.create.class) @RequestBody SysMenuParam sysMenuParam) {
iSystemMenuService.add(sysMenuParam);
public Object add(@Validated(value = SystemMenuParam.create.class) @RequestBody SystemMenuParam systemMenuParam) {
iSystemMenuService.add(systemMenuParam);
return AjaxResult.success();
}
@ -75,8 +75,8 @@ public class SystemMenuController {
* @return Object
*/
@PostMapping("/edit")
public Object edit(@Validated(value = SysMenuParam.update.class) @RequestBody SysMenuParam sysMenuParam) {
iSystemMenuService.edit(sysMenuParam);
public Object edit(@Validated(value = SystemMenuParam.update.class) @RequestBody SystemMenuParam systemMenuParam) {
iSystemMenuService.edit(systemMenuParam);
return AjaxResult.success();
}
@ -87,8 +87,8 @@ public class SystemMenuController {
* @return Object
*/
@PostMapping("/del")
public Object del(@Validated(value = SysMenuParam.delete.class) @RequestBody SysMenuParam sysMenuParam) {
iSystemMenuService.del(sysMenuParam.getId());
public Object del(@Validated(value = SystemMenuParam.delete.class) @RequestBody SystemMenuParam systemMenuParam) {
iSystemMenuService.del(systemMenuParam.getId());
return AjaxResult.success();
}

View File

@ -2,7 +2,7 @@ package com.hxkj.admin.controller.system;
import com.hxkj.admin.service.ISystemRoleService;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysRoleParam;
import com.hxkj.admin.validate.system.SystemRoleParam;
import com.hxkj.admin.vo.system.SystemRoleVo;
import com.hxkj.common.core.AjaxResult;
import com.hxkj.common.core.PageResult;
@ -48,12 +48,12 @@ public class SystemRoleController {
* 新增角色
*
* @author fzr
* @param sysRoleParam 角色参数
* @param systemRoleParam 角色参数
* @return Object
*/
@PostMapping("/add")
public Object add(@Validated(value = SysRoleParam.create.class) @RequestBody SysRoleParam sysRoleParam) {
iSystemRoleService.add(sysRoleParam);
public Object add(@Validated(value = SystemRoleParam.create.class) @RequestBody SystemRoleParam systemRoleParam) {
iSystemRoleService.add(systemRoleParam);
return AjaxResult.success();
}
@ -61,12 +61,12 @@ public class SystemRoleController {
* 编辑角色
*
* @author fzr
* @param sysRoleParam 角色参数
* @param systemRoleParam 角色参数
* @return Object
*/
@PostMapping("/edit")
public Object edit(@Validated(value = SysRoleParam.create.class) @RequestBody SysRoleParam sysRoleParam) {
iSystemRoleService.edit(sysRoleParam);
public Object edit(@Validated(value = SystemRoleParam.create.class) @RequestBody SystemRoleParam systemRoleParam) {
iSystemRoleService.edit(systemRoleParam);
return AjaxResult.success();
}
@ -74,12 +74,12 @@ public class SystemRoleController {
* 删除角色
*
* @author fzr
* @param sysRoleParam 角色参数
* @param systemRoleParam 角色参数
* @return Object
*/
@PostMapping("/del")
public Object del(@Validated(value = SysRoleParam.delete.class) @RequestBody SysRoleParam sysRoleParam) {
iSystemRoleService.del(sysRoleParam.getId());
public Object del(@Validated(value = SystemRoleParam.delete.class) @RequestBody SystemRoleParam systemRoleParam) {
iSystemRoleService.del(systemRoleParam.getId());
return AjaxResult.success();
}

View File

@ -0,0 +1,92 @@
package com.hxkj.admin.service;
import com.alibaba.fastjson.JSONArray;
import com.hxkj.admin.validate.AlbumParam;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.vo.album.AlbumVo;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.Album;
import java.util.Map;
/**
* 相册服务类
*/
public interface IAlbumService extends BaseService<Album> {
/**
* 文件列表
*
* @author fzr
* @param pageParam 分页参数
* @param params 其他搜索参数
* @return PageResult<AlbumVo>
*/
PageResult<AlbumVo> albumList(PageParam pageParam, Map<String, String> params);
/**
* 文件重命名
*
* @param id 文件ID
* @param name 文件名称
*/
void albumRename(Integer id, String name);
/**
* 文件移动
*
* @author fzr
* @param id 文件ID
* @param cid 类目ID
*/
void albumMove(Integer id, Integer cid);
/**
* 文件新增
*
* @author fzr
* @param params 文件信息参数
*/
void albumAdd(Map<String, String> params);
/**
* 文件删除
*
* @author fzr
* @param id 文件ID
*/
void albumDel(Integer id);
/**
* 分类列表
*
* @author fzr
* @param params 搜索参数
* @return JSONArray
*/
JSONArray cateList(Map<String, String> params);
/**
* 分类新增
*/
void cateAdd(AlbumParam albumParam);
/**
* 分类编辑
*
* @author fzr
* @param id 分类ID
* @param name 分类名称
*/
void cateRename(Integer id, String name);
/**
* 分类删除
*
* @author fzr
* @param id 分类ID
*/
void cateDel(Integer id);
}

View File

@ -1,7 +1,7 @@
package com.hxkj.admin.service;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysAdminParam;
import com.hxkj.admin.validate.system.SystemAdminParam;
import com.hxkj.admin.vo.system.SystemAdminVo;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.core.PageResult;
@ -45,17 +45,17 @@ public interface ISystemAdminService extends BaseService<SystemAdmin> {
* 新增管理员
*
* @author fzr
* @param sysAdminParam 参数
* @param systemAdminParam 参数
*/
void add(SysAdminParam sysAdminParam);
void add(SystemAdminParam systemAdminParam);
/**
* 编辑管理员
*
* @author fzr
* @param sysAdminParam 参数
* @param systemAdminParam 参数
*/
void edit(SysAdminParam sysAdminParam);
void edit(SystemAdminParam systemAdminParam);
/**
* 删除管理员

View File

@ -1,6 +1,6 @@
package com.hxkj.admin.service;
import com.hxkj.admin.validate.SysLoginParam;
import com.hxkj.admin.validate.system.SystemLoginParam;
import java.util.Map;
@ -13,10 +13,10 @@ public interface ISystemLoginService {
* 登录
*
* @author fzr
* @param sysLoginParam 登录参数
* @param systemLoginParam 登录参数
* @return token
*/
Map<String, Object> login(SysLoginParam sysLoginParam);
Map<String, Object> login(SystemLoginParam systemLoginParam);
/**
* 退出

View File

@ -1,7 +1,7 @@
package com.hxkj.admin.service;
import com.alibaba.fastjson.JSONArray;
import com.hxkj.admin.validate.SysMenuParam;
import com.hxkj.admin.validate.system.SystemMenuParam;
import com.hxkj.admin.vo.system.SystemMenuVo;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.entity.system.SystemMenu;
@ -40,17 +40,17 @@ public interface ISystemMenuService extends BaseService<SystemMenu> {
* 新增菜单
*
* @author fzr
* @param sysMenuParam 参数
* @param systemMenuParam 参数
*/
void add(SysMenuParam sysMenuParam);
void add(SystemMenuParam systemMenuParam);
/**
* 编辑菜单
*
* @author fzr
* @param sysMenuParam 参数
* @param systemMenuParam 参数
*/
void edit(SysMenuParam sysMenuParam);
void edit(SystemMenuParam systemMenuParam);
/**
* 删除菜单

View File

@ -1,7 +1,7 @@
package com.hxkj.admin.service;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysRoleParam;
import com.hxkj.admin.validate.system.SystemRoleParam;
import com.hxkj.admin.vo.system.SystemRoleVo;
import com.hxkj.common.basics.BaseService;
import com.hxkj.common.core.PageResult;
@ -42,17 +42,17 @@ public interface ISystemRoleService extends BaseService<SystemRole> {
* 新增角色
*
* @author fzr
* @param sysRoleParam 参数
* @param systemRoleParam 参数
*/
void add(SysRoleParam sysRoleParam);
void add(SystemRoleParam systemRoleParam);
/**
* 更新角色
*
* @author fzr
* @param sysRoleParam 参数
* @param systemRoleParam 参数
*/
void edit(SysRoleParam sysRoleParam);
void edit(SystemRoleParam systemRoleParam);
/**
* 删除角色

View File

@ -0,0 +1,281 @@
package com.hxkj.admin.service.impl;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Assert;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.hxkj.admin.LikeAdminThreadLocal;
import com.hxkj.admin.service.IAlbumService;
import com.hxkj.admin.validate.AlbumParam;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.vo.album.AlbumCateVo;
import com.hxkj.admin.vo.album.AlbumVo;
import com.hxkj.admin.vo.system.SystemMenuVo;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.Album;
import com.hxkj.common.entity.AlbumCate;
import com.hxkj.common.mapper.AlbumCateMapper;
import com.hxkj.common.mapper.AlbumMapper;
import com.hxkj.common.utils.ArrayUtil;
import com.hxkj.common.utils.TimeUtil;
import com.hxkj.common.utils.ToolsUtil;
import com.hxkj.common.utils.UrlUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Service
public class IAlbumServiceImpl extends MPJBaseServiceImpl<AlbumMapper, Album> implements IAlbumService {
@Resource
AlbumCateMapper albumCateMapper;
/**
* 文件列表
*
* @author fzr
* @param pageParam 分页参数
* @return PageResult<AlbumVo>
*/
@Override
public PageResult<AlbumVo> albumList(PageParam pageParam, Map<String, String> params) {
Integer page = pageParam.getPageNo();
Integer limit = pageParam.getPageSize();
QueryWrapper<Album> queryWrapper = new QueryWrapper<>();
queryWrapper.select(Album.class, info->
!info.getColumn().equals("type") &&
!info.getColumn().equals("aid") &&
!info.getColumn().equals("uid") &&
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("is_delete", 0)
.orderByDesc("id");
this.setSearch(queryWrapper, params, new String[]{
"like:keyword:str",
"=:type:int"
});
IPage<Album> iPage = this.page(new Page<>(page, limit), queryWrapper);
List<AlbumVo> albumVoArrayList = new ArrayList<>();
for (Album album : iPage.getRecords()) {
AlbumVo vo = new AlbumVo();
BeanUtils.copyProperties(album, vo);
vo.setUri(UrlUtil.toAbsoluteUrl(album.getUri()));
vo.setSize(ToolsUtil.toStorageUnit(album.getSize()));
vo.setCreateTime(TimeUtil.timestampToDate(album.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(album.getUpdateTime()));
albumVoArrayList.add(vo);
}
return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), albumVoArrayList);
}
/**
* 文件重命名
*
* @author fzr
* @param id 文件ID
* @param name 文件名称
*/
@Override
public void albumRename(Integer id, String name) {
Album album = this.getOne(new QueryWrapper<Album>()
.select("id", "name")
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(album, "文件丢失!");
album.setName(name);
album.setUpdateTime(System.currentTimeMillis() / 1000);
this.updateById(album);
}
/**
* 文件移动
*
* @author fzr
* @param id 文件ID
* @param cid 类目ID
*/
@Override
public void albumMove(Integer id, Integer cid) {
Album album = this.getOne(new QueryWrapper<Album>()
.select("id", "name")
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(album, "文件丢失!");
Assert.notNull( albumCateMapper.selectOne(
new QueryWrapper<AlbumCate>()
.eq("id", cid)
.eq("is_delete", 0)
), "类目已不存在!");
album.setCid(cid);
album.setUpdateTime(System.currentTimeMillis() / 1000);
this.updateById(album);
}
/**
* 文件新增
*
* @author fzr
* @param params 文件信息参数
*/
@Override
public void albumAdd(Map<String, String> params) {
Album album = new Album();
album.setAid(Integer.parseInt(params.getOrDefault("aid", "0")));
album.setUid(Integer.parseInt(params.getOrDefault("uid", "0")));
album.setType(Integer.parseInt(params.get("type")));
album.setName(params.get("name"));
album.setExt(params.get("ext"));
album.setUri(params.get("uri"));
album.setSize(Long.parseLong(params.get("size")));
album.setCreateTime(System.currentTimeMillis() / 1000);
album.setUpdateTime(System.currentTimeMillis() / 1000);
this.save(album);
}
/**
* 文件删除
*
* @author fzr
* @param id 文件ID
*/
@Override
public void albumDel(Integer id) {
Album album = this.getOne(new QueryWrapper<Album>()
.select("id", "name")
.eq("id", id)
.eq("is_delete", 0)
.last("limit 1"));
Assert.notNull(album, "文件丢失!");
album.setIsDelete(1);
album.setDeleteTime(System.currentTimeMillis() / 1000);
this.updateById(album);
}
/**
* 分类列表
*
* @param params 搜索参数
* @return JSONArray
*/
@Override
public JSONArray cateList(Map<String, String> params) {
QueryWrapper<AlbumCate> queryWrapper = new QueryWrapper<>();
queryWrapper.select(AlbumCate.class, info->
!info.getColumn().equals("is_delete") &&
!info.getColumn().equals("delete_time"))
.eq("is_delete", 0)
.orderByDesc("id");
long type = Integer.parseInt(params.getOrDefault("type", "0"));
String keyword = params.getOrDefault("keyword", "");
if (type > 0) {
queryWrapper.eq("type", type);
}
if (!keyword.equals("")) {
queryWrapper.like("name", keyword);
}
List<AlbumCate> albumCateList = albumCateMapper.selectList(queryWrapper);
List<AlbumCateVo> lists = new ArrayList<>();
for (AlbumCate albumCate : albumCateList) {
AlbumCateVo vo = new AlbumCateVo();
BeanUtils.copyProperties(albumCate, vo);
vo.setCreateTime(TimeUtil.timestampToDate(albumCate.getCreateTime()));
vo.setUpdateTime(TimeUtil.timestampToDate(albumCate.getUpdateTime()));
}
JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(lists));
return ArrayUtil.listToTree(jsonArray, "id", "pid", "children");
}
/**
* 分类新增
*
* @author fzr
* @param albumParam 分类参数
*/
@Override
public void cateAdd(AlbumParam albumParam) {
AlbumCate albumCate = new AlbumCate();
albumCate.setType(albumParam.getType());
albumCate.setPid(albumParam.getPid());
albumCate.setName(albumParam.getName());
albumCate.setCreateTime(System.currentTimeMillis() / 1000);
albumCate.setUpdateTime(System.currentTimeMillis() / 1000);
albumCateMapper.insert(albumCate);
}
/**
* 分类重命名
*
* @author fzr
* @param id 分类ID
* @param name 分类名称
*/
@Override
public void cateRename(Integer id, String name) {
AlbumCate albumCate = albumCateMapper.selectOne(
new QueryWrapper<AlbumCate>()
.select("id", "name")
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(albumCate, "分类已不存在!");
albumCate.setName(name);
albumCate.setUpdateTime(System.currentTimeMillis() / 1000);
albumCateMapper.updateById(albumCate);
}
/**
* 分类删除
*
* @author fzr
* @param id 分类ID
*/
@Override
public void cateDel(Integer id) {
AlbumCate albumCate = albumCateMapper.selectOne(
new QueryWrapper<AlbumCate>()
.select("id", "name")
.eq("id", id)
.eq("is_delete", 0));
Assert.notNull(albumCate, "分类已不存在!");
Assert.isNull(this.getOne(new QueryWrapper<Album>()
.select("id", "cid", "name")
.eq("cid", id)
.eq("is_delete", 0)
.last("limit 1")
), "当前分类正被使用中,不能删除!");
albumCate.setIsDelete(1);
albumCate.setDeleteTime(System.currentTimeMillis() / 1000);
albumCateMapper.updateById(albumCate);
}
}

View File

@ -10,7 +10,7 @@ import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.service.ISystemRoleService;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysAdminParam;
import com.hxkj.admin.validate.system.SystemAdminParam;
import com.hxkj.admin.vo.system.SystemAdminVo;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.system.SystemAdmin;
@ -124,38 +124,38 @@ public class ISystemAdminServiceImpl extends MPJBaseServiceImpl<SystemAdminMappe
* 新增管理员
*
* @author fzr
* @param sysAdminParam 参数
* @param systemAdminParam 参数
*/
@Override
public void add(SysAdminParam sysAdminParam) {
public void add(SystemAdminParam systemAdminParam) {
String[] field = {"id", "username", "nickname"};
Assert.isNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("is_delete", 0)
.eq("username", sysAdminParam.getUsername())
.eq("username", systemAdminParam.getUsername())
.last("limit 1")), "账号已存在换一个吧!");
Assert.isNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("is_delete", 0)
.eq("nickname", sysAdminParam.getNickname())
.eq("nickname", systemAdminParam.getNickname())
.last("limit 1")), "昵称已存在换一个吧!");
Assert.notNull(iSystemRoleService.getById(sysAdminParam.getRole()), "角色不存在!");
Assert.notNull(iSystemRoleService.getById(systemAdminParam.getRole()), "角色不存在!");
String salt = ToolsUtil.randomString(5);
String pwd = ToolsUtil.makeMd5(sysAdminParam.getPassword().trim() + salt);
String avatar = UrlUtil.toRelativeUrl(sysAdminParam.getAvatar());
String pwd = ToolsUtil.makeMd5(systemAdminParam.getPassword().trim() + salt);
String avatar = UrlUtil.toRelativeUrl(systemAdminParam.getAvatar());
SystemAdmin model = new SystemAdmin();
model.setUsername(sysAdminParam.getUsername());
model.setNickname(sysAdminParam.getNickname());
model.setRole(sysAdminParam.getRole());
model.setUsername(systemAdminParam.getUsername());
model.setNickname(systemAdminParam.getNickname());
model.setRole(systemAdminParam.getRole());
model.setAvatar(avatar);
model.setPassword(pwd);
model.setSalt(salt);
model.setSort(sysAdminParam.getSort());
model.setIsDisable(sysAdminParam.getIsDisable());
model.setSort(systemAdminParam.getSort());
model.setIsDisable(systemAdminParam.getIsDisable());
model.setCreateTime(System.currentTimeMillis() / 1000);
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.save(model);
@ -165,54 +165,54 @@ public class ISystemAdminServiceImpl extends MPJBaseServiceImpl<SystemAdminMappe
* 更新管理员
*
* @author fzr
* @param sysAdminParam 参数
* @param systemAdminParam 参数
*/
@Override
public void edit(SysAdminParam sysAdminParam) {
public void edit(SystemAdminParam systemAdminParam) {
String[] field = {"id", "username", "nickname"};
Assert.notNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("id", sysAdminParam.getId())
.eq("id", systemAdminParam.getId())
.eq("is_delete", 0)
.last("limit 1")), "账号不存在了!");
Assert.isNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("is_delete", 0)
.eq("username", sysAdminParam.getUsername())
.ne("id", sysAdminParam.getId())
.eq("username", systemAdminParam.getUsername())
.ne("id", systemAdminParam.getId())
.last("limit 1")), "账号已存在换一个吧!");
Assert.isNull(this.getOne(new QueryWrapper<SystemAdmin>()
.select(field)
.eq("is_delete", 0)
.eq("nickname", sysAdminParam.getNickname())
.ne("id", sysAdminParam.getId())
.eq("nickname", systemAdminParam.getNickname())
.ne("id", systemAdminParam.getId())
.last("limit 1")), "昵称已存在换一个吧!");
Assert.notNull(iSystemRoleService.getById(sysAdminParam.getRole()), "角色不存在!");
Assert.notNull(iSystemRoleService.getById(systemAdminParam.getRole()), "角色不存在!");
SystemAdmin model = new SystemAdmin();
model.setId(sysAdminParam.getId());
model.setNickname(sysAdminParam.getNickname());
model.setUsername(sysAdminParam.getUsername());
model.setAvatar( UrlUtil.toRelativeUrl(sysAdminParam.getAvatar()));
model.setRole(sysAdminParam.getId() == 1 ? 0 : sysAdminParam.getRole());
model.setSort(sysAdminParam.getSort());
model.setIsDisable(sysAdminParam.getIsDisable());
model.setId(systemAdminParam.getId());
model.setNickname(systemAdminParam.getNickname());
model.setUsername(systemAdminParam.getUsername());
model.setAvatar( UrlUtil.toRelativeUrl(systemAdminParam.getAvatar()));
model.setRole(systemAdminParam.getId() == 1 ? 0 : systemAdminParam.getRole());
model.setSort(systemAdminParam.getSort());
model.setIsDisable(systemAdminParam.getIsDisable());
model.setUpdateTime(System.currentTimeMillis() / 1000);
if (sysAdminParam.getPassword() != null) {
if (systemAdminParam.getPassword() != null) {
String salt = ToolsUtil.randomString(5);
String pwd = ToolsUtil.makeMd5( sysAdminParam.getPassword().trim() + salt);
String pwd = ToolsUtil.makeMd5( systemAdminParam.getPassword().trim() + salt);
model.setPassword(pwd);
model.setSalt(salt);
}
this.updateById(model);
this.cacheAdminUserByUid(sysAdminParam.getId());
this.cacheAdminUserByUid(systemAdminParam.getId());
if (sysAdminParam.getPassword() != null) {
if (systemAdminParam.getPassword() != null) {
RedisUtil.del(Objects.requireNonNull(HttpUtil.obj()).getHeader("token"));
}
}

View File

@ -3,7 +3,7 @@ package com.hxkj.admin.service.impl;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.service.ISystemLoginService;
import com.hxkj.admin.validate.SysLoginParam;
import com.hxkj.admin.validate.system.SystemLoginParam;
import com.hxkj.common.entity.system.SystemAdmin;
import com.hxkj.common.enums.HttpEnum;
import com.hxkj.common.exception.LoginException;
@ -27,13 +27,13 @@ public class ISystemLoginServiceImpl implements ISystemLoginService {
* 登录
*
* @author fzr
* @param sysLoginParam 登录参数
* @param systemLoginParam 登录参数
* @return token
*/
@Override
public Map<String, Object> login(SysLoginParam sysLoginParam) {
String username = sysLoginParam.getUsername();
String password = sysLoginParam.getPassword();
public Map<String, Object> login(SystemLoginParam systemLoginParam) {
String username = systemLoginParam.getUsername();
String password = systemLoginParam.getPassword();
SystemAdmin sysAdmin = iSystemAdminService.findByUsername(username);
if (sysAdmin == null || sysAdmin.getIsDelete() == 1) {

View File

@ -8,7 +8,7 @@ import com.hxkj.admin.LikeAdminThreadLocal;
import com.hxkj.admin.config.SystemConfig;
import com.hxkj.admin.service.ISystemMenuService;
import com.hxkj.admin.service.ISystemRoleMenuService;
import com.hxkj.admin.validate.SysMenuParam;
import com.hxkj.admin.validate.system.SystemMenuParam;
import com.hxkj.admin.vo.system.SystemMenuVo;
import com.hxkj.common.entity.system.SystemMenu;
import com.hxkj.common.mapper.system.SystemMenuMapper;
@ -114,18 +114,18 @@ public class ISystemMenuServiceImpl extends MPJBaseServiceImpl<SystemMenuMapper,
* 新增菜单
*
* @author fzr
* @param sysMenuParam 参数
* @param systemMenuParam 参数
*/
@Override
public void add(SysMenuParam sysMenuParam) {
public void add(SystemMenuParam systemMenuParam) {
SystemMenu model = new SystemMenu();
model.setPid(sysMenuParam.getPid());
model.setMenuType(sysMenuParam.getMenuType());
model.setMenuName(sysMenuParam.getMenuName());
model.setMenuIcon(sysMenuParam.getMenuIcon());
model.setMenuSort(sysMenuParam.getMenuSort());
model.setPerms(sysMenuParam.getPerms());
model.setIsDisable(sysMenuParam.getIsDisable());
model.setPid(systemMenuParam.getPid());
model.setMenuType(systemMenuParam.getMenuType());
model.setMenuName(systemMenuParam.getMenuName());
model.setMenuIcon(systemMenuParam.getMenuIcon());
model.setMenuSort(systemMenuParam.getMenuSort());
model.setPerms(systemMenuParam.getPerms());
model.setIsDisable(systemMenuParam.getIsDisable());
model.setCreateTime(System.currentTimeMillis() / 1000);
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.save(model);
@ -135,20 +135,20 @@ public class ISystemMenuServiceImpl extends MPJBaseServiceImpl<SystemMenuMapper,
* 编辑菜单
*
* @author fzr
* @param sysMenuParam 菜单
* @param systemMenuParam 菜单
*/
@Override
public void edit(SysMenuParam sysMenuParam) {
SystemMenu model = this.getOne(new QueryWrapper<SystemMenu>().eq("id", sysMenuParam.getId()));
public void edit(SystemMenuParam systemMenuParam) {
SystemMenu model = this.getOne(new QueryWrapper<SystemMenu>().eq("id", systemMenuParam.getId()));
Assert.notNull(model, "菜单已不存在!");
model.setMenuType(sysMenuParam.getMenuType());
model.setMenuName(sysMenuParam.getMenuName());
model.setMenuIcon(sysMenuParam.getMenuIcon());
model.setMenuSort(sysMenuParam.getMenuSort());
model.setPerms(sysMenuParam.getPerms());
model.setPid(sysMenuParam.getPid());
model.setIsDisable(sysMenuParam.getIsDisable());
model.setMenuType(systemMenuParam.getMenuType());
model.setMenuName(systemMenuParam.getMenuName());
model.setMenuIcon(systemMenuParam.getMenuIcon());
model.setMenuSort(systemMenuParam.getMenuSort());
model.setPerms(systemMenuParam.getPerms());
model.setPid(systemMenuParam.getPid());
model.setIsDisable(systemMenuParam.getIsDisable());
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.updateById(model);

View File

@ -10,7 +10,7 @@ import com.hxkj.admin.service.ISystemAdminService;
import com.hxkj.admin.service.ISystemRoleMenuService;
import com.hxkj.admin.service.ISystemRoleService;
import com.hxkj.admin.validate.PageParam;
import com.hxkj.admin.validate.SysRoleParam;
import com.hxkj.admin.validate.system.SystemRoleParam;
import com.hxkj.admin.vo.system.SystemRoleVo;
import com.hxkj.common.core.PageResult;
import com.hxkj.common.entity.system.SystemAdmin;
@ -119,58 +119,58 @@ public class ISystemRoleServiceImpl extends MPJBaseServiceImpl<SystemRoleMapper,
* 新增角色
*
* @author fzr
* @param sysRoleParam 参数
* @param systemRoleParam 参数
*/
@Override
@Transactional
public void add(SysRoleParam sysRoleParam) {
public void add(SystemRoleParam systemRoleParam) {
Assert.isNull(this.getOne(new QueryWrapper<SystemRole>()
.select("id,name")
.eq("name", sysRoleParam.getName().trim())
.eq("name", systemRoleParam.getName().trim())
.last("limit 1")), "角色名称已存在!");
SystemRole model = new SystemRole();
model.setName(sysRoleParam.getName().trim());
model.setRemark(sysRoleParam.getRemark());
model.setIsDisable(sysRoleParam.getIsDisable());
model.setName(systemRoleParam.getName().trim());
model.setRemark(systemRoleParam.getRemark());
model.setIsDisable(systemRoleParam.getIsDisable());
model.setCreateTime(System.currentTimeMillis() / 1000);
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.save(model);
iSystemRoleMenuService.batchSaveByMenuIds(model.getId(), sysRoleParam.getMenuIds());
iSystemRoleMenuService.batchSaveByMenuIds(model.getId(), systemRoleParam.getMenuIds());
}
/**
* 编辑角色
*
* @author fzr
* @param sysRoleParam 参数
* @param systemRoleParam 参数
*/
@Override
@Transactional
public void edit(SysRoleParam sysRoleParam) {
public void edit(SystemRoleParam systemRoleParam) {
Assert.notNull(this.getOne(new QueryWrapper<SystemRole>()
.select("id,name")
.eq("id", sysRoleParam.getId())
.eq("id", systemRoleParam.getId())
.last("limit 1")), "角色已不存在!");
Assert.isNull(this.getOne(new QueryWrapper<SystemRole>()
.select("id,name")
.ne("id", sysRoleParam.getId())
.eq("name", sysRoleParam.getName().trim())
.ne("id", systemRoleParam.getId())
.eq("name", systemRoleParam.getName().trim())
.last("limit 1")), "角色名称已存在!");
SystemRole model = new SystemRole();
model.setId(sysRoleParam.getId());
model.setName(sysRoleParam.getName().trim());
model.setRemark(sysRoleParam.getRemark());
model.setIsDisable(sysRoleParam.getIsDisable());
model.setId(systemRoleParam.getId());
model.setName(systemRoleParam.getName().trim());
model.setRemark(systemRoleParam.getRemark());
model.setIsDisable(systemRoleParam.getIsDisable());
model.setUpdateTime(System.currentTimeMillis() / 1000);
this.updateById(model);
iSystemRoleMenuService.batchDeleteByRoleId(sysRoleParam.getId());
iSystemRoleMenuService.batchSaveByMenuIds(sysRoleParam.getId(), sysRoleParam.getMenuIds());
iSystemRoleMenuService.cacheRoleMenusByRoleId(sysRoleParam.getId());
iSystemRoleMenuService.batchDeleteByRoleId(systemRoleParam.getId());
iSystemRoleMenuService.batchSaveByMenuIds(systemRoleParam.getId(), systemRoleParam.getMenuIds());
iSystemRoleMenuService.cacheRoleMenusByRoleId(systemRoleParam.getId());
}
/**

View File

@ -0,0 +1,46 @@
package com.hxkj.admin.validate;
import com.hxkj.admin.validate.system.SystemAdminParam;
import com.hxkj.common.validator.annotation.IDMust;
import com.hxkj.common.validator.annotation.IntegerContains;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class AlbumParam implements Serializable {
private static final long serialVersionUID = 1L;
public interface delete{}
public interface rename{}
public interface albumMove{}
public interface cateAdd{}
@IDMust(message = "id参数必传且需大于0", groups = {rename.class, albumMove.class, delete.class})
private Integer id;
@IDMust(message = "id参数必传且需大于0", groups = {albumMove.class})
private Integer cid;
@NotNull(message = "缺少pid参数", groups = {cateAdd.class})
@Min(value = 0, message = "pid参数必须为数字", groups = {cateAdd.class})
private Integer pid;
@NotNull(message = "缺少type参数", groups = {cateAdd.class})
@IntegerContains(values = {10, 20, 30}, message = "type不在合法值内", groups = {cateAdd.class})
private Integer type;
@NotEmpty(message = "名称不能为空", groups = {rename.class})
@Length(min = 1, max = 30, message = "名称不能大于30个字符", groups = {rename.class})
private String name;
}

View File

@ -1,4 +1,4 @@
package com.hxkj.admin.validate;
package com.hxkj.admin.validate.system;
import com.hxkj.common.validator.annotation.IDMust;
import lombok.EqualsAndHashCode;
@ -15,7 +15,7 @@ import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysAdminParam implements Serializable {
public class SystemAdminParam implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -1,4 +1,4 @@
package com.hxkj.admin.validate;
package com.hxkj.admin.validate.system;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -14,7 +14,7 @@ import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysLoginParam implements Serializable {
public class SystemLoginParam implements Serializable {
private static final long serialVersionUID = 1L;

View File

@ -1,4 +1,4 @@
package com.hxkj.admin.validate;
package com.hxkj.admin.validate.system;
import com.hxkj.common.validator.annotation.IDMust;
import com.hxkj.common.validator.annotation.StringContains;
@ -18,7 +18,7 @@ import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysMenuParam implements Serializable {
public class SystemMenuParam implements Serializable {
public interface create{}
public interface update{}

View File

@ -1,4 +1,4 @@
package com.hxkj.admin.validate;
package com.hxkj.admin.validate.system;
import com.hxkj.common.validator.annotation.IDMust;
import lombok.Data;
@ -14,7 +14,7 @@ import java.io.Serializable;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class SysRoleParam implements Serializable {
public class SystemRoleParam implements Serializable {
public interface create{}
public interface update{}

View File

@ -0,0 +1,18 @@
package com.hxkj.admin.vo.album;
import lombok.Data;
import java.io.Serializable;
@Data
public class AlbumCateVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Integer pid;
private String name;
private String createTime;
private String updateTime;
}

View File

@ -0,0 +1,21 @@
package com.hxkj.admin.vo.album;
import lombok.Data;
import java.io.Serializable;
@Data
public class AlbumVo implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id;
private Integer cid;
private String name;
private String uri;
private String ext;
private String size;
private String createTime;
private String updateTime;
}

View File

@ -81,13 +81,21 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.10.0</version>
</dependency>
<!-- gson -->
<!-- Gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.9.0</version>
</dependency>
<!-- 七牛云OSS -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
</dependency>
<!-- 阿里云OSS -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
</dependency>
</dependencies>

View File

@ -0,0 +1,32 @@
package com.hxkj.common.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
/**
* 相册实体
*/
@Data
public class Album implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value="id", type= IdType.AUTO)
private Integer id;
private Integer cid;
private Integer aid;
private Integer uid;
private Integer type;
private String name;
private String uri;
private String ext;
private Long size;
private Integer isDelete;
private Long createTime;
private Long updateTime;
private Long deleteTime;
}

View File

@ -0,0 +1,27 @@
package com.hxkj.common.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.io.Serializable;
/**
* 相册分类实体
*/
@Data
public class AlbumCate implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value="id", type= IdType.AUTO)
private Integer id;
private Integer pid;
private Integer type;
private String name;
private Integer isDelete;
private Long createTime;
private Long updateTime;
private Long deleteTime;
}

View File

@ -23,18 +23,15 @@ import java.util.Objects;
@ControllerAdvice
public class GlobalException {
// /**
// * 处理所有不可知异常
// *
// * @param e 异常
// * @return AjaxResult
// */
// @ResponseStatus(HttpStatus.OK)
// @ExceptionHandler(Throwable.class)
// public AjaxResult handleException(Throwable e) {
// log.error(ThrowableUtil.getStackTrace(e));
// return AjaxResult.failed(HttpEnum.SYSTEM_ERROR.getCode(), HttpEnum.SUCCESS.getMsg());
// }
/**
* 处理所有不可知异常
*/
@ResponseStatus(HttpStatus.OK)
@ExceptionHandler(Throwable.class)
public AjaxResult handleException(Throwable e) {
log.error(e.getMessage());
return AjaxResult.failed(HttpEnum.SYSTEM_ERROR.getCode(), HttpEnum.SYSTEM_ERROR.getMsg());
}
/**
* 拦截表单参数校验FROM

View File

@ -0,0 +1,12 @@
package com.hxkj.common.mapper;
import com.hxkj.common.basics.BaseMapper;
import com.hxkj.common.entity.AlbumCate;
import org.apache.ibatis.annotations.Mapper;
/**
* 相册分类
*/
@Mapper
public interface AlbumCateMapper extends BaseMapper<AlbumCate> {
}

View File

@ -0,0 +1,12 @@
package com.hxkj.common.mapper;
import com.hxkj.common.basics.BaseMapper;
import com.hxkj.common.entity.Album;
import org.apache.ibatis.annotations.Mapper;
/**
* 相册
*/
@Mapper
public interface AlbumMapper extends BaseMapper<Album> {
}

View File

@ -0,0 +1,65 @@
package com.hxkj.common.plugin.storage;
import com.hxkj.common.plugin.storage.engine.Qiniu;
import com.hxkj.common.utils.ConfigUtil;
import com.hxkj.common.utils.TimeUtil;
import org.springframework.web.multipart.MultipartFile;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
public class StorageDriver {
/**
* 当前存储引擎
*/
private final String engine;
/**
* 存储引擎配置
*/
private final Map<String, String> config;
/**
* 构造方法
*/
public StorageDriver() {
this.engine = ConfigUtil.get("storage", "default", "local");
this.config = ConfigUtil.getMap("storage", this.engine);
}
/**
* 根据引擎类型上传文件
*
* @author fzr
* @param multipartFile 文件对象
*/
public void upload(MultipartFile multipartFile) {
String key = this.buildSaveName(multipartFile);
switch (this.engine) {
case "local":
break;
case "qiniu":
Qiniu qiniu = new Qiniu(this.config);
qiniu.upload(multipartFile, key);
break;
}
}
/**
* 生成文件名称
*
* @author fzr
* @param multipartFile 文件对象
* @return String
*/
private String buildSaveName(MultipartFile multipartFile) {
String name = multipartFile.getOriginalFilename();
String ext = Objects.requireNonNull(name).substring(name.lastIndexOf("."));
String date = TimeUtil.timestampToDate(TimeUtil.timestamp(), "Ymd");
return date + "/" + UUID.randomUUID() + ext.toLowerCase();
}
}

View File

@ -0,0 +1,37 @@
package com.hxkj.common.plugin.storage.engine;
import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.PutObjectRequest;
import java.io.ByteArrayInputStream;
public class Aliyun {
public void upload() {
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
String accessKeyId = "LTAI4G9XZP9MKQ2AmeZJGRTE";
String accessKeySecret = "qbA9DoJ41jnmpoKhiZqmU1dfHFcpvN";
String bucketName = "yixiangonline";
String objectName = "exampleobject.txt";
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
try {
String content = "Hello OSS";
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new ByteArrayInputStream(content.getBytes()));
ossClient.putObject(putObjectRequest);
} catch (OSSException oe) {
System.out.println("Error Message:" + oe.getErrorMessage());
} catch (ClientException ce) {
System.out.println("Error Message:" + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}

View File

@ -0,0 +1,50 @@
package com.hxkj.common.plugin.storage.engine;
import com.hxkj.common.exception.OperateException;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.Objects;
import java.util.UUID;
public class Local {
@Resource
HttpServletRequest request;
public void upload() {
MultipartFile multipartFile = ((MultipartRequest) request).getFile("file");
if (multipartFile == null) {
throw new OperateException("请选择要上传的图片");
}
// 文件信息
String origFileName = multipartFile.getOriginalFilename();
String origFileExt = Objects.requireNonNull(origFileName).substring(origFileName.lastIndexOf("."));
long origFileSize = multipartFile.getSize();
String newsFileName = UUID.randomUUID() + origFileExt;
String newsSavePath = "";
// 创建目录
File fileExist = new File(newsSavePath);
if (!fileExist.exists()) {
if (!fileExist.mkdirs()) {
throw new OperateException("创建上传目录失败");
}
}
// 保存文件
try {
File dest = new File(newsSavePath, newsFileName);
multipartFile.transferTo(dest);
} catch (IOException e) {
throw new OperateException("上传文件失败:"+e.getMessage());
}
}
}

View File

@ -0,0 +1,4 @@
package com.hxkj.common.plugin.storage.engine;
public class Qcloud {
}

View File

@ -0,0 +1,67 @@
package com.hxkj.common.plugin.storage.engine;
import com.google.gson.Gson;
import com.hxkj.common.exception.OperateException;
import com.hxkj.common.utils.TimeUtil;
import com.qiniu.common.QiniuException;
import com.qiniu.http.Response;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.Region;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
public class Qiniu {
/**
* 存储配置
*/
private final Map<String, String> config;
/**
* 构造方法
*/
public Qiniu(Map<String, String> config) {
this.config = config;
}
/**
* 鉴权令牌
*
* @author fzr
* @return String
*/
public String upToken() {
String accessKey = this.config.get("access_key");
String secretKey = this.config.get("secret_key");
String bucket = this.config.get("bucket");
Auth auth = Auth.create(accessKey, secretKey);
return auth.uploadToken(bucket);
}
/**
* 上传文件
*
* @author fzr
* @param multipartFile 文件对象
* @param key 保存文件的名称
*/
public void upload(MultipartFile multipartFile, String key) {
Configuration cfg = new Configuration(Region.region2());
UploadManager uploadManager = new UploadManager(cfg);
try {
Response response = uploadManager.put(multipartFile.getBytes(), key, this.upToken());
new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
} catch (IOException ex) {
throw new OperateException(ex.getMessage());
}
}
}

View File

@ -88,7 +88,7 @@ public class ConfigUtil {
* @param name 名称
* @return String
*/
public static Map<String, Object> getMap(String type, String name) {
public static Map<String, String> getMap(String type, String name) {
SystemConfigMapper model = SpringUtil.getBean(SystemConfigMapper.class);
SystemConfig config = model.selectOne(
@ -97,7 +97,7 @@ public class ConfigUtil {
.eq("type", type)
.eq("name", name));
return ToolsUtil.jsonToMap(config.getValue());
return ToolsUtil.jsonToStrMap(config.getValue());
}
/**

View File

@ -103,6 +103,35 @@ public class ToolsUtil {
return stringBuffer.toString();
}
/**
* 转换存储单位: KB MB GB TB
*
* @author fzr
* @return String
*/
public static String toStorageUnit(Long size) {
if (size == null) {
return "0B";
}
if (size < 1024) {
return size + "B";
} else {
size = size / 1024;
}
if (size < 1024) {
return size + "KB";
} else {
size = size / 1024;
}
if (size < 1024) {
size = size * 100;
return (size / 100) + "." + (size % 100) + "MB";
} else {
size = size * 100 / 1024;
return (size / 100) + "." + (size % 100) + "GB";
}
}
/**
* JSON转map
*
@ -115,6 +144,18 @@ public class ToolsUtil {
return JSON.parseObject(json, type);
}
/**
* JSON转map
*
* @author fzr
* @param json 对象
* @return Map
*/
public static Map<String, String> jsonToStrMap(String json){
Type type = new TypeToken<Map<String, String>>() {}.getType();
return JSON.parseObject(json, type);
}
/**
* 列表转字符串
*

View File

@ -28,6 +28,7 @@ public class UrlUtil {
/**
* 转相对路径
*
* @author fzr
* @param url 绝对路径
* @return String
*/

26
pom.xml
View File

@ -26,12 +26,12 @@
<mybatis-plus.version>3.4.3.1</mybatis-plus.version>
<mybatis-plus-join.version>1.2.2</mybatis-plus-join.version>
<pagehelper.version>1.4.0</pagehelper.version>
<shiro-spring.version>1.8.0</shiro-spring.version>
<lombok.version>1.18.22</lombok.version>
<fastJson.version>1.2.78</fastJson.version>
<java-jwt.version>3.18.2</java-jwt.version>
<apache-commons.version>2.10.0</apache-commons.version>
<gson.version>2.9.0</gson.version>
<qiniu-oss.version>7.9.5</qiniu-oss.version>
<aliyun-oss.version>3.10.2</aliyun-oss.version>
</properties>
<!-- 依赖声明 -->
@ -69,19 +69,13 @@
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper.version}</version>
</dependency>
<!-- Shiro鉴权依赖 -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>${shiro-spring.version}</version>
</dependency>
<!-- Lombok依赖 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!-- fastjson -->
<!-- Fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
@ -93,12 +87,24 @@
<artifactId>commons-pool2</artifactId>
<version>${apache-commons.version}</version>
</dependency>
<!-- gson -->
<!-- Gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
</dependency>
<!-- 七牛云OSS -->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>${qiniu-oss.version}</version>
</dependency>
<!-- 阿里云OSS -->
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>${aliyun-oss.version}</version>
</dependency>
</dependencies>
</dependencyManagement>