From 6851b8fc8a992592b084a59ce9e7b26973a521b5 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Fri, 24 Dec 2021 14:53:46 +0800 Subject: [PATCH 01/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=E5=88=9D?= =?UTF-8?q?=E5=A7=8B=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 17f141e4..3b2dca9a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ ## 平台简介 若依是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。 +(xjs专用版) * 采用前后端分离的模式,微服务版本前端(基于 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue))。 * 后端采用Spring Boot、Spring Cloud & Alibaba。 From cef358aa3cdebd3941483389157e2d7b43680915 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sat, 25 Dec 2021 15:08:15 +0800 Subject: [PATCH 02/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E6=96=B0=E5=BB=BA=E8=8B=B1=E8=AF=AD=E5=BE=AE=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=EF=BC=88=E5=B0=9A=E6=9C=AA=E5=BC=80=E5=8F=91=EF=BC=89=202?= =?UTF-8?q?=E3=80=81=E4=BB=A5=E7=BB=A7=E6=89=BF=E8=8B=A5=E4=BE=9D=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E4=BE=9D=E8=B5=96=203=E3=80=81=E6=95=B4=E5=90=88knife?= =?UTF-8?q?4j=204=E3=80=81=E5=88=A0=E9=99=A4=E8=8B=A5=E4=BE=9D=E6=A1=86?= =?UTF-8?q?=E6=9E=B6=E7=AE=A1=E7=90=86=E5=91=98=E4=B8=8D=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nacos/startup.cmd - 快捷方式.lnk | Bin 0 -> 1529 bytes pom.xml | 5 + .../annotation/EnableCustomConfig.java | 3 +- ruoyi-common/ruoyi-common-swagger/pom.xml | 11 +- ruoyi-gateway/pom.xml | 6 +- .../service/impl/SysUserServiceImpl.java | 60 +- ruoyi-ui/vue.config.js | 270 +++---- xjs-business/pom.xml | 99 +++ xjs-business/xjs-business-english/pom.xml | 19 + .../java/com/xjs/english/XjsEnglishApp.java | 22 + .../src/main/resources/banner.txt | 8 + .../src/main/resources/bootstrap.yml | 25 + .../src/main/resources/logback.xml | 74 ++ xjs-sql/quartz.sql | 174 +++++ xjs-sql/ry_20210908.sql | 685 ++++++++++++++++++ xjs-sql/ry_config_20211118.sql | 216 ++++++ xjs-sql/ry_seata_20210128.sql | 80 ++ 17 files changed, 1585 insertions(+), 172 deletions(-) create mode 100644 nacos/startup.cmd - 快捷方式.lnk create mode 100644 xjs-business/pom.xml create mode 100644 xjs-business/xjs-business-english/pom.xml create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/XjsEnglishApp.java create mode 100644 xjs-business/xjs-business-english/src/main/resources/banner.txt create mode 100644 xjs-business/xjs-business-english/src/main/resources/bootstrap.yml create mode 100644 xjs-business/xjs-business-english/src/main/resources/logback.xml create mode 100644 xjs-sql/quartz.sql create mode 100644 xjs-sql/ry_20210908.sql create mode 100644 xjs-sql/ry_config_20211118.sql create mode 100644 xjs-sql/ry_seata_20210128.sql diff --git a/nacos/startup.cmd - 快捷方式.lnk b/nacos/startup.cmd - 快捷方式.lnk new file mode 100644 index 0000000000000000000000000000000000000000..b6454e84f85481f13e8efab5128b7df9922336e3 GIT binary patch literal 1529 zcmcIkT}V@57=AS)wajT2HcCerD0SwhBsq|jO}Axi;wg*1^d%jZu5S0>* zGr%Z6L&;-^1qtq#;wS#~2FIhS)D_BpTt9Wqf9=CHF+os_5|+q(B02@q%VzWe$(+I> z>i!-JM`W@m`ypGU;37&Zo0A~t4=rp-mIzd49~_4`h=GNX7B(Zz&sLU5@jjc^*|G8& zzhjG)paL`a@RST;rhBYKBLY@cx{67KOszaqhiMyXuXS2?>n5O1Dnb_g>@lsM&C^os(|2~_9E(^x>|g*R^16XRn9-V#pBcyjDaa5=3F1g* z{Oq7s1T_|WBr}4YLEcV&H`!U6nKw-zp@xrwa$JMVRCqrd)JnkZF}OTlr_^XOMRFrB z26;yHx{UJ9Vf5C6zPoVtVm720g^kaR7(K8e4um|RRmc^^=kkd(tSKBkTbgw8+8X&KM?_i zG$meHqIZde^by}1;YW$Va|{WIk{+r`zJ*Qrvos>T1g@T*)roH$ttA~|*iD;4MEH55 z^D_iF+*fbREO_uaY4{tA>L*eIw^5!(3dF8JY+a*l)SP4;ARj>v4(+q42HKsPeodjY ir{GfCL6p~#f(FsF{AIdRG^V3.2.2 2.12.2 2.17.0 + + + 3.0.3 + @@ -270,6 +274,7 @@ ruoyi-modules ruoyi-api ruoyi-common + xjs-business pom diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java index fa2a8b29..0498a6cb 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableCustomConfig.java @@ -7,6 +7,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.mybatis.spring.annotation.MapperScan; +import org.mybatis.spring.annotation.MapperScans; import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.Import; import org.springframework.scheduling.annotation.EnableAsync; @@ -20,7 +21,7 @@ import com.ruoyi.common.security.feign.FeignAutoConfiguration; // 表示通过aop框架暴露该代理对象,AopContext能够访问 @EnableAspectJAutoProxy(exposeProxy = true) // 指定要扫描的Mapper类的包的路径 -@MapperScan("com.ruoyi.**.mapper") +@MapperScan({"com.ruoyi.**.mapper","com.xjs.**.mapper"}) // 开启线程异步执行 @EnableAsync // 自动加载类 diff --git a/ruoyi-common/ruoyi-common-swagger/pom.xml b/ruoyi-common/ruoyi-common-swagger/pom.xml index bd78362b..b67f529c 100644 --- a/ruoyi-common/ruoyi-common-swagger/pom.xml +++ b/ruoyi-common/ruoyi-common-swagger/pom.xml @@ -15,6 +15,10 @@ ruoyi-common-swagger系统接口 + + + + @@ -23,11 +27,10 @@ spring-boot-starter-web - - io.springfox - springfox-swagger2 - ${swagger.fox.version} + com.github.xiaoymin + knife4j-spring-boot-starter + ${knife4j.version} diff --git a/ruoyi-gateway/pom.xml b/ruoyi-gateway/pom.xml index bb049553..3e7969c3 100644 --- a/ruoyi-gateway/pom.xml +++ b/ruoyi-gateway/pom.xml @@ -72,9 +72,9 @@ - io.springfox - springfox-swagger-ui - ${swagger.fox.version} + com.github.xiaoymin + knife4j-spring-ui + ${knife4j.version} io.springfox diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java index 19d40a05..7198daa1 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java @@ -2,6 +2,7 @@ package com.ruoyi.system.service.impl; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.stream.Collectors; import javax.validation.Validator; import org.slf4j.Logger; @@ -32,7 +33,7 @@ import com.ruoyi.system.service.ISysUserService; /** * 用户 业务层处理 - * + * * @author ruoyi */ @Service @@ -63,7 +64,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询用户列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -76,7 +77,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询已分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -89,7 +90,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 根据条件分页查询未分配用户角色列表 - * + * * @param user 用户信息 * @return 用户信息集合信息 */ @@ -102,7 +103,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户名查询用户 - * + * * @param userName 用户名 * @return 用户对象信息 */ @@ -114,7 +115,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户ID查询用户 - * + * * @param userId 用户ID * @return 用户对象信息 */ @@ -126,7 +127,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属角色组 - * + * * @param userName 用户名 * @return 结果 */ @@ -143,7 +144,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 查询用户所属岗位组 - * + * * @param userName 用户名 * @return 结果 */ @@ -160,7 +161,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户名称是否唯一 - * + * * @param userName 用户名称 * @return 结果 */ @@ -213,21 +214,22 @@ public class SysUserServiceImpl implements ISysUserService /** * 校验用户是否允许操作 - * + * * @param user 用户信息 */ @Override public void checkUserAllowed(SysUser user) { - if (StringUtils.isNotNull(user.getUserId()) && user.isAdmin()) - { - throw new ServiceException("不允许操作超级管理员用户"); + if (StringUtils.isNotNull(user.getUserId())&& user.isAdmin()) { + if("1".equals(user.getStatus())){ + throw new ServiceException("不允许停用超级管理员用户"); + } } } /** * 校验用户是否有数据权限 - * + * * @param userId 用户id */ @Override @@ -247,7 +249,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -266,7 +268,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 注册用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -278,7 +280,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改保存用户信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -300,7 +302,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 用户授权角色 - * + * * @param userId 用户ID * @param roleIds 角色组 */ @@ -314,7 +316,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户状态 - * + * * @param user 用户信息 * @return 结果 */ @@ -326,7 +328,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户基本信息 - * + * * @param user 用户信息 * @return 结果 */ @@ -338,7 +340,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 修改用户头像 - * + * * @param userName 用户名 * @param avatar 头像地址 * @return 结果 @@ -351,7 +353,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 重置用户密码 - * + * * @param user 用户信息 * @return 结果 */ @@ -363,7 +365,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 重置用户密码 - * + * * @param userName 用户名 * @param password 密码 * @return 结果 @@ -376,7 +378,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户角色信息 - * + * * @param user 用户对象 */ public void insertUserRole(SysUser user) @@ -402,7 +404,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户岗位信息 - * + * * @param user 用户对象 */ public void insertUserPost(SysUser user) @@ -428,7 +430,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 新增用户角色信息 - * + * * @param userId 用户ID * @param roleIds 角色组 */ @@ -454,7 +456,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 通过用户ID删除用户 - * + * * @param userId 用户ID * @return 结果 */ @@ -471,7 +473,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 批量删除用户信息 - * + * * @param userIds 需要删除的用户ID * @return 结果 */ @@ -492,7 +494,7 @@ public class SysUserServiceImpl implements ISysUserService /** * 导入用户数据 - * + * * @param userList 用户数据列表 * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 * @param operName 操作用户 diff --git a/ruoyi-ui/vue.config.js b/ruoyi-ui/vue.config.js index 1a9e913d..293c79c9 100644 --- a/ruoyi-ui/vue.config.js +++ b/ruoyi-ui/vue.config.js @@ -1,135 +1,135 @@ -'use strict' -const path = require('path') - -function resolve(dir) { - return path.join(__dirname, dir) -} - -const CompressionPlugin = require('compression-webpack-plugin') - -const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 - -const port = process.env.port || process.env.npm_config_port || 80 // 端口 - -// vue.config.js 配置说明 -//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions -// 这里只列一部分,具体配置参考文档 -module.exports = { - // 部署生产环境和开发环境下的URL。 - // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 - // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 - publicPath: process.env.NODE_ENV === "production" ? "/" : "/", - // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) - outputDir: 'dist', - // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) - assetsDir: 'static', - // 是否开启eslint保存检测,有效值:ture | false | 'error' - lintOnSave: process.env.NODE_ENV === 'development', - // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 - productionSourceMap: false, - // webpack-dev-server 相关配置 - devServer: { - host: '0.0.0.0', - port: port, - open: true, - proxy: { - // detail: https://cli.vuejs.org/config/#devserver-proxy - [process.env.VUE_APP_BASE_API]: { - target: `http://localhost:8080`, - changeOrigin: true, - pathRewrite: { - ['^' + process.env.VUE_APP_BASE_API]: '' - } - } - }, - disableHostCheck: true - }, - css: { - loaderOptions: { - sass: { - sassOptions: { outputStyle: "expanded" } - } - } - }, - configureWebpack: { - name: name, - resolve: { - alias: { - '@': resolve('src') - } - }, - plugins: [ - // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 - new CompressionPlugin({ - test: /\.(js|css|html)?$/i, // 压缩文件格式 - filename: '[path].gz[query]', // 压缩后的文件名 - algorithm: 'gzip', // 使用gzip压缩 - minRatio: 0.8 // 压缩率小于1才会压缩 - }) - ], - }, - chainWebpack(config) { - config.plugins.delete('preload') // TODO: need test - config.plugins.delete('prefetch') // TODO: need test - - // set svg-sprite-loader - config.module - .rule('svg') - .exclude.add(resolve('src/assets/icons')) - .end() - config.module - .rule('icons') - .test(/\.svg$/) - .include.add(resolve('src/assets/icons')) - .end() - .use('svg-sprite-loader') - .loader('svg-sprite-loader') - .options({ - symbolId: 'icon-[name]' - }) - .end() - - config - .when(process.env.NODE_ENV !== 'development', - config => { - config - .plugin('ScriptExtHtmlWebpackPlugin') - .after('html') - .use('script-ext-html-webpack-plugin', [{ - // `runtime` must same as runtimeChunk name. default is `runtime` - inline: /runtime\..*\.js$/ - }]) - .end() - config - .optimization.splitChunks({ - chunks: 'all', - cacheGroups: { - libs: { - name: 'chunk-libs', - test: /[\\/]node_modules[\\/]/, - priority: 10, - chunks: 'initial' // only package third parties that are initially dependent - }, - elementUI: { - name: 'chunk-elementUI', // split elementUI into a single package - priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app - test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm - }, - commons: { - name: 'chunk-commons', - test: resolve('src/components'), // can customize your rules - minChunks: 3, // minimum common number - priority: 5, - reuseExistingChunk: true - } - } - }) - config.optimization.runtimeChunk('single'), - { - from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件 - to: './' //到根目录下 - } - } - ) - } -} +'use strict' +const path = require('path') + +function resolve(dir) { + return path.join(__dirname, dir) +} + +const CompressionPlugin = require('compression-webpack-plugin') + +const name = process.env.VUE_APP_TITLE || '若依管理系统' // 网页标题 + +const port = process.env.port || process.env.npm_config_port || 88 // 端口 + +// vue.config.js 配置说明 +//官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions +// 这里只列一部分,具体配置参考文档 +module.exports = { + // 部署生产环境和开发环境下的URL。 + // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上 + // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 + publicPath: process.env.NODE_ENV === "production" ? "/" : "/", + // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist) + outputDir: 'dist', + // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下) + assetsDir: 'static', + // 是否开启eslint保存检测,有效值:ture | false | 'error' + lintOnSave: process.env.NODE_ENV === 'development', + // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。 + productionSourceMap: false, + // webpack-dev-server 相关配置 + devServer: { + host: '0.0.0.0', + port: port, + open: true, + proxy: { + // detail: https://cli.vuejs.org/config/#devserver-proxy + [process.env.VUE_APP_BASE_API]: { + target: `http://localhost:8080`, + changeOrigin: true, + pathRewrite: { + ['^' + process.env.VUE_APP_BASE_API]: '' + } + } + }, + disableHostCheck: true + }, + css: { + loaderOptions: { + sass: { + sassOptions: { outputStyle: "expanded" } + } + } + }, + configureWebpack: { + name: name, + resolve: { + alias: { + '@': resolve('src') + } + }, + plugins: [ + // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 + new CompressionPlugin({ + test: /\.(js|css|html)?$/i, // 压缩文件格式 + filename: '[path].gz[query]', // 压缩后的文件名 + algorithm: 'gzip', // 使用gzip压缩 + minRatio: 0.8 // 压缩率小于1才会压缩 + }) + ], + }, + chainWebpack(config) { + config.plugins.delete('preload') // TODO: need test + config.plugins.delete('prefetch') // TODO: need test + + // set svg-sprite-loader + config.module + .rule('svg') + .exclude.add(resolve('src/assets/icons')) + .end() + config.module + .rule('icons') + .test(/\.svg$/) + .include.add(resolve('src/assets/icons')) + .end() + .use('svg-sprite-loader') + .loader('svg-sprite-loader') + .options({ + symbolId: 'icon-[name]' + }) + .end() + + config + .when(process.env.NODE_ENV !== 'development', + config => { + config + .plugin('ScriptExtHtmlWebpackPlugin') + .after('html') + .use('script-ext-html-webpack-plugin', [{ + // `runtime` must same as runtimeChunk name. default is `runtime` + inline: /runtime\..*\.js$/ + }]) + .end() + config + .optimization.splitChunks({ + chunks: 'all', + cacheGroups: { + libs: { + name: 'chunk-libs', + test: /[\\/]node_modules[\\/]/, + priority: 10, + chunks: 'initial' // only package third parties that are initially dependent + }, + elementUI: { + name: 'chunk-elementUI', // split elementUI into a single package + priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app + test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm + }, + commons: { + name: 'chunk-commons', + test: resolve('src/components'), // can customize your rules + minChunks: 3, // minimum common number + priority: 5, + reuseExistingChunk: true + } + } + }) + config.optimization.runtimeChunk('single'), + { + from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件 + to: './' //到根目录下 + } + } + ) + } +} diff --git a/xjs-business/pom.xml b/xjs-business/pom.xml new file mode 100644 index 00000000..df25d204 --- /dev/null +++ b/xjs-business/pom.xml @@ -0,0 +1,99 @@ + + + + ruoyi + com.ruoyi + 3.3.0 + + 4.0.0 + + com.xjs + xjs-business + pom + 业务模块 + + xjs-business-english + + + + 11 + 11 + 3.4.3.4 + + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + + + org.springframework.boot + spring-boot-starter-actuator + + + + + io.springfox + springfox-swagger-ui + ${swagger.fox.version} + + + + + mysql + mysql-connector-java + + + + + com.ruoyi + ruoyi-common-datasource + + + + + com.ruoyi + ruoyi-common-datascope + + + + + com.ruoyi + ruoyi-common-log + + + + + com.ruoyi + ruoyi-common-swagger + + + + + com.baomidou + mybatis-plus-boot-starter + ${mybatisplus.version} + + + + + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-english/pom.xml b/xjs-business/xjs-business-english/pom.xml new file mode 100644 index 00000000..0e50a38c --- /dev/null +++ b/xjs-business/xjs-business-english/pom.xml @@ -0,0 +1,19 @@ + + + + xjs-business + com.xjs + 3.3.0 + + 4.0.0 + + xjs-business-english + + + 11 + 11 + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/XjsEnglishApp.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/XjsEnglishApp.java new file mode 100644 index 00000000..fa9b3550 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/XjsEnglishApp.java @@ -0,0 +1,22 @@ +package com.xjs.english; + +import com.ruoyi.common.security.annotation.EnableCustomConfig; +import com.ruoyi.common.security.annotation.EnableRyFeignClients; +import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@SpringBootApplication +@EnableCustomConfig +@EnableCustomSwagger2 +@EnableRyFeignClients +public class XjsEnglishApp { + public static void main(String[] args) { + SpringApplication.run(XjsEnglishApp.class, args); + } +} diff --git a/xjs-business/xjs-business-english/src/main/resources/banner.txt b/xjs-business/xjs-business-english/src/main/resources/banner.txt new file mode 100644 index 00000000..6f3fceaa --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/banner.txt @@ -0,0 +1,8 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} +____ ___ ____. _________ _____.___._____.___.________ _________ +\ \/ / | |/ _____/ \__ | |\__ | |\______ \ / _____/ + \ / | |\_____ \ ______ / | | / | | | | \ \_____ \ + / \/\__| |/ \ /_____/ \____ | \____ | | ` \/ \ +/___/\ \________/_______ / / ______| / ______|/_______ /_______ / + \_/ \/ \/ \/ \/ \/ diff --git a/xjs-business/xjs-business-english/src/main/resources/bootstrap.yml b/xjs-business/xjs-business-english/src/main/resources/bootstrap.yml new file mode 100644 index 00000000..7f03fd3a --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/bootstrap.yml @@ -0,0 +1,25 @@ +# Tomcat +server: + port: 9900 + +# Spring +spring: + application: + # 应用名称 + name: xjs-english + profiles: + # 环境配置 + active: dev + cloud: + nacos: + discovery: + # 服务注册地址 + server-addr: 127.0.0.1:8848 + config: + # 配置中心地址 + server-addr: 127.0.0.1:8848 + # 配置文件格式 + file-extension: yml + # 共享配置 + shared-configs: + - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} diff --git a/xjs-business/xjs-business-english/src/main/resources/logback.xml b/xjs-business/xjs-business-english/src/main/resources/logback.xml new file mode 100644 index 00000000..3b651ec3 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/logback.xml @@ -0,0 +1,74 @@ + + + + + + + + + + + ${log.pattern} + + + + + + ${log.path}/info.log + + + + ${log.path}/info.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + INFO + + ACCEPT + + DENY + + + + + ${log.path}/error.log + + + + ${log.path}/error.%d{yyyy-MM-dd}.log + + 60 + + + ${log.pattern} + + + + ERROR + + ACCEPT + + DENY + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xjs-sql/quartz.sql b/xjs-sql/quartz.sql new file mode 100644 index 00000000..cee613b7 --- /dev/null +++ b/xjs-sql/quartz.sql @@ -0,0 +1,174 @@ +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + +-- ---------------------------- +-- 1、存储每一个已配置的 jobDetail 的详细信息 +-- ---------------------------- +create table QRTZ_JOB_DETAILS ( + sched_name varchar(120) not null comment '调度名称', + job_name varchar(200) not null comment '任务名称', + job_group varchar(200) not null comment '任务组名', + description varchar(250) null comment '相关介绍', + job_class_name varchar(250) not null comment '执行任务类名称', + is_durable varchar(1) not null comment '是否持久化', + is_nonconcurrent varchar(1) not null comment '是否并发', + is_update_data varchar(1) not null comment '是否更新数据', + requests_recovery varchar(1) not null comment '是否接受恢复执行', + job_data blob null comment '存放持久化job对象', + primary key (sched_name, job_name, job_group) +) engine=innodb comment = '任务详细信息表'; + +-- ---------------------------- +-- 2、 存储已配置的 Trigger 的信息 +-- ---------------------------- +create table QRTZ_TRIGGERS ( + sched_name varchar(120) not null comment '调度名称', + trigger_name varchar(200) not null comment '触发器的名字', + trigger_group varchar(200) not null comment '触发器所属组的名字', + job_name varchar(200) not null comment 'qrtz_job_details表job_name的外键', + job_group varchar(200) not null comment 'qrtz_job_details表job_group的外键', + description varchar(250) null comment '相关介绍', + next_fire_time bigint(13) null comment '上一次触发时间(毫秒)', + prev_fire_time bigint(13) null comment '下一次触发时间(默认为-1表示不触发)', + priority integer null comment '优先级', + trigger_state varchar(16) not null comment '触发器状态', + trigger_type varchar(8) not null comment '触发器的类型', + start_time bigint(13) not null comment '开始时间', + end_time bigint(13) null comment '结束时间', + calendar_name varchar(200) null comment '日程表名称', + misfire_instr smallint(2) null comment '补偿执行的策略', + job_data blob null comment '存放持久化job对象', + primary key (sched_name, trigger_name, trigger_group), + foreign key (sched_name, job_name, job_group) references QRTZ_JOB_DETAILS(sched_name, job_name, job_group) +) engine=innodb comment = '触发器详细信息表'; + +-- ---------------------------- +-- 3、 存储简单的 Trigger,包括重复次数,间隔,以及已触发的次数 +-- ---------------------------- +create table QRTZ_SIMPLE_TRIGGERS ( + sched_name varchar(120) not null comment '调度名称', + trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', + trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', + repeat_count bigint(7) not null comment '重复的次数统计', + repeat_interval bigint(12) not null comment '重复的间隔时间', + times_triggered bigint(10) not null comment '已经触发的次数', + primary key (sched_name, trigger_name, trigger_group), + foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group) +) engine=innodb comment = '简单触发器的信息表'; + +-- ---------------------------- +-- 4、 存储 Cron Trigger,包括 Cron 表达式和时区信息 +-- ---------------------------- +create table QRTZ_CRON_TRIGGERS ( + sched_name varchar(120) not null comment '调度名称', + trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', + trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', + cron_expression varchar(200) not null comment 'cron表达式', + time_zone_id varchar(80) comment '时区', + primary key (sched_name, trigger_name, trigger_group), + foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group) +) engine=innodb comment = 'Cron类型的触发器表'; + +-- ---------------------------- +-- 5、 Trigger 作为 Blob 类型存储(用于 Quartz 用户用 JDBC 创建他们自己定制的 Trigger 类型,JobStore 并不知道如何存储实例的时候) +-- ---------------------------- +create table QRTZ_BLOB_TRIGGERS ( + sched_name varchar(120) not null comment '调度名称', + trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', + trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', + blob_data blob null comment '存放持久化Trigger对象', + primary key (sched_name, trigger_name, trigger_group), + foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group) +) engine=innodb comment = 'Blob类型的触发器表'; + +-- ---------------------------- +-- 6、 以 Blob 类型存储存放日历信息, quartz可配置一个日历来指定一个时间范围 +-- ---------------------------- +create table QRTZ_CALENDARS ( + sched_name varchar(120) not null comment '调度名称', + calendar_name varchar(200) not null comment '日历名称', + calendar blob not null comment '存放持久化calendar对象', + primary key (sched_name, calendar_name) +) engine=innodb comment = '日历信息表'; + +-- ---------------------------- +-- 7、 存储已暂停的 Trigger 组的信息 +-- ---------------------------- +create table QRTZ_PAUSED_TRIGGER_GRPS ( + sched_name varchar(120) not null comment '调度名称', + trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', + primary key (sched_name, trigger_group) +) engine=innodb comment = '暂停的触发器表'; + +-- ---------------------------- +-- 8、 存储与已触发的 Trigger 相关的状态信息,以及相联 Job 的执行信息 +-- ---------------------------- +create table QRTZ_FIRED_TRIGGERS ( + sched_name varchar(120) not null comment '调度名称', + entry_id varchar(95) not null comment '调度器实例id', + trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', + trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', + instance_name varchar(200) not null comment '调度器实例名', + fired_time bigint(13) not null comment '触发的时间', + sched_time bigint(13) not null comment '定时器制定的时间', + priority integer not null comment '优先级', + state varchar(16) not null comment '状态', + job_name varchar(200) null comment '任务名称', + job_group varchar(200) null comment '任务组名', + is_nonconcurrent varchar(1) null comment '是否并发', + requests_recovery varchar(1) null comment '是否接受恢复执行', + primary key (sched_name, entry_id) +) engine=innodb comment = '已触发的触发器表'; + +-- ---------------------------- +-- 9、 存储少量的有关 Scheduler 的状态信息,假如是用于集群中,可以看到其他的 Scheduler 实例 +-- ---------------------------- +create table QRTZ_SCHEDULER_STATE ( + sched_name varchar(120) not null comment '调度名称', + instance_name varchar(200) not null comment '实例名称', + last_checkin_time bigint(13) not null comment '上次检查时间', + checkin_interval bigint(13) not null comment '检查间隔时间', + primary key (sched_name, instance_name) +) engine=innodb comment = '调度器状态表'; + +-- ---------------------------- +-- 10、 存储程序的悲观锁的信息(假如使用了悲观锁) +-- ---------------------------- +create table QRTZ_LOCKS ( + sched_name varchar(120) not null comment '调度名称', + lock_name varchar(40) not null comment '悲观锁名称', + primary key (sched_name, lock_name) +) engine=innodb comment = '存储的悲观锁信息表'; + +-- ---------------------------- +-- 11、 Quartz集群实现同步机制的行锁表 +-- ---------------------------- +create table QRTZ_SIMPROP_TRIGGERS ( + sched_name varchar(120) not null comment '调度名称', + trigger_name varchar(200) not null comment 'qrtz_triggers表trigger_name的外键', + trigger_group varchar(200) not null comment 'qrtz_triggers表trigger_group的外键', + str_prop_1 varchar(512) null comment 'String类型的trigger的第一个参数', + str_prop_2 varchar(512) null comment 'String类型的trigger的第二个参数', + str_prop_3 varchar(512) null comment 'String类型的trigger的第三个参数', + int_prop_1 int null comment 'int类型的trigger的第一个参数', + int_prop_2 int null comment 'int类型的trigger的第二个参数', + long_prop_1 bigint null comment 'long类型的trigger的第一个参数', + long_prop_2 bigint null comment 'long类型的trigger的第二个参数', + dec_prop_1 numeric(13,4) null comment 'decimal类型的trigger的第一个参数', + dec_prop_2 numeric(13,4) null comment 'decimal类型的trigger的第二个参数', + bool_prop_1 varchar(1) null comment 'Boolean类型的trigger的第一个参数', + bool_prop_2 varchar(1) null comment 'Boolean类型的trigger的第二个参数', + primary key (sched_name, trigger_name, trigger_group), + foreign key (sched_name, trigger_name, trigger_group) references QRTZ_TRIGGERS(sched_name, trigger_name, trigger_group) +) engine=innodb comment = '同步机制的行锁表'; + +commit; \ No newline at end of file diff --git a/xjs-sql/ry_20210908.sql b/xjs-sql/ry_20210908.sql new file mode 100644 index 00000000..006e21d2 --- /dev/null +++ b/xjs-sql/ry_20210908.sql @@ -0,0 +1,685 @@ +SET NAMES utf8mb4; + +-- ---------------------------- +-- 1、部门表 +-- ---------------------------- +drop table if exists sys_dept; +create table sys_dept ( + dept_id bigint(20) not null auto_increment comment '部门id', + parent_id bigint(20) default 0 comment '父部门id', + ancestors varchar(50) default '' comment '祖级列表', + dept_name varchar(30) default '' comment '部门名称', + order_num int(4) default 0 comment '显示顺序', + leader varchar(20) default null comment '负责人', + phone varchar(11) default null comment '联系电话', + email varchar(50) default null comment '邮箱', + status char(1) default '0' comment '部门状态(0正常 1停用)', + del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + primary key (dept_id) +) engine=innodb auto_increment=200 comment = '部门表'; + +-- ---------------------------- +-- 初始化-部门表数据 +-- ---------------------------- +insert into sys_dept values(100, 0, '0', '若依科技', 0, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(101, 100, '0,100', '深圳总公司', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(102, 100, '0,100', '长沙分公司', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(103, 101, '0,100,101', '研发部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(104, 101, '0,100,101', '市场部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(105, 101, '0,100,101', '测试部门', 3, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(106, 101, '0,100,101', '财务部门', 4, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(107, 101, '0,100,101', '运维部门', 5, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(108, 102, '0,100,102', '市场部门', 1, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); +insert into sys_dept values(109, 102, '0,100,102', '财务部门', 2, '若依', '15888888888', 'ry@qq.com', '0', '0', 'admin', sysdate(), '', null); + + +-- ---------------------------- +-- 2、用户信息表 +-- ---------------------------- +drop table if exists sys_user; +create table sys_user ( + user_id bigint(20) not null auto_increment comment '用户ID', + dept_id bigint(20) default null comment '部门ID', + user_name varchar(30) not null comment '用户账号', + nick_name varchar(30) not null comment '用户昵称', + user_type varchar(2) default '00' comment '用户类型(00系统用户)', + email varchar(50) default '' comment '用户邮箱', + phonenumber varchar(11) default '' comment '手机号码', + sex char(1) default '0' comment '用户性别(0男 1女 2未知)', + avatar varchar(100) default '' comment '头像地址', + password varchar(100) default '' comment '密码', + status char(1) default '0' comment '帐号状态(0正常 1停用)', + del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + login_ip varchar(128) default '' comment '最后登录IP', + login_date datetime comment '最后登录时间', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default null comment '备注', + primary key (user_id) +) engine=innodb auto_increment=100 comment = '用户信息表'; + +-- ---------------------------- +-- 初始化-用户信息表数据 +-- ---------------------------- +insert into sys_user values(1, 103, 'admin', '若依', '00', 'ry@163.com', '15888888888', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '管理员'); +insert into sys_user values(2, 105, 'ry', '若依', '00', 'ry@qq.com', '15666666666', '1', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '0', '127.0.0.1', sysdate(), 'admin', sysdate(), '', null, '测试员'); + + +-- ---------------------------- +-- 3、岗位信息表 +-- ---------------------------- +drop table if exists sys_post; +create table sys_post +( + post_id bigint(20) not null auto_increment comment '岗位ID', + post_code varchar(64) not null comment '岗位编码', + post_name varchar(50) not null comment '岗位名称', + post_sort int(4) not null comment '显示顺序', + status char(1) not null comment '状态(0正常 1停用)', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default null comment '备注', + primary key (post_id) +) engine=innodb comment = '岗位信息表'; + +-- ---------------------------- +-- 初始化-岗位信息表数据 +-- ---------------------------- +insert into sys_post values(1, 'ceo', '董事长', 1, '0', 'admin', sysdate(), '', null, ''); +insert into sys_post values(2, 'se', '项目经理', 2, '0', 'admin', sysdate(), '', null, ''); +insert into sys_post values(3, 'hr', '人力资源', 3, '0', 'admin', sysdate(), '', null, ''); +insert into sys_post values(4, 'user', '普通员工', 4, '0', 'admin', sysdate(), '', null, ''); + + +-- ---------------------------- +-- 4、角色信息表 +-- ---------------------------- +drop table if exists sys_role; +create table sys_role ( + role_id bigint(20) not null auto_increment comment '角色ID', + role_name varchar(30) not null comment '角色名称', + role_key varchar(100) not null comment '角色权限字符串', + role_sort int(4) not null comment '显示顺序', + data_scope char(1) default '1' comment '数据范围(1:全部数据权限 2:自定数据权限 3:本部门数据权限 4:本部门及以下数据权限)', + menu_check_strictly tinyint(1) default 1 comment '菜单树选择项是否关联显示', + dept_check_strictly tinyint(1) default 1 comment '部门树选择项是否关联显示', + status char(1) not null comment '角色状态(0正常 1停用)', + del_flag char(1) default '0' comment '删除标志(0代表存在 2代表删除)', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default null comment '备注', + primary key (role_id) +) engine=innodb auto_increment=100 comment = '角色信息表'; + +-- ---------------------------- +-- 初始化-角色信息表数据 +-- ---------------------------- +insert into sys_role values('1', '超级管理员', 'admin', 1, 1, 1, 1, '0', '0', 'admin', sysdate(), '', null, '超级管理员'); +insert into sys_role values('2', '普通角色', 'common', 2, 2, 1, 1, '0', '0', 'admin', sysdate(), '', null, '普通角色'); + + +-- ---------------------------- +-- 5、菜单权限表 +-- ---------------------------- +drop table if exists sys_menu; +create table sys_menu ( + menu_id bigint(20) not null auto_increment comment '菜单ID', + menu_name varchar(50) not null comment '菜单名称', + parent_id bigint(20) default 0 comment '父菜单ID', + order_num int(4) default 0 comment '显示顺序', + path varchar(200) default '' comment '路由地址', + component varchar(255) default null comment '组件路径', + query varchar(255) default null comment '路由参数', + is_frame int(1) default 1 comment '是否为外链(0是 1否)', + is_cache int(1) default 0 comment '是否缓存(0缓存 1不缓存)', + menu_type char(1) default '' comment '菜单类型(M目录 C菜单 F按钮)', + visible char(1) default 0 comment '菜单状态(0显示 1隐藏)', + status char(1) default 0 comment '菜单状态(0正常 1停用)', + perms varchar(100) default null comment '权限标识', + icon varchar(100) default '#' comment '菜单图标', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default '' comment '备注', + primary key (menu_id) +) engine=innodb auto_increment=2000 comment = '菜单权限表'; + +-- ---------------------------- +-- 初始化-菜单信息表数据 +-- ---------------------------- +-- 一级菜单 +insert into sys_menu values('1', '系统管理', '0', '1', 'system', null, '', 1, 0, 'M', '0', '0', '', 'system', 'admin', sysdate(), '', null, '系统管理目录'); +insert into sys_menu values('2', '系统监控', '0', '2', 'monitor', null, '', 1, 0, 'M', '0', '0', '', 'monitor', 'admin', sysdate(), '', null, '系统监控目录'); +insert into sys_menu values('3', '系统工具', '0', '3', 'tool', null, '', 1, 0, 'M', '0', '0', '', 'tool', 'admin', sysdate(), '', null, '系统工具目录'); +insert into sys_menu values('4', '若依官网', '0', '4', 'http://ruoyi.vip', null, '', 0, 0, 'M', '0', '0', '', 'guide', 'admin', sysdate(), '', null, '若依官网地址'); +-- 二级菜单 +insert into sys_menu values('100', '用户管理', '1', '1', 'user', 'system/user/index', '', 1, 0, 'C', '0', '0', 'system:user:list', 'user', 'admin', sysdate(), '', null, '用户管理菜单'); +insert into sys_menu values('101', '角色管理', '1', '2', 'role', 'system/role/index', '', 1, 0, 'C', '0', '0', 'system:role:list', 'peoples', 'admin', sysdate(), '', null, '角色管理菜单'); +insert into sys_menu values('102', '菜单管理', '1', '3', 'menu', 'system/menu/index', '', 1, 0, 'C', '0', '0', 'system:menu:list', 'tree-table', 'admin', sysdate(), '', null, '菜单管理菜单'); +insert into sys_menu values('103', '部门管理', '1', '4', 'dept', 'system/dept/index', '', 1, 0, 'C', '0', '0', 'system:dept:list', 'tree', 'admin', sysdate(), '', null, '部门管理菜单'); +insert into sys_menu values('104', '岗位管理', '1', '5', 'post', 'system/post/index', '', 1, 0, 'C', '0', '0', 'system:post:list', 'post', 'admin', sysdate(), '', null, '岗位管理菜单'); +insert into sys_menu values('105', '字典管理', '1', '6', 'dict', 'system/dict/index', '', 1, 0, 'C', '0', '0', 'system:dict:list', 'dict', 'admin', sysdate(), '', null, '字典管理菜单'); +insert into sys_menu values('106', '参数设置', '1', '7', 'config', 'system/config/index', '', 1, 0, 'C', '0', '0', 'system:config:list', 'edit', 'admin', sysdate(), '', null, '参数设置菜单'); +insert into sys_menu values('107', '通知公告', '1', '8', 'notice', 'system/notice/index', '', 1, 0, 'C', '0', '0', 'system:notice:list', 'message', 'admin', sysdate(), '', null, '通知公告菜单'); +insert into sys_menu values('108', '日志管理', '1', '9', 'log', '', '', 1, 0, 'M', '0', '0', '', 'log', 'admin', sysdate(), '', null, '日志管理菜单'); +insert into sys_menu values('109', '在线用户', '2', '1', 'online', 'monitor/online/index', '', 1, 0, 'C', '0', '0', 'monitor:online:list', 'online', 'admin', sysdate(), '', null, '在线用户菜单'); +insert into sys_menu values('110', '定时任务', '2', '2', 'job', 'monitor/job/index', '', 1, 0, 'C', '0', '0', 'monitor:job:list', 'job', 'admin', sysdate(), '', null, '定时任务菜单'); +insert into sys_menu values('111', 'Sentinel控制台', '2', '3', 'http://localhost:8718', '', '', 0, 0, 'C', '0', '0', 'monitor:sentinel:list', 'sentinel', 'admin', sysdate(), '', null, '流量控制菜单'); +insert into sys_menu values('112', 'Nacos控制台', '2', '4', 'http://localhost:8848/nacos', '', '', 0, 0, 'C', '0', '0', 'monitor:nacos:list', 'nacos', 'admin', sysdate(), '', null, '服务治理菜单'); +insert into sys_menu values('113', 'Admin控制台', '2', '5', 'http://localhost:9100/login', '', '', 0, 0, 'C', '0', '0', 'monitor:server:list', 'server', 'admin', sysdate(), '', null, '服务监控菜单'); +insert into sys_menu values('114', '表单构建', '3', '1', 'build', 'tool/build/index', '', 1, 0, 'C', '0', '0', 'tool:build:list', 'build', 'admin', sysdate(), '', null, '表单构建菜单'); +insert into sys_menu values('115', '代码生成', '3', '2', 'gen', 'tool/gen/index', '', 1, 0, 'C', '0', '0', 'tool:gen:list', 'code', 'admin', sysdate(), '', null, '代码生成菜单'); +insert into sys_menu values('116', '系统接口', '3', '3', 'http://localhost:8080/swagger-ui/index.html', '', '', 0, 0, 'C', '0', '0', 'tool:swagger:list', 'swagger', 'admin', sysdate(), '', null, '系统接口菜单'); +-- 三级菜单 +insert into sys_menu values('500', '操作日志', '108', '1', 'operlog', 'system/operlog/index', '', 1, 0, 'C', '0', '0', 'system:operlog:list', 'form', 'admin', sysdate(), '', null, '操作日志菜单'); +insert into sys_menu values('501', '登录日志', '108', '2', 'logininfor', 'system/logininfor/index', '', 1, 0, 'C', '0', '0', 'system:logininfor:list', 'logininfor', 'admin', sysdate(), '', null, '登录日志菜单'); +-- 用户管理按钮 +insert into sys_menu values('1001', '用户查询', '100', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:user:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1002', '用户新增', '100', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:user:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1003', '用户修改', '100', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:user:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1004', '用户删除', '100', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:user:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1005', '用户导出', '100', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:user:export', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1006', '用户导入', '100', '6', '', '', '', 1, 0, 'F', '0', '0', 'system:user:import', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1007', '重置密码', '100', '7', '', '', '', 1, 0, 'F', '0', '0', 'system:user:resetPwd', '#', 'admin', sysdate(), '', null, ''); +-- 角色管理按钮 +insert into sys_menu values('1008', '角色查询', '101', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:role:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1009', '角色新增', '101', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:role:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1010', '角色修改', '101', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:role:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1011', '角色删除', '101', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:role:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1012', '角色导出', '101', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:role:export', '#', 'admin', sysdate(), '', null, ''); +-- 菜单管理按钮 +insert into sys_menu values('1013', '菜单查询', '102', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1014', '菜单新增', '102', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1015', '菜单修改', '102', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1016', '菜单删除', '102', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:menu:remove', '#', 'admin', sysdate(), '', null, ''); +-- 部门管理按钮 +insert into sys_menu values('1017', '部门查询', '103', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1018', '部门新增', '103', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1019', '部门修改', '103', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1020', '部门删除', '103', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:dept:remove', '#', 'admin', sysdate(), '', null, ''); +-- 岗位管理按钮 +insert into sys_menu values('1021', '岗位查询', '104', '1', '', '', '', 1, 0, 'F', '0', '0', 'system:post:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1022', '岗位新增', '104', '2', '', '', '', 1, 0, 'F', '0', '0', 'system:post:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1023', '岗位修改', '104', '3', '', '', '', 1, 0, 'F', '0', '0', 'system:post:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1024', '岗位删除', '104', '4', '', '', '', 1, 0, 'F', '0', '0', 'system:post:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1025', '岗位导出', '104', '5', '', '', '', 1, 0, 'F', '0', '0', 'system:post:export', '#', 'admin', sysdate(), '', null, ''); +-- 字典管理按钮 +insert into sys_menu values('1026', '字典查询', '105', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1027', '字典新增', '105', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1028', '字典修改', '105', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1029', '字典删除', '105', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1030', '字典导出', '105', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:dict:export', '#', 'admin', sysdate(), '', null, ''); +-- 参数设置按钮 +insert into sys_menu values('1031', '参数查询', '106', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1032', '参数新增', '106', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1033', '参数修改', '106', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1034', '参数删除', '106', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1035', '参数导出', '106', '5', '#', '', '', 1, 0, 'F', '0', '0', 'system:config:export', '#', 'admin', sysdate(), '', null, ''); +-- 通知公告按钮 +insert into sys_menu values('1036', '公告查询', '107', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1037', '公告新增', '107', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1038', '公告修改', '107', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1039', '公告删除', '107', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:notice:remove', '#', 'admin', sysdate(), '', null, ''); +-- 操作日志按钮 +insert into sys_menu values('1040', '操作查询', '500', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1041', '操作删除', '500', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1042', '日志导出', '500', '4', '#', '', '', 1, 0, 'F', '0', '0', 'system:operlog:export', '#', 'admin', sysdate(), '', null, ''); +-- 登录日志按钮 +insert into sys_menu values('1043', '登录查询', '501', '1', '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1044', '登录删除', '501', '2', '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1045', '日志导出', '501', '3', '#', '', '', 1, 0, 'F', '0', '0', 'system:logininfor:export', '#', 'admin', sysdate(), '', null, ''); +-- 在线用户按钮 +insert into sys_menu values('1046', '在线查询', '109', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1047', '批量强退', '109', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:batchLogout', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1048', '单条强退', '109', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:online:forceLogout', '#', 'admin', sysdate(), '', null, ''); +-- 定时任务按钮 +insert into sys_menu values('1049', '任务查询', '110', '1', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1050', '任务新增', '110', '2', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:add', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1051', '任务修改', '110', '3', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1052', '任务删除', '110', '4', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1053', '状态修改', '110', '5', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:changeStatus', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1054', '任务导出', '110', '7', '#', '', '', 1, 0, 'F', '0', '0', 'monitor:job:export', '#', 'admin', sysdate(), '', null, ''); +-- 代码生成按钮 +insert into sys_menu values('1055', '生成查询', '115', '1', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:query', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1056', '生成修改', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:edit', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1057', '生成删除', '115', '3', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:remove', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1058', '导入代码', '115', '2', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:import', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1059', '预览代码', '115', '4', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:preview', '#', 'admin', sysdate(), '', null, ''); +insert into sys_menu values('1060', '生成代码', '115', '5', '#', '', '', 1, 0, 'F', '0', '0', 'tool:gen:code', '#', 'admin', sysdate(), '', null, ''); + + +-- ---------------------------- +-- 6、用户和角色关联表 用户N-1角色 +-- ---------------------------- +drop table if exists sys_user_role; +create table sys_user_role ( + user_id bigint(20) not null comment '用户ID', + role_id bigint(20) not null comment '角色ID', + primary key(user_id, role_id) +) engine=innodb comment = '用户和角色关联表'; + +-- ---------------------------- +-- 初始化-用户和角色关联表数据 +-- ---------------------------- +insert into sys_user_role values ('1', '1'); +insert into sys_user_role values ('2', '2'); + + +-- ---------------------------- +-- 7、角色和菜单关联表 角色1-N菜单 +-- ---------------------------- +drop table if exists sys_role_menu; +create table sys_role_menu ( + role_id bigint(20) not null comment '角色ID', + menu_id bigint(20) not null comment '菜单ID', + primary key(role_id, menu_id) +) engine=innodb comment = '角色和菜单关联表'; + +-- ---------------------------- +-- 初始化-角色和菜单关联表数据 +-- ---------------------------- +insert into sys_role_menu values ('2', '1'); +insert into sys_role_menu values ('2', '2'); +insert into sys_role_menu values ('2', '3'); +insert into sys_role_menu values ('2', '4'); +insert into sys_role_menu values ('2', '100'); +insert into sys_role_menu values ('2', '101'); +insert into sys_role_menu values ('2', '102'); +insert into sys_role_menu values ('2', '103'); +insert into sys_role_menu values ('2', '104'); +insert into sys_role_menu values ('2', '105'); +insert into sys_role_menu values ('2', '106'); +insert into sys_role_menu values ('2', '107'); +insert into sys_role_menu values ('2', '108'); +insert into sys_role_menu values ('2', '109'); +insert into sys_role_menu values ('2', '110'); +insert into sys_role_menu values ('2', '111'); +insert into sys_role_menu values ('2', '112'); +insert into sys_role_menu values ('2', '113'); +insert into sys_role_menu values ('2', '114'); +insert into sys_role_menu values ('2', '115'); +insert into sys_role_menu values ('2', '116'); +insert into sys_role_menu values ('2', '500'); +insert into sys_role_menu values ('2', '501'); +insert into sys_role_menu values ('2', '1000'); +insert into sys_role_menu values ('2', '1001'); +insert into sys_role_menu values ('2', '1002'); +insert into sys_role_menu values ('2', '1003'); +insert into sys_role_menu values ('2', '1004'); +insert into sys_role_menu values ('2', '1005'); +insert into sys_role_menu values ('2', '1006'); +insert into sys_role_menu values ('2', '1007'); +insert into sys_role_menu values ('2', '1008'); +insert into sys_role_menu values ('2', '1009'); +insert into sys_role_menu values ('2', '1010'); +insert into sys_role_menu values ('2', '1011'); +insert into sys_role_menu values ('2', '1012'); +insert into sys_role_menu values ('2', '1013'); +insert into sys_role_menu values ('2', '1014'); +insert into sys_role_menu values ('2', '1015'); +insert into sys_role_menu values ('2', '1016'); +insert into sys_role_menu values ('2', '1017'); +insert into sys_role_menu values ('2', '1018'); +insert into sys_role_menu values ('2', '1019'); +insert into sys_role_menu values ('2', '1020'); +insert into sys_role_menu values ('2', '1021'); +insert into sys_role_menu values ('2', '1022'); +insert into sys_role_menu values ('2', '1023'); +insert into sys_role_menu values ('2', '1024'); +insert into sys_role_menu values ('2', '1025'); +insert into sys_role_menu values ('2', '1026'); +insert into sys_role_menu values ('2', '1027'); +insert into sys_role_menu values ('2', '1028'); +insert into sys_role_menu values ('2', '1029'); +insert into sys_role_menu values ('2', '1030'); +insert into sys_role_menu values ('2', '1031'); +insert into sys_role_menu values ('2', '1032'); +insert into sys_role_menu values ('2', '1033'); +insert into sys_role_menu values ('2', '1034'); +insert into sys_role_menu values ('2', '1035'); +insert into sys_role_menu values ('2', '1036'); +insert into sys_role_menu values ('2', '1037'); +insert into sys_role_menu values ('2', '1038'); +insert into sys_role_menu values ('2', '1039'); +insert into sys_role_menu values ('2', '1040'); +insert into sys_role_menu values ('2', '1041'); +insert into sys_role_menu values ('2', '1042'); +insert into sys_role_menu values ('2', '1043'); +insert into sys_role_menu values ('2', '1044'); +insert into sys_role_menu values ('2', '1045'); +insert into sys_role_menu values ('2', '1046'); +insert into sys_role_menu values ('2', '1047'); +insert into sys_role_menu values ('2', '1048'); +insert into sys_role_menu values ('2', '1049'); +insert into sys_role_menu values ('2', '1050'); +insert into sys_role_menu values ('2', '1051'); +insert into sys_role_menu values ('2', '1052'); +insert into sys_role_menu values ('2', '1053'); +insert into sys_role_menu values ('2', '1054'); +insert into sys_role_menu values ('2', '1055'); +insert into sys_role_menu values ('2', '1056'); +insert into sys_role_menu values ('2', '1057'); +insert into sys_role_menu values ('2', '1058'); +insert into sys_role_menu values ('2', '1059'); +insert into sys_role_menu values ('2', '1060'); + +-- ---------------------------- +-- 8、角色和部门关联表 角色1-N部门 +-- ---------------------------- +drop table if exists sys_role_dept; +create table sys_role_dept ( + role_id bigint(20) not null comment '角色ID', + dept_id bigint(20) not null comment '部门ID', + primary key(role_id, dept_id) +) engine=innodb comment = '角色和部门关联表'; + +-- ---------------------------- +-- 初始化-角色和部门关联表数据 +-- ---------------------------- +insert into sys_role_dept values ('2', '100'); +insert into sys_role_dept values ('2', '101'); +insert into sys_role_dept values ('2', '105'); + + +-- ---------------------------- +-- 9、用户与岗位关联表 用户1-N岗位 +-- ---------------------------- +drop table if exists sys_user_post; +create table sys_user_post +( + user_id bigint(20) not null comment '用户ID', + post_id bigint(20) not null comment '岗位ID', + primary key (user_id, post_id) +) engine=innodb comment = '用户与岗位关联表'; + +-- ---------------------------- +-- 初始化-用户与岗位关联表数据 +-- ---------------------------- +insert into sys_user_post values ('1', '1'); +insert into sys_user_post values ('2', '2'); + + +-- ---------------------------- +-- 10、操作日志记录 +-- ---------------------------- +drop table if exists sys_oper_log; +create table sys_oper_log ( + oper_id bigint(20) not null auto_increment comment '日志主键', + title varchar(50) default '' comment '模块标题', + business_type int(2) default 0 comment '业务类型(0其它 1新增 2修改 3删除)', + method varchar(100) default '' comment '方法名称', + request_method varchar(10) default '' comment '请求方式', + operator_type int(1) default 0 comment '操作类别(0其它 1后台用户 2手机端用户)', + oper_name varchar(50) default '' comment '操作人员', + dept_name varchar(50) default '' comment '部门名称', + oper_url varchar(255) default '' comment '请求URL', + oper_ip varchar(128) default '' comment '主机地址', + oper_location varchar(255) default '' comment '操作地点', + oper_param varchar(2000) default '' comment '请求参数', + json_result varchar(2000) default '' comment '返回参数', + status int(1) default 0 comment '操作状态(0正常 1异常)', + error_msg varchar(2000) default '' comment '错误消息', + oper_time datetime comment '操作时间', + primary key (oper_id) +) engine=innodb auto_increment=100 comment = '操作日志记录'; + + +-- ---------------------------- +-- 11、字典类型表 +-- ---------------------------- +drop table if exists sys_dict_type; +create table sys_dict_type +( + dict_id bigint(20) not null auto_increment comment '字典主键', + dict_name varchar(100) default '' comment '字典名称', + dict_type varchar(100) default '' comment '字典类型', + status char(1) default '0' comment '状态(0正常 1停用)', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default null comment '备注', + primary key (dict_id), + unique (dict_type) +) engine=innodb auto_increment=100 comment = '字典类型表'; + +insert into sys_dict_type values(1, '用户性别', 'sys_user_sex', '0', 'admin', sysdate(), '', null, '用户性别列表'); +insert into sys_dict_type values(2, '菜单状态', 'sys_show_hide', '0', 'admin', sysdate(), '', null, '菜单状态列表'); +insert into sys_dict_type values(3, '系统开关', 'sys_normal_disable', '0', 'admin', sysdate(), '', null, '系统开关列表'); +insert into sys_dict_type values(4, '任务状态', 'sys_job_status', '0', 'admin', sysdate(), '', null, '任务状态列表'); +insert into sys_dict_type values(5, '任务分组', 'sys_job_group', '0', 'admin', sysdate(), '', null, '任务分组列表'); +insert into sys_dict_type values(6, '系统是否', 'sys_yes_no', '0', 'admin', sysdate(), '', null, '系统是否列表'); +insert into sys_dict_type values(7, '通知类型', 'sys_notice_type', '0', 'admin', sysdate(), '', null, '通知类型列表'); +insert into sys_dict_type values(8, '通知状态', 'sys_notice_status', '0', 'admin', sysdate(), '', null, '通知状态列表'); +insert into sys_dict_type values(9, '操作类型', 'sys_oper_type', '0', 'admin', sysdate(), '', null, '操作类型列表'); +insert into sys_dict_type values(10, '系统状态', 'sys_common_status', '0', 'admin', sysdate(), '', null, '登录状态列表'); + +-- ---------------------------- +-- 12、字典数据表 +-- ---------------------------- +drop table if exists sys_dict_data; +create table sys_dict_data +( + dict_code bigint(20) not null auto_increment comment '字典编码', + dict_sort int(4) default 0 comment '字典排序', + dict_label varchar(100) default '' comment '字典标签', + dict_value varchar(100) default '' comment '字典键值', + dict_type varchar(100) default '' comment '字典类型', + css_class varchar(100) default null comment '样式属性(其他样式扩展)', + list_class varchar(100) default null comment '表格回显样式', + is_default char(1) default 'N' comment '是否默认(Y是 N否)', + status char(1) default '0' comment '状态(0正常 1停用)', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default null comment '备注', + primary key (dict_code) +) engine=innodb auto_increment=100 comment = '字典数据表'; + +insert into sys_dict_data values(1, 1, '男', '0', 'sys_user_sex', '', '', 'Y', '0', 'admin', sysdate(), '', null, '性别男'); +insert into sys_dict_data values(2, 2, '女', '1', 'sys_user_sex', '', '', 'N', '0', 'admin', sysdate(), '', null, '性别女'); +insert into sys_dict_data values(3, 3, '未知', '2', 'sys_user_sex', '', '', 'N', '0', 'admin', sysdate(), '', null, '性别未知'); +insert into sys_dict_data values(4, 1, '显示', '0', 'sys_show_hide', '', 'primary', 'Y', '0', 'admin', sysdate(), '', null, '显示菜单'); +insert into sys_dict_data values(5, 2, '隐藏', '1', 'sys_show_hide', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '隐藏菜单'); +insert into sys_dict_data values(6, 1, '正常', '0', 'sys_normal_disable', '', 'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态'); +insert into sys_dict_data values(7, 2, '停用', '1', 'sys_normal_disable', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '停用状态'); +insert into sys_dict_data values(8, 1, '正常', '0', 'sys_job_status', '', 'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态'); +insert into sys_dict_data values(9, 2, '暂停', '1', 'sys_job_status', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '停用状态'); +insert into sys_dict_data values(10, 1, '默认', 'DEFAULT', 'sys_job_group', '', '', 'Y', '0', 'admin', sysdate(), '', null, '默认分组'); +insert into sys_dict_data values(11, 2, '系统', 'SYSTEM', 'sys_job_group', '', '', 'N', '0', 'admin', sysdate(), '', null, '系统分组'); +insert into sys_dict_data values(12, 1, '是', 'Y', 'sys_yes_no', '', 'primary', 'Y', '0', 'admin', sysdate(), '', null, '系统默认是'); +insert into sys_dict_data values(13, 2, '否', 'N', 'sys_yes_no', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '系统默认否'); +insert into sys_dict_data values(14, 1, '通知', '1', 'sys_notice_type', '', 'warning', 'Y', '0', 'admin', sysdate(), '', null, '通知'); +insert into sys_dict_data values(15, 2, '公告', '2', 'sys_notice_type', '', 'success', 'N', '0', 'admin', sysdate(), '', null, '公告'); +insert into sys_dict_data values(16, 1, '正常', '0', 'sys_notice_status', '', 'primary', 'Y', '0', 'admin', sysdate(), '', null, '正常状态'); +insert into sys_dict_data values(17, 2, '关闭', '1', 'sys_notice_status', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '关闭状态'); +insert into sys_dict_data values(18, 1, '新增', '1', 'sys_oper_type', '', 'info', 'N', '0', 'admin', sysdate(), '', null, '新增操作'); +insert into sys_dict_data values(19, 2, '修改', '2', 'sys_oper_type', '', 'info', 'N', '0', 'admin', sysdate(), '', null, '修改操作'); +insert into sys_dict_data values(20, 3, '删除', '3', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '删除操作'); +insert into sys_dict_data values(21, 4, '授权', '4', 'sys_oper_type', '', 'primary', 'N', '0', 'admin', sysdate(), '', null, '授权操作'); +insert into sys_dict_data values(22, 5, '导出', '5', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate(), '', null, '导出操作'); +insert into sys_dict_data values(23, 6, '导入', '6', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate(), '', null, '导入操作'); +insert into sys_dict_data values(24, 7, '强退', '7', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '强退操作'); +insert into sys_dict_data values(25, 8, '生成代码', '8', 'sys_oper_type', '', 'warning', 'N', '0', 'admin', sysdate(), '', null, '生成操作'); +insert into sys_dict_data values(26, 9, '清空数据', '9', 'sys_oper_type', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '清空操作'); +insert into sys_dict_data values(27, 1, '成功', '0', 'sys_common_status', '', 'primary', 'N', '0', 'admin', sysdate(), '', null, '正常状态'); +insert into sys_dict_data values(28, 2, '失败', '1', 'sys_common_status', '', 'danger', 'N', '0', 'admin', sysdate(), '', null, '停用状态'); + + +-- ---------------------------- +-- 13、参数配置表 +-- ---------------------------- +drop table if exists sys_config; +create table sys_config ( + config_id int(5) not null auto_increment comment '参数主键', + config_name varchar(100) default '' comment '参数名称', + config_key varchar(100) default '' comment '参数键名', + config_value varchar(500) default '' comment '参数键值', + config_type char(1) default 'N' comment '系统内置(Y是 N否)', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default null comment '备注', + primary key (config_id) +) engine=innodb auto_increment=100 comment = '参数配置表'; + +insert into sys_config values(1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', sysdate(), '', null, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow' ); +insert into sys_config values(2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', sysdate(), '', null, '初始化密码 123456' ); +insert into sys_config values(3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', sysdate(), '', null, '深色主题theme-dark,浅色主题theme-light' ); +insert into sys_config values(4, '账号自助-是否开启用户注册功能', 'sys.account.registerUser', 'false', 'Y', 'admin', sysdate(), '', null, '是否开启注册用户功能(true开启,false关闭)'); + + +-- ---------------------------- +-- 14、系统访问记录 +-- ---------------------------- +drop table if exists sys_logininfor; +create table sys_logininfor ( + info_id bigint(20) not null auto_increment comment '访问ID', + user_name varchar(50) default '' comment '用户账号', + ipaddr varchar(128) default '' comment '登录IP地址', + status char(1) default '0' comment '登录状态(0成功 1失败)', + msg varchar(255) default '' comment '提示信息', + access_time datetime comment '访问时间', + primary key (info_id) +) engine=innodb auto_increment=100 comment = '系统访问记录'; + + +-- ---------------------------- +-- 15、定时任务调度表 +-- ---------------------------- +drop table if exists sys_job; +create table sys_job ( + job_id bigint(20) not null auto_increment comment '任务ID', + job_name varchar(64) default '' comment '任务名称', + job_group varchar(64) default 'DEFAULT' comment '任务组名', + invoke_target varchar(500) not null comment '调用目标字符串', + cron_expression varchar(255) default '' comment 'cron执行表达式', + misfire_policy varchar(20) default '3' comment '计划执行错误策略(1立即执行 2执行一次 3放弃执行)', + concurrent char(1) default '1' comment '是否并发执行(0允许 1禁止)', + status char(1) default '0' comment '状态(0正常 1暂停)', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default '' comment '备注信息', + primary key (job_id, job_name, job_group) +) engine=innodb auto_increment=100 comment = '定时任务调度表'; + +insert into sys_job values(1, '系统默认(无参)', 'DEFAULT', 'ryTask.ryNoParams', '0/10 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, ''); +insert into sys_job values(2, '系统默认(有参)', 'DEFAULT', 'ryTask.ryParams(\'ry\')', '0/15 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, ''); +insert into sys_job values(3, '系统默认(多参)', 'DEFAULT', 'ryTask.ryMultipleParams(\'ry\', true, 2000L, 316.50D, 100)', '0/20 * * * * ?', '3', '1', '1', 'admin', sysdate(), '', null, ''); + + +-- ---------------------------- +-- 16、定时任务调度日志表 +-- ---------------------------- +drop table if exists sys_job_log; +create table sys_job_log ( + job_log_id bigint(20) not null auto_increment comment '任务日志ID', + job_name varchar(64) not null comment '任务名称', + job_group varchar(64) not null comment '任务组名', + invoke_target varchar(500) not null comment '调用目标字符串', + job_message varchar(500) comment '日志信息', + status char(1) default '0' comment '执行状态(0正常 1失败)', + exception_info varchar(2000) default '' comment '异常信息', + create_time datetime comment '创建时间', + primary key (job_log_id) +) engine=innodb comment = '定时任务调度日志表'; + + +-- ---------------------------- +-- 17、通知公告表 +-- ---------------------------- +drop table if exists sys_notice; +create table sys_notice ( + notice_id int(4) not null auto_increment comment '公告ID', + notice_title varchar(50) not null comment '公告标题', + notice_type char(1) not null comment '公告类型(1通知 2公告)', + notice_content longblob default null comment '公告内容', + status char(1) default '0' comment '公告状态(0正常 1关闭)', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(255) default null comment '备注', + primary key (notice_id) +) engine=innodb auto_increment=10 comment = '通知公告表'; + +-- ---------------------------- +-- 初始化-公告信息表数据 +-- ---------------------------- +insert into sys_notice values('1', '温馨提醒:2018-07-01 若依新版本发布啦', '2', '新版本内容', '0', 'admin', sysdate(), '', null, '管理员'); +insert into sys_notice values('2', '维护通知:2018-07-01 若依系统凌晨维护', '1', '维护内容', '0', 'admin', sysdate(), '', null, '管理员'); + + +-- ---------------------------- +-- 18、代码生成业务表 +-- ---------------------------- +drop table if exists gen_table; +create table gen_table ( + table_id bigint(20) not null auto_increment comment '编号', + table_name varchar(200) default '' comment '表名称', + table_comment varchar(500) default '' comment '表描述', + sub_table_name varchar(64) default null comment '关联子表的表名', + sub_table_fk_name varchar(64) default null comment '子表关联的外键名', + class_name varchar(100) default '' comment '实体类名称', + tpl_category varchar(200) default 'crud' comment '使用的模板(crud单表操作 tree树表操作)', + package_name varchar(100) comment '生成包路径', + module_name varchar(30) comment '生成模块名', + business_name varchar(30) comment '生成业务名', + function_name varchar(50) comment '生成功能名', + function_author varchar(50) comment '生成功能作者', + gen_type char(1) default '0' comment '生成代码方式(0zip压缩包 1自定义路径)', + gen_path varchar(200) default '/' comment '生成路径(不填默认项目路径)', + options varchar(1000) comment '其它生成选项', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + remark varchar(500) default null comment '备注', + primary key (table_id) +) engine=innodb auto_increment=1 comment = '代码生成业务表'; + + +-- ---------------------------- +-- 19、代码生成业务表字段 +-- ---------------------------- +drop table if exists gen_table_column; +create table gen_table_column ( + column_id bigint(20) not null auto_increment comment '编号', + table_id varchar(64) comment '归属表编号', + column_name varchar(200) comment '列名称', + column_comment varchar(500) comment '列描述', + column_type varchar(100) comment '列类型', + java_type varchar(500) comment 'JAVA类型', + java_field varchar(200) comment 'JAVA字段名', + is_pk char(1) comment '是否主键(1是)', + is_increment char(1) comment '是否自增(1是)', + is_required char(1) comment '是否必填(1是)', + is_insert char(1) comment '是否为插入字段(1是)', + is_edit char(1) comment '是否编辑字段(1是)', + is_list char(1) comment '是否列表字段(1是)', + is_query char(1) comment '是否查询字段(1是)', + query_type varchar(200) default 'EQ' comment '查询方式(等于、不等于、大于、小于、范围)', + html_type varchar(200) comment '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)', + dict_type varchar(200) default '' comment '字典类型', + sort int comment '排序', + create_by varchar(64) default '' comment '创建者', + create_time datetime comment '创建时间', + update_by varchar(64) default '' comment '更新者', + update_time datetime comment '更新时间', + primary key (column_id) +) engine=innodb auto_increment=1 comment = '代码生成业务表字段'; diff --git a/xjs-sql/ry_config_20211118.sql b/xjs-sql/ry_config_20211118.sql new file mode 100644 index 00000000..84bda4e1 --- /dev/null +++ b/xjs-sql/ry_config_20211118.sql @@ -0,0 +1,216 @@ +DROP DATABASE IF EXISTS `xjs-config`; + +CREATE DATABASE `xjs-config` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +USE `xjs-config`; + +/******************************************/ +/* 表名称 = config_info */ +/******************************************/ +CREATE TABLE `config_info` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(255) DEFAULT NULL, + `content` longtext NOT NULL COMMENT 'content', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + `app_name` varchar(128) DEFAULT NULL, + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + `c_desc` varchar(256) DEFAULT NULL, + `c_use` varchar(64) DEFAULT NULL, + `effect` varchar(64) DEFAULT NULL, + `type` varchar(64) DEFAULT NULL, + `c_schema` text, + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info'; + +insert into config_info(id, data_id, group_id, content, md5, gmt_create, gmt_modified, src_user, src_ip, app_name, tenant_id, c_desc, c_use, effect, type, c_schema) values +(1,'application-dev.yml','DEFAULT_GROUP','spring:\n main:\n allow-bean-definition-overriding: true\n autoconfigure:\n exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure\n\n# feign 配置\nfeign:\n sentinel:\n enabled: true\n okhttp:\n enabled: true\n httpclient:\n enabled: false\n client:\n config:\n default:\n connectTimeout: 10000\n readTimeout: 10000\n compression:\n request:\n enabled: true\n response:\n enabled: true\n\n# 暴露监控端点\nmanagement:\n endpoints:\n web:\n exposure:\n include: \'*\'\n','760986157e62a0c1e0dadf9d2a6acf40','2019-11-29 16:31:20','2021-11-16 12:03:58','','0:0:0:0:0:0:0:1','','','通用配置','null','null','yaml','null'), +(2,'ruoyi-gateway-dev.yml','DEFAULT_GROUP','spring:\n redis:\n host: localhost\n port: 6379\n password: \n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n\n# 安全配置\nsecurity:\n # 验证码\n captcha:\n enabled: true\n type: math\n # 防止XSS攻击\n xss:\n enabled: true\n excludeUrls:\n - /system/notice\n # 不校验白名单\n ignore:\n whites:\n - /auth/logout\n - /auth/login\n - /auth/register\n - /*/v2/api-docs\n - /csrf\n','2f5a6b5a4ccf20b5801c5cf842456ec6','2020-05-14 14:17:55','2021-07-30 09:07:14',NULL,'0:0:0:0:0:0:0:1','','','网关模块','null','null','yaml','null'), +(3,'ruoyi-auth-dev.yml','DEFAULT_GROUP','spring: \r\n redis:\r\n host: localhost\r\n port: 6379\r\n password: \r\n','b7354e1eb62c2d846d44a796d9ec6930','2020-11-20 00:00:00','2021-02-28 21:06:58',NULL,'0:0:0:0:0:0:0:1','','','认证中心','null','null','yaml','null'), +(4,'ruoyi-monitor-dev.yml','DEFAULT_GROUP','# spring\r\nspring: \r\n security:\r\n user:\r\n name: ruoyi\r\n password: 123456\r\n boot:\r\n admin:\r\n ui:\r\n title: 若依服务状态监控\r\n','d8997d0707a2fd5d9fc4e8409da38129','2020-11-20 00:00:00','2020-12-21 16:28:07',NULL,'0:0:0:0:0:0:0:1','','','监控中心','null','null','yaml','null'), +(5,'ruoyi-system-dev.yml','DEFAULT_GROUP','# spring配置\r\nspring: \r\n redis:\r\n host: localhost\r\n port: 6379\r\n password: \r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n # 主库数据源\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: password\r\n # 从库数据源\r\n # slave:\r\n # username: \r\n # password: \r\n # url: \r\n # driver-class-name: \r\n # seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭\r\n\r\n# seata配置\r\nseata:\r\n # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启\r\n enabled: false\r\n # Seata 应用编号,默认为 ${spring.application.name}\r\n application-id: ${spring.application.name}\r\n # Seata 事务组编号,用于 TC 集群名\r\n tx-service-group: ${spring.application.name}-group\r\n # 关闭自动代理\r\n enable-auto-data-source-proxy: false\r\n # 服务配置项\r\n service:\r\n # 虚拟组和分组的映射\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 127.0.0.1:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 127.0.0.1:8848\r\n namespace:\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.system\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger配置\r\nswagger:\r\n title: 系统模块接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip','ac8913dee679e65bb7d482df5f267d4e','2020-11-20 00:00:00','2021-01-27 10:42:25',NULL,'0:0:0:0:0:0:0:1','','','系统模块','null','null','yaml','null'), +(6,'ruoyi-gen-dev.yml','DEFAULT_GROUP','# spring配置\r\nspring: \r\n redis:\r\n host: localhost\r\n port: 6379\r\n password: \r\n datasource: \r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: password\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.gen.domain\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger配置\r\nswagger:\r\n title: 代码生成接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n\r\n# 代码生成\r\ngen: \r\n # 作者\r\n author: ruoyi\r\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\r\n packageName: com.ruoyi.system\r\n # 自动去除表前缀,默认是false\r\n autoRemovePre: false\r\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\r\n tablePrefix: sys_\r\n','8c79f64a4cca9b821a03dc8b27a2d8eb','2020-11-20 00:00:00','2021-01-26 10:36:45',NULL,'0:0:0:0:0:0:0:1','','','代码生成','null','null','yaml','null'), +(7,'ruoyi-job-dev.yml','DEFAULT_GROUP','# spring配置\r\nspring: \r\n redis:\r\n host: localhost\r\n port: 6379\r\n password: \r\n datasource:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: password\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.job.domain\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger配置\r\nswagger:\r\n title: 定时任务接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n','d6dfade9a2c93c463ae857cd503cb172','2020-11-20 00:00:00','2021-01-26 10:36:04',NULL,'0:0:0:0:0:0:0:1','','','定时任务','null','null','yaml','null'), +(8,'ruoyi-file-dev.yml','DEFAULT_GROUP','# 本地文件上传 \r\nfile:\r\n domain: http://127.0.0.1:9300\r\n path: D:/ruoyi/uploadPath\r\n prefix: /statics\r\n\r\n# FastDFS配置\r\nfdfs:\r\n domain: http://8.129.231.12\r\n soTimeout: 3000\r\n connectTimeout: 2000\r\n trackerList: 8.129.231.12:22122\r\n\r\n# Minio配置\r\nminio:\r\n url: http://8.129.231.12:9000\r\n accessKey: minioadmin\r\n secretKey: minioadmin\r\n bucketName: test','5382b93f3d8059d6068c0501fdd41195','2020-11-20 00:00:00','2020-12-21 21:01:59',NULL,'0:0:0:0:0:0:0:1','','','文件服务','null','null','yaml','null'), +(9,'sentinel-ruoyi-gateway','DEFAULT_GROUP','[\r\n {\r\n \"resource\": \"ruoyi-auth\",\r\n \"count\": 500,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-system\",\r\n \"count\": 1000,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-gen\",\r\n \"count\": 200,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n },\r\n {\r\n \"resource\": \"ruoyi-job\",\r\n \"count\": 300,\r\n \"grade\": 1,\r\n \"limitApp\": \"default\",\r\n \"strategy\": 0,\r\n \"controlBehavior\": 0\r\n }\r\n]','9f3a3069261598f74220bc47958ec252','2020-11-20 00:00:00','2020-11-20 00:00:00',NULL,'0:0:0:0:0:0:0:1','','','限流策略','null','null','json','null'); + + +/******************************************/ +/* 表名称 = config_info_aggr */ +/******************************************/ +CREATE TABLE `config_info_aggr` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(255) NOT NULL COMMENT 'group_id', + `datum_id` varchar(255) NOT NULL COMMENT 'datum_id', + `content` longtext NOT NULL COMMENT '内容', + `gmt_modified` datetime NOT NULL COMMENT '修改时间', + `app_name` varchar(128) DEFAULT NULL, + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段'; + + +/******************************************/ +/* 表名称 = config_info_beta */ +/******************************************/ +CREATE TABLE `config_info_beta` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL COMMENT 'content', + `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta'; + +/******************************************/ +/* 表名称 = config_info_tag */ +/******************************************/ +CREATE TABLE `config_info_tag` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', + `tag_id` varchar(128) NOT NULL COMMENT 'tag_id', + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL COMMENT 'content', + `md5` varchar(32) DEFAULT NULL COMMENT 'md5', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + `src_user` text COMMENT 'source user', + `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag'; + +/******************************************/ +/* 表名称 = config_tags_relation */ +/******************************************/ +CREATE TABLE `config_tags_relation` ( + `id` bigint(20) NOT NULL COMMENT 'id', + `tag_name` varchar(128) NOT NULL COMMENT 'tag_name', + `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type', + `data_id` varchar(255) NOT NULL COMMENT 'data_id', + `group_id` varchar(128) NOT NULL COMMENT 'group_id', + `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id', + `nid` bigint(20) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`nid`), + UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`), + KEY `idx_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation'; + +/******************************************/ +/* 表名称 = group_capacity */ +/******************************************/ +CREATE TABLE `group_capacity` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群', + `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', + `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', + `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', + `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值', + `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', + `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_group_id` (`group_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表'; + +/******************************************/ +/* 表名称 = his_config_info */ +/******************************************/ +CREATE TABLE `his_config_info` ( + `id` bigint(64) unsigned NOT NULL, + `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT, + `data_id` varchar(255) NOT NULL, + `group_id` varchar(128) NOT NULL, + `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name', + `content` longtext NOT NULL, + `md5` varchar(32) DEFAULT NULL, + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, + `src_user` text, + `src_ip` varchar(50) DEFAULT NULL, + `op_type` char(10) DEFAULT NULL, + `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段', + PRIMARY KEY (`nid`), + KEY `idx_gmt_create` (`gmt_create`), + KEY `idx_gmt_modified` (`gmt_modified`), + KEY `idx_did` (`data_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造'; + + +/******************************************/ +/* 数据库全名 = nacos_config */ +/* 表名称 = tenant_capacity */ +/******************************************/ +CREATE TABLE `tenant_capacity` ( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID', + `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值', + `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量', + `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值', + `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数', + `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值', + `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量', + `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表'; + + +CREATE TABLE `tenant_info` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `kp` varchar(128) NOT NULL COMMENT 'kp', + `tenant_id` varchar(128) default '' COMMENT 'tenant_id', + `tenant_name` varchar(128) default '' COMMENT 'tenant_name', + `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc', + `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source', + `gmt_create` bigint(20) NOT NULL COMMENT '创建时间', + `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间', + PRIMARY KEY (`id`), + UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`), + KEY `idx_tenant_id` (`tenant_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info'; + +CREATE TABLE `users` ( + `username` varchar(50) NOT NULL PRIMARY KEY, + `password` varchar(500) NOT NULL, + `enabled` boolean NOT NULL +); + +CREATE TABLE `roles` ( + `username` varchar(50) NOT NULL, + `role` varchar(50) NOT NULL, + UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE +); + +CREATE TABLE `permissions` ( + `role` varchar(50) NOT NULL, + `resource` varchar(255) NOT NULL, + `action` varchar(8) NOT NULL, + UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE +); + +INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE); + +INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN'); diff --git a/xjs-sql/ry_seata_20210128.sql b/xjs-sql/ry_seata_20210128.sql new file mode 100644 index 00000000..d365e97d --- /dev/null +++ b/xjs-sql/ry_seata_20210128.sql @@ -0,0 +1,80 @@ +DROP DATABASE IF EXISTS `xjs-seata`; + +CREATE DATABASE `xjs-seata` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +USE `xjs-seata`; + +-- -------------------------------- The script used when storeMode is 'db' -------------------------------- +-- the table to store GlobalSession data +CREATE TABLE IF NOT EXISTS `global_table` +( + `xid` VARCHAR(128) NOT NULL, + `transaction_id` BIGINT, + `status` TINYINT NOT NULL, + `application_id` VARCHAR(32), + `transaction_service_group` VARCHAR(32), + `transaction_name` VARCHAR(128), + `timeout` INT, + `begin_time` BIGINT, + `application_data` VARCHAR(2000), + `gmt_create` DATETIME, + `gmt_modified` DATETIME, + PRIMARY KEY (`xid`), + KEY `idx_gmt_modified_status` (`gmt_modified`, `status`), + KEY `idx_transaction_id` (`transaction_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4; + +-- the table to store BranchSession data +CREATE TABLE IF NOT EXISTS `branch_table` +( + `branch_id` BIGINT NOT NULL, + `xid` VARCHAR(128) NOT NULL, + `transaction_id` BIGINT, + `resource_group_id` VARCHAR(32), + `resource_id` VARCHAR(256), + `branch_type` VARCHAR(8), + `status` TINYINT, + `client_id` VARCHAR(64), + `application_data` VARCHAR(2000), + `gmt_create` DATETIME(6), + `gmt_modified` DATETIME(6), + PRIMARY KEY (`branch_id`), + KEY `idx_xid` (`xid`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4; + +-- the table to store lock data +CREATE TABLE IF NOT EXISTS `lock_table` +( + `row_key` VARCHAR(128) NOT NULL, + `xid` VARCHAR(96), + `transaction_id` BIGINT, + `branch_id` BIGINT NOT NULL, + `resource_id` VARCHAR(256), + `table_name` VARCHAR(32), + `pk` VARCHAR(36), + `gmt_create` DATETIME, + `gmt_modified` DATETIME, + PRIMARY KEY (`row_key`), + KEY `idx_branch_id` (`branch_id`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4; + +-- for AT mode you must to init this sql for you business database. the seata server not need it. +CREATE TABLE IF NOT EXISTS `undo_log` +( + `branch_id` BIGINT(20) NOT NULL COMMENT 'branch transaction id', + `xid` VARCHAR(100) NOT NULL COMMENT 'global transaction id', + `context` VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization', + `rollback_info` LONGBLOB NOT NULL COMMENT 'rollback info', + `log_status` INT(11) NOT NULL COMMENT '0:normal status,1:defense status', + `log_created` DATETIME(6) NOT NULL COMMENT 'create datetime', + `log_modified` DATETIME(6) NOT NULL COMMENT 'modify datetime', + UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`) +) ENGINE = InnoDB + AUTO_INCREMENT = 1 + DEFAULT CHARSET = utf8mb4 COMMENT ='AT transaction mode undo table'; \ No newline at end of file From a86f84e4a1e33043b780986b9561ba08def36a52 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 26 Dec 2021 09:48:34 +0800 Subject: [PATCH 03/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E7=99=BE=E5=BA=A6=E3=80=81=E6=9C=89=E9=81=93?= =?UTF-8?q?=E7=BF=BB=E8=AF=91API=202=E3=80=81=E5=AE=9E=E7=8E=B0=E4=BA=86?= =?UTF-8?q?=E4=BB=A5=E4=B8=8A=E4=B8=A4=E4=B8=AA=E6=8E=A5=E5=8F=A3=203?= =?UTF-8?q?=E3=80=81=E5=9C=A8business=E6=A8=A1=E5=9D=97=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BA=86hutools=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../annotation/EnableRyFeignClients.java | 2 +- xjs-business/pom.xml | 20 ++++++ .../xjs/english/client/BaiduFeignClient.java | 19 ++++++ .../xjs/english/client/YouDaoFeignClient.java | 21 ++++++ .../xjs/english/config/BaiduProperties.java | 28 ++++++++ .../com/xjs/english/config/FeignConfig.java | 22 +++++++ .../english/consts/TranslationTypeConst.java | 12 ++++ .../controller/TranslationController.java | 39 +++++++++++ .../qo/translation/BaiDuTranslationQo.java | 48 ++++++++++++++ .../domain/qo/translation/TranslationQo.java | 36 +++++++++++ .../qo/translation/YouDaoTranslationQo.java | 30 +++++++++ .../vo/translation/GoogleTranslationVo.java | 11 ++++ .../domain/vo/translation/TranslationVo.java | 52 +++++++++++++++ .../english/exception/BusinessException.java | 24 +++++++ .../english/service/TranslationService.java | 22 +++++++ .../impl/BaiDuTranslationServiceImpl.java | 64 +++++++++++++++++++ .../impl/YouDaoTranslationServiceImpl.java | 63 ++++++++++++++++++ .../impl/BaiDuTranslationServiceImplTest.java | 30 +++++++++ .../YouDaoTranslationServiceImplTest.java | 31 +++++++++ 19 files changed, 573 insertions(+), 1 deletion(-) create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/exception/BusinessException.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/TranslationService.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java create mode 100644 xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/BaiDuTranslationServiceImplTest.java create mode 100644 xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/YouDaoTranslationServiceImplTest.java diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java index 066e8349..9cf97fee 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/annotation/EnableRyFeignClients.java @@ -17,7 +17,7 @@ public @interface EnableRyFeignClients { String[] value() default {}; - String[] basePackages() default { "com.ruoyi" }; + String[] basePackages() default { "com.ruoyi" ,"com.xjs"}; Class[] basePackageClasses() default {}; diff --git a/xjs-business/pom.xml b/xjs-business/pom.xml index df25d204..0c0c494b 100644 --- a/xjs-business/pom.xml +++ b/xjs-business/pom.xml @@ -21,6 +21,7 @@ 11 11 3.4.3.4 + 5.7.17 @@ -92,6 +93,25 @@ ${mybatisplus.version} + + + org.projectlombok + lombok + + + + + org.springframework.boot + spring-boot-starter-test + + + + + cn.hutool + hutool-all + ${hutool.version} + + diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java new file mode 100644 index 00000000..0fd1fbf8 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java @@ -0,0 +1,19 @@ +package com.xjs.english.client; + +import com.xjs.english.domain.qo.translation.BaiDuTranslationQo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.PostMapping; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@FeignClient(name = "baidu",url = "http://api.fanyi.baidu.com/api/trans/vip/translate?") +public interface BaiduFeignClient { + + @PostMapping(headers = {"Content-Type=application/x-www-form-urlencoded"}) + String translationApi(BaiDuTranslationQo qo); + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java new file mode 100644 index 00000000..fa4e9c69 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java @@ -0,0 +1,21 @@ +package com.xjs.english.client; + +import com.alibaba.fastjson.JSONObject; +import com.xjs.english.domain.qo.translation.YouDaoTranslationQo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.cloud.openfeign.SpringQueryMap; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@FeignClient(name = "youdao",url = "http://fanyi.youdao.com/translate?") +public interface YouDaoFeignClient { + + @GetMapping( headers ={ "Accept-Encoding=''"}) + JSONObject translationApi(@SpringQueryMap YouDaoTranslationQo qo); +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java new file mode 100644 index 00000000..7153600b --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java @@ -0,0 +1,28 @@ +package com.xjs.english.config; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@Data +@ConfigurationProperties(prefix = "baidu.open") +@Component +public class BaiduProperties { + + /** + * APP ID + */ + private String appId; + + /** + * 密钥 + */ + private String key; + + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java new file mode 100644 index 00000000..48a3f614 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java @@ -0,0 +1,22 @@ +package com.xjs.english.config; + +import feign.Logger; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@Configuration +public class FeignConfig{ + /** + * 配置日志输出 + * @return + */ + @Bean + Logger.Level feignLoggerLevel() { + return Logger.Level.FULL; + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java new file mode 100644 index 00000000..b1ed689b --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java @@ -0,0 +1,12 @@ +package com.xjs.english.consts; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +public interface TranslationTypeConst { + Integer BAIDU = 1; + Integer YOUDAO = 2; + Integer GOOGLE = 3; +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java new file mode 100644 index 00000000..05ac396a --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java @@ -0,0 +1,39 @@ +package com.xjs.english.controller; + +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.xjs.english.domain.qo.translation.TranslationQo; +import com.xjs.english.domain.vo.translation.TranslationVo; +import com.xjs.english.service.TranslationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import static com.xjs.english.consts.TranslationTypeConst.BAIDU; +import static com.xjs.english.consts.TranslationTypeConst.YOUDAO; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@RestController +@RequestMapping("translation") +public class TranslationController { + + @Autowired + private TranslationService youDaoTranslationServiceImpl; + @Autowired + private TranslationService baiDuTranslationServiceImpl; + + @PostMapping + public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) { + TranslationVo translationVo=new TranslationVo(); + if (BAIDU.equals(translationQo.getTranslationType())) { + translationVo = baiDuTranslationServiceImpl.translationApi(translationQo); + } + if (YOUDAO.equals(translationQo.getTranslationType())) { + translationVo = youDaoTranslationServiceImpl.translationApi(translationQo); + } + return AjaxResult.success(translationVo); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java new file mode 100644 index 00000000..d9d22137 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java @@ -0,0 +1,48 @@ +package com.xjs.english.domain.qo.translation; + +import lombok.Data; + +/** + * @author xiejs + * @desc 百度翻译条件 + * @create 2021-12-25 + */ +@Data +public class BaiDuTranslationQo { + /** + * appid + */ + private String appid; + + /** + * 密钥 + */ + private String key; + + /** + * 需要翻译的词 + */ + private String q; + + /** + * 翻译目标语言 + */ + private String to ; + + + /** + * 翻译源语言 + */ + private String from = "auto"; + + + /** + * 盐(随机数) + */ + private String salt = "xjsisyourfatter"; + + /** + * 签名(appid+query+salt+key的MD5值) + */ + private String sign; +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java new file mode 100644 index 00000000..55af146d --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java @@ -0,0 +1,36 @@ +package com.xjs.english.domain.qo.translation; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author xiejs + * @desc 翻译条件 + * @create 2021-12-25 + */ +@Data +public class TranslationQo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 需要翻译的词(前端可以指定翻译词) + */ + @NotBlank(message = "翻译内容不能为空") + private String q="你傻吗,大傻逼?嗯,哈哈哈"; + + /** + * 翻译目标语言(前端可以指定目标语言) + */ + private String to = "auto"; + + /** + * 翻译api类型(例如:有道、谷歌、百度等) + * 1、百度 2、有道 3、谷歌 4 ... + */ + @NotNull(message = "翻译api类型不能为空") + private Integer translationType; +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java new file mode 100644 index 00000000..4a38538e --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java @@ -0,0 +1,30 @@ +package com.xjs.english.domain.qo.translation; + +import lombok.Data; + +/** + * @author xiejs + * @desc 有道翻译条件实体 + * @create 2021-12-25 + */ +@Data +public class YouDaoTranslationQo{ + + /** + * 响应类型 + */ + private String doctype="json"; + + /** + * 目标语言(有道的目标语言无效,中转英、英转中) + */ + private String type; + + /** + * 翻译的内容 + */ + private String i ; + + + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java new file mode 100644 index 00000000..17460360 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java @@ -0,0 +1,11 @@ +package com.xjs.english.domain.vo.translation; + +/** + * @author xiejs + * @desc 谷歌翻译实体 + * @create 2021-12-25 + */ +public class GoogleTranslationVo extends TranslationVo { + + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java new file mode 100644 index 00000000..3b653b00 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java @@ -0,0 +1,52 @@ +package com.xjs.english.domain.vo.translation; + +import lombok.Data; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +/** + * @author xiejs + * @desc 翻译实体类VO + * @create 2021-12-25 + */ +@Data +public class TranslationVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 源语言 + */ + private String from; + + /** + * 目标语言 + */ + private String to; + + /** + * 翻译结果 + */ + private List> transResult; + + /** + * 是否错误 + */ + private Long errorCode; + + + /** + * 运行时间,单位毫秒 + */ + private Long elapsedTime; + + + /** + * 语言类型 + */ + private String type; + + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/exception/BusinessException.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/exception/BusinessException.java new file mode 100644 index 00000000..3951fa22 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/exception/BusinessException.java @@ -0,0 +1,24 @@ +package com.xjs.english.exception; + +import lombok.extern.log4j.Log4j2; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@Log4j2 +public class BusinessException extends RuntimeException{ + public BusinessException() { + super(); + } + + public BusinessException(String message) { + super(message); + log.error("业务异常----{}",message); + } + + public BusinessException(String message, Throwable cause) { + super(message, cause); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/TranslationService.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/TranslationService.java new file mode 100644 index 00000000..c5653700 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/TranslationService.java @@ -0,0 +1,22 @@ +package com.xjs.english.service; + +import com.xjs.english.domain.qo.translation.TranslationQo; +import com.xjs.english.domain.vo.translation.TranslationVo; + +/** + * @author xiejs + * @desc 翻译统一调用接口 + * @create 2021-12-25 + */ +public interface TranslationService { + + /** + * 调用百度翻译接口 + * @param translationQo 翻译条件封装 + * @return 翻译结果封装 + */ + TranslationVo translationApi(TranslationQo translationQo); + + + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java new file mode 100644 index 00000000..94893ad3 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java @@ -0,0 +1,64 @@ +package com.xjs.english.service.impl; + +import cn.hutool.crypto.SecureUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xjs.english.client.BaiduFeignClient; +import com.xjs.english.config.BaiduProperties; +import com.xjs.english.domain.qo.translation.BaiDuTranslationQo; +import com.xjs.english.domain.qo.translation.TranslationQo; +import com.xjs.english.domain.vo.translation.TranslationVo; +import com.xjs.english.exception.BusinessException; +import com.xjs.english.service.TranslationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.*; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@Service +public class BaiDuTranslationServiceImpl implements TranslationService { + + @Autowired + private BaiduProperties baiduProperties; + @Autowired + private BaiduFeignClient baiduFeignClient; + + + @Override + public TranslationVo translationApi(TranslationQo translationQo) { + String appId = baiduProperties.getAppId(); + BaiDuTranslationQo baiDuTranslationQo = new BaiDuTranslationQo(); + baiDuTranslationQo.setAppid(appId); + String key = baiduProperties.getKey(); + //生成签名(appid+q+salt+密钥的MD5值) + String append = appId + translationQo.getQ() + baiDuTranslationQo.getSalt() + key; + String sign = SecureUtil.md5(append); + baiDuTranslationQo.setSign(sign); + baiDuTranslationQo.setQ(translationQo.getQ()); + baiDuTranslationQo.setTo(translationQo.getTo()); + String translationStr = baiduFeignClient.translationApi(baiDuTranslationQo); + JSONObject jsonObject = JSONObject.parseObject(translationStr); + if(Objects.nonNull(jsonObject.getString("error_code"))){ + throw new BusinessException("百度翻译接口调用异常"); + } + TranslationVo translationVo = new TranslationVo(); + String from = jsonObject.getString("from"); + String to = jsonObject.getString("to"); + String transResultStr = jsonObject.getString("trans_result"); + JSONArray jsonArray = JSONObject.parseArray(transResultStr); + HashMap map = new HashMap<>(); + List> maps = new ArrayList<>(); + map.put("src", jsonArray.getJSONObject(0).getString("src")); + map.put("dst", jsonArray.getJSONObject(0).getString("dst")); + maps.add(map); + translationVo.setFrom(from); + translationVo.setTo(to); + translationVo.setTransResult(maps); + return translationVo; + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java new file mode 100644 index 00000000..50465036 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java @@ -0,0 +1,63 @@ +package com.xjs.english.service.impl; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.xjs.english.client.BaiduFeignClient; +import com.xjs.english.client.YouDaoFeignClient; +import com.xjs.english.domain.qo.translation.TranslationQo; +import com.xjs.english.domain.qo.translation.YouDaoTranslationQo; +import com.xjs.english.domain.vo.translation.TranslationVo; +import com.xjs.english.exception.BusinessException; +import com.xjs.english.service.TranslationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@Service +public class YouDaoTranslationServiceImpl implements TranslationService { + + @Autowired + private YouDaoFeignClient youDaoFeignClient; + + @Override + public TranslationVo translationApi(TranslationQo translationQo) { + YouDaoTranslationQo youDaoTranslationQo = new YouDaoTranslationQo(); + youDaoTranslationQo.setI(translationQo.getQ()); + youDaoTranslationQo.setType(translationQo.getTo()); + + JSONObject translationApi = youDaoFeignClient.translationApi(youDaoTranslationQo); + if(!"0".equals(translationApi.getString("errorCode"))){ + throw new BusinessException("有道翻译接口调用异常"); + } + String type = translationApi.getString("type"); + TranslationVo translationVo = new TranslationVo(); + translationVo.setType(type); + Long errorCode =Long.parseLong(translationApi.getString("errorCode")); + translationVo.setErrorCode(errorCode); + long elapsedTime = Long.parseLong(translationApi.getString("elapsedTime")); + translationVo.setElapsedTime(elapsedTime); + JSONArray translateResult = translationApi.getJSONArray("translateResult"); + JSONArray jsonArray = translateResult.getJSONArray(0); + System.out.println(jsonArray); + ArrayList> maps = new ArrayList<>(); + if (jsonArray.size() > 0) { + for (int i = 0; i < jsonArray.size(); i++) { + Map map = new HashMap(); + map.put("src", jsonArray.getJSONObject(i).getString("src")); + map.put("tgt", jsonArray.getJSONObject(i).getString("tgt")); + maps.add(map); + } + } + translationVo.setTransResult(maps); + return translationVo; + } +} diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/BaiDuTranslationServiceImplTest.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/BaiDuTranslationServiceImplTest.java new file mode 100644 index 00000000..af118587 --- /dev/null +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/BaiDuTranslationServiceImplTest.java @@ -0,0 +1,30 @@ +package com.xjs.english.service.impl; + +import com.xjs.english.XjsEnglishApp; +import com.xjs.english.domain.qo.translation.BaiDuTranslationQo; +import com.xjs.english.domain.qo.translation.TranslationQo; +import com.xjs.english.domain.vo.translation.TranslationVo; +import com.xjs.english.service.TranslationService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@SpringBootTest(classes = XjsEnglishApp.class) +class BaiDuTranslationServiceImplTest { + @Resource(name = "baiDuTranslationServiceImpl") + TranslationService translationService; + + @org.junit.jupiter.api.Test + void handlerTranslationApi() { + TranslationVo translationVo = translationService.translationApi(new TranslationQo()); + System.out.println(translationVo); + } +} \ No newline at end of file diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/YouDaoTranslationServiceImplTest.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/YouDaoTranslationServiceImplTest.java new file mode 100644 index 00000000..4f75a513 --- /dev/null +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/YouDaoTranslationServiceImplTest.java @@ -0,0 +1,31 @@ +package com.xjs.english.service.impl; + +import com.xjs.english.XjsEnglishApp; +import com.xjs.english.domain.qo.translation.TranslationQo; +import com.xjs.english.domain.vo.translation.TranslationVo; +import com.xjs.english.service.TranslationService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import javax.annotation.Resource; + +import static org.junit.jupiter.api.Assertions.*; + +/** + * @author xiejs + * @desc + * @create 2021-12-25 + */ +@SpringBootTest(classes = XjsEnglishApp.class) +class YouDaoTranslationServiceImplTest { + + @Resource(name = "youDaoTranslationServiceImpl") + TranslationService translationService; + + @Test + void translationApi() { + TranslationVo translationVo = translationService.translationApi(new TranslationQo()); + System.out.println(translationVo); + } +} \ No newline at end of file From 08e2a46c9a47c9a79ece92050483e0129339108e Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 26 Dec 2021 10:10:43 +0800 Subject: [PATCH 04/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96swagger2=E6=96=87=E6=A1=A3=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xjs/english/controller/TranslationController.java | 4 ++++ .../domain/qo/translation/BaiDuTranslationQo.java | 2 +- .../xjs/english/domain/qo/translation/TranslationQo.java | 9 +++++---- .../domain/qo/translation/YouDaoTranslationQo.java | 2 +- .../service/impl/BaiDuTranslationServiceImpl.java | 1 - .../service/impl/YouDaoTranslationServiceImpl.java | 2 -- 6 files changed, 11 insertions(+), 9 deletions(-) diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java index 05ac396a..28b2bdb5 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java @@ -4,6 +4,8 @@ import com.ruoyi.common.core.web.domain.AjaxResult; import com.xjs.english.domain.qo.translation.TranslationQo; import com.xjs.english.domain.vo.translation.TranslationVo; import com.xjs.english.service.TranslationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -18,6 +20,7 @@ import static com.xjs.english.consts.TranslationTypeConst.YOUDAO; */ @RestController @RequestMapping("translation") +@Api(tags = "业务模块-翻译管理") public class TranslationController { @Autowired @@ -26,6 +29,7 @@ public class TranslationController { private TranslationService baiDuTranslationServiceImpl; @PostMapping + @ApiOperation("翻译接口") public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) { TranslationVo translationVo=new TranslationVo(); if (BAIDU.equals(translationQo.getTranslationType())) { diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java index d9d22137..0df971f3 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java @@ -27,7 +27,7 @@ public class BaiDuTranslationQo { /** * 翻译目标语言 */ - private String to ; + private String to ="auto"; /** diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java index 55af146d..944616b8 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java @@ -1,5 +1,7 @@ package com.xjs.english.domain.qo.translation; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; @@ -12,6 +14,7 @@ import java.io.Serializable; * @create 2021-12-25 */ @Data +@ApiModel(value = "翻译Model",description="翻译条件") public class TranslationQo implements Serializable { private static final long serialVersionUID = 1L; @@ -19,18 +22,16 @@ public class TranslationQo implements Serializable { /** * 需要翻译的词(前端可以指定翻译词) */ + @ApiModelProperty("翻译词") @NotBlank(message = "翻译内容不能为空") private String q="你傻吗,大傻逼?嗯,哈哈哈"; - /** - * 翻译目标语言(前端可以指定目标语言) - */ - private String to = "auto"; /** * 翻译api类型(例如:有道、谷歌、百度等) * 1、百度 2、有道 3、谷歌 4 ... */ + @ApiModelProperty("翻译api类型(例如:有道、谷歌、百度等)") @NotNull(message = "翻译api类型不能为空") private Integer translationType; } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java index 4a38538e..cf34635a 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java @@ -18,7 +18,7 @@ public class YouDaoTranslationQo{ /** * 目标语言(有道的目标语言无效,中转英、英转中) */ - private String type; + private String type="AUTO"; /** * 翻译的内容 diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java index 94893ad3..7095cefc 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java @@ -40,7 +40,6 @@ public class BaiDuTranslationServiceImpl implements TranslationService { String sign = SecureUtil.md5(append); baiDuTranslationQo.setSign(sign); baiDuTranslationQo.setQ(translationQo.getQ()); - baiDuTranslationQo.setTo(translationQo.getTo()); String translationStr = baiduFeignClient.translationApi(baiDuTranslationQo); JSONObject jsonObject = JSONObject.parseObject(translationStr); if(Objects.nonNull(jsonObject.getString("error_code"))){ diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java index 50465036..37964dff 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java @@ -32,8 +32,6 @@ public class YouDaoTranslationServiceImpl implements TranslationService { public TranslationVo translationApi(TranslationQo translationQo) { YouDaoTranslationQo youDaoTranslationQo = new YouDaoTranslationQo(); youDaoTranslationQo.setI(translationQo.getQ()); - youDaoTranslationQo.setType(translationQo.getTo()); - JSONObject translationApi = youDaoFeignClient.translationApi(youDaoTranslationQo); if(!"0".equals(translationApi.getString("errorCode"))){ throw new BusinessException("有道翻译接口调用异常"); From 2745cf1e2b2b61bf53191a158dca35f0be2217e4 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 26 Dec 2021 11:33:01 +0800 Subject: [PATCH 05/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=9A=E5=8A=A1=E6=A8=A1=E5=9D=97=E5=8C=85?= =?UTF-8?q?=E5=90=8D=202=E3=80=81=E4=B8=9A=E5=8A=A1=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E7=83=AD=E9=83=A8=E7=BD=B2=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xjs-business/pom.xml | 6 ++++++ .../{english => translation}/XjsEnglishApp.java | 2 +- .../client/BaiduFeignClient.java | 5 ++--- .../client/YouDaoFeignClient.java | 6 ++---- .../config/BaiduProperties.java | 2 +- .../config/FeignConfig.java | 2 +- .../consts/TranslationTypeConst.java | 2 +- .../controller/TranslationController.java | 12 ++++++------ .../qo/translation/BaiDuTranslationQo.java | 2 +- .../domain/qo/translation/TranslationQo.java | 2 +- .../qo/translation/YouDaoTranslationQo.java | 2 +- .../vo/translation/GoogleTranslationVo.java | 2 +- .../domain/vo/translation/TranslationVo.java | 2 +- .../exception/BusinessException.java | 2 +- .../service/TranslationService.java | 6 +++--- .../impl/BaiDuTranslationServiceImpl.java | 16 ++++++++-------- .../impl/YouDaoTranslationServiceImpl.java | 16 +++++++--------- .../src/main/resources/logback.xml | 2 +- .../impl/BaiDuTranslationServiceImplTest.java | 14 +++++--------- .../impl/YouDaoTranslationServiceImplTest.java | 13 +++++-------- 20 files changed, 55 insertions(+), 61 deletions(-) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/XjsEnglishApp.java (95%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/client/BaiduFeignClient.java (75%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/client/YouDaoFeignClient.java (71%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/config/BaiduProperties.java (92%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/config/FeignConfig.java (91%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/consts/TranslationTypeConst.java (82%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/controller/TranslationController.java (77%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/domain/qo/translation/BaiDuTranslationQo.java (92%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/domain/qo/translation/TranslationQo.java (95%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/domain/qo/translation/YouDaoTranslationQo.java (88%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/domain/vo/translation/GoogleTranslationVo.java (73%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/domain/vo/translation/TranslationVo.java (93%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/exception/BusinessException.java (91%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/service/TranslationService.java (65%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/service/impl/BaiDuTranslationServiceImpl.java (82%) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{english => translation}/service/impl/YouDaoTranslationServiceImpl.java (82%) rename xjs-business/xjs-business-english/src/test/java/com/xjs/{english => translation}/service/impl/BaiDuTranslationServiceImplTest.java (56%) rename xjs-business/xjs-business-english/src/test/java/com/xjs/{english => translation}/service/impl/YouDaoTranslationServiceImplTest.java (60%) diff --git a/xjs-business/pom.xml b/xjs-business/pom.xml index 0c0c494b..147d07e1 100644 --- a/xjs-business/pom.xml +++ b/xjs-business/pom.xml @@ -112,6 +112,12 @@ ${hutool.version} + + + org.springframework.boot + spring-boot-devtools + + diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/XjsEnglishApp.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/XjsEnglishApp.java similarity index 95% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/XjsEnglishApp.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/XjsEnglishApp.java index fa9b3550..cf290901 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/XjsEnglishApp.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/XjsEnglishApp.java @@ -1,4 +1,4 @@ -package com.xjs.english; +package com.xjs.translation; import com.ruoyi.common.security.annotation.EnableCustomConfig; import com.ruoyi.common.security.annotation.EnableRyFeignClients; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java similarity index 75% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java index 0fd1fbf8..24ba4b77 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/BaiduFeignClient.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java @@ -1,8 +1,7 @@ -package com.xjs.english.client; +package com.xjs.translation.client; -import com.xjs.english.domain.qo.translation.BaiDuTranslationQo; +import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo; import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; /** diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/YouDaoFeignClient.java similarity index 71% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/YouDaoFeignClient.java index fa4e9c69..beb25f6c 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/client/YouDaoFeignClient.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/YouDaoFeignClient.java @@ -1,12 +1,10 @@ -package com.xjs.english.client; +package com.xjs.translation.client; import com.alibaba.fastjson.JSONObject; -import com.xjs.english.domain.qo.translation.YouDaoTranslationQo; +import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.SpringQueryMap; -import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; /** * @author xiejs diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/config/BaiduProperties.java similarity index 92% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/config/BaiduProperties.java index 7153600b..dc7d6063 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/BaiduProperties.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/config/BaiduProperties.java @@ -1,4 +1,4 @@ -package com.xjs.english.config; +package com.xjs.translation.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/config/FeignConfig.java similarity index 91% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/config/FeignConfig.java index 48a3f614..6bb05cf9 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/config/FeignConfig.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/config/FeignConfig.java @@ -1,4 +1,4 @@ -package com.xjs.english.config; +package com.xjs.translation.config; import feign.Logger; import org.springframework.context.annotation.Bean; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/consts/TranslationTypeConst.java similarity index 82% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/consts/TranslationTypeConst.java index b1ed689b..5d553dcc 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/consts/TranslationTypeConst.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/consts/TranslationTypeConst.java @@ -1,4 +1,4 @@ -package com.xjs.english.consts; +package com.xjs.translation.consts; /** * @author xiejs diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java similarity index 77% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java index 28b2bdb5..2fc518e8 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/controller/TranslationController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java @@ -1,17 +1,17 @@ -package com.xjs.english.controller; +package com.xjs.translation.controller; import com.ruoyi.common.core.web.domain.AjaxResult; -import com.xjs.english.domain.qo.translation.TranslationQo; -import com.xjs.english.domain.vo.translation.TranslationVo; -import com.xjs.english.service.TranslationService; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; +import com.xjs.translation.service.TranslationService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; -import static com.xjs.english.consts.TranslationTypeConst.BAIDU; -import static com.xjs.english.consts.TranslationTypeConst.YOUDAO; +import static com.xjs.translation.consts.TranslationTypeConst.BAIDU; +import static com.xjs.translation.consts.TranslationTypeConst.YOUDAO; /** * @author xiejs diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/BaiDuTranslationQo.java similarity index 92% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/BaiDuTranslationQo.java index 0df971f3..83aedcd4 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/BaiDuTranslationQo.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/BaiDuTranslationQo.java @@ -1,4 +1,4 @@ -package com.xjs.english.domain.qo.translation; +package com.xjs.translation.domain.qo.translation; import lombok.Data; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/TranslationQo.java similarity index 95% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/TranslationQo.java index 944616b8..6d654e18 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/TranslationQo.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/TranslationQo.java @@ -1,4 +1,4 @@ -package com.xjs.english.domain.qo.translation; +package com.xjs.translation.domain.qo.translation; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/YouDaoTranslationQo.java similarity index 88% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/YouDaoTranslationQo.java index cf34635a..55be7c13 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/qo/translation/YouDaoTranslationQo.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/qo/translation/YouDaoTranslationQo.java @@ -1,4 +1,4 @@ -package com.xjs.english.domain.qo.translation; +package com.xjs.translation.domain.qo.translation; import lombok.Data; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/vo/translation/GoogleTranslationVo.java similarity index 73% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/vo/translation/GoogleTranslationVo.java index 17460360..26c1ef8b 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/GoogleTranslationVo.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/vo/translation/GoogleTranslationVo.java @@ -1,4 +1,4 @@ -package com.xjs.english.domain.vo.translation; +package com.xjs.translation.domain.vo.translation; /** * @author xiejs diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/vo/translation/TranslationVo.java similarity index 93% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/vo/translation/TranslationVo.java index 3b653b00..513f4779 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/domain/vo/translation/TranslationVo.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/domain/vo/translation/TranslationVo.java @@ -1,4 +1,4 @@ -package com.xjs.english.domain.vo.translation; +package com.xjs.translation.domain.vo.translation; import lombok.Data; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/exception/BusinessException.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/exception/BusinessException.java similarity index 91% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/exception/BusinessException.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/exception/BusinessException.java index 3951fa22..946b4894 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/exception/BusinessException.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/exception/BusinessException.java @@ -1,4 +1,4 @@ -package com.xjs.english.exception; +package com.xjs.translation.exception; import lombok.extern.log4j.Log4j2; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/TranslationService.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/TranslationService.java similarity index 65% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/TranslationService.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/TranslationService.java index c5653700..2be69e8f 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/TranslationService.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/TranslationService.java @@ -1,7 +1,7 @@ -package com.xjs.english.service; +package com.xjs.translation.service; -import com.xjs.english.domain.qo.translation.TranslationQo; -import com.xjs.english.domain.vo.translation.TranslationVo; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; /** * @author xiejs diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImpl.java similarity index 82% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImpl.java index 7095cefc..68add587 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/BaiDuTranslationServiceImpl.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImpl.java @@ -1,15 +1,15 @@ -package com.xjs.english.service.impl; +package com.xjs.translation.service.impl; import cn.hutool.crypto.SecureUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.xjs.english.client.BaiduFeignClient; -import com.xjs.english.config.BaiduProperties; -import com.xjs.english.domain.qo.translation.BaiDuTranslationQo; -import com.xjs.english.domain.qo.translation.TranslationQo; -import com.xjs.english.domain.vo.translation.TranslationVo; -import com.xjs.english.exception.BusinessException; -import com.xjs.english.service.TranslationService; +import com.xjs.translation.client.BaiduFeignClient; +import com.xjs.translation.config.BaiduProperties; +import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; +import com.xjs.translation.exception.BusinessException; +import com.xjs.translation.service.TranslationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImpl.java similarity index 82% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImpl.java index 37964dff..1364bcb6 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/english/service/impl/YouDaoTranslationServiceImpl.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImpl.java @@ -1,20 +1,18 @@ -package com.xjs.english.service.impl; +package com.xjs.translation.service.impl; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.xjs.english.client.BaiduFeignClient; -import com.xjs.english.client.YouDaoFeignClient; -import com.xjs.english.domain.qo.translation.TranslationQo; -import com.xjs.english.domain.qo.translation.YouDaoTranslationQo; -import com.xjs.english.domain.vo.translation.TranslationVo; -import com.xjs.english.exception.BusinessException; -import com.xjs.english.service.TranslationService; +import com.xjs.translation.client.YouDaoFeignClient; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; +import com.xjs.translation.exception.BusinessException; +import com.xjs.translation.service.TranslationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; /** diff --git a/xjs-business/xjs-business-english/src/main/resources/logback.xml b/xjs-business/xjs-business-english/src/main/resources/logback.xml index 3b651ec3..5d9151a0 100644 --- a/xjs-business/xjs-business-english/src/main/resources/logback.xml +++ b/xjs-business/xjs-business-english/src/main/resources/logback.xml @@ -1,7 +1,7 @@ - + diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/BaiDuTranslationServiceImplTest.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java similarity index 56% rename from xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/BaiDuTranslationServiceImplTest.java rename to xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java index af118587..067dc9d9 100644 --- a/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/BaiDuTranslationServiceImplTest.java +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java @@ -1,17 +1,13 @@ -package com.xjs.english.service.impl; +package com.xjs.translation.service.impl; -import com.xjs.english.XjsEnglishApp; -import com.xjs.english.domain.qo.translation.BaiDuTranslationQo; -import com.xjs.english.domain.qo.translation.TranslationQo; -import com.xjs.english.domain.vo.translation.TranslationVo; -import com.xjs.english.service.TranslationService; -import org.springframework.beans.factory.annotation.Autowired; +import com.xjs.translation.XjsEnglishApp; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; +import com.xjs.translation.service.TranslationService; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; -import static org.junit.jupiter.api.Assertions.*; - /** * @author xiejs * @desc diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/YouDaoTranslationServiceImplTest.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImplTest.java similarity index 60% rename from xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/YouDaoTranslationServiceImplTest.java rename to xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImplTest.java index 4f75a513..38f1ddae 100644 --- a/xjs-business/xjs-business-english/src/test/java/com/xjs/english/service/impl/YouDaoTranslationServiceImplTest.java +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImplTest.java @@ -1,17 +1,14 @@ -package com.xjs.english.service.impl; +package com.xjs.translation.service.impl; -import com.xjs.english.XjsEnglishApp; -import com.xjs.english.domain.qo.translation.TranslationQo; -import com.xjs.english.domain.vo.translation.TranslationVo; -import com.xjs.english.service.TranslationService; +import com.xjs.translation.XjsEnglishApp; +import com.xjs.translation.domain.qo.translation.TranslationQo; +import com.xjs.translation.domain.vo.translation.TranslationVo; +import com.xjs.translation.service.TranslationService; import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; -import static org.junit.jupiter.api.Assertions.*; - /** * @author xiejs * @desc From c70d83f29f879840e04a382b777b155adcbe92c4 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 26 Dec 2021 11:56:05 +0800 Subject: [PATCH 06/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E4=BF=AE=E6=94=B9feign=E6=97=A5=E5=BF=97=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E7=BA=A7=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/YouDaoTranslationServiceImpl.java | 1 - .../xjs-business-english/src/main/resources/logback.xml | 6 ++++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImpl.java index 1364bcb6..5fd10ae3 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImpl.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImpl.java @@ -43,7 +43,6 @@ public class YouDaoTranslationServiceImpl implements TranslationService { translationVo.setElapsedTime(elapsedTime); JSONArray translateResult = translationApi.getJSONArray("translateResult"); JSONArray jsonArray = translateResult.getJSONArray(0); - System.out.println(jsonArray); ArrayList> maps = new ArrayList<>(); if (jsonArray.size() > 0) { for (int i = 0; i < jsonArray.size(); i++) { diff --git a/xjs-business/xjs-business-english/src/main/resources/logback.xml b/xjs-business/xjs-business-english/src/main/resources/logback.xml index 5d9151a0..52053f5a 100644 --- a/xjs-business/xjs-business-english/src/main/resources/logback.xml +++ b/xjs-business/xjs-business-english/src/main/resources/logback.xml @@ -1,7 +1,7 @@ - + @@ -58,7 +58,9 @@ - + + + From 9ee9f820dc6eae33777beb1a623ac629df98c096 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 26 Dec 2021 15:41:51 +0800 Subject: [PATCH 07/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E5=88=87=E5=85=A5=E7=82=B9?= =?UTF-8?q?=EF=BC=8C=E8=BF=98=E6=9C=AA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xjs-business/pom.xml | 3 +- .../xjs/{translation => }/XjsEnglishApp.java | 2 +- .../src/main/java/com/xjs/log/aop/ApiLog.java | 31 ++++++++++ .../java/com/xjs/log/aop/ApiLogAspect.java | 61 +++++++++++++++++++ .../translation/client/BaiduFeignClient.java | 4 ++ .../translation/client/YouDaoFeignClient.java | 4 ++ .../controller/TranslationController.java | 3 + .../impl/BaiDuTranslationServiceImplTest.java | 2 +- .../YouDaoTranslationServiceImplTest.java | 2 +- 9 files changed, 107 insertions(+), 5 deletions(-) rename xjs-business/xjs-business-english/src/main/java/com/xjs/{translation => }/XjsEnglishApp.java (95%) create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLog.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLogAspect.java diff --git a/xjs-business/pom.xml b/xjs-business/pom.xml index 147d07e1..c80966e4 100644 --- a/xjs-business/pom.xml +++ b/xjs-business/pom.xml @@ -18,8 +18,7 @@ - 11 - 11 + 3.4.3.4 5.7.17 diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/XjsEnglishApp.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/XjsEnglishApp.java similarity index 95% rename from xjs-business/xjs-business-english/src/main/java/com/xjs/translation/XjsEnglishApp.java rename to xjs-business/xjs-business-english/src/main/java/com/xjs/XjsEnglishApp.java index cf290901..3e65ac19 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/XjsEnglishApp.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/XjsEnglishApp.java @@ -1,4 +1,4 @@ -package com.xjs.translation; +package com.xjs; import com.ruoyi.common.security.annotation.EnableCustomConfig; import com.ruoyi.common.security.annotation.EnableRyFeignClients; diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLog.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLog.java new file mode 100644 index 00000000..cca9aa19 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLog.java @@ -0,0 +1,31 @@ +package com.xjs.log.aop; + +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.log.enums.OperatorType; + +import java.lang.annotation.*; + +/** + * @author xiejs + * @desc 自定义api日志注解 + * @create 2021-12-26 + */ +@Target({ ElementType.PARAMETER, ElementType.METHOD }) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface ApiLog { + /** + * api名称 + */ + public String name() default ""; + + /** + * 请求url + */ + public String url() default ""; + + /** + * 请求方法 + */ + public String method() default "Post"; +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLogAspect.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLogAspect.java new file mode 100644 index 00000000..88b22057 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLogAspect.java @@ -0,0 +1,61 @@ +package com.xjs.log.aop; + +import com.ruoyi.common.log.annotation.Log; +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.Signature; +import org.aspectj.lang.annotation.*; +import org.aspectj.lang.reflect.SourceLocation; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +/** + * @author xiejs + * @desc + * @create 2021-12-26 + */ +@Component +@Aspect +public class ApiLogAspect { + + /** + * 处理完请求后执行 + * + * @param joinPoint 切点 + */ + @AfterReturning(pointcut = "@annotation(apiLog)", returning = "jsonResult") + public void doAfterReturning(JoinPoint joinPoint, ApiLog apiLog, Object jsonResult) + { + this.handleApiLog(joinPoint, apiLog, null, jsonResult); + } + + + @AfterThrowing(value = "@annotation(apiLog)", throwing = "e") + public void doAfterThrowing(JoinPoint joinPoint, ApiLog apiLog, Exception e) + { + handleApiLog(joinPoint, apiLog, e, null); + } + + + + + + + + private void handleApiLog(JoinPoint joinPoint, ApiLog apiLog, final Exception e, Object jsonResult) { + String name = apiLog.name();//请求名称 + String url = apiLog.url();//请求地址 + Object[] args = joinPoint.getArgs();//请求体 + for (Object arg : args) { + + } + + + + + + + } + +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java index 24ba4b77..62acab52 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java @@ -1,5 +1,6 @@ package com.xjs.translation.client; +import com.xjs.log.aop.ApiLog; import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; @@ -13,6 +14,9 @@ import org.springframework.web.bind.annotation.PostMapping; public interface BaiduFeignClient { @PostMapping(headers = {"Content-Type=application/x-www-form-urlencoded"}) + @ApiLog(name = "baidu", + url = "http://api.fanyi.baidu.com/api/trans/vip/translate", + method = "Post") String translationApi(BaiDuTranslationQo qo); } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/YouDaoFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/YouDaoFeignClient.java index beb25f6c..6051668f 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/YouDaoFeignClient.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/YouDaoFeignClient.java @@ -1,6 +1,7 @@ package com.xjs.translation.client; import com.alibaba.fastjson.JSONObject; +import com.xjs.log.aop.ApiLog; import com.xjs.translation.domain.qo.translation.YouDaoTranslationQo; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.SpringQueryMap; @@ -15,5 +16,8 @@ import org.springframework.web.bind.annotation.GetMapping; public interface YouDaoFeignClient { @GetMapping( headers ={ "Accept-Encoding=''"}) + @ApiLog(name = "youdao", + url = "http://fanyi.youdao.com/translate", + method = "Get") JSONObject translationApi(@SpringQueryMap YouDaoTranslationQo qo); } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java index 2fc518e8..b4b13fc3 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java @@ -1,6 +1,8 @@ package com.xjs.translation.controller; import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; import com.xjs.translation.domain.qo.translation.TranslationQo; import com.xjs.translation.domain.vo.translation.TranslationVo; import com.xjs.translation.service.TranslationService; @@ -30,6 +32,7 @@ public class TranslationController { @PostMapping @ApiOperation("翻译接口") + @Log(title = "翻译管理") public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) { TranslationVo translationVo=new TranslationVo(); if (BAIDU.equals(translationQo.getTranslationType())) { diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java index 067dc9d9..9528c802 100644 --- a/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java @@ -1,6 +1,6 @@ package com.xjs.translation.service.impl; -import com.xjs.translation.XjsEnglishApp; +import com.xjs.XjsEnglishApp; import com.xjs.translation.domain.qo.translation.TranslationQo; import com.xjs.translation.domain.vo.translation.TranslationVo; import com.xjs.translation.service.TranslationService; diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImplTest.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImplTest.java index 38f1ddae..a4d2e698 100644 --- a/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImplTest.java +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/YouDaoTranslationServiceImplTest.java @@ -1,6 +1,6 @@ package com.xjs.translation.service.impl; -import com.xjs.translation.XjsEnglishApp; +import com.xjs.XjsEnglishApp; import com.xjs.translation.domain.qo.translation.TranslationQo; import com.xjs.translation.domain.vo.translation.TranslationVo; import com.xjs.translation.service.TranslationService; From 379281f949a7cc60ce1248143c5b20ed17940378 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 26 Dec 2021 19:28:11 +0800 Subject: [PATCH 08/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97=E6=A8=A1=E5=9D=97=E5=89=8D?= =?UTF-8?q?=E5=90=8E=E5=8F=B0=E5=9F=BA=E7=A1=80=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E5=87=86=E5=A4=87=E5=AE=9E=E7=8E=B0API=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E5=88=87=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-ui/src/api/english/log.js | 44 +++ .../src/views/business/english/log/index.vue | 263 ++++++++++++++++++ .../xjs/log/controller/ApiLogController.java | 80 ++++++ .../main/java/com/xjs/log/domain/ApiLog.java | 123 ++++++++ .../java/com/xjs/log/mapper/ApiLogMapper.java | 45 +++ .../com/xjs/log/service/IApiLogService.java | 45 +++ .../log/service/impl/ApiLogServiceImpl.java | 65 +++++ .../controller/TranslationController.java | 4 + .../resources/mapper/english/ApiLogMapper.xml | 44 +++ .../impl/BaiDuTranslationServiceImplTest.java | 11 + 10 files changed, 724 insertions(+) create mode 100644 ruoyi-ui/src/api/english/log.js create mode 100644 ruoyi-ui/src/views/business/english/log/index.vue create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/impl/ApiLogServiceImpl.java create mode 100644 xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml diff --git a/ruoyi-ui/src/api/english/log.js b/ruoyi-ui/src/api/english/log.js new file mode 100644 index 00000000..317e73db --- /dev/null +++ b/ruoyi-ui/src/api/english/log.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询日志列表 +export function listLog(query) { + return request({ + url: '/english/log/list', + method: 'get', + params: query + }) +} + +// 查询日志详细 +export function getLog(id) { + return request({ + url: '/english/log/' + id, + method: 'get' + }) +} + +// 新增日志 +export function addLog(data) { + return request({ + url: '/english/log', + method: 'post', + data: data + }) +} + +// 修改日志 +export function updateLog(data) { + return request({ + url: '/english/log', + method: 'put', + data: data + }) +} + +// 删除日志 +export function delLog(id) { + return request({ + url: '/english/log/' + id, + method: 'delete' + }) +} diff --git a/ruoyi-ui/src/views/business/english/log/index.vue b/ruoyi-ui/src/views/business/english/log/index.vue new file mode 100644 index 00000000..645c2d45 --- /dev/null +++ b/ruoyi-ui/src/views/business/english/log/index.vue @@ -0,0 +1,263 @@ + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java new file mode 100644 index 00000000..1967afc7 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java @@ -0,0 +1,80 @@ +package com.xjs.log.controller; + +import java.util.List; +import java.io.IOException; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.xjs.log.domain.ApiLog; +import com.xjs.log.service.IApiLogService; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.core.web.page.TableDataInfo; + +/** + * 日志Controller + * + * @author xjs + * @date 2021-12-26 + */ +@RestController +@RequestMapping("log") +public class ApiLogController extends BaseController { + @Autowired + private IApiLogService apiLogService; + + /** + * 查询日志列表 + */ + @RequiresPermissions("english:log:list") + @GetMapping("/list") + public TableDataInfo list(ApiLog apiLog) { + startPage(); + List list = apiLogService.selectApiLogList(apiLog); + return getDataTable(list); + } + + /** + * 导出日志列表 + */ + @RequiresPermissions("english:log:export") + @Log(title = "API日志", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, ApiLog apiLog) { + List list = apiLogService.selectApiLogList(apiLog); + ExcelUtil util = new ExcelUtil(ApiLog.class); + util.exportExcel(response, list, "日志数据"); + } + + /** + * 获取日志详细信息 + */ + @RequiresPermissions("english:log:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(apiLogService.selectApiLogById(id)); + } + + + /** + * 删除日志 + */ + @RequiresPermissions("english:log:remove") + @Log(title = "API日志", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(apiLogService.deleteApiLogByIds(ids)); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java new file mode 100644 index 00000000..b7d5e020 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java @@ -0,0 +1,123 @@ +package com.xjs.log.domain; + +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; + +import java.io.Serializable; + +/** + * 日志对象 api_log + * + * @author xjs + * @date 2021-12-26 + */ +public class ApiLog implements Serializable +{ + private static final long serialVersionUID = 1L; + + /** $column.columnComment */ + private Long id; + + /** 接口名称 */ + @Excel(name = "接口名称") + private String apiName; + + /** 请求API的url */ + @Excel(name = "请求API的url") + private String url; + + /** 请求API的方法 */ + @Excel(name = "请求API的方法") + private String method; + + /** 请求request */ + @Excel(name = "请求request") + private String request; + + /** 响应体 */ + @Excel(name = "响应体") + private String response; + + /** 是否请求成功 */ + @Excel(name = "是否请求成功") + private Integer isSuccess; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setApiName(String apiName) + { + this.apiName = apiName; + } + + public String getApiName() + { + return apiName; + } + public void setUrl(String url) + { + this.url = url; + } + + public String getUrl() + { + return url; + } + public void setMethod(String method) + { + this.method = method; + } + + public String getMethod() + { + return method; + } + public void setRequest(String request) + { + this.request = request; + } + + public String getRequest() + { + return request; + } + public void setResponse(String response) + { + this.response = response; + } + + public String getResponse() + { + return response; + } + public void setIsSuccess(Integer isSuccess) + { + this.isSuccess = isSuccess; + } + + public Integer getIsSuccess() + { + return isSuccess; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("apiName", getApiName()) + .append("url", getUrl()) + .append("method", getMethod()) + .append("request", getRequest()) + .append("response", getResponse()) + .append("isSuccess", getIsSuccess()) + .toString(); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java new file mode 100644 index 00000000..611afe6c --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java @@ -0,0 +1,45 @@ +package com.xjs.log.mapper; + +import java.util.List; +import com.xjs.log.domain.ApiLog; + +/** + * 日志Mapper接口 + * + * @author xjs + * @date 2021-12-26 + */ +public interface ApiLogMapper +{ + /** + * 查询日志 + * + * @param id 日志主键 + * @return 日志 + */ + public ApiLog selectApiLogById(Long id); + + /** + * 查询日志列表 + * + * @param apiLog 日志 + * @return 日志集合 + */ + public List selectApiLogList(ApiLog apiLog); + + /** + * 删除日志 + * + * @param id 日志主键 + * @return 结果 + */ + public int deleteApiLogById(Long id); + + /** + * 批量删除日志 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteApiLogByIds(Long[] ids); +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java new file mode 100644 index 00000000..ca81a8f6 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java @@ -0,0 +1,45 @@ +package com.xjs.log.service; + +import java.util.List; +import com.xjs.log.domain.ApiLog; + +/** + * 日志Service接口 + * + * @author xjs + * @date 2021-12-26 + */ +public interface IApiLogService +{ + /** + * 查询日志 + * + * @param id 日志主键 + * @return 日志 + */ + public ApiLog selectApiLogById(Long id); + + /** + * 查询日志列表 + * + * @param apiLog 日志 + * @return 日志集合 + */ + public List selectApiLogList(ApiLog apiLog); + + /** + * 批量删除日志 + * + * @param ids 需要删除的日志主键集合 + * @return 结果 + */ + public int deleteApiLogByIds(Long[] ids); + + /** + * 删除日志信息 + * + * @param id 日志主键 + * @return 结果 + */ + public int deleteApiLogById(Long id); +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/impl/ApiLogServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/impl/ApiLogServiceImpl.java new file mode 100644 index 00000000..406ed6bf --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/impl/ApiLogServiceImpl.java @@ -0,0 +1,65 @@ +package com.xjs.log.service.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.xjs.log.mapper.ApiLogMapper; +import com.xjs.log.domain.ApiLog; +import com.xjs.log.service.IApiLogService; + +/** + * 日志Service业务层处理 + * + * @author xjs + * @date 2021-12-26 + */ +@Service +public class ApiLogServiceImpl implements IApiLogService { + @Autowired + private ApiLogMapper apiLogMapper; + + /** + * 查询日志 + * + * @param id 日志主键 + * @return 日志 + */ + @Override + public ApiLog selectApiLogById(Long id) { + return apiLogMapper.selectApiLogById(id); + } + + /** + * 查询日志列表 + * + * @param apiLog 日志 + * @return 日志 + */ + @Override + public List selectApiLogList(ApiLog apiLog) { + return apiLogMapper.selectApiLogList(apiLog); + } + + /** + * 批量删除日志 + * + * @param ids 需要删除的日志主键 + * @return 结果 + */ + @Override + public int deleteApiLogByIds(Long[] ids) { + return apiLogMapper.deleteApiLogByIds(ids); + } + + /** + * 删除日志信息 + * + * @param id 日志主键 + * @return 结果 + */ + @Override + public int deleteApiLogById(Long id) { + return apiLogMapper.deleteApiLogById(id); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java index b4b13fc3..35fd2d9e 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java @@ -3,6 +3,9 @@ package com.xjs.translation.controller; import com.ruoyi.common.core.web.domain.AjaxResult; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresLogin; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.ruoyi.common.security.annotation.RequiresRoles; import com.xjs.translation.domain.qo.translation.TranslationQo; import com.xjs.translation.domain.vo.translation.TranslationVo; import com.xjs.translation.service.TranslationService; @@ -33,6 +36,7 @@ public class TranslationController { @PostMapping @ApiOperation("翻译接口") @Log(title = "翻译管理") + @RequiresLogin public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) { TranslationVo translationVo=new TranslationVo(); if (BAIDU.equals(translationQo.getTranslationType())) { diff --git a/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml b/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml new file mode 100644 index 00000000..7b25a7a5 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + select id, api_name, url, method, request, response, is_success from api_log + + + + + + + + delete from api_log where id = #{id} + + + + delete from api_log where id in + + #{id} + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java index 9528c802..4c41106f 100644 --- a/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java +++ b/xjs-business/xjs-business-english/src/test/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImplTest.java @@ -4,7 +4,10 @@ import com.xjs.XjsEnglishApp; import com.xjs.translation.domain.qo.translation.TranslationQo; import com.xjs.translation.domain.vo.translation.TranslationVo; import com.xjs.translation.service.TranslationService; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.data.redis.core.RedisTemplate; import javax.annotation.Resource; @@ -18,9 +21,17 @@ class BaiDuTranslationServiceImplTest { @Resource(name = "baiDuTranslationServiceImpl") TranslationService translationService; + @Autowired + RedisTemplate redisTemplate; @org.junit.jupiter.api.Test void handlerTranslationApi() { TranslationVo translationVo = translationService.translationApi(new TranslationQo()); System.out.println(translationVo); } + + @Test + public void redis() { + Object o = redisTemplate.opsForValue().get("login_tokens:043f6e6c-fc10-4f6e-8cd4-1243cdb2fa09"); + System.out.println(o); + } } \ No newline at end of file From bcbeeba42c468ac10805ec9e399e95595558e9f5 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 26 Dec 2021 22:14:30 +0800 Subject: [PATCH 09/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0aop=E5=88=87=E5=85=A5api=E6=97=A5=E5=BF=97=20?= =?UTF-8?q?2=E3=80=81=E5=8F=96=E6=B6=88=E7=83=AD=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=EF=BC=8C=E5=A4=A7=E5=9D=91=EF=BC=8C=E7=83=AD=E9=83=A8=E7=BD=B2?= =?UTF-8?q?=E5=AF=BC=E8=87=B4redis=E6=8B=BF=E4=B8=8D=E5=88=B0=E5=80=BC?= =?UTF-8?q?=EF=BC=8C=E6=9A=82=E6=97=B6=E4=B8=8D=E7=9F=A5=E9=81=93=E5=A6=82?= =?UTF-8?q?=E4=BD=95=E8=A7=A3=E5=86=B3=EF=BC=8C=E5=85=88=E6=8A=8A=E7=83=AD?= =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=85=B3=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- xjs-business/pom.xml | 6 +- .../java/com/xjs/log/aop/ApiLogAspect.java | 73 ++++++++++----- .../java/com/xjs/log/config/JsonConfig.java | 57 ++++++++++++ .../java/com/xjs/log/consts/ReqConst.java | 11 +++ .../main/java/com/xjs/log/domain/ApiLog.java | 88 +++---------------- .../java/com/xjs/log/mapper/ApiLogMapper.java | 15 ++-- .../translation/client/BaiduFeignClient.java | 3 +- .../impl/BaiDuTranslationServiceImpl.java | 11 ++- .../resources/mapper/english/ApiLogMapper.xml | 2 +- 9 files changed, 150 insertions(+), 116 deletions(-) create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/config/JsonConfig.java create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/log/consts/ReqConst.java diff --git a/xjs-business/pom.xml b/xjs-business/pom.xml index c80966e4..71c08350 100644 --- a/xjs-business/pom.xml +++ b/xjs-business/pom.xml @@ -111,11 +111,11 @@ ${hutool.version} - - + + diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLogAspect.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLogAspect.java index 88b22057..dfc5bd0b 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLogAspect.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/aop/ApiLogAspect.java @@ -1,14 +1,18 @@ package com.xjs.log.aop; -import com.ruoyi.common.log.annotation.Log; +import cn.hutool.core.date.DateUtil; +import com.xjs.log.consts.ReqConst; +import com.xjs.log.mapper.ApiLogMapper; +import lombok.extern.log4j.Log4j2; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.Signature; import org.aspectj.lang.annotation.*; -import org.aspectj.lang.reflect.SourceLocation; import org.springframework.stereotype.Component; -import java.lang.reflect.Method; +import javax.annotation.Resource; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.Optional; /** * @author xiejs @@ -17,45 +21,74 @@ import java.lang.reflect.Method; */ @Component @Aspect +@Log4j2 public class ApiLogAspect { + @Resource + private ApiLogMapper apiLogMapper; + + /** + * 声明AOP签名 + */ + @Pointcut("@annotation(com.xjs.log.aop.ApiLog)") + public void pointcut() { + } + + /** + * 环绕切入 + */ + @Around("pointcut()") + public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable { + try { + LocalDateTime localDateTime1 = DateUtil.date().toLocalDateTime(); + Object obj = joinPoint.proceed(); + LocalDateTime localDateTime2 = DateUtil.date().toLocalDateTime(); + long between = ChronoUnit.MILLIS.between(localDateTime1, localDateTime2); + log.info("调用接口耗费时间:{}ms", between); + return obj; + } catch (Throwable e) { + e.printStackTrace(); + throw e; + } + } + /** * 处理完请求后执行 * * @param joinPoint 切点 */ @AfterReturning(pointcut = "@annotation(apiLog)", returning = "jsonResult") - public void doAfterReturning(JoinPoint joinPoint, ApiLog apiLog, Object jsonResult) - { + public void doAfterReturning(JoinPoint joinPoint, ApiLog apiLog, Object jsonResult) { this.handleApiLog(joinPoint, apiLog, null, jsonResult); } @AfterThrowing(value = "@annotation(apiLog)", throwing = "e") - public void doAfterThrowing(JoinPoint joinPoint, ApiLog apiLog, Exception e) - { + public void doAfterThrowing(JoinPoint joinPoint, ApiLog apiLog, Exception e) { handleApiLog(joinPoint, apiLog, e, null); } - - - - - private void handleApiLog(JoinPoint joinPoint, ApiLog apiLog, final Exception e, Object jsonResult) { + com.xjs.log.domain.ApiLog entity = new com.xjs.log.domain.ApiLog(); String name = apiLog.name();//请求名称 + entity.setApiName(name); String url = apiLog.url();//请求地址 + entity.setUrl(url); Object[] args = joinPoint.getArgs();//请求体 + StringBuilder builder = new StringBuilder(); for (Object arg : args) { - + builder.append(arg); } - - - - - - + entity.setMethod(apiLog.method()); + entity.setRequest(builder.toString()); + entity.setResponse(Optional.ofNullable(jsonResult).toString()); + if (e != null) { + entity.setIsSuccess(ReqConst.ERROR); + }else { + entity.setIsSuccess(ReqConst.SUCCESS); + } + apiLogMapper.insert(entity); } } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/config/JsonConfig.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/config/JsonConfig.java new file mode 100644 index 00000000..990f4d32 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/config/JsonConfig.java @@ -0,0 +1,57 @@ +package com.xjs.log.config; + +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.alibaba.fastjson.serializer.ValueFilter; +import com.alibaba.fastjson.support.config.FastJsonConfig; +import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.http.HttpMessageConverters; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author xiejs + * @desc 全局序列化处理配置 + * @create 2021-12-26 + */ +@Configuration +public class JsonConfig { + @Bean + public HttpMessageConverters fastJsonHttpMessageConverters() { + FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); + FastJsonConfig fastJsonConfig = new FastJsonConfig(); + List list = new ArrayList<>(); + list.add(SerializerFeature.PrettyFormat); + list.add(SerializerFeature.WriteMapNullValue); + list.add(SerializerFeature.WriteNullStringAsEmpty); + list.add(SerializerFeature.WriteNullListAsEmpty); + list.add(SerializerFeature.QuoteFieldNames); + list.add(SerializerFeature.WriteDateUseDateFormat); + list.add(SerializerFeature.DisableCircularReferenceDetect); + list.add(SerializerFeature.WriteBigDecimalAsPlain); + fastJsonConfig.setSerializerFeatures(list.toArray(new SerializerFeature[list.size()])); + fastConverter.setFastJsonConfig(fastJsonConfig); + HttpMessageConverter converter = fastConverter; + fastJsonConfig.setSerializeFilters(new ValueFilter() { + @Override + public Object process(Object object, String name, Object value) { + if ((StringUtils.endsWith(name, "Id") || StringUtils.equals(name,"id")) && value != null + && value.getClass() == Long.class) { + return String.valueOf(value); + } + return value; + } + }); + return new HttpMessageConverters(converter); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/consts/ReqConst.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/consts/ReqConst.java new file mode 100644 index 00000000..bf003882 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/consts/ReqConst.java @@ -0,0 +1,11 @@ +package com.xjs.log.consts; + +/** + * @author xiejs + * @desc + * @create 2021-12-26 + */ +public class ReqConst { + public static final Integer SUCCESS = 1; + public static final Integer ERROR = 2; +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java index b7d5e020..de7a909b 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/domain/ApiLog.java @@ -1,5 +1,11 @@ package com.xjs.log.domain; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import lombok.Data; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; import com.ruoyi.common.core.annotation.Excel; @@ -13,11 +19,14 @@ import java.io.Serializable; * @author xjs * @date 2021-12-26 */ +@Data +@TableName("api_log") public class ApiLog implements Serializable { private static final long serialVersionUID = 1L; - /** $column.columnComment */ + @TableId + @JsonSerialize(using= ToStringSerializer.class) private Long id; /** 接口名称 */ @@ -43,81 +52,4 @@ public class ApiLog implements Serializable /** 是否请求成功 */ @Excel(name = "是否请求成功") private Integer isSuccess; - - public void setId(Long id) - { - this.id = id; - } - - public Long getId() - { - return id; - } - public void setApiName(String apiName) - { - this.apiName = apiName; - } - - public String getApiName() - { - return apiName; - } - public void setUrl(String url) - { - this.url = url; - } - - public String getUrl() - { - return url; - } - public void setMethod(String method) - { - this.method = method; - } - - public String getMethod() - { - return method; - } - public void setRequest(String request) - { - this.request = request; - } - - public String getRequest() - { - return request; - } - public void setResponse(String response) - { - this.response = response; - } - - public String getResponse() - { - return response; - } - public void setIsSuccess(Integer isSuccess) - { - this.isSuccess = isSuccess; - } - - public Integer getIsSuccess() - { - return isSuccess; - } - - @Override - public String toString() { - return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) - .append("id", getId()) - .append("apiName", getApiName()) - .append("url", getUrl()) - .append("method", getMethod()) - .append("request", getRequest()) - .append("response", getResponse()) - .append("isSuccess", getIsSuccess()) - .toString(); - } } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java index 611afe6c..66f1f37c 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/mapper/ApiLogMapper.java @@ -1,19 +1,20 @@ package com.xjs.log.mapper; import java.util.List; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xjs.log.domain.ApiLog; /** * 日志Mapper接口 - * + * * @author xjs * @date 2021-12-26 */ -public interface ApiLogMapper -{ +public interface ApiLogMapper extends BaseMapper { /** * 查询日志 - * + * * @param id 日志主键 * @return 日志 */ @@ -21,7 +22,7 @@ public interface ApiLogMapper /** * 查询日志列表 - * + * * @param apiLog 日志 * @return 日志集合 */ @@ -29,7 +30,7 @@ public interface ApiLogMapper /** * 删除日志 - * + * * @param id 日志主键 * @return 结果 */ @@ -37,7 +38,7 @@ public interface ApiLogMapper /** * 批量删除日志 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java index 62acab52..f874d353 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/client/BaiduFeignClient.java @@ -1,5 +1,6 @@ package com.xjs.translation.client; +import com.alibaba.fastjson.JSONObject; import com.xjs.log.aop.ApiLog; import com.xjs.translation.domain.qo.translation.BaiDuTranslationQo; import org.springframework.cloud.openfeign.FeignClient; @@ -17,6 +18,6 @@ public interface BaiduFeignClient { @ApiLog(name = "baidu", url = "http://api.fanyi.baidu.com/api/trans/vip/translate", method = "Post") - String translationApi(BaiDuTranslationQo qo); + JSONObject translationApi(BaiDuTranslationQo qo); } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImpl.java index 68add587..8aeb2ed2 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImpl.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/service/impl/BaiDuTranslationServiceImpl.java @@ -40,20 +40,19 @@ public class BaiDuTranslationServiceImpl implements TranslationService { String sign = SecureUtil.md5(append); baiDuTranslationQo.setSign(sign); baiDuTranslationQo.setQ(translationQo.getQ()); - String translationStr = baiduFeignClient.translationApi(baiDuTranslationQo); - JSONObject jsonObject = JSONObject.parseObject(translationStr); + JSONObject jsonObject = baiduFeignClient.translationApi(baiDuTranslationQo); if(Objects.nonNull(jsonObject.getString("error_code"))){ throw new BusinessException("百度翻译接口调用异常"); } TranslationVo translationVo = new TranslationVo(); String from = jsonObject.getString("from"); String to = jsonObject.getString("to"); - String transResultStr = jsonObject.getString("trans_result"); - JSONArray jsonArray = JSONObject.parseArray(transResultStr); + + JSONArray transResult = jsonObject.getJSONArray("trans_result"); HashMap map = new HashMap<>(); List> maps = new ArrayList<>(); - map.put("src", jsonArray.getJSONObject(0).getString("src")); - map.put("dst", jsonArray.getJSONObject(0).getString("dst")); + map.put("src", transResult.getJSONObject(0).getString("src")); + map.put("dst", transResult.getJSONObject(0).getString("dst")); maps.add(map); translationVo.setFrom(from); translationVo.setTo(to); diff --git a/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml b/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml index 7b25a7a5..ea757a1b 100644 --- a/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml +++ b/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml @@ -35,7 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" delete from api_log where id = #{id} - + delete from api_log where id in #{id} From 5782b7b22664b4b900d5ac85036309eb774e67c4 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Sun, 26 Dec 2021 22:52:28 +0800 Subject: [PATCH 10/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A=201=E3=80=81?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E4=BC=98=E5=8C=96api=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=202=E3=80=81=E4=BC=98=E5=8C=96=E5=89=8D?= =?UTF-8?q?=E7=AB=AF=E7=BF=BB=E8=AF=91=E9=A1=B5=E9=9D=A2=203=E3=80=81?= =?UTF-8?q?=E7=BB=86=E5=8C=96=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/core/web/page/TableDataInfo.java | 8 + .../src/api/{ => business}/english/log.js | 18 -- .../src/views/business/english/log/index.vue | 89 +------- .../business/english/translation/index.vue | 196 ++++++++++++++++++ .../xjs/log/controller/ApiLogController.java | 10 +- .../com/xjs/log/service/IApiLogService.java | 8 +- .../controller/TranslationController.java | 1 + .../resources/mapper/english/ApiLogMapper.xml | 1 + 8 files changed, 228 insertions(+), 103 deletions(-) rename ruoyi-ui/src/api/{ => business}/english/log.js (61%) create mode 100644 ruoyi-ui/src/views/business/english/translation/index.vue diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java index 41dc0fe7..c49056c7 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/web/page/TableDataInfo.java @@ -1,5 +1,8 @@ package com.ruoyi.common.core.web.page; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; + import java.io.Serializable; import java.util.List; @@ -8,20 +11,25 @@ import java.util.List; * * @author ruoyi */ +@ApiModel(value = "表格分页数据对象") public class TableDataInfo implements Serializable { private static final long serialVersionUID = 1L; /** 总记录数 */ + @ApiModelProperty("总记录数") private long total; /** 列表数据 */ + @ApiModelProperty("列表数据") private List rows; /** 消息状态码 */ + @ApiModelProperty("消息状态码") private int code; /** 消息内容 */ + @ApiModelProperty("消息内容") private String msg; /** diff --git a/ruoyi-ui/src/api/english/log.js b/ruoyi-ui/src/api/business/english/log.js similarity index 61% rename from ruoyi-ui/src/api/english/log.js rename to ruoyi-ui/src/api/business/english/log.js index 317e73db..953d75c5 100644 --- a/ruoyi-ui/src/api/english/log.js +++ b/ruoyi-ui/src/api/business/english/log.js @@ -17,24 +17,6 @@ export function getLog(id) { }) } -// 新增日志 -export function addLog(data) { - return request({ - url: '/english/log', - method: 'post', - data: data - }) -} - -// 修改日志 -export function updateLog(data) { - return request({ - url: '/english/log', - method: 'put', - data: data - }) -} - // 删除日志 export function delLog(id) { return request({ diff --git a/ruoyi-ui/src/views/business/english/log/index.vue b/ruoyi-ui/src/views/business/english/log/index.vue index 645c2d45..b682d95e 100644 --- a/ruoyi-ui/src/views/business/english/log/index.vue +++ b/ruoyi-ui/src/views/business/english/log/index.vue @@ -10,15 +10,7 @@ @keyup.enter.native="handleQuery" /> - - - + 搜索 重置 @@ -26,27 +18,6 @@ - - 新增 - - - 修改 - - - - - - - - - + + + + + + + \ No newline at end of file + diff --git a/ruoyi-ui/src/views/business/english/translation/index.vue b/ruoyi-ui/src/views/business/english/translation/index.vue new file mode 100644 index 00000000..b682d95e --- /dev/null +++ b/ruoyi-ui/src/views/business/english/translation/index.vue @@ -0,0 +1,196 @@ + + + diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java index 1967afc7..1f7e1869 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/controller/ApiLogController.java @@ -1,16 +1,15 @@ package com.xjs.log.controller; import java.util.List; -import java.io.IOException; import javax.servlet.http.HttpServletResponse; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import com.ruoyi.common.log.annotation.Log; @@ -31,6 +30,7 @@ import com.ruoyi.common.core.web.page.TableDataInfo; */ @RestController @RequestMapping("log") +@Api(tags = "业务模块-API日志") public class ApiLogController extends BaseController { @Autowired private IApiLogService apiLogService; @@ -40,6 +40,7 @@ public class ApiLogController extends BaseController { */ @RequiresPermissions("english:log:list") @GetMapping("/list") + @ApiOperation("查询日志列表") public TableDataInfo list(ApiLog apiLog) { startPage(); List list = apiLogService.selectApiLogList(apiLog); @@ -52,6 +53,7 @@ public class ApiLogController extends BaseController { @RequiresPermissions("english:log:export") @Log(title = "API日志", businessType = BusinessType.EXPORT) @PostMapping("/export") + @ApiOperation("导出日志列表") public void export(HttpServletResponse response, ApiLog apiLog) { List list = apiLogService.selectApiLogList(apiLog); ExcelUtil util = new ExcelUtil(ApiLog.class); @@ -63,6 +65,7 @@ public class ApiLogController extends BaseController { */ @RequiresPermissions("english:log:query") @GetMapping(value = "/{id}") + @ApiOperation("获取日志详细信息") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(apiLogService.selectApiLogById(id)); } @@ -74,6 +77,7 @@ public class ApiLogController extends BaseController { @RequiresPermissions("english:log:remove") @Log(title = "API日志", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") + @ApiOperation("删除日志") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(apiLogService.deleteApiLogByIds(ids)); } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java index ca81a8f6..2e39d272 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/log/service/IApiLogService.java @@ -17,7 +17,7 @@ public interface IApiLogService * @param id 日志主键 * @return 日志 */ - public ApiLog selectApiLogById(Long id); + ApiLog selectApiLogById(Long id); /** * 查询日志列表 @@ -25,7 +25,7 @@ public interface IApiLogService * @param apiLog 日志 * @return 日志集合 */ - public List selectApiLogList(ApiLog apiLog); + List selectApiLogList(ApiLog apiLog); /** * 批量删除日志 @@ -33,7 +33,7 @@ public interface IApiLogService * @param ids 需要删除的日志主键集合 * @return 结果 */ - public int deleteApiLogByIds(Long[] ids); + int deleteApiLogByIds(Long[] ids); /** * 删除日志信息 @@ -41,5 +41,5 @@ public interface IApiLogService * @param id 日志主键 * @return 结果 */ - public int deleteApiLogById(Long id); + int deleteApiLogById(Long id); } diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java index 35fd2d9e..4f9fbead 100644 --- a/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/translation/controller/TranslationController.java @@ -37,6 +37,7 @@ public class TranslationController { @ApiOperation("翻译接口") @Log(title = "翻译管理") @RequiresLogin + @RequiresPermissions("english:translation:api") public AjaxResult translation(@Validated @RequestBody TranslationQo translationQo) { TranslationVo translationVo=new TranslationVo(); if (BAIDU.equals(translationQo.getTranslationType())) { diff --git a/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml b/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml index ea757a1b..db858c35 100644 --- a/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml +++ b/xjs-business/xjs-business-english/src/main/resources/mapper/english/ApiLogMapper.xml @@ -24,6 +24,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and api_name like concat('%', #{apiName}, '%') and is_success = #{isSuccess} + order by id desc - SELECT - id, - content, - source, - mt create_time - FROM - ( SELECT max( create_time ) mt FROM api_copywriting ) time, - api_copywriting al - WHERE - time.mt = al.create_time + SELECT id, + content, + source, + mt create_time + FROM (SELECT max(create_time) mt FROM api_copywriting) time, + api_copywriting al + WHERE time.mt = al.create_time + + + + + + + + + + + select id, content, source, create_time, type + from api_copywriting + + + + + + + + delete + from api_copywriting + where id = #{id} + + + + delete from api_copywriting where id in + + #{id} + + \ No newline at end of file From 9cd06ce62b6d1d1df216d207c968660e5ad2ce5c Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Tue, 28 Dec 2021 22:01:05 +0800 Subject: [PATCH 27/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A1=E3=80=81?= =?UTF-8?q?=E6=96=87=E6=A1=88=E7=AE=A1=E7=90=86=E5=89=8D=E7=AB=AF=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E5=AE=9E=E7=8E=B0=EF=BC=8C=E6=AD=A3=E5=B8=B8=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=20=20=20=20=20=202=E3=80=81=E6=96=B0=E5=A2=9ETianXing?= =?UTF-8?q?Const=E5=B8=B8=E9=87=8F=E7=B1=BB=EF=BC=8C=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=9E=9A=E4=B8=BE=E7=9B=B8=E5=85=B3=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/api/business/english/copywriting.js | 30 +-- .../business/english/copywriting/index.vue | 184 ++++++++++++------ .../com/xjs/common/consts/TianXingConst.java | 12 ++ .../java/com/xjs/common/enums/StatusEnum.java | 4 +- .../xjs/copywriting/domain/CopyWriting.java | 9 +- .../impl/TianXingPYQCopyWritingFactory.java | 4 +- .../impl/TianXingWYYCopyWritingFactory.java | 4 +- .../main/java/com/xjs/log/domain/ApiLog.java | 2 +- .../resources/mapper/english/ApiLogMapper.xml | 2 +- .../mapper/english/CopyWritingMapper.xml | 6 +- 10 files changed, 157 insertions(+), 100 deletions(-) create mode 100644 xjs-business/xjs-business-english/src/main/java/com/xjs/common/consts/TianXingConst.java diff --git a/ruoyi-ui/src/api/business/english/copywriting.js b/ruoyi-ui/src/api/business/english/copywriting.js index 5a5c1ba4..95060adc 100644 --- a/ruoyi-ui/src/api/business/english/copywriting.js +++ b/ruoyi-ui/src/api/business/english/copywriting.js @@ -1,44 +1,26 @@ import request from '@/utils/request' // 查询文案api,通过api获取文案信息列表 -export function listCopywriting(query) { +export function listCopyWriting(query) { return request({ - url: '/english/copywriting/list', + url: '/english/copyWriting/list', method: 'get', params: query }) } // 查询文案api,通过api获取文案信息详细 -export function getCopywriting(id) { +export function getCopyWriting(id) { return request({ - url: '/english/copywriting/' + id, + url: '/english/copyWriting/' + id, method: 'get' }) } -// 新增文案api,通过api获取文案信息 -export function addCopywriting(data) { - return request({ - url: '/english/copywriting', - method: 'post', - data: data - }) -} - -// 修改文案api,通过api获取文案信息 -export function updateCopywriting(data) { - return request({ - url: '/english/copywriting', - method: 'put', - data: data - }) -} - // 删除文案api,通过api获取文案信息 -export function delCopywriting(id) { +export function delCopyWriting(id) { return request({ - url: '/english/copywriting/' + id, + url: '/english/copyWriting/' + id, method: 'delete' }) } diff --git a/ruoyi-ui/src/views/business/english/copywriting/index.vue b/ruoyi-ui/src/views/business/english/copywriting/index.vue index 9f0884a2..aa287cea 100644 --- a/ruoyi-ui/src/views/business/english/copywriting/index.vue +++ b/ruoyi-ui/src/views/business/english/copywriting/index.vue @@ -1,16 +1,46 @@ diff --git a/xjs-business/xjs-business-english/pom.xml b/xjs-business/xjs-business-english/pom.xml index 720c3366..a4a3ae07 100644 --- a/xjs-business/xjs-business-english/pom.xml +++ b/xjs-business/xjs-business-english/pom.xml @@ -8,13 +8,9 @@ 3.3.0 4.0.0 - 业务模块-英语管理 + 业务模块-英语管理模块 xjs-business-english - - 8 - 8 - \ No newline at end of file diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/controller/EnglishWordController.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/controller/EnglishWordController.java new file mode 100644 index 00000000..2c6e23a2 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/controller/EnglishWordController.java @@ -0,0 +1,94 @@ +package com.xjs.word.controller; + +import com.ruoyi.common.core.utils.poi.ExcelUtil; +import com.ruoyi.common.core.web.controller.BaseController; +import com.ruoyi.common.core.web.domain.AjaxResult; +import com.ruoyi.common.core.web.page.TableDataInfo; +import com.ruoyi.common.log.annotation.Log; +import com.ruoyi.common.log.enums.BusinessType; +import com.ruoyi.common.security.annotation.RequiresPermissions; +import com.xjs.word.domain.EnglishWord; +import com.xjs.word.service.IEnglishWordService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +/** + * 英语单词Controller + * + * @author xjs + * @date 2021-12-29 + */ +@RestController +@RequestMapping("/word") +public class EnglishWordController extends BaseController { + @Autowired + private IEnglishWordService englishWordService; + + + //------------------------代码自动生成----------------------------------- + + /** + * 查询英语单词列表 + */ + @RequiresPermissions("english:word:list") + @GetMapping("/list") + public TableDataInfo list(EnglishWord englishWord) { + startPage(); + List list = englishWordService.selectEnglishWordList(englishWord); + return getDataTable(list); + } + + /** + * 导出英语单词列表 + */ + @RequiresPermissions("english:word:export") + @Log(title = "英语单词", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, EnglishWord englishWord) { + List list = englishWordService.selectEnglishWordList(englishWord); + ExcelUtil util = new ExcelUtil(EnglishWord.class); + util.exportExcel(response, list, "英语单词数据"); + } + + /** + * 获取英语单词详细信息 + */ + @RequiresPermissions("english:word:query") + @GetMapping(value = "/{id}") + public AjaxResult getInfo(@PathVariable("id") Long id) { + return AjaxResult.success(englishWordService.selectEnglishWordById(id)); + } + + /** + * 新增英语单词 + */ + @RequiresPermissions("english:word:add") + @Log(title = "英语单词", businessType = BusinessType.INSERT) + @PostMapping + public AjaxResult add(@RequestBody EnglishWord englishWord) { + return toAjax(englishWordService.insertEnglishWord(englishWord)); + } + + /** + * 修改英语单词 + */ + @RequiresPermissions("english:word:edit") + @Log(title = "英语单词", businessType = BusinessType.UPDATE) + @PutMapping + public AjaxResult edit(@RequestBody EnglishWord englishWord) { + return toAjax(englishWordService.updateEnglishWord(englishWord)); + } + + /** + * 删除英语单词 + */ + @RequiresPermissions("english:word:remove") + @Log(title = "英语单词", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@PathVariable Long[] ids) { + return toAjax(englishWordService.deleteEnglishWordByIds(ids)); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/domain/EnglishWord.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/domain/EnglishWord.java new file mode 100644 index 00000000..a7770ccc --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/domain/EnglishWord.java @@ -0,0 +1,129 @@ +package com.xjs.word.domain; + +import com.baomidou.mybatisplus.annotation.TableId; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.core.annotation.Excel; +import com.ruoyi.common.core.web.domain.BaseEntity; + +/** + * 英语单词对象 english_word + * + * @author xjs + * @date 2021-12-29 + */ +public class EnglishWord extends BaseEntity { + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId + private Long id; + + /** + * 英语单词 + */ + @Excel(name = "英语单词") + private String englishWord; + + /** + * 对应的中文 + */ + @Excel(name = "对应的中文") + private String chineseWord; + + /** + * 排序1,2,3,4 + */ + @Excel(name = "排序1,2,3,4") + private Integer sort; + + /** + * 是否收藏 1收藏 2不收藏 + */ + @Excel(name = "是否收藏 1收藏 2不收藏") + private Integer isCollect; + + /** + * 置顶 1置顶 2不置顶 + */ + @Excel(name = "置顶 1置顶 2不置顶") + private Integer top; + + /** + * 查看次数 + */ + @Excel(name = "查看次数") + private Long lookCount; + + public void setId(Long id) { + this.id = id; + } + + public Long getId() { + return id; + } + + public void setEnglishWord(String englishWord) { + this.englishWord = englishWord; + } + + public String getEnglishWord() { + return englishWord; + } + + public void setChineseWord(String chineseWord) { + this.chineseWord = chineseWord; + } + + public String getChineseWord() { + return chineseWord; + } + + public void setSort(Integer sort) { + this.sort = sort; + } + + public Integer getSort() { + return sort; + } + + public void setIsCollect(Integer isCollect) { + this.isCollect = isCollect; + } + + public Integer getIsCollect() { + return isCollect; + } + + public void setTop(Integer top) { + this.top = top; + } + + public Integer getTop() { + return top; + } + + public void setLookCount(Long lookCount) { + this.lookCount = lookCount; + } + + public Long getLookCount() { + return lookCount; + } + + @Override + public String toString() { + return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("englishWord", getEnglishWord()) + .append("chineseWord", getChineseWord()) + .append("sort", getSort()) + .append("isCollect", getIsCollect()) + .append("top", getTop()) + .append("lookCount", getLookCount()) + .append("createTime", getCreateTime()) + .toString(); + } +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/mapper/EnglishWordMapper.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/mapper/EnglishWordMapper.java new file mode 100644 index 00000000..2bd03322 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/mapper/EnglishWordMapper.java @@ -0,0 +1,64 @@ +package com.xjs.word.mapper; + +import com.xjs.word.domain.EnglishWord; + +import java.util.List; + +/** + * 英语单词Mapper接口 + * + * @author xjs + * @date 2021-12-29 + */ +public interface EnglishWordMapper { + + //------------------------代码自动生成----------------------------------- + + /** + * 查询英语单词 + * + * @param id 英语单词主键 + * @return 英语单词 + */ + EnglishWord selectEnglishWordById(Long id); + + /** + * 查询英语单词列表 + * + * @param englishWord 英语单词 + * @return 英语单词集合 + */ + List selectEnglishWordList(EnglishWord englishWord); + + /** + * 新增英语单词 + * + * @param englishWord 英语单词 + * @return 结果 + */ + int insertEnglishWord(EnglishWord englishWord); + + /** + * 修改英语单词 + * + * @param englishWord 英语单词 + * @return 结果 + */ + int updateEnglishWord(EnglishWord englishWord); + + /** + * 删除英语单词 + * + * @param id 英语单词主键 + * @return 结果 + */ + int deleteEnglishWordById(Long id); + + /** + * 批量删除英语单词 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + int deleteEnglishWordByIds(Long[] ids); +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/IEnglishWordService.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/IEnglishWordService.java new file mode 100644 index 00000000..651b298c --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/IEnglishWordService.java @@ -0,0 +1,64 @@ +package com.xjs.word.service; + +import com.xjs.word.domain.EnglishWord; + +import java.util.List; + +/** + * 英语单词Service接口 + * + * @author xjs + * @date 2021-12-29 + */ +public interface IEnglishWordService { + + + //------------------------代码自动生成----------------------------------- + /** + * 查询英语单词 + * + * @param id 英语单词主键 + * @return 英语单词 + */ + public EnglishWord selectEnglishWordById(Long id); + + /** + * 查询英语单词列表 + * + * @param englishWord 英语单词 + * @return 英语单词集合 + */ + public List selectEnglishWordList(EnglishWord englishWord); + + /** + * 新增英语单词 + * + * @param englishWord 英语单词 + * @return 结果 + */ + public int insertEnglishWord(EnglishWord englishWord); + + /** + * 修改英语单词 + * + * @param englishWord 英语单词 + * @return 结果 + */ + public int updateEnglishWord(EnglishWord englishWord); + + /** + * 批量删除英语单词 + * + * @param ids 需要删除的英语单词主键集合 + * @return 结果 + */ + public int deleteEnglishWordByIds(Long[] ids); + + /** + * 删除英语单词信息 + * + * @param id 英语单词主键 + * @return 结果 + */ + public int deleteEnglishWordById(Long id); +} diff --git a/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/impl/EnglishWordServiceImpl.java b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/impl/EnglishWordServiceImpl.java new file mode 100644 index 00000000..818f82e2 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/java/com/xjs/word/service/impl/EnglishWordServiceImpl.java @@ -0,0 +1,92 @@ +package com.xjs.word.service.impl; + +import com.ruoyi.common.core.utils.DateUtils; +import com.xjs.word.domain.EnglishWord; +import com.xjs.word.mapper.EnglishWordMapper; +import com.xjs.word.service.IEnglishWordService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 英语单词Service业务层处理 + * + * @author xjs + * @date 2021-12-29 + */ +@Service +public class EnglishWordServiceImpl implements IEnglishWordService { + @Resource + private EnglishWordMapper englishWordMapper; + + + //------------------------代码自动生成----------------------------------- + + /** + * 查询英语单词 + * + * @param id 英语单词主键 + * @return 英语单词 + */ + @Override + public EnglishWord selectEnglishWordById(Long id) { + return englishWordMapper.selectEnglishWordById(id); + } + + /** + * 查询英语单词列表 + * + * @param englishWord 英语单词 + * @return 英语单词 + */ + @Override + public List selectEnglishWordList(EnglishWord englishWord) { + return englishWordMapper.selectEnglishWordList(englishWord); + } + + /** + * 新增英语单词 + * + * @param englishWord 英语单词 + * @return 结果 + */ + @Override + public int insertEnglishWord(EnglishWord englishWord) { + englishWord.setCreateTime(DateUtils.getNowDate()); + return englishWordMapper.insertEnglishWord(englishWord); + } + + /** + * 修改英语单词 + * + * @param englishWord 英语单词 + * @return 结果 + */ + @Override + public int updateEnglishWord(EnglishWord englishWord) { + return englishWordMapper.updateEnglishWord(englishWord); + } + + /** + * 批量删除英语单词 + * + * @param ids 需要删除的英语单词主键 + * @return 结果 + */ + @Override + public int deleteEnglishWordByIds(Long[] ids) { + return englishWordMapper.deleteEnglishWordByIds(ids); + } + + /** + * 删除英语单词信息 + * + * @param id 英语单词主键 + * @return 结果 + */ + @Override + public int deleteEnglishWordById(Long id) { + return englishWordMapper.deleteEnglishWordById(id); + } +} diff --git a/xjs-business/xjs-business-english/src/main/resources/bootstrap.yml b/xjs-business/xjs-business-english/src/main/resources/bootstrap.yml index 84b61ceb..1e9e27fb 100644 --- a/xjs-business/xjs-business-english/src/main/resources/bootstrap.yml +++ b/xjs-business/xjs-business-english/src/main/resources/bootstrap.yml @@ -25,3 +25,5 @@ spring: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} #配置组 group: xjs + + diff --git a/xjs-business/xjs-business-english/src/main/resources/mapper.english/EnglishWordMapper.xml b/xjs-business/xjs-business-english/src/main/resources/mapper.english/EnglishWordMapper.xml new file mode 100644 index 00000000..bbd9f3a5 --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/mapper.english/EnglishWordMapper.xml @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + select id, + english_word, + chinese_word, + sort, + is_collect, + top, + look_count, + create_time + from english_word + + + + + + + + insert into english_word + + id, + english_word, + chinese_word, + sort, + is_collect, + top, + look_count, + create_time, + + + #{id}, + #{englishWord}, + #{chineseWord}, + #{sort}, + #{isCollect}, + #{top}, + #{lookCount}, + #{createTime}, + + + + + update english_word + + english_word = #{englishWord}, + chinese_word = #{chineseWord}, + sort = #{sort}, + is_collect = #{isCollect}, + top = #{top}, + look_count = #{lookCount}, + create_time = #{createTime}, + + where id = #{id} + + + + delete + from english_word + where id = #{id} + + + + delete from english_word where id in + + #{id} + + + \ No newline at end of file diff --git a/xjs-business/xjs-business-english/src/main/resources/rebel.xml b/xjs-business/xjs-business-english/src/main/resources/rebel.xml new file mode 100644 index 00000000..2ac5b89c --- /dev/null +++ b/xjs-business/xjs-business-english/src/main/resources/rebel.xml @@ -0,0 +1,16 @@ + + + + + + xjs-business-english + + + + + + + From 75fded81276bde01881a951d0a056e28df35a1d0 Mon Sep 17 00:00:00 2001 From: xjs <1294405880@qq.com> Date: Wed, 29 Dec 2021 22:23:34 +0800 Subject: [PATCH 38/76] =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=9A1=E3=80=81naco?= =?UTF-8?q?s=E6=9B=B4=E6=8D=A2=E5=91=BD=E5=90=8D=E7=A9=BA=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-auth/src/main/resources/bootstrap.yml | 2 + .../src/main/resources/bootstrap.yml | 2 + .../src/main/resources/bootstrap.yml | 2 + .../src/main/resources/bootstrap.yml | 2 + .../src/main/resources/bootstrap.yml | 2 + .../src/main/resources/bootstrap.yml | 2 + .../src/views/business/english/word/index.vue | 37 +++---- .../src/main/resources/bootstrap.yml | 2 + xjs-business/pom.xml | 1 + xjs-business/xjs-business-common/pom.xml | 19 ++++ .../java/com/xjs}/config/BaiduProperties.java | 2 +- .../java/com/xjs}/config/FeignConfig.java | 2 +- .../main/java/com/xjs}/config/JsonConfig.java | 2 +- .../com/xjs}/config/TianXingProperties.java | 2 +- .../com/xjs}/handler/MyMetaObjectHandler.java | 3 +- .../src/main/resources/rebel.xml | 16 ++++ xjs-business/xjs-business-english/pom.xml | 8 ++ .../java/com/xjs/word/domain/EnglishWord.java | 96 ++++--------------- .../xjs/word/mapper/EnglishWordMapper.java | 19 +--- .../service/impl/EnglishWordServiceImpl.java | 6 +- .../src/main/resources/bootstrap.yml | 2 + .../mapper.english/EnglishWordMapper.xml | 42 +------- xjs-business/xjs-business-openapi/pom.xml | 9 ++ .../impl/TianXingJDTCCopyWritingFactory.java | 2 +- .../impl/TianXingMMMYCopyWritingFactory.java | 2 +- .../impl/TianXingPYQCopyWritingFactory.java | 2 +- .../impl/TianXingWYYCopyWritingFactory.java | 2 +- .../factory/impl/BaiDuTranslationFactory.java | 2 +- .../src/main/resources/bootstrap.yml | 2 + 29 files changed, 119 insertions(+), 173 deletions(-) create mode 100644 xjs-business/xjs-business-common/pom.xml rename xjs-business/{xjs-business-openapi/src/main/java/com/xjs/common => xjs-business-common/src/main/java/com/xjs}/config/BaiduProperties.java (93%) rename xjs-business/{xjs-business-openapi/src/main/java/com/xjs/common => xjs-business-common/src/main/java/com/xjs}/config/FeignConfig.java (92%) rename xjs-business/{xjs-business-openapi/src/main/java/com/xjs/common => xjs-business-common/src/main/java/com/xjs}/config/JsonConfig.java (99%) rename xjs-business/{xjs-business-openapi/src/main/java/com/xjs/common => xjs-business-common/src/main/java/com/xjs}/config/TianXingProperties.java (92%) rename xjs-business/{xjs-business-openapi/src/main/java/com/xjs/common => xjs-business-common/src/main/java/com/xjs}/handler/MyMetaObjectHandler.java (93%) create mode 100644 xjs-business/xjs-business-common/src/main/resources/rebel.xml diff --git a/ruoyi-auth/src/main/resources/bootstrap.yml b/ruoyi-auth/src/main/resources/bootstrap.yml index f456b03c..a439357e 100644 --- a/ruoyi-auth/src/main/resources/bootstrap.yml +++ b/ruoyi-auth/src/main/resources/bootstrap.yml @@ -23,3 +23,5 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + #命名空间 + namespace: xjs-666 diff --git a/ruoyi-gateway/src/main/resources/bootstrap.yml b/ruoyi-gateway/src/main/resources/bootstrap.yml index 0aa81c22..df181d92 100644 --- a/ruoyi-gateway/src/main/resources/bootstrap.yml +++ b/ruoyi-gateway/src/main/resources/bootstrap.yml @@ -25,6 +25,8 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + #命名空间 + namespace: xjs-666 sentinel: # 取消控制台懒加载 eager: true diff --git a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml index 55ff4112..7442fabd 100644 --- a/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-file/src/main/resources/bootstrap.yml @@ -23,3 +23,5 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + #命名空间 + namespace: xjs-666 diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml index 0ef5a457..11f77df4 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/bootstrap.yml @@ -23,3 +23,5 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + #命名空间 + namespace: xjs-666 diff --git a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml index b86f8c9e..1d86dccb 100644 --- a/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-job/src/main/resources/bootstrap.yml @@ -23,3 +23,5 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + #命名空间 + namespace: xjs-666 diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml index 40ab7816..034fae05 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/bootstrap.yml @@ -23,3 +23,5 @@ spring: # 共享配置 shared-configs: - application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension} + #命名空间 + namespace: xjs-666 diff --git a/ruoyi-ui/src/views/business/english/word/index.vue b/ruoyi-ui/src/views/business/english/word/index.vue index d99c96e7..c73be4f9 100644 --- a/ruoyi-ui/src/views/business/english/word/index.vue +++ b/ruoyi-ui/src/views/business/english/word/index.vue @@ -85,9 +85,9 @@ - - - + + + - - + + + - - - @@ -164,9 +158,6 @@ > - - -