From c7bace1102b3a1d3d64d29954a3a4f90ba9b3db0 Mon Sep 17 00:00:00 2001 From: icanci Date: Sat, 12 Nov 2022 13:49:15 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=9F=9F=E7=9A=84=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rec/admin/biz/service/DomainService.java | 16 ++ .../biz/service/impl/DomainServiceImpl.java | 10 ++ .../dal/mongodb/daointerface/DomainDAO.java | 4 + .../admin/dal/mongodb/dateobject/BaseDO.java | 4 + .../dal/mongodb/dateobject/LogOperateDO.java | 3 + .../dal/mongodb/mongo/AbstractBaseDAO.java | 2 +- .../dal/mongodb/mongo/MongoDomainDAO.java | 16 ++ rec-admin/rec-admin-views/pom.xml | 124 +++++++-------- .../main/resources/vueboot/package-lock.json | 5 + .../src/main/resources/vueboot/package.json | 1 + .../resources/vueboot/src/api/domainApi.js | 71 +++++++++ .../src/main/resources/vueboot/src/main.js | 14 +- .../vueboot/src/views/common/vue-page.vue | 56 +++++++ .../views/ruleConfig/dialog/domainForm.vue | 117 +++++++++++++++ .../vueboot/src/views/ruleConfig/domain.vue | 141 +++++++++++++++++- .../src/main/resources/vueboot/vue.config.js | 3 +- .../controller/config/DomainController.java | 15 +- .../rec/admin/web/form/DomainQueryForm.java | 2 +- .../cn/icanci/rec/admin/web/model/Base.java | 4 + .../rec/admin/web/model/LogOperate.java | 3 + .../rec/common/model/config/BaseVO.java | 4 + .../rec/common/model/log/LogOperateVO.java | 3 + 22 files changed, 543 insertions(+), 75 deletions(-) create mode 100644 rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/domainApi.js create mode 100644 rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-page.vue create mode 100644 rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DomainService.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DomainService.java index 56bb700..e0c0df2 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DomainService.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DomainService.java @@ -42,4 +42,20 @@ public interface DomainService extends BaseService { * @return 返回分页查询结果 */ PageList queryPage(DomainVO domain, int pageNum, int pageSize); + + /** + * 根据DomainName查询 + * + * @param domainName domainName + * @return 返回查询的结果 + */ + DomainVO queryByDomainName(String domainName); + + /** + * 根据domainCode查询 + * + * @param domainCode domainCode + * @return 返回查询的结果 + */ + DomainVO queryByDomainCode(String domainCode); } diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DomainServiceImpl.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DomainServiceImpl.java index 027578d..e72f7f1 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DomainServiceImpl.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DomainServiceImpl.java @@ -50,4 +50,14 @@ public class DomainServiceImpl implements DomainService { PageList pageQuery = domainDAO.pageQuery(domainMapper.vo2do(domain), pageNum, pageSize); return new PageList<>(domainMapper.dos2vos(pageQuery.getData()), pageQuery.getPaginator()); } + + @Override + public DomainVO queryByDomainName(String domainName) { + return domainMapper.do2vo(domainDAO.queryByDomainName(domainName)); + } + + @Override + public DomainVO queryByDomainCode(String domainCode) { + return domainMapper.do2vo(domainDAO.queryByDomainCode(domainCode)); + } } diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DomainDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DomainDAO.java index e9227c4..ea89588 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DomainDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DomainDAO.java @@ -16,6 +16,10 @@ public interface DomainDAO extends BaseDAO { */ Class COLLECTION_CLASS = DomainDO.class; + DomainDO queryByDomainName(String domainName); + + DomainDO queryByDomainCode(String domainCode); + interface DomainColumn extends BaseColumn { /** * 域Code diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/BaseDO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/BaseDO.java index c6f90b5..fc4e2e2 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/BaseDO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/BaseDO.java @@ -5,6 +5,8 @@ import java.util.StringJoiner; import org.springframework.data.annotation.Id; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * 基础存储模型 BaseDO * @@ -31,11 +33,13 @@ public class BaseDO { /** * 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 更新时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; /** diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/LogOperateDO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/LogOperateDO.java index 2a678d8..66546aa 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/LogOperateDO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/dateobject/LogOperateDO.java @@ -6,6 +6,8 @@ import java.util.Date; import org.springframework.data.annotation.Id; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * @author icanci * @since 1.0 Created in 2022/11/11 13:39 @@ -32,6 +34,7 @@ public class LogOperateDO { private String content; /** 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** 环境 */ diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/AbstractBaseDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/AbstractBaseDAO.java index 198118d..c6066bd 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/AbstractBaseDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/AbstractBaseDAO.java @@ -23,7 +23,7 @@ public abstract class AbstractBaseDAO extends MongoPageHelper t.setId(null); t.setIsDelete(0); t.setCreateTime(new Date()); - t.setCreateTime(new Date()); + t.setUpdateTime(new Date()); t.setEnv(DEFAULT_ENV); t.setUuid(IDHolder.generateNoBySnowFlakeDefaultPrefix()); } diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoDomainDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoDomainDAO.java index decfe34..7e0a1e7 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoDomainDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoDomainDAO.java @@ -63,4 +63,20 @@ public class MongoDomainDAO extends AbstractBaseDAO implements DomainD Query query = new Query(criteria); return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); } + + @Override + public DomainDO queryByDomainName(String domainName) { + Criteria criteria = Criteria.where(DomainColumn.domainName).is(domainName); + criteria.and(DomainColumn.env).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } + + @Override + public DomainDO queryByDomainCode(String domainCode) { + Criteria criteria = Criteria.where(DomainColumn.domainCode).is(domainCode); + criteria.and(DomainColumn.env).is(DEFAULT_ENV); + Query query = new Query(criteria); + return mongoTemplate.findOne(query, COLLECTION_CLASS, COLLECTION_NAME); + } } diff --git a/rec-admin/rec-admin-views/pom.xml b/rec-admin/rec-admin-views/pom.xml index 6422382..2b5e2c9 100644 --- a/rec-admin/rec-admin-views/pom.xml +++ b/rec-admin/rec-admin-views/pom.xml @@ -37,68 +37,68 @@ - - - org.codehaus.mojo - exec-maven-plugin - - - - exec-npm-install - package - - exec - - - npm - - install - - src/main/resources/vueboot - - - - - exec-npm-run-build - package - - exec - - - npm - - run - build - - src/main/resources/vueboot - - - - - - - org.apache.maven.plugins - maven-resources-plugin - - - copy-static-dist - validate - - copy-resources - - - src/main/resources/static - true - - - src/main/resources/vueboot/dist - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + org.springframework.boot spring-boot-maven-plugin diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/package-lock.json b/rec-admin/rec-admin-views/src/main/resources/vueboot/package-lock.json index f017431..6737ab2 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/package-lock.json +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/package-lock.json @@ -7287,6 +7287,11 @@ "ml-array-rescale": "^1.3.7" } }, + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmmirror.com/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmmirror.com/move-concurrently/-/move-concurrently-1.0.1.tgz", diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/package.json b/rec-admin/rec-admin-views/src/main/resources/vueboot/package.json index 23d5a52..f02166c 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/package.json +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/package.json @@ -21,6 +21,7 @@ "axios": "^0.18.0", "element-ui": "^2.15.1", "js-cookie": "2.2.0", + "moment": "^2.29.4", "normalize.css": "7.0.0", "nprogress": "0.2.0", "vue": "2.5.17", diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/domainApi.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/domainApi.js new file mode 100644 index 0000000..136a6a1 --- /dev/null +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/domainApi.js @@ -0,0 +1,71 @@ +import request from '@/utils/request' + +/** + * 验证 domainName + * + * @param domainName domainName + * @returns {*} + */ +export async function remoteValidateDomainName(domainName) { + return await request({ + url: '/rec/domain/validateDomainName/' + domainName, + method: 'get', + }) +} + +/** + * 验证 domainCode + * + * @param domainCode domainCode + * @returns {*} + */ +export async function remoteValidateDomainCode(domainCode) { + return await request({ + url: '/rec/domain/validateDomainCode/' + domainCode, + method: 'get', + }) +} + +/** + * 保存域 + * + * @param domain domain + * @returns {*} + */ +export async function saveDomain(domain) { + return await request({ + url: '/rec/domain/save', + method: 'post', + data: domain + }) +} + + +/** + * 分页查询 + * + * @param domain domain + * @param paginator paginator + * @returns {*} + */ +export async function domainPageQuery(domain, paginator) { + return await request({ + url: '/rec/domain/query', + method: 'post', + data: { + 'domain': domain, + 'paginator': paginator + } + }) +} + +// export function validateDomainCode(domainCode) { +// return request({ +// url: '/rec/domain/validateDomainName/'+domainCode, +// method: 'get', +// data: { +// username, +// password +// } +// }) +// } diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js index 8b675ba..7f2058f 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js @@ -9,17 +9,21 @@ import router from './router' import store from './store' import '@/icons' // icon -import '@/permission' // permission control +import '@/permission' // 英文版本 // Vue.use(ElementUI, { locale }) // 中文版 Vue.use(ElementUI) Vue.config.productionTip = false +// 自定义全局方法 +Vue.prototype.$cloneObj = function (data) { + return JSON.parse(JSON.stringify(data)) +} new Vue({ - el: '#app', - router, - store, - render: h => h(App) + el: '#app', + router, + store, + render: h => h(App) }) diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-page.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-page.vue new file mode 100644 index 0000000..1cf9578 --- /dev/null +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-page.vue @@ -0,0 +1,56 @@ + + + diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue new file mode 100644 index 0000000..a49b6f6 --- /dev/null +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue @@ -0,0 +1,117 @@ + + + diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue index ed4c7b0..2d43dfe 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue @@ -1,21 +1,154 @@ diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/vue.config.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/vue.config.js index 8725416..1eaa50c 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/vue.config.js +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/vue.config.js @@ -1,3 +1,4 @@ module.exports = { - lintOnSave: false + lintOnSave: false, + runtimeCompiler: true } diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DomainController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DomainController.java index 3918658..8a1daa1 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DomainController.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DomainController.java @@ -4,6 +4,7 @@ import cn.icanci.rec.admin.biz.service.DomainService; import cn.icanci.rec.admin.web.form.DomainQueryForm; import cn.icanci.rec.admin.web.mapper.DomainWebMapper; import cn.icanci.rec.admin.web.model.Domain; +import cn.icanci.rec.common.model.config.DomainVO; import cn.icanci.rec.common.result.R; import javax.annotation.Resource; @@ -22,7 +23,7 @@ public class DomainController { @Resource private DomainWebMapper domainWebMapper; - @GetMapping("query") + @PostMapping("query") public R query(@RequestBody DomainQueryForm form) { return R.builderOk() .data("queryPage", domainService.queryPage(domainWebMapper.web2vo(form.getDomain()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize())).build(); @@ -33,4 +34,16 @@ public class DomainController { domainService.save(domainWebMapper.web2vo(domain)); return R.builderOk().build(); } + + @GetMapping("validateDomainName/{domainName}") + public R validateDomainName(@PathVariable("domainName") String domainName) { + DomainVO domain = domainService.queryByDomainName(domainName); + return R.builderOk().data("result", domain == null).build(); + } + + @GetMapping("validateDomainCode/{domainCode}") + public R validateDomainCode(@PathVariable("domainCode") String domainCode) { + DomainVO domain = domainService.queryByDomainCode(domainCode); + return R.builderOk().data("result", domain == null).build(); + } } diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/form/DomainQueryForm.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/form/DomainQueryForm.java index 1921b16..15c7265 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/form/DomainQueryForm.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/form/DomainQueryForm.java @@ -12,7 +12,7 @@ import java.io.Serializable; public class DomainQueryForm implements Serializable { private static final long serialVersionUID = 2911663907403903086L; - private Domain domain; + private Domain domain; private Paginator paginator; diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/Base.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/Base.java index 1cf46f7..98ad3af 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/Base.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/Base.java @@ -6,6 +6,8 @@ import java.util.StringJoiner; import org.springframework.data.annotation.Id; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * 基础存储模型 Base * @@ -33,11 +35,13 @@ public class Base implements Serializable { /** * 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 更新时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; /** diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/LogOperate.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/LogOperate.java index 858fa1c..99954f5 100644 --- a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/LogOperate.java +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/model/LogOperate.java @@ -7,6 +7,8 @@ import java.util.Date; import org.springframework.data.annotation.Id; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * @author icanci * @since 1.0 Created in 2022/11/11 13:39 @@ -34,6 +36,7 @@ public class LogOperate implements Serializable { private String content; /** 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** 环境 */ diff --git a/rec-common/src/main/java/cn/icanci/rec/common/model/config/BaseVO.java b/rec-common/src/main/java/cn/icanci/rec/common/model/config/BaseVO.java index 940dc16..cae557c 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/model/config/BaseVO.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/model/config/BaseVO.java @@ -3,6 +3,8 @@ package cn.icanci.rec.common.model.config; import java.util.Date; import java.util.StringJoiner; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * 基础模型 * @@ -28,11 +30,13 @@ public class BaseVO { /** * 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** * 更新时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; /** diff --git a/rec-common/src/main/java/cn/icanci/rec/common/model/log/LogOperateVO.java b/rec-common/src/main/java/cn/icanci/rec/common/model/log/LogOperateVO.java index 64ec590..158bf9e 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/model/log/LogOperateVO.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/model/log/LogOperateVO.java @@ -4,6 +4,8 @@ import cn.icanci.rec.common.enums.LogOperatorTypeEnum; import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * @author icanci * @since 1.0 Created in 2022/10/30 21:13 @@ -27,6 +29,7 @@ public class LogOperateVO { private String content; /** 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** 环境 */ -- Gitee From 0a5413aae688c2ca1c6a02460493715230584373 Mon Sep 17 00:00:00 2001 From: icanci Date: Sat, 12 Nov 2022 13:50:51 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=9F=9F=E7=9A=84=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/vueboot/src/views/ruleConfig/domain.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue index 2d43dfe..4e19663 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue @@ -6,10 +6,10 @@ - + - + -- Gitee From 37668d66d998337589197b4f10b387cf6222f114 Mon Sep 17 00:00:00 2001 From: icanci Date: Sat, 12 Nov 2022 15:28:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../rec/admin/biz/event/log/LogEvent.java | 51 +++++++- .../admin/biz/mapper/LogOperateMapper.java | 16 +++ .../convertor/ModuleTypeEnumConverter.java | 13 +++ .../admin/biz/service/LogOperateService.java | 20 ++++ .../service/impl/LogOperateServiceImpl.java | 26 +++++ .../dal/mongodb/mongo/MongoLogOperateDAO.java | 8 +- .../main/resources/vueboot/src/api/logApi.js | 19 +++ .../vueboot/src/views/common/vue-log.vue | 109 ++++++++++++++++++ .../views/ruleConfig/dialog/domainForm.vue | 26 +++-- .../vueboot/src/views/ruleConfig/domain.vue | 42 +++++-- .../admin/web/controller/LogController.java | 39 +++++++ .../rec/admin/web/form/LogQueryForm.java | 33 ++++++ .../admin/web/mapper/LogOperateWebMapper.java | 32 +++++ .../rec/common/enums/ModuleTypeEnum.java | 41 +++++++ .../rec/common/model/log/LogOperateVO.java | 7 +- 15 files changed, 451 insertions(+), 31 deletions(-) create mode 100644 rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/mapper/LogOperateMapper.java create mode 100644 rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/mapper/convertor/ModuleTypeEnumConverter.java create mode 100644 rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/logApi.js create mode 100644 rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue create mode 100644 rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/LogController.java create mode 100644 rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/form/LogQueryForm.java create mode 100644 rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/mapper/LogOperateWebMapper.java create mode 100644 rec-common/src/main/java/cn/icanci/rec/common/enums/ModuleTypeEnum.java diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/event/log/LogEvent.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/event/log/LogEvent.java index a0cb389..e3cf164 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/event/log/LogEvent.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/event/log/LogEvent.java @@ -1,11 +1,60 @@ package cn.icanci.rec.admin.biz.event.log; import cn.icanci.rec.admin.biz.event.RecEvent; +import cn.icanci.rec.common.enums.LogOperatorTypeEnum; +import cn.icanci.rec.common.enums.ModuleTypeEnum; /** * @author icanci * @since 1.0 Created in 2022/11/12 10:42 */ public class LogEvent extends RecEvent { - private static final long serialVersionUID = 6383748454354078356L; + private static final long serialVersionUID = 6383748454354078356L; + + private String targetId; + + private ModuleTypeEnum moduleType; + + private String context; + + private LogOperatorTypeEnum logOperatorType; + + public LogEvent(String targetId, ModuleTypeEnum moduleType, String context, LogOperatorTypeEnum logOperatorType) { + this.targetId = targetId; + this.moduleType = moduleType; + this.context = context; + this.logOperatorType = logOperatorType; + } + + public String getTargetId() { + return targetId; + } + + public void setTargetId(String targetId) { + this.targetId = targetId; + } + + public ModuleTypeEnum getModuleType() { + return moduleType; + } + + public void setModuleType(ModuleTypeEnum moduleType) { + this.moduleType = moduleType; + } + + public String getContext() { + return context; + } + + public void setContext(String context) { + this.context = context; + } + + public LogOperatorTypeEnum getLogOperatorType() { + return logOperatorType; + } + + public void setLogOperatorType(LogOperatorTypeEnum logOperatorType) { + this.logOperatorType = logOperatorType; + } } diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/mapper/LogOperateMapper.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/mapper/LogOperateMapper.java new file mode 100644 index 0000000..4d846aa --- /dev/null +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/mapper/LogOperateMapper.java @@ -0,0 +1,16 @@ +package cn.icanci.rec.admin.biz.mapper; + +import cn.icanci.rec.admin.biz.mapper.convertor.ModuleTypeEnumConverter; +import cn.icanci.rec.admin.dal.mongodb.dateobject.LogOperateDO; +import cn.icanci.rec.common.model.log.LogOperateVO; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 14:19 + */ +@Mapper(componentModel = "spring", uses = { ModuleTypeEnumConverter.class }, nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface LogOperateMapper extends BaseMapper { +} diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/mapper/convertor/ModuleTypeEnumConverter.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/mapper/convertor/ModuleTypeEnumConverter.java new file mode 100644 index 0000000..1eac646 --- /dev/null +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/mapper/convertor/ModuleTypeEnumConverter.java @@ -0,0 +1,13 @@ +package cn.icanci.rec.admin.biz.mapper.convertor; + +import cn.icanci.rec.common.enums.ModuleTypeEnum; + +import org.springframework.stereotype.Component; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 15:10 + */ +@Component +public class ModuleTypeEnumConverter extends AbstractBaseConverter { +} diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/LogOperateService.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/LogOperateService.java index e899b3b..5ec736f 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/LogOperateService.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/LogOperateService.java @@ -1,8 +1,28 @@ package cn.icanci.rec.admin.biz.service; +import cn.icanci.rec.admin.dal.mongodb.common.PageList; +import cn.icanci.rec.common.model.log.LogOperateVO; + /** * @author icanci * @since 1.0 Created in 2022/11/12 10:41 */ public interface LogOperateService { + /** + * 记录日志 + * + * @param logOperate logOperate + */ + void log(LogOperateVO logOperate); + + /** + * queryPage + * + * @param module module + * @param targetId targetId + * @param pageNum pageNum + * @param pageSize pageSize + * @return PageList + */ + PageList queryPage(String module, String targetId, int pageNum, int pageSize); } diff --git a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/LogOperateServiceImpl.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/LogOperateServiceImpl.java index 453afd4..be34911 100644 --- a/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/LogOperateServiceImpl.java +++ b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/LogOperateServiceImpl.java @@ -1,6 +1,13 @@ package cn.icanci.rec.admin.biz.service.impl; +import cn.icanci.rec.admin.biz.mapper.LogOperateMapper; import cn.icanci.rec.admin.biz.service.LogOperateService; +import cn.icanci.rec.admin.dal.mongodb.common.PageList; +import cn.icanci.rec.admin.dal.mongodb.daointerface.LogOperateDAO; +import cn.icanci.rec.admin.dal.mongodb.dateobject.LogOperateDO; +import cn.icanci.rec.common.model.log.LogOperateVO; + +import javax.annotation.Resource; import org.springframework.stereotype.Service; @@ -10,4 +17,23 @@ import org.springframework.stereotype.Service; */ @Service public class LogOperateServiceImpl implements LogOperateService { + @Resource + private LogOperateDAO logOperateDAO; + @Resource + private LogOperateMapper logOperateMapper; + + @Override + public void log(LogOperateVO logOperate) { + logOperateDAO.insert(logOperateMapper.vo2do(logOperate)); + } + + @Override + public PageList queryPage(String module, String targetId, int pageNum, int pageSize) { + LogOperateDO operate = new LogOperateDO(); + operate.setModule(module); + operate.setTargetId(targetId); + + PageList pageQuery = logOperateDAO.pageQuery(operate, pageNum, pageSize); + return new PageList<>(logOperateMapper.dos2vos(pageQuery.getData()), pageQuery.getPaginator()); + } } diff --git a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoLogOperateDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoLogOperateDAO.java index d0195ee..3ac1a4d 100644 --- a/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoLogOperateDAO.java +++ b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/mongo/MongoLogOperateDAO.java @@ -7,7 +7,6 @@ import cn.icanci.rec.admin.dal.utils.EnvUtils; import java.util.List; -import org.apache.commons.lang3.StringUtils; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; @@ -21,6 +20,7 @@ import org.springframework.stereotype.Service; public class MongoLogOperateDAO extends MongoPageHelper implements LogOperateDAO { @Override public void insert(LogOperateDO t) { + t.setId(null); t.setEnv(EnvUtils.getEnv()); mongoTemplate.insert(t); } @@ -41,10 +41,8 @@ public class MongoLogOperateDAO extends MongoPageHelper implements LogOperateDAO @Override public PageList pageQuery(LogOperateDO t, int pageNum, int pageSize) { Criteria criteria = Criteria.where(LogColumn.env).is(EnvUtils.getEnv()); - if (StringUtils.isNotBlank(t.getModule())) { - // 不分区大小写查询,其中操作符"i":表示不分区大小写 - criteria.and(LogColumn.module).is(t.getModule()); - } + criteria.and(LogColumn.module).is(t.getModule()); + criteria.and(LogColumn.targetId).is(t.getTargetId()); Query query = new Query(criteria); query.with(Sort.by(Sort.Direction.DESC, LogColumn.createTime)); diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/logApi.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/logApi.js new file mode 100644 index 0000000..fe1d354 --- /dev/null +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/logApi.js @@ -0,0 +1,19 @@ +import request from '@/utils/request' + +/** + * 分页查询 + * + * @param domain domain + * @param paginator paginator + * @returns {*} + */ +export async function logPageQuery(logOperate, paginator) { + return await request({ + url: '/rec/log/query', + method: 'post', + data: { + 'logOperate': logOperate, + 'paginator': paginator + } + }) +} diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue new file mode 100644 index 0000000..c177498 --- /dev/null +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue @@ -0,0 +1,109 @@ + + + diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue index a49b6f6..8227337 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue @@ -7,11 +7,11 @@ :visible.sync="dialogVisible" :close-on-press-escape="false" :close-on-click-modal="false" - width="30%" + width="40%" :before-close="clearForm"> 取 消 - 确 定 + 确 定 @@ -92,17 +92,21 @@ export default { let vm = this this.$refs['ruleForm'].validate(async (valid) => { if (valid) { - let ret = await saveDomain(vm.saveData); - if (ret.ok) { - vm.$message({type: 'success', message: '保存成功!'}); - } else { - vm.$message({type: 'error', message: '保存失败:' + ret.message}); - } - vm.clearForm() - vm.$parent.query() + await vm.doSave(this.saveData) } }) }, + async doSave(saveData) { + let vm = this + let ret = await saveDomain(saveData); + if (ret.ok) { + vm.$message({type: 'success', message: '保存成功!'}); + } else { + vm.$message({type: 'error', message: '保存失败:' + ret.message}); + } + vm.clearForm() + vm.$parent.query() + }, clearForm() { let vm = this try { diff --git a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue index 4e19663..6269d2a 100644 --- a/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/domain.vue @@ -7,10 +7,10 @@ - + - + 查询 @@ -60,12 +60,12 @@ label="操作"> @@ -75,6 +75,7 @@ + diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/LogController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/LogController.java new file mode 100644 index 0000000..8290259 --- /dev/null +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/LogController.java @@ -0,0 +1,39 @@ +package cn.icanci.rec.admin.web.controller; + +import cn.icanci.rec.admin.biz.service.LogOperateService; +import cn.icanci.rec.admin.dal.mongodb.common.PageList; +import cn.icanci.rec.admin.dal.mongodb.common.Paginator; +import cn.icanci.rec.admin.web.form.LogQueryForm; +import cn.icanci.rec.admin.web.mapper.LogOperateWebMapper; +import cn.icanci.rec.admin.web.model.LogOperate; +import cn.icanci.rec.common.model.log.LogOperateVO; +import cn.icanci.rec.common.result.R; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 14:15 + */ +@RestController +@RequestMapping("/rec/log") +public class LogController { + @Resource + private LogOperateService logOperateService; + @Resource + private LogOperateWebMapper logOperateWebMapper; + + @PostMapping("/query") + public R query(@RequestBody LogQueryForm form) { + LogOperate logOperate = form.getLogOperate(); + Paginator paginator = form.getPaginator(); + PageList pageList = logOperateService.queryPage(logOperate.getModule(), logOperate.getTargetId(), paginator.getCurrentPage(), paginator.getPageSize()); + PageList ret = new PageList<>(logOperateWebMapper.vos2webs(pageList.getData()), pageList.getPaginator()); + return R.builderOk().data("queryPage", ret).build(); + } +} diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/form/LogQueryForm.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/form/LogQueryForm.java new file mode 100644 index 0000000..d9a9424 --- /dev/null +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/form/LogQueryForm.java @@ -0,0 +1,33 @@ +package cn.icanci.rec.admin.web.form; + +import cn.icanci.rec.admin.dal.mongodb.common.Paginator; +import cn.icanci.rec.admin.web.model.LogOperate; + +import java.io.Serializable; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 14:25 + */ +public class LogQueryForm implements Serializable { + private static final long serialVersionUID = -934696142423210674L; + + private LogOperate logOperate; + private Paginator paginator; + + public LogOperate getLogOperate() { + return logOperate; + } + + public void setLogOperate(LogOperate logOperate) { + this.logOperate = logOperate; + } + + public Paginator getPaginator() { + return paginator; + } + + public void setPaginator(Paginator paginator) { + this.paginator = paginator; + } +} diff --git a/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/mapper/LogOperateWebMapper.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/mapper/LogOperateWebMapper.java new file mode 100644 index 0000000..2685d0f --- /dev/null +++ b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/mapper/LogOperateWebMapper.java @@ -0,0 +1,32 @@ +package cn.icanci.rec.admin.web.mapper; + +import cn.icanci.rec.admin.web.model.LogOperate; +import cn.icanci.rec.common.model.log.LogOperateVO; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +import org.mapstruct.Mapper; +import org.mapstruct.NullValueMappingStrategy; + +/** + * @author icanci + * @since 1.0 Created in 2022/11/12 14:27 + */ +@Mapper(componentModel = "spring", nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL) +public interface LogOperateWebMapper { + default LogOperate vo2web(LogOperateVO vo) { + LogOperate logOperate = new LogOperate(); + logOperate.setId(vo.getId()); + logOperate.setModule(vo.getModule().getDesc()); + logOperate.setTargetId(vo.getTargetId()); + logOperate.setOperatorType(vo.getOperatorType().getDesc()); + logOperate.setContent(vo.getContent()); + logOperate.setCreateTime(new Date()); + logOperate.setEnv(logOperate.getEnv()); + return logOperate; + } + + List vos2webs(Collection vos); +} diff --git a/rec-common/src/main/java/cn/icanci/rec/common/enums/ModuleTypeEnum.java b/rec-common/src/main/java/cn/icanci/rec/common/enums/ModuleTypeEnum.java new file mode 100644 index 0000000..9306c3b --- /dev/null +++ b/rec-common/src/main/java/cn/icanci/rec/common/enums/ModuleTypeEnum.java @@ -0,0 +1,41 @@ +package cn.icanci.rec.common.enums; + +/** + * 日志操作模块类型 + * + * @author icanci + * @since 1.0 Created in 2022/11/12 15:03 + */ +public enum ModuleTypeEnum { + + /** + * REC_DOMAIN + */ + REC_DOMAIN("REC_DOMAIN", "规则域"), + + ; + + ModuleTypeEnum(String code, String desc) { + this.code = code; + this.desc = desc; + } + + private String code; + private String desc; + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } +} diff --git a/rec-common/src/main/java/cn/icanci/rec/common/model/log/LogOperateVO.java b/rec-common/src/main/java/cn/icanci/rec/common/model/log/LogOperateVO.java index 158bf9e..e130e5b 100644 --- a/rec-common/src/main/java/cn/icanci/rec/common/model/log/LogOperateVO.java +++ b/rec-common/src/main/java/cn/icanci/rec/common/model/log/LogOperateVO.java @@ -1,6 +1,7 @@ package cn.icanci.rec.common.model.log; import cn.icanci.rec.common.enums.LogOperatorTypeEnum; +import cn.icanci.rec.common.enums.ModuleTypeEnum; import java.util.Date; @@ -15,7 +16,7 @@ public class LogOperateVO { private String id; /** 操作模块 */ - private String module; + private ModuleTypeEnum module; /** 对象编号 */ private String targetId; @@ -43,11 +44,11 @@ public class LogOperateVO { this.id = id; } - public String getModule() { + public ModuleTypeEnum getModule() { return module; } - public void setModule(String module) { + public void setModule(ModuleTypeEnum module) { this.module = module; } -- Gitee