From 26cdee56a5226f9a9d9012f9516ee077f8df92ff Mon Sep 17 00:00:00 2001 From: zhangmeng <1334717033@qq.com> Date: Mon, 1 Nov 2021 11:24:18 +0800 Subject: [PATCH] =?UTF-8?q?second=202021=E5=B9=B411=E6=9C=881=E6=97=A511:2?= =?UTF-8?q?4:03?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mystyle-cloud-file/pom.xml | 23 ++ .../com/zhangmeng/file/FileApplication.java | 7 + .../file/controller/FileController.java | 23 +- .../com/zhangmeng/file/dao/FileInfoDao.java | 15 + .../zhangmeng/file/service/FileService.java | 8 + .../file/service/impl/FileServiceImpl.java | 11 + .../zhangmeng/file/utils/FastDfsClient.java | 195 ++++++++++ .../src/main/resources/application.yml | 28 +- .../src/main/resources/fastDFS.config | 5 + mystyle-cloud-model/pom.xml | 72 ++++ .../base/baseController/BaseController.java | 31 ++ .../baseController/ResponseController.java | 5 + .../base/baseController/ResultController.java | 59 +++ .../base/baseDao/AbstractBaseMapper.java | 19 + .../base/baseDao/JpaDataAccessObject.java | 9 + .../model/base/baseEntity/BaseEntity.java | 34 ++ .../model/base/baseService/BaseService.java | 70 ++++ .../impl/AbstractBaseServiceImpl.java | 368 ++++++++++++++++++ .../java/com/zhangmeng/model/dto/File.java | 18 + .../com/zhangmeng/model/dto/JpaQueryData.java | 53 +++ .../com/zhangmeng/model/dto/QueryParams.java | 64 +++ .../com/zhangmeng/model/dto/QueryResult.java | 24 ++ .../model/dto/QuerySingleParams.java | 40 ++ .../com/zhangmeng/model/dto/RequestData.java | 9 + .../com/zhangmeng/model/entity/FileInfo.java | 150 +++++++ .../zhangmeng/model/entity/Permission.java | 99 +++++ .../java/com/zhangmeng/model/entity/Role.java | 108 +++++ .../model/entity/RolePermission.java | 26 ++ .../java/com/zhangmeng/model/entity/User.java | 125 ++++++ .../com/zhangmeng/model/entity/UserRole.java | 27 ++ .../model/entity/VerificationCode.java | 93 +++++ .../java/com/zhangmeng/model/vo/Result.java | 117 ++++++ .../com/zhangmeng/model/vo/ResultTree.java | 29 ++ .../com/zhangmeng/model/vo/StatusCode.java | 66 ++++ pom.xml | 40 ++ 35 files changed, 2064 insertions(+), 6 deletions(-) create mode 100644 mystyle-cloud-file/src/main/java/com/zhangmeng/file/dao/FileInfoDao.java create mode 100644 mystyle-cloud-file/src/main/java/com/zhangmeng/file/service/FileService.java create mode 100644 mystyle-cloud-file/src/main/java/com/zhangmeng/file/service/impl/FileServiceImpl.java create mode 100644 mystyle-cloud-file/src/main/java/com/zhangmeng/file/utils/FastDfsClient.java create mode 100644 mystyle-cloud-file/src/main/resources/fastDFS.config create mode 100644 mystyle-cloud-model/pom.xml create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/BaseController.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/ResponseController.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/ResultController.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseDao/AbstractBaseMapper.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseDao/JpaDataAccessObject.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseEntity/BaseEntity.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseService/BaseService.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseService/impl/AbstractBaseServiceImpl.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/File.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/JpaQueryData.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QueryParams.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QueryResult.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QuerySingleParams.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/RequestData.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/FileInfo.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/Permission.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/Role.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/RolePermission.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/User.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/UserRole.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/VerificationCode.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/Result.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/ResultTree.java create mode 100644 mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/StatusCode.java diff --git a/mystyle-cloud-file/pom.xml b/mystyle-cloud-file/pom.xml index b52a4ee..09e2542 100644 --- a/mystyle-cloud-file/pom.xml +++ b/mystyle-cloud-file/pom.xml @@ -10,6 +10,18 @@ 4.0.0 mystyle-cloud-file + + + + org.apache.maven.plugins + maven-compiler-plugin + + 7 + 7 + + + + @@ -41,5 +53,16 @@ org.springframework.cloud spring-cloud-sleuth-zipkin + + + net.oschina.zcx7878 + fastdfs-client-java + + + + com.zhangmeng + mystyle-cloud-model + 1.0-SNAPSHOT + \ No newline at end of file diff --git a/mystyle-cloud-file/src/main/java/com/zhangmeng/file/FileApplication.java b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/FileApplication.java index 2234029..0e04346 100644 --- a/mystyle-cloud-file/src/main/java/com/zhangmeng/file/FileApplication.java +++ b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/FileApplication.java @@ -4,10 +4,17 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; +/** + * @author zhangmeng + * @date 2021年11月1日11:21:28 + * @version 1.0 + */ @SpringBootApplication @EnableDiscoveryClient @EnableFeignClients +@ComponentScan(basePackages = {"com.zhangmeng.model","com.zhangmeng.file"}) public class FileApplication { public static void main(String[] args) { diff --git a/mystyle-cloud-file/src/main/java/com/zhangmeng/file/controller/FileController.java b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/controller/FileController.java index 11955cd..b315fa8 100644 --- a/mystyle-cloud-file/src/main/java/com/zhangmeng/file/controller/FileController.java +++ b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/controller/FileController.java @@ -1,20 +1,35 @@ package com.zhangmeng.file.controller; import com.zhangmeng.file.feign.UserFeignService; +import com.zhangmeng.file.service.FileService; +import com.zhangmeng.model.base.baseController.BaseController; +import com.zhangmeng.model.entity.FileInfo; +import com.zhangmeng.model.vo.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; + +/** + * @author zhangmeng + * @date 2021年11月1日11:21:28 + * @version 1.0 + */ @RestController @RequestMapping("/file") -public class FileController { +public class FileController extends BaseController { @Autowired private UserFeignService userFeignService; - @GetMapping("/name") - public String file_name(String name){ - return this.userFeignService.hi(name); + @Autowired + private FileService fileService; + + @GetMapping("/list") + public Result list(){ + List all = this.fileService.findAll(); + return this.success("查询成功",all); } } diff --git a/mystyle-cloud-file/src/main/java/com/zhangmeng/file/dao/FileInfoDao.java b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/dao/FileInfoDao.java new file mode 100644 index 0000000..d22693e --- /dev/null +++ b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/dao/FileInfoDao.java @@ -0,0 +1,15 @@ +package com.zhangmeng.file.dao; + +import com.zhangmeng.model.base.baseDao.AbstractBaseMapper; +import com.zhangmeng.model.entity.FileInfo; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +/** + * @author zhangmeng + * @version 1.0 + * @date 2021年1月8日09:46:19 + */ +@Mapper +public interface FileInfoDao extends AbstractBaseMapper { +} diff --git a/mystyle-cloud-file/src/main/java/com/zhangmeng/file/service/FileService.java b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/service/FileService.java new file mode 100644 index 0000000..82da6ff --- /dev/null +++ b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/service/FileService.java @@ -0,0 +1,8 @@ +package com.zhangmeng.file.service; + +import com.zhangmeng.model.base.baseService.BaseService; +import com.zhangmeng.model.dto.File; +import com.zhangmeng.model.entity.FileInfo; + +public interface FileService extends BaseService { +} diff --git a/mystyle-cloud-file/src/main/java/com/zhangmeng/file/service/impl/FileServiceImpl.java b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/service/impl/FileServiceImpl.java new file mode 100644 index 0000000..63f0b71 --- /dev/null +++ b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/service/impl/FileServiceImpl.java @@ -0,0 +1,11 @@ +package com.zhangmeng.file.service.impl; + +import com.zhangmeng.file.service.FileService; +import com.zhangmeng.model.base.baseService.impl.AbstractBaseServiceImpl; +import com.zhangmeng.model.dto.File; +import com.zhangmeng.model.entity.FileInfo; +import org.springframework.stereotype.Service; + +@Service +public class FileServiceImpl extends AbstractBaseServiceImpl implements FileService { +} diff --git a/mystyle-cloud-file/src/main/java/com/zhangmeng/file/utils/FastDfsClient.java b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/utils/FastDfsClient.java new file mode 100644 index 0000000..fd117bb --- /dev/null +++ b/mystyle-cloud-file/src/main/java/com/zhangmeng/file/utils/FastDfsClient.java @@ -0,0 +1,195 @@ +package com.zhangmeng.file.utils; + +import org.csource.common.NameValuePair; +import org.csource.fastdfs.*; +import org.springframework.core.io.ClassPathResource; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; + +public class FastDfsClient { + + static { + //从classpath下获取文件对象获取路径 + String path = new ClassPathResource("fastDFS.config").getPath(); + try { + ClientGlobal.init(path); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 图片上传 + * + * @param file + * @return + */ + public static String[] upload(com.zhangmeng.model.dto.File file) { + try { + TrackerClient trackerClient = new TrackerClient(); + TrackerServer trackerServer = trackerClient.getConnection(); + StorageClient storageClient = new StorageClient(trackerServer, null); + //参数1 字节数组 + //参数2 扩展名(不带点) + //参数3 元数据( 文件的大小,文件的作者,文件的创建时间戳) + NameValuePair[] meta_list = new NameValuePair[]{new NameValuePair(file.getAuthor()), new NameValuePair(file.getName())}; + String[] strings = storageClient.upload_file(file.getContent(), file.getExt(), meta_list); + return strings; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * 图片下载 + * + * @param groupName + * @param remoteFileName + * @return + */ + public static InputStream downFile(String groupName, String remoteFileName) { + ByteArrayInputStream byteArrayInputStream = null; + try { + //3.创建trackerclient对象 + TrackerClient trackerClient = new TrackerClient(); + //4.创建trackerserver 对象 + TrackerServer trackerServer = trackerClient.getConnection(); + //5.创建stroageserver 对象 + //6.创建storageclient 对象 + StorageClient storageClient = new StorageClient(trackerServer, null); + //7.根据组名 和 文件名 下载图片 + + //参数1:指定组名 + //参数2 :指定远程的文件名 + byte[] bytes = storageClient.download_file(groupName, remoteFileName); + byteArrayInputStream = new ByteArrayInputStream(bytes); + return byteArrayInputStream; + } catch (Exception e) { + e.printStackTrace(); + } finally { + try { + if (byteArrayInputStream != null) { + byteArrayInputStream.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + return null; + } + + + /** + * 图片删除 + * + * @param groupName + * @param remoteFileName + */ + public static void deleteFile(String groupName, String remoteFileName) { + try { + //3.创建trackerclient对象 + TrackerClient trackerClient = new TrackerClient(); + //4.创建trackerserver 对象 + TrackerServer trackerServer = trackerClient.getConnection(); + //5.创建stroageserver 对象 + //6.创建storageclient 对象 + StorageClient storageClient = new StorageClient(trackerServer, null); + int i = storageClient.delete_file(groupName, remoteFileName); + if (i == 0) { + System.out.println("删除成功"); + } else { + System.out.println("删除失败"); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + //根据组名获取组的信息 + + public static StorageServer getStorages(String groupName) { + try { + TrackerClient trackerClient = new TrackerClient(); + //4.创建trackerserver 对象 + TrackerServer trackerServer = trackerClient.getConnection(); + + //参数1 指定traqckerserver 对象 + //参数2 指定组名 + StorageServer group1 = trackerClient.getStoreStorage(trackerServer, groupName); + return group1; + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } + + //根据文件名和组名获取文件的信息 + + public static FileInfo getFile(String groupName, String remoteFileName) { + try { + TrackerClient trackerClient = new TrackerClient(); + //4.创建trackerserver 对象 + TrackerServer trackerServer = trackerClient.getConnection(); + + StorageClient storageClient = new StorageClient(trackerServer, null); + + //参数1 指定组名 + //参数2 指定文件的路径 + FileInfo fileInfo = storageClient.get_file_info(groupName, remoteFileName); + return fileInfo; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /** + * 根据文件名和组名 获取组信息的数组信息 + * + * @param groupName + * @param remoteFileName + * @return ServerInfo[] + */ + public static ServerInfo[] getServerInfo(String groupName, String remoteFileName) { + try { + //3.创建trackerclient对象 + TrackerClient trackerClient = new TrackerClient(); + //4.创建trackerserver 对象 + TrackerServer trackerServer = trackerClient.getConnection(); + + ServerInfo[] group1s = trackerClient.getFetchStorages(trackerServer, groupName, remoteFileName); + return group1s; + } catch (IOException e) { + e.printStackTrace(); + } + return null; + + } + + + /** + * 获取tracker 的ip和端口的信息 + * + * @return + */ + public static String getTrackerUrl() { + try { + //3.创建trackerclient对象 + TrackerClient trackerClient = new TrackerClient(); + //4.创建trackerserver 对象 + TrackerServer trackerServer = trackerClient.getConnection(); + //tracker 的ip的信息 + String hostString = trackerServer.getInetSocketAddress().getHostString(); + int g_tracker_http_port = ClientGlobal.getG_tracker_http_port(); + return "http://" + hostString + ":" + g_tracker_http_port; + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/mystyle-cloud-file/src/main/resources/application.yml b/mystyle-cloud-file/src/main/resources/application.yml index 1abad38..bbee4e4 100644 --- a/mystyle-cloud-file/src/main/resources/application.yml +++ b/mystyle-cloud-file/src/main/resources/application.yml @@ -1,9 +1,23 @@ server: port: 8763 - spring: application: name: mystyle-cloud-file + datasource: + username: root + password: root + url: jdbc:mysql://127.0.0.1:3306/mystyle-blog?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true + driver-class-name: com.mysql.cj.jdbc.Driver + jpa: + database: mysql + hibernate: + ddl-auto: update + naming: + physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl + show-sql: true + properties: + hibernate: + dialect: org.hibernate.dialect.MySQL5Dialect zipkin: sender: type: web @@ -16,4 +30,14 @@ spring: cloud: nacos: discovery: - server-addr: 127.0.0.1:8848 \ No newline at end of file + server-addr: 127.0.0.1:8848 +mybatis: + type-aliases-package: com.zhangmeng.domain.blog + configuration: + mapUnderscoreToCamelCase: true + default-enum-type-handler: org.apache.ibatis.type.EnumOrdinalTypeHandler +mapper: + style: normal + enum-as-simple-type: true + identity: MYSQL + check-example-entity-class: true \ No newline at end of file diff --git a/mystyle-cloud-file/src/main/resources/fastDFS.config b/mystyle-cloud-file/src/main/resources/fastDFS.config new file mode 100644 index 0000000..0ede43f --- /dev/null +++ b/mystyle-cloud-file/src/main/resources/fastDFS.config @@ -0,0 +1,5 @@ +connect_timeout=60 +network_timeout=60 +charset=UTF-8 +http.tracker_http_port=8081 +tracker_server=192.168.52.165:22122 \ No newline at end of file diff --git a/mystyle-cloud-model/pom.xml b/mystyle-cloud-model/pom.xml new file mode 100644 index 0000000..12b453a --- /dev/null +++ b/mystyle-cloud-model/pom.xml @@ -0,0 +1,72 @@ + + + + mystyle-cloud-parent + com.zhangmeng + 1.0-SNAPSHOT + + 4.0.0 + + mystyle-cloud-model + 实体数据相关 + + + + org.apache.maven.plugins + maven-compiler-plugin + + 6 + 6 + + + + + + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + tk.mybatis + mapper-spring-boot-starter + + + + com.github.pagehelper + pagehelper-spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-data-jdbc + + + + mysql + mysql-connector-java + runtime + + + + org.projectlombok + lombok + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + + org.springframework.boot + spring-boot-starter-web + + + \ No newline at end of file diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/BaseController.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/BaseController.java new file mode 100644 index 0000000..0d927e1 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/BaseController.java @@ -0,0 +1,31 @@ +package com.zhangmeng.model.base.baseController; + +import com.zhangmeng.model.vo.Result; +import com.zhangmeng.model.vo.StatusCode; + +public class BaseController extends ResponseController { + + protected Result success(){ + return new Result(true, StatusCode.OK,"成功"); + } + + protected Result success(String message){ + return new Result(true,StatusCode.OK,message); + } + + protected Result success(String message,Object data){ + return new Result(true,StatusCode.OK,message,data); + } + + protected Result failure() { + return new Result(false,StatusCode.ERROR,"失败"); + } + + protected Result failure(String message) { + return new Result(false,StatusCode.ERROR,message); + } + + protected Result failure(String message,Object data) { + return new Result(false,StatusCode.ERROR,message,data); + } +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/ResponseController.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/ResponseController.java new file mode 100644 index 0000000..40601a4 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/ResponseController.java @@ -0,0 +1,5 @@ +package com.zhangmeng.model.base.baseController; + +public class ResponseController extends ResultController{ + +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/ResultController.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/ResultController.java new file mode 100644 index 0000000..becc277 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseController/ResultController.java @@ -0,0 +1,59 @@ +package com.zhangmeng.model.base.baseController; + +import com.zhangmeng.model.vo.ResultTree; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.util.Map; + +public class ResultController { + + protected HttpServletRequest request; + + protected HttpServletResponse response; + + protected HttpSession session; + + @ModelAttribute + public void setReqAndRes(HttpServletRequest request, HttpServletResponse response) { + + this.request = request; + + this.response = response; + + this.session = request.getSession(); + } + + /** + * 页面跳转 + * */ + protected ModelAndView jumpPage(String path){ + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName(path); + return modelAndView; + } + + /** + * 带参数的页面跳转 + * */ + public ModelAndView jumpPage(String path, Map params){ + ModelAndView modelAndView = new ModelAndView(); + modelAndView.setViewName(path); + modelAndView.addAllObjects(params); + return modelAndView; + } + + /** + * Describe: 返回 Tree 数据 + * Param data + * Return Tree数据 + * */ + protected static ResultTree dataTree(Object data){ + ResultTree resuTree = new ResultTree(); + resuTree.setData(data); + return resuTree; + } +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseDao/AbstractBaseMapper.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseDao/AbstractBaseMapper.java new file mode 100644 index 0000000..d90b706 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseDao/AbstractBaseMapper.java @@ -0,0 +1,19 @@ +package com.zhangmeng.model.base.baseDao; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import tk.mybatis.mapper.additional.insert.InsertListMapper; +import tk.mybatis.mapper.annotation.RegisterMapper; +import tk.mybatis.mapper.common.BaseMapper; +import tk.mybatis.mapper.common.ConditionMapper; +import tk.mybatis.mapper.common.ExampleMapper; +import tk.mybatis.mapper.common.IdsMapper; + +/** + * @param + * @author zhangmeng + * @version 1.0 + * @date 2020年11月13日09:55:03 + */ +@RegisterMapper +public interface AbstractBaseMapper> extends BaseMapper, ConditionMapper, InsertListMapper, IdsMapper, ExampleMapper { +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseDao/JpaDataAccessObject.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseDao/JpaDataAccessObject.java new file mode 100644 index 0000000..66c516d --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseDao/JpaDataAccessObject.java @@ -0,0 +1,9 @@ +package com.zhangmeng.model.base.baseDao; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +//数据访问层 +public interface JpaDataAccessObject > extends JpaRepository, JpaSpecificationExecutor { +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseEntity/BaseEntity.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseEntity/BaseEntity.java new file mode 100644 index 0000000..b0b0bf3 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseEntity/BaseEntity.java @@ -0,0 +1,34 @@ +package com.zhangmeng.model.base.baseEntity; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import lombok.Data; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +/** + * @author zhangmeng + * @version 1.0 + * @date 2020年11月13日09:58:11 + * @param + */ +@Data +@MappedSuperclass +@JsonIgnoreProperties(ignoreUnknown = true, value = {"hibernateLazyInitializer", "handler", "fieldHandler"}) +public class BaseEntity implements Serializable { + + @Id //主键id + @GeneratedValue(strategy= GenerationType.IDENTITY)//主键生成策略 + @Column(name="id")//数据库字段名 + private ID id; + + @Column(name = "addTime",length = 0) + private Date addTime = new Date(); + + @Column(name = "updateTime",length = 0) + private Date updateTime = new Date(); + + @Column(name = "deleteStatus") + private Boolean deleteStatus = false; +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseService/BaseService.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseService/BaseService.java new file mode 100644 index 0000000..71b10a4 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseService/BaseService.java @@ -0,0 +1,70 @@ +package com.zhangmeng.model.base.baseService; + +import com.github.pagehelper.PageInfo; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import com.zhangmeng.model.dto.JpaQueryData; +import com.zhangmeng.model.dto.QueryParams; +import com.zhangmeng.model.dto.QueryResult; +import com.zhangmeng.model.dto.QuerySingleParams; +import com.zhangmeng.model.vo.Result; +import org.springframework.lang.NonNull; +import tk.mybatis.mapper.entity.Condition; + +import java.util.List; +import java.util.Map; + +/** + * @param + * @author zhangmeng + * @version 1.0 + * @date 2020年11月13日09:55:45 + */ +public interface BaseService> { + + public void save(T model);//持久化 + + public void save(List models);//批量持久化 + + public void deleteById(Long id);//通过主鍵刪除 + + public void deleteByIds(String ids);//批量刪除 eg:ids -> “1,2,3,4” + + public void update(T model);//更新 + + public T findById(Long id);//通过ID查找 + + public List findByObj(T t); + + public List findByIds(String ids);//通过多个ID查找//eg:ids -> “1,2,3,4” + + public List findByCondition(Condition condition);//根据条件查找 + + public List findAll();//获取所有 + + public List findAll(QueryParams queryParams); + + public List> query(String sql); + + public List findByCondition(QueryParams queryParams); + + public Integer selectCountByCondition(Condition condition); + + public Integer selectCountEq(String key, Object value); + + public PageInfo findByCondition(QueryParams queryParams, boolean isPageInfo); + + public List findBySingleParams(@NonNull QuerySingleParams querySingleParams); + + public List findByParams(List querySingleParamsList); + + public List findByMapWithEq(Map map); + + public Result findByByConditionWithResult(QueryParams queryParams); + + public QueryResult findByCondition(QueryParams QueryParams, boolean isPageInfo, boolean isQueryResult); + + public T jpa_findById(Long id); + + public List jpa_findByCondition(List jpaQueryDataList); +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseService/impl/AbstractBaseServiceImpl.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseService/impl/AbstractBaseServiceImpl.java new file mode 100644 index 0000000..e4ec9ac --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/base/baseService/impl/AbstractBaseServiceImpl.java @@ -0,0 +1,368 @@ +package com.zhangmeng.model.base.baseService.impl; + +import com.github.pagehelper.PageHelper; +import com.github.pagehelper.PageInfo; +import com.zhangmeng.model.base.baseDao.AbstractBaseMapper; +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import com.zhangmeng.model.base.baseService.BaseService; +import com.zhangmeng.model.dto.JpaQueryData; +import com.zhangmeng.model.dto.QueryParams; +import com.zhangmeng.model.dto.QueryResult; +import com.zhangmeng.model.dto.QuerySingleParams; +import com.zhangmeng.model.vo.Result; +import com.zhangmeng.model.vo.StatusCode; +import lombok.SneakyThrows; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.data.jpa.repository.support.SimpleJpaRepository; +import org.springframework.jdbc.core.JdbcTemplate; +import tk.mybatis.mapper.entity.Condition; +import tk.mybatis.mapper.entity.Example; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import java.lang.reflect.ParameterizedType; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @param + * @author zhangmeng + * @version 1.0 + * @date 2020年11月13日09:56:22 + */ +public abstract class AbstractBaseServiceImpl> implements BaseService { + + @Autowired + private AbstractBaseMapper baseDao; + + @Autowired + private JdbcTemplate jdbcTemplate; + + private final Class modelClass; + + @PersistenceContext + private EntityManager entityManager; + + @SuppressWarnings("unchecked") + public AbstractBaseServiceImpl() { + ParameterizedType pt = (ParameterizedType) this.getClass().getGenericSuperclass(); + modelClass = (Class) pt.getActualTypeArguments()[0]; + } + + @Override + public void save(T model) { + this.baseDao.insert(model); + } + + @Override + public void save(List models) { + this.baseDao.insertList(models); + } + + @Override + public void deleteById(Long id) { + this.baseDao.deleteByPrimaryKey(id); + } + + @Override + public void deleteByIds(String ids) { + this.baseDao.deleteByIds(ids); + } + + @Override + public void update(T model) { + this.baseDao.updateByPrimaryKeySelective(model); + } + + @Override + public T findById(Long id) { + return this.baseDao.selectByPrimaryKey(id); + } + + @Override + public List findByIds(String ids) { + return this.baseDao.selectByIds(ids); + } + + @Override + public List findByCondition(Condition condition) { + return this.baseDao.selectByCondition(condition); + } + + @Override + public List findAll() { + return this.baseDao.selectAll(); + } + + @Override + public List findAll(QueryParams queryParams) { + if (queryParams != null) { + PageHelper.startPage(queryParams.getPageNum(), queryParams.getPageSize(), queryParams.getOrderBy()); + List list = this.baseDao.selectAll(); + PageInfo pageInfo = new PageInfo<>(list); + return pageInfo.getList(); + } + return null; + } + + @Override + public List> query(String sql) { + return this.jdbcTemplate.queryForList(sql); + } + + @Override + public Integer selectCountByCondition(Condition condition) { + return this.baseDao.selectCountByCondition(condition); + } + + @Override + public Integer selectCountEq(String key, Object value) { + Condition condition = new Condition(modelClass); + Example.Criteria criteria = condition.createCriteria(); + criteria.andEqualTo(key, value); + return this.selectCountByCondition(condition); + } + + @Override + @SuppressWarnings("unchecked") + public List findByCondition(QueryParams QueryParams) { + return (List) findByParams(QueryParams, false, false); + } + + /** + * 查询 + * + * @param QueryParams 查询参数 + * @param isPageInfo 是否返回分页对象 + * @return obj + */ + @SuppressWarnings("unchecked") + public PageInfo findByCondition(QueryParams QueryParams, boolean isPageInfo) { + return (PageInfo) findByParams(QueryParams, isPageInfo, false); + } + + @SuppressWarnings("unchecked") + public QueryResult findByCondition(QueryParams QueryParams, boolean isPageInfo, boolean isQueryResult) { + return (QueryResult) findByParams(QueryParams, isPageInfo, isQueryResult); + } + + /** + * 根据单个参数查询 + * + * @return List + */ + public List findBySingleParams(QuerySingleParams querySingleParams) { + Condition condition = new Condition(modelClass); + Example.Criteria criteria = condition.createCriteria(); + if (querySingleParams != null) { + String key = querySingleParams.getKey(); + Object value = querySingleParams.getValue(); + QuerySingleParams.Type type = querySingleParams.getType(); + switch (type) { + case equal: + criteria.andEqualTo(key, value); + break; + case not_equal: + criteria.andNotEqualTo(key, value); + break; + case like: + criteria.andLike(key, "%" + value + "%"); + break; + case not_like: + criteria.andNotLike(key, "%" + value + "%"); + break; + } + } + return this.baseDao.selectByCondition(condition); + } + + /** + * 根据参数查询 + * + * @return List + */ + public List findByParams(List querySingleParamsList) { + Condition condition = new Condition(modelClass); + Example.Criteria criteria = condition.createCriteria(); + if (querySingleParamsList.size() > 0) { + for (QuerySingleParams querySingleParams : querySingleParamsList) { + if (querySingleParams != null) { + String key = querySingleParams.getKey(); + Object value = querySingleParams.getValue(); + QuerySingleParams.Type type = querySingleParams.getType(); + switch (type) { + case equal: + criteria.andEqualTo(key, value); + break; + case not_equal: + criteria.andNotEqualTo(key, value); + break; + case like: + criteria.andLike(key, "%" + value + "%"); + break; + case not_like: + criteria.andNotLike(key, "%" + value + "%"); + break; + } + } + } + } + return this.baseDao.selectByCondition(condition); + } + + public List findByMapWithEq(Map map) { + Condition condition = new Condition(modelClass); + Example.Criteria criteria = condition.createCriteria(); + criteria.andEqualTo(map); + return this.baseDao.selectByCondition(condition); + } + + @Override + public List findByObj(T t) { + return this.baseDao.select(t); + } + + @Override + public Result findByByConditionWithResult(QueryParams queryParams) { + PageInfo pageInfo = this.findByCondition(queryParams, true); + return new Result<>(true, StatusCode.OK, null, pageInfo.getTotal(), pageInfo.getList()); + } + + private Object findByParams(QueryParams QueryParams, boolean isPageInfo, boolean isQueryResult) { + PageInfo pageInfo = null; + + if (QueryParams.getPageNum() == null) { + QueryParams.setPageNum(1); + } + + if (QueryParams.getPageSize() == null) { + QueryParams.setPageSize(10); + } + if (isNotNull(QueryParams.getOrderBy())) { + pageInfo = pageHelper(QueryParams.getPageNum(), QueryParams.getPageSize(), QueryParams.getOrderBy(), QueryParams.getCondition()); + } else { + pageInfo = pageHelper(QueryParams.getPageNum(), QueryParams.getPageSize(), QueryParams.getCondition()); + } + if (isQueryResult) { + return page_params_response(pageInfo); + } + if (isPageInfo) { + return pageInfo; + } + return pageInfo.getList(); + } + + /** + * @param pageNum 当前页 + * @param pageSize 每页记录数 + * @param condition 查询条件 + * @return object + */ + private PageInfo pageHelper(Integer pageNum, Integer pageSize, Condition condition) { + PageHelper.startPage(pageNum, pageSize); + List ts = this.baseDao.selectByCondition(condition); + return new PageInfo<>(ts); + } + + /** + * @param pageNum 当前页 + * @param pageSize 每页记录数 + * @param orderBy 排序 + * @param condition 查询条件 + * @return object + */ + private PageInfo pageHelper(Integer pageNum, Integer pageSize, String orderBy, Condition condition) { + PageHelper.startPage(pageNum, pageSize, orderBy); + List ts = this.baseDao.selectByCondition(condition); + return new PageInfo<>(ts); + } + + public T jpa_findById(Long id) { + SimpleJpaRepository jpaRepository = new SimpleJpaRepository<>(modelClass, entityManager); + return jpaRepository.getOne(id); + } + + public List jpa_findByCondition(List jpaQueryDataList) { + SimpleJpaRepository jpaRepository = new SimpleJpaRepository<>(modelClass, entityManager); + Specification spec = spec(jpaQueryDataList); + return jpaRepository.findAll(spec); + } + + private Specification spec(List jpaQueryDataList) { + + return new Specification() { + + /** + * @param root 对查询对象属性的封装 + * @param criteriaQuery 封装了我们要执行的查询中的各个部分的信息,select from order + * @param criteriaBuilder 查询条件的构造器 + * @return Predicate + */ + @SneakyThrows + @Override + public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder criteriaBuilder) { + + List list = new ArrayList<>(); + if (jpaQueryDataList.size() > 0) { + for (JpaQueryData jpaQueryData : jpaQueryDataList) { + String key = jpaQueryData.getKey(); + Object value = jpaQueryData.getValue(); + JpaQueryData.Condition condition = jpaQueryData.getCondition(); + switch (condition) { + case like: + list.add(criteriaBuilder.like(root.get(key), "%" + value + "%")); + break; + case equal: + list.add(criteriaBuilder.equal(root.get(key), value)); + break; + case between: + JpaQueryData.Between between = jpaQueryData.getBetween(); + Object var1 = between.getVar1(); + Object var2 = between.getVar2(); + + if (var1 instanceof String) { + list.add(criteriaBuilder.between(root.get(key), var1.toString(), var2.toString())); + } else if (var1 instanceof Date) { + list.add(criteriaBuilder.between(root.get(key), (Date) var1, (Date) var2)); + } + break; + } + } + Predicate[] arr = new Predicate[list.size()]; + return criteriaBuilder.and(list.toArray(arr)); + } + return null; + } + }; + } + + public static boolean isNotNull(Object object) { + return object != null && !"".equals(object); + } + + public static QueryResult page_params_response(PageInfo pageInfo) { + QueryResult queryResult = new QueryResult<>(); + queryResult.setPageNum(pageInfo.getPageNum()); + queryResult.setPageSize(pageInfo.getPageSize()); + if (pageInfo.getPrePage() == 0 ){ + queryResult.setPrevPage(1); + }else { + queryResult.setPrevPage(pageInfo.getPrePage()); + } + if (pageInfo.getNextPage() == 0 ){ + queryResult.setNextPage(1); + }else { + queryResult.setNextPage(pageInfo.getNextPage()); + } + queryResult.setList(pageInfo.getList()); + queryResult.setCount(pageInfo.getTotal()); + return queryResult; + } +} \ No newline at end of file diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/File.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/File.java new file mode 100644 index 0000000..1942f40 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/File.java @@ -0,0 +1,18 @@ +package com.zhangmeng.model.dto; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class File implements Serializable { + + private String author; + + private String name; + + private byte[] content; + + private String ext; + +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/JpaQueryData.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/JpaQueryData.java new file mode 100644 index 0000000..62ed8e6 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/JpaQueryData.java @@ -0,0 +1,53 @@ +package com.zhangmeng.model.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * jpa 查询条件封装 + * + * @author zhangmeng + * @version 1.0 + * @date 2021年6月17日14:33:52 + */ +@Data +public class JpaQueryData implements Serializable { + + public enum Condition { + between, + like, + equal; + } + + private String key; //字段 + + private Object value; //值 + + private Condition condition; //条件 + + private Between between; + + public static class Between { + + private Object var1; + + private Object var2; + + public Object getVar1() { + return var1; + } + + public void setVar1(Object var1) { + this.var1 = var1; + } + + public Object getVar2() { + return var2; + } + + public void setVar2(Object var2) { + this.var2 = var2; + } + } +} \ No newline at end of file diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QueryParams.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QueryParams.java new file mode 100644 index 0000000..cc8f2b3 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QueryParams.java @@ -0,0 +1,64 @@ +package com.zhangmeng.model.dto; + +import lombok.Data; +import tk.mybatis.mapper.entity.Condition; + +import java.io.Serializable; + +@Data +public class QueryParams implements Serializable { + + private Integer pageNum; + + private Integer pageSize; + + private Condition condition; + + private String orderBy; + + public QueryParams(){ + + } + + /** + * + * @param pageNum 当前页 + * @param pageSize 每页记录数 + * @param orderBy 排序 + */ + public QueryParams(Integer pageNum, Integer pageSize, String orderBy) { + this.pageNum = pageNum; + this.pageSize = pageSize; + this.orderBy = orderBy; + } + + public QueryParams(Condition condition) { + this.condition = condition; + } + + /** + * + * @param pageNum 当前页 + * @param pageSize 每页记录数 + * @param condition 查询条件 + */ + public QueryParams(Integer pageNum, Integer pageSize, Condition condition) { + this.pageNum = pageNum; + this.pageSize = pageSize; + this.condition = condition; + } + + /** + * + * @param pageNum 当前页 + * @param pageSize 每页记录数 + * @param condition 查询条件 + * @param orderBy 排序 + */ + public QueryParams(Integer pageNum, Integer pageSize, Condition condition, String orderBy) { + this.pageNum = pageNum; + this.pageSize = pageSize; + this.condition = condition; + this.orderBy = orderBy; + } +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QueryResult.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QueryResult.java new file mode 100644 index 0000000..f587959 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QueryResult.java @@ -0,0 +1,24 @@ +package com.zhangmeng.model.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; + +@Data +public class QueryResult implements Serializable { + + private Integer pageNum; + + private Integer pageSize; + + private Integer prevPage; + + private Integer nextPage; + + private List list; + + private Long count; + + private Object extend;//扩展参数 +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QuerySingleParams.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QuerySingleParams.java new file mode 100644 index 0000000..b30dc28 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/QuerySingleParams.java @@ -0,0 +1,40 @@ +package com.zhangmeng.model.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 单个查询参数 + */ +@Data +public class QuerySingleParams implements Serializable { + + public enum Type{ + equal, + not_equal, + not_like, + like; + } + + private String key; + + private Object value; + + private Type type; + + private String orderBy; + + public QuerySingleParams(String key, Object value, Type type) { + this.key = key; + this.value = value; + this.type = type; + } + + public QuerySingleParams(String key, Object value, Type type, String orderBy) { + this.key = key; + this.value = value; + this.type = type; + this.orderBy = orderBy; + } +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/RequestData.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/RequestData.java new file mode 100644 index 0000000..61acfd6 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/dto/RequestData.java @@ -0,0 +1,9 @@ +package com.zhangmeng.model.dto; + +/** + * @author 转身的背影在心底里沉沦 + * @version 1.0 + * @date 2021/9/8 22:23 + */ +public class RequestData { +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/FileInfo.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/FileInfo.java new file mode 100644 index 0000000..326455b --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/FileInfo.java @@ -0,0 +1,150 @@ +package com.zhangmeng.model.entity; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * @author zhengmeng + * @version 1.0 + * @date 2021年1月7日17:44:40 + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = "file_info") +public class FileInfo extends BaseEntity { + + /** + * 存储类型 + */ + + public enum StorageType{ + LocalStorage("本地"), + FastDFS("fastDFS"); + + /** + * 描述 + */ + private String description; + + private StorageType(String description) { + this.description = description; + } + + public String getDesc() { + return description; + } + + public void setDesc(String description) { + this.description = description; + } + } + + /** + * 上传的类型 + */ + public enum UploadType { + + images("图片"), + video("视频"), + audio("视频"); + + /** + * 描述 + */ + private String description; + + private UploadType(String description) { + this.description = description; + } + + public String getDesc() { + return description; + } + + public void setDesc(String description) { + this.description = description; + } + } + + /** + * 文件的格式 + */ + public enum FileType { + jpeg("图片"), + jpg("图片"), + png("图片"), + bmp("图片"), + gif("图片"), + svg("图片"), + mp4("视频"), + avi("视频"), + flv("视频"); + /** + * 描述 + */ + private String description; + + private FileType(String description) { + this.description = description; + } + + public String getDesc() { + return description; + } + + public void setDesc(String description) { + this.description = description; + } + } + + private UploadType uploadType;//上传类型 + + private StorageType storageType; + + private String path;//上传的路径 + + private String fullPath;//上传的真实全路径 + + private Integer imageWidth;//上传图片的宽度 + + private Integer imageHeight;//上传图片的高度 + + private String videoImages;//视频的封面 + + private Integer videoImagesWidth;//视频封面的宽 + + private Integer videoImagesHeight;//视频封面的高 + + private Long duration;//时长 + + private String fileTypeString;//文件格式字符传 + + private FileType fileType; + + private Long size;//文件的大小 + + private String fileSize;//文件大小 + + private String md5;//md5 + + private String originalFileName; + + private String name; + + private String ext;//文件扩展名 + + private String author;//文件创建作者 + + private Long user_id; + + private Long image_info_expand_id; +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/Permission.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/Permission.java new file mode 100644 index 0000000..1ac9498 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/Permission.java @@ -0,0 +1,99 @@ +package com.zhangmeng.model.entity; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Table; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +/** + * @author zhengmeng + * @version 1.0 + * @date 2021年1月7日11:38:42 + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = "permission") +public class Permission extends BaseEntity { + + public enum Status{ + show("显示"), + hidden("隐藏"); + private String description;//描述 + + Status(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + } + + + public enum Type{ + CATALOG("目录"), + MENU("菜单"), + BUTTON("按钮"); + private String description;//描述 + + Type(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public static List> valueListMap(){ + Type[] values = Type.values(); + List> list = new ArrayList<>(); + for (Type value : values) { + Map map = new HashMap<>(); + String description = value.getDescription(); + map.put("description",description); + map.put("value",value); + list.add(map); + } + return list; + } + + } + + private String title; + + private Type type; + + private String href; + + private String openType; + + private Long parent_id; + + private String icon; + + private String code; + + private String checkArr = "0"; + + private Integer sort; +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/Role.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/Role.java new file mode 100644 index 0000000..8e0a518 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/Role.java @@ -0,0 +1,108 @@ +package com.zhangmeng.model.entity; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Table; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author zhengmeng + * @version 1.0 + * @date 2021年1月7日17:44:40 + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = "role") +public class Role extends BaseEntity { + + public enum Type { + + Super_Administrator("超级管理员") ,//超级管理员 + Administrator("管理员"),//管理员 + User("用户");//用户 + + private String description;//描述 + + Type(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public static List> enumListMap(){ + Type[] values = Type.values(); + List> list = new ArrayList<>(); + for (Type value : values) { + Map map = new HashMap<>(); + String description = value.getDescription(); + map.put("description",description); + map.put("value",value); + list.add(map); + } + return list; + } + } + + public enum Status { + + Enable("开启") , + DisEnable("关闭"); + + private String description;//描述 + + Status(String description) { + this.description = description; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public static List> enumListMap(){ + Status[] values = Status.values(); + List> list = new ArrayList<>(); + for (Status value : values) { + Map map = new HashMap<>(); + String description = value.getDescription(); + map.put("description",description); + map.put("value",value); + list.add(map); + } + return list; + } + } + + private String roleName; + + private String roleCode; + + private Status status; + + private String description; + + private Type type; + + private Long createUserId; + +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/RolePermission.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/RolePermission.java new file mode 100644 index 0000000..21032d7 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/RolePermission.java @@ -0,0 +1,26 @@ +package com.zhangmeng.model.entity; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * @author zhengmeng + * @version 1.0 + * @date 2021年1月7日11:38:42 + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = "role_permission") +public class RolePermission extends BaseEntity { + private Long role_id; + private Long permission_id; +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/User.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/User.java new file mode 100644 index 0000000..6640f7b --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/User.java @@ -0,0 +1,125 @@ +package com.zhangmeng.model.entity; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Table; +import java.util.*; + +/** + * @author zhengmeng + * @version 1.0 + * @date 2021年1月7日11:38:42 + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = "user") +public class User extends BaseEntity { + + public enum Status { + DISABLED("已停用"), + VALID("正常"), + LOCKED("锁定"); + + Status(String description) { + this.description = description; + } + + private String description;//描述 + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public static List> enumListMap(){ + Status[] values = Status.values(); + List> list = new ArrayList<>(); + for (Status value : values) { + Map map = new HashMap<>(); + String description = value.getDescription(); + map.put("description",description); + map.put("value",value); + list.add(map); + } + return list; + } + } + + + public enum Gender { + male("男"), + female("女"); + + Gender(String description) { + this.description = description; + } + + private String description;//描述 + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public static List> enumListMap(){ + Gender[] values = Gender.values(); + List> list = new ArrayList<>(); + for (Gender value : values) { + Map map = new HashMap<>(); + String description = value.getDescription(); + map.put("description",description); + map.put("value",value); + list.add(map); + } + return list; + } + } + + private String username; + + private String password; + + private Status status; + + @Column(columnDefinition = "longtext") + private String sign; + + private String avatar; + + private String email; + + private String name;//姓名 + + private String nickname;//昵称 + + private String profession;//职业 + + private String qq; + + private String telephone; + + private Date birthday; + + private Gender gender;//性别 + + private String remarks;//备注 + + private Role.Type roleType;//角色类型 + + private Long photo_id; +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/UserRole.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/UserRole.java new file mode 100644 index 0000000..bfe01e0 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/UserRole.java @@ -0,0 +1,27 @@ +package com.zhangmeng.model.entity; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * @author zhengmeng + * @version 1.0 + * @date 2021年1月7日11:38:42 + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = "user_role") +public class UserRole extends BaseEntity { + + private Long user_id; + private Long role_id; +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/VerificationCode.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/VerificationCode.java new file mode 100644 index 0000000..3ec893f --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/entity/VerificationCode.java @@ -0,0 +1,93 @@ +package com.zhangmeng.model.entity; + +import com.zhangmeng.model.base.baseEntity.BaseEntity; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Table; + +/** + * 验证码 + * + * @author zhangmeng + * @version 1.0 + * @date 2021/4/1 21:29 + */ +@NoArgsConstructor +@Data +@AllArgsConstructor +@Entity +@EqualsAndHashCode(callSuper = false) +@Table(name = "verification_code") +public class VerificationCode extends BaseEntity { + + /** + * 类型 + */ + public enum Type{ + /** + * 手机 + */ + mobile("手机"), + + /** + * 网页 + */ + pc("web"); + + Type(String description) { + this.description = description; + } + + //描述 + private String description; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + } + + /** + * 状态 + */ + public enum Status{ + /** + * 登录 + */ + login("登录"), + + /** + * 注册 + */ + register("注册"); + + Status(String description) { + this.description = description; + } + + private String description; + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + } + + private Type type; + + private Status status; + + private String code; + + private String telephone; +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/Result.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/Result.java new file mode 100644 index 0000000..7182092 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/Result.java @@ -0,0 +1,117 @@ +package com.zhangmeng.model.vo; + +import java.io.Serializable; + +/** + * @author zhangmeng + * @version 1.0 + * @date 2020年11月13日09:59:13 + * + */ +public class Result implements Serializable { + + private static final long serialVersionUID = -212536912267261005L; + + /** + * 是否成功 + */ + private boolean flag; + + /** + * 返回码 + */ + private Integer code; + + /** + * 返回消息 + */ + private String message; + + private long count; + + /** + * 返回数据 + */ + private T data; + + public static Result error(String message) { + return new Result(false,StatusCode.ERROR,message); + } + + public long getCount() { + return count; + } + + public void setCount(long count) { + this.count = count; + } + + + + public Result() { + } + + public Result(boolean flag, Integer code) { + this.flag = flag; + this.code = code; + } + + public Result(boolean flag, Integer code, String message) { + this.flag = flag; + this.code = code; + this.message = message; + } + + public Result(Integer code, String message, Object data) { + this.code = code; + this.message = message; + this.data = (T)data; + } + + public Result(boolean flag, Integer code, String message, Object data) { + this.flag = flag; + this.code = code; + this.message = message; + this.data = (T) data; + } + + public Result(boolean flag, Integer code, String message, long count, Object data){ + this.flag = flag; + this.code = code; + this.message = message; + this.data = (T)data; + this.count = count; + } + + public boolean isFlag() { + return flag; + } + + public void setFlag(boolean flag) { + this.flag = flag; + } + + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public T getData() { + return data; + } + + public void setData(Object data) { + this.data = (T)data; + } +} diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/ResultTree.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/ResultTree.java new file mode 100644 index 0000000..3e11393 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/ResultTree.java @@ -0,0 +1,29 @@ +package com.zhangmeng.model.vo; + +import lombok.Data; + +@Data +public class ResultTree { + + /** + * 状态信息 + * */ + private Status status = new Status(); + + /** + * 返回数据 + * */ + private Object data; + + /** + * 所需内部类 + * */ + @Data + public static class Status{ + + private Integer code = 200; + + private String message = "默认"; + } + +} \ No newline at end of file diff --git a/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/StatusCode.java b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/StatusCode.java new file mode 100644 index 0000000..94a6f76 --- /dev/null +++ b/mystyle-cloud-model/src/main/java/com/zhangmeng/model/vo/StatusCode.java @@ -0,0 +1,66 @@ +package com.zhangmeng.model.vo; + +import java.io.Serializable; + +/** + * @author zhangmeng + * @version 1.0 + * @date 2020年11月13日09:59:37 + */ +public class StatusCode implements Serializable { + /** + * 成功 + */ + public static final int OK = 2001; + + /** + * 失败 + */ + public static final int ERROR = 1001; + + /** + * 文件上传成功 + */ + public static final int FILE_UPLOAD_SUCCESS = 3001; + + /** + * 文件上传失败 + */ + public static final int FILE_UPLOAD_ERROR = 3002; + + /** + * 文件已经存在,秒传 exist + */ + public static final int FILE_UPLOAD_EXIST = 3003; + + /** + * 文件上传注册 register + */ + public static final int FILE_UPLOAD_REGISTER = 3004; + + /** + * 请求的数据格式不符! + */ + public static final int BODY_NOT_MATCH = 4000; + + /** + * 请求的数字签名不匹配! + */ + public static final int SIGNATURE_NOT_MATCH = 4001; + + /** + * 未找到该资源 + */ + public static final int NOT_FOUND = 4004; + + /** + * 服务器内部错误! + */ + public static final int INTERNAL_SERVER_ERROR= 5000; + + /** + * 服务器正忙,请稍后再试! + */ + public static final int SERVER_BUSY = 5003; + +} diff --git a/pom.xml b/pom.xml index 70c8463..017bf21 100644 --- a/pom.xml +++ b/pom.xml @@ -8,10 +8,23 @@ mystyle-cloud-parent pom 1.0-SNAPSHOT + + + + org.apache.maven.plugins + maven-compiler-plugin + + 7 + 7 + + + + mystyle-cloud-user mystyle-cloud-file mystyle-cloud-gateway + mystyle-cloud-model @@ -19,6 +32,10 @@ 2.4.4 2020.0.2 2020.0.RC1 + 2.1.5 + 1.3.0 + 1.27.0.0 + 2.9.7 @@ -47,6 +64,29 @@ pom import + + + tk.mybatis + mapper-spring-boot-starter + ${tk.mapper.version} + + + + com.github.pagehelper + pagehelper-spring-boot-starter + ${pagehelper.version} + + + net.oschina.zcx7878 + fastdfs-client-java + ${fastdfs-client-java.version} + + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + ${jackson.version} + \ No newline at end of file