From 0a794de2bbb48ebb598061b447895386c140bd9e Mon Sep 17 00:00:00 2001 From: wxy <14293288+zysysys@user.noreply.gitee.com> Date: Fri, 24 May 2024 14:03:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/docker-compose.yml | 140 ++++++++++++++++++ docker/mysql/dockerfile | 7 + docker/nacos/dockerfile | 7 + docker/nginx/dockerfile | 15 ++ docker/redis/dockerfile | 13 ++ docker/ruoyi/auth/dockerfile | 15 ++ docker/ruoyi/gateway/dockerfile | 15 ++ docker/ruoyi/modules/file/dockerfile | 15 ++ docker/ruoyi/modules/gen/dockerfile | 15 ++ docker/ruoyi/modules/job/dockerfile | 15 ++ .../jing/common/security/utils/DictUtils.java | 75 ++++++++++ .../src/assets/icons/svg/documentation.svg | 1 + jing-ui/src/utils/dict/DictMeta.js | 38 +++++ jing-ui/src/utils/dict/DictOptions.js | 51 +++++++ 14 files changed, 422 insertions(+) create mode 100644 docker/docker-compose.yml create mode 100644 docker/mysql/dockerfile create mode 100644 docker/nacos/dockerfile create mode 100644 docker/nginx/dockerfile create mode 100644 docker/redis/dockerfile create mode 100644 docker/ruoyi/auth/dockerfile create mode 100644 docker/ruoyi/gateway/dockerfile create mode 100644 docker/ruoyi/modules/file/dockerfile create mode 100644 docker/ruoyi/modules/gen/dockerfile create mode 100644 docker/ruoyi/modules/job/dockerfile create mode 100644 jing-common/jing-common-security/src/main/java/com/jing/common/security/utils/DictUtils.java create mode 100644 jing-ui/src/assets/icons/svg/documentation.svg create mode 100644 jing-ui/src/utils/dict/DictMeta.js create mode 100644 jing-ui/src/utils/dict/DictOptions.js diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml new file mode 100644 index 0000000..cf3e139 --- /dev/null +++ b/docker/docker-compose.yml @@ -0,0 +1,140 @@ +version : '3.8' +services: + jing-nacos: + container_name: jing-nacos + image: nacos/nacos-server + build: + context: ./nacos + environment: + - MODE=standalone + volumes: + - ./nacos/logs/:/home/nacos/logs + - ./nacos/conf/application.properties:/home/nacos/conf/application.properties + ports: + - "8848:8848" + - "9848:9848" + - "9849:9849" + depends_on: + - jing-mysql + jing-mysql: + container_name: jing-mysql + image: mysql:5.7 + build: + context: ./mysql + ports: + - "3306:3306" + volumes: + - ./mysql/conf:/etc/mysql/conf.d + - ./mysql/logs:/logs + - ./mysql/data:/var/lib/mysql + command: [ + 'mysqld', + '--innodb-buffer-pool-size=80M', + '--character-set-server=utf8mb4', + '--collation-server=utf8mb4_unicode_ci', + '--default-time-zone=+8:00', + '--lower-case-table-names=1' + ] + environment: + MYSQL_DATABASE: 'ry-cloud' + MYSQL_ROOT_PASSWORD: password + jing-redis: + container_name: jing-redis + image: redis + build: + context: ./redis + ports: + - "6379:6379" + volumes: + - ./redis/conf/redis.conf:/home/jing/redis/redis.conf + - ./redis/data:/data + command: redis-server /home/jing/redis/redis.conf + jing-nginx: + container_name: jing-nginx + image: nginx + build: + context: ./nginx + ports: + - "80:80" + volumes: + - ./nginx/html/dist:/home/jing/projects/jing-ui + - ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/logs:/var/log/nginx + - ./nginx/conf.d:/etc/nginx/conf.d + depends_on: + - jing-gateway + links: + - jing-gateway + jing-gateway: + container_name: jing-gateway + build: + context: ./jing/gateway + dockerfile: dockerfile + ports: + - "8080:8080" + depends_on: + - jing-redis + links: + - jing-redis + jing-auth: + container_name: jing-auth + build: + context: ./jing/auth + dockerfile: dockerfile + ports: + - "9200:9200" + depends_on: + - jing-redis + links: + - jing-redis + jing-modules-system: + container_name: jing-modules-system + build: + context: ./jing/modules/system + dockerfile: dockerfile + ports: + - "9201:9201" + depends_on: + - jing-redis + - jing-mysql + links: + - jing-redis + - jing-mysql + jing-modules-gen: + container_name: jing-modules-gen + build: + context: ./jing/modules/gen + dockerfile: dockerfile + ports: + - "9202:9202" + depends_on: + - jing-mysql + links: + - jing-mysql + jing-modules-job: + container_name: jing-modules-job + build: + context: ./jing/modules/job + dockerfile: dockerfile + ports: + - "9203:9203" + depends_on: + - jing-mysql + links: + - jing-mysql + jing-modules-file: + container_name: jing-modules-file + build: + context: ./jing/modules/file + dockerfile: dockerfile + ports: + - "9300:9300" + volumes: + - ./jing/uploadPath:/home/jing/uploadPath + jing-visual-monitor: + container_name: jing-visual-monitor + build: + context: ./jing/visual/monitor + dockerfile: dockerfile + ports: + - "9100:9100" diff --git a/docker/mysql/dockerfile b/docker/mysql/dockerfile new file mode 100644 index 0000000..cc006f4 --- /dev/null +++ b/docker/mysql/dockerfile @@ -0,0 +1,7 @@ +# 基础镜像 +FROM mysql:5.7 +# author +MAINTAINER ruoyi + +# 执行sql脚本 +ADD ./db/*.sql /docker-entrypoint-initdb.d/ diff --git a/docker/nacos/dockerfile b/docker/nacos/dockerfile new file mode 100644 index 0000000..b74762c --- /dev/null +++ b/docker/nacos/dockerfile @@ -0,0 +1,7 @@ +# 基础镜像 +FROM nacos/nacos-server +# author +MAINTAINER ruoyi + +# 复制conf文件到路径 +COPY ./conf/application.properties /home/nacos/conf/application.properties diff --git a/docker/nginx/dockerfile b/docker/nginx/dockerfile new file mode 100644 index 0000000..258e417 --- /dev/null +++ b/docker/nginx/dockerfile @@ -0,0 +1,15 @@ +# 基础镜像 +FROM nginx +# author +MAINTAINER ruoyi + +# 挂载目录 +VOLUME /home/ruoyi/projects/jing-ui +# 创建目录 +RUN mkdir -p /home/ruoyi/projects/jing-ui +# 指定路径 +WORKDIR /home/ruoyi/projects/jing-ui +# 复制conf文件到路径 +COPY ./conf/nginx.conf /etc/nginx/nginx.conf +# 复制html文件到路径 +COPY ./html/dist /home/ruoyi/projects/jing-ui diff --git a/docker/redis/dockerfile b/docker/redis/dockerfile new file mode 100644 index 0000000..05c2bc4 --- /dev/null +++ b/docker/redis/dockerfile @@ -0,0 +1,13 @@ +# 基础镜像 +FROM redis +# author +MAINTAINER ruoyi + +# 挂载目录 +VOLUME /home/ruoyi/redis +# 创建目录 +RUN mkdir -p /home/ruoyi/redis +# 指定路径 +WORKDIR /home/ruoyi/redis +# 复制conf文件到路径 +COPY ./conf/redis.conf /home/ruoyi/redis/redis.conf diff --git a/docker/ruoyi/auth/dockerfile b/docker/ruoyi/auth/dockerfile new file mode 100644 index 0000000..b7931cd --- /dev/null +++ b/docker/ruoyi/auth/dockerfile @@ -0,0 +1,15 @@ +# 基础镜像 +FROM openjdk:8-jre +# author +MAINTAINER ruoyi + +# 挂载目录 +VOLUME /home/ruoyi +# 创建目录 +RUN mkdir -p /home/ruoyi +# 指定路径 +WORKDIR /home/ruoyi +# 复制jar文件到路径 +COPY ./jar/jing-auth.jar /home/ruoyi/jing-auth.jar +# 启动认证服务 +ENTRYPOINT ["java","-jar","jing-auth.jar"] \ No newline at end of file diff --git a/docker/ruoyi/gateway/dockerfile b/docker/ruoyi/gateway/dockerfile new file mode 100644 index 0000000..6546943 --- /dev/null +++ b/docker/ruoyi/gateway/dockerfile @@ -0,0 +1,15 @@ +# 基础镜像 +FROM openjdk:8-jre +# author +MAINTAINER ruoyi + +# 挂载目录 +VOLUME /home/ruoyi +# 创建目录 +RUN mkdir -p /home/ruoyi +# 指定路径 +WORKDIR /home/ruoyi +# 复制jar文件到路径 +COPY ./jar/jing-gateway.jar /home/ruoyi/jing-gateway.jar +# 启动网关服务 +ENTRYPOINT ["java","-jar","jing-gateway.jar"] \ No newline at end of file diff --git a/docker/ruoyi/modules/file/dockerfile b/docker/ruoyi/modules/file/dockerfile new file mode 100644 index 0000000..7294055 --- /dev/null +++ b/docker/ruoyi/modules/file/dockerfile @@ -0,0 +1,15 @@ +# 基础镜像 +FROM openjdk:8-jre +# author +MAINTAINER ruoyi + +# 挂载目录 +VOLUME /home/ruoyi +# 创建目录 +RUN mkdir -p /home/ruoyi +# 指定路径 +WORKDIR /home/ruoyi +# 复制jar文件到路径 +COPY ./jar/jing-modules-file.jar /home/ruoyi/jing-modules-file.jar +# 启动文件服务 +ENTRYPOINT ["java","-jar","jing-modules-file.jar"] \ No newline at end of file diff --git a/docker/ruoyi/modules/gen/dockerfile b/docker/ruoyi/modules/gen/dockerfile new file mode 100644 index 0000000..acc3d64 --- /dev/null +++ b/docker/ruoyi/modules/gen/dockerfile @@ -0,0 +1,15 @@ +# 基础镜像 +FROM openjdk:8-jre +# author +MAINTAINER ruoyi + +# 挂载目录 +VOLUME /home/ruoyi +# 创建目录 +RUN mkdir -p /home/ruoyi +# 指定路径 +WORKDIR /home/ruoyi +# 复制jar文件到路径 +COPY ./jar/jing-modules-gen.jar /home/ruoyi/jing-modules-gen.jar +# 启动代码生成服务 +ENTRYPOINT ["java","-jar","jing-modules-gen.jar"] \ No newline at end of file diff --git a/docker/ruoyi/modules/job/dockerfile b/docker/ruoyi/modules/job/dockerfile new file mode 100644 index 0000000..1ba0fc6 --- /dev/null +++ b/docker/ruoyi/modules/job/dockerfile @@ -0,0 +1,15 @@ +# 基础镜像 +FROM openjdk:8-jre +# author +MAINTAINER ruoyi + +# 挂载目录 +VOLUME /home/ruoyi +# 创建目录 +RUN mkdir -p /home/ruoyi +# 指定路径 +WORKDIR /home/ruoyi +# 复制jar文件到路径 +COPY ./jar/jing-modules-job.jar /home/ruoyi/jing-modules-job.jar +# 启动定时任务服务 +ENTRYPOINT ["java","-jar","jing-modules-job.jar"] \ No newline at end of file diff --git a/jing-common/jing-common-security/src/main/java/com/jing/common/security/utils/DictUtils.java b/jing-common/jing-common-security/src/main/java/com/jing/common/security/utils/DictUtils.java new file mode 100644 index 0000000..540f3d2 --- /dev/null +++ b/jing-common/jing-common-security/src/main/java/com/jing/common/security/utils/DictUtils.java @@ -0,0 +1,75 @@ +package com.jing.common.security.utils; + +import java.util.Collection; +import java.util.List; +import com.alibaba.fastjson2.JSONArray; +import com.jing.common.core.constant.CacheConstants; +import com.jing.common.core.utils.SpringUtils; +import com.jing.common.core.utils.StringUtils; +import com.jing.common.redis.service.RedisService; +import com.jing.system.api.domain.SysDictData; + +/** + * 字典工具类 + * + * @author ruoyi + */ +public class DictUtils +{ + /** + * 设置字典缓存 + * + * @param key 参数键 + * @param dictDatas 字典数据列表 + */ + public static void setDictCache(String key, List dictDatas) + { + SpringUtils.getBean(RedisService.class).setCacheObject(getCacheKey(key), dictDatas); + } + + /** + * 获取字典缓存 + * + * @param key 参数键 + * @return dictDatas 字典数据列表 + */ + public static List getDictCache(String key) + { + JSONArray arrayCache = SpringUtils.getBean(RedisService.class).getCacheObject(getCacheKey(key)); + if (StringUtils.isNotNull(arrayCache)) + { + return arrayCache.toList(SysDictData.class); + } + return null; + } + + /** + * 删除指定字典缓存 + * + * @param key 字典键 + */ + public static void removeDictCache(String key) + { + SpringUtils.getBean(RedisService.class).deleteObject(getCacheKey(key)); + } + + /** + * 清空字典缓存 + */ + public static void clearDictCache() + { + Collection keys = SpringUtils.getBean(RedisService.class).keys(CacheConstants.SYS_DICT_KEY + "*"); + SpringUtils.getBean(RedisService.class).deleteObject(keys); + } + + /** + * 设置cache key + * + * @param configKey 参数键 + * @return 缓存键key + */ + public static String getCacheKey(String configKey) + { + return CacheConstants.SYS_DICT_KEY + configKey; + } +} diff --git a/jing-ui/src/assets/icons/svg/documentation.svg b/jing-ui/src/assets/icons/svg/documentation.svg new file mode 100644 index 0000000..7043122 --- /dev/null +++ b/jing-ui/src/assets/icons/svg/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jing-ui/src/utils/dict/DictMeta.js b/jing-ui/src/utils/dict/DictMeta.js new file mode 100644 index 0000000..9779daa --- /dev/null +++ b/jing-ui/src/utils/dict/DictMeta.js @@ -0,0 +1,38 @@ +import { mergeRecursive } from "@/utils/ruoyi"; +import DictOptions from './DictOptions' + +/** + * @classdesc 字典元数据 + * @property {String} type 类型 + * @property {Function} request 请求 + * @property {String} label 标签字段 + * @property {String} value 值字段 + */ +export default class DictMeta { + constructor(options) { + this.type = options.type + this.request = options.request + this.responseConverter = options.responseConverter + this.labelField = options.labelField + this.valueField = options.valueField + this.lazy = options.lazy === true + } +} + + +/** + * 解析字典元数据 + * @param {Object} options + * @returns {DictMeta} + */ +DictMeta.parse= function(options) { + let opts = null + if (typeof options === 'string') { + opts = DictOptions.metas[options] || {} + opts.type = options + } else if (typeof options === 'object') { + opts = options + } + opts = mergeRecursive(DictOptions.metas['*'], opts) + return new DictMeta(opts) +} diff --git a/jing-ui/src/utils/dict/DictOptions.js b/jing-ui/src/utils/dict/DictOptions.js new file mode 100644 index 0000000..338a94e --- /dev/null +++ b/jing-ui/src/utils/dict/DictOptions.js @@ -0,0 +1,51 @@ +import { mergeRecursive } from "@/utils/ruoyi"; +import dictConverter from './DictConverter' + +export const options = { + metas: { + '*': { + /** + * 字典请求,方法签名为function(dictMeta: DictMeta): Promise + */ + request: (dictMeta) => { + console.log(`load dict ${dictMeta.type}`) + return Promise.resolve([]) + }, + /** + * 字典响应数据转换器,方法签名为function(response: Object, dictMeta: DictMeta): DictData + */ + responseConverter, + labelField: 'label', + valueField: 'value', + }, + }, + /** + * 默认标签字段 + */ + DEFAULT_LABEL_FIELDS: ['label', 'name', 'title'], + /** + * 默认值字段 + */ + DEFAULT_VALUE_FIELDS: ['value', 'id', 'uid', 'key'], +} + +/** + * 映射字典 + * @param {Object} response 字典数据 + * @param {DictMeta} dictMeta 字典元数据 + * @returns {DictData} + */ +function responseConverter(response, dictMeta) { + const dicts = response.content instanceof Array ? response.content : response + if (dicts === undefined) { + console.warn(`no dict data of "${dictMeta.type}" found in the response`) + return [] + } + return dicts.map(d => dictConverter(d, dictMeta)) +} + +export function mergeOptions(src) { + mergeRecursive(options, src) +} + +export default options