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 a0cb38972d6d0dbc9c8ca05ab37933b781a051d0..e3cf164233e5eab4f1378e3fb05445ba1d2411e9 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 0000000000000000000000000000000000000000..4d846aaf39f20a9475e40450b38da3ccf91250fe --- /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 0000000000000000000000000000000000000000..1eac6467858bee04254d166ba3cab5a9563429dd --- /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/DomainService.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/DomainService.java index 56bb700f4f554379cd6ccf5a6e7cb86ccc2859f9..e0c0df2ef3f1534f49f58740e72d98b9614db5a1 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/LogOperateService.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/LogOperateService.java index e899b3bc9c7b410d4c8a3c1b25cc302cf9478995..5ec736f89a99c6dd2ee83bb1493132752f6e6934 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/DomainServiceImpl.java b/rec-admin/rec-admin-biz/src/main/java/cn/icanci/rec/admin/biz/service/impl/DomainServiceImpl.java index 027578d428ad7fc27951af0cf3868061234cb8ce..e72f7f1d07874ac77a394bdff27f853089730a7e 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-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 453afd4ea865aad0d11d424d046a8b445495b075..be349110bb6abc85cf8ebb9034acccbf9976311d 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/daointerface/DomainDAO.java b/rec-admin/rec-admin-dal/src/main/java/cn/icanci/rec/admin/dal/mongodb/daointerface/DomainDAO.java index e9227c42d094479a2bf8535b77d6ad5b3df47392..ea89588065a2af33d83469b13f593b723f466a73 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 c6f90b53393958c8bef67eed0fbac02fd846d77c..fc4e2e2b3aa57cce092032ce062b9185f7aba486 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 2a678d8dd6bd00242c91c6f452c9dc4923db267e..66546aa4427942807762ec3f5626918d0e4306db 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 198118d95899d48d0140093a562b1ebd4a948f9e..c6066bdf34d49623214808f441cf2346fc0c5e19 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 decfe34dd7ecbe11509cc493307cbf38e3fc03ab..7e0a1e7787285d237c2b0342b3c5b4a4b114f5a6 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-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 d0195ee0656cce1842d02d40b0a4a92e153fb6a9..3ac1a4d6ce5ab492fe96a7889b127d0423ad949c 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/pom.xml b/rec-admin/rec-admin-views/pom.xml index 6422382c2f4d8f6d665c0bdb5f40c8e0177300f6..2b5e2c9dde1753b1e74b0e25a0659e44b92b6359 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 f017431f28d901e5ae91affa0f2e3bdc7dc37e93..6737ab2ece09b844b8cffece6c50da7c270e15d3 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 23d5a524d99ec145267ee0ca8fc8f052ccf4f920..f02166ce5049a9f09388905f9afa2c626cf9f768 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 0000000000000000000000000000000000000000..136a6a10bd89786b3cf166f65a5a7cc5b260ca66 --- /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/api/logApi.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/api/logApi.js new file mode 100644 index 0000000000000000000000000000000000000000..fe1d35455448dc455e298c6ee64026f240d3ed63 --- /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/main.js b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/main.js index 8b675bab9053d43e10dc43a81810f3cd021b5184..7f2058f0f0348621c0f61d547811386bba763f42 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-log.vue b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/common/vue-log.vue new file mode 100644 index 0000000000000000000000000000000000000000..c1774987c15a40f2b67c1fbc6890b1e64bdc32ca --- /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/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 0000000000000000000000000000000000000000..1cf957853138230c3855197b338cc0cc4794a7ef --- /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 0000000000000000000000000000000000000000..8227337c6f104419f8e0ecd89035a12a544d65d9 --- /dev/null +++ b/rec-admin/rec-admin-views/src/main/resources/vueboot/src/views/ruleConfig/dialog/domainForm.vue @@ -0,0 +1,121 @@ + + + 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 ed4c7b0f2ab3075dd8e535718197a900a6e42b1b..6269d2af91731c001937c26ae0baeff40f560d2c 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,174 @@ 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 8725416a4c53c591c0fda81f7590d99f92c92eab..1eaa50cad4095bb966a45aaab0ba6b11791ed115 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/LogController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/LogController.java new file mode 100644 index 0000000000000000000000000000000000000000..8290259b70ceb9261019240c3166d55b9ce1f236 --- /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/controller/config/DomainController.java b/rec-admin/rec-admin-web/src/main/java/cn/icanci/rec/admin/web/controller/config/DomainController.java index 39186587a7b535007f19ff9f799a5d51275f1742..8a1daa1617cc0e676a3690aa752b70fe691f535e 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 1921b16a175239303a7adc9f60550467069f33d1..15c7265cb9f4fd62d511d15165bab51de584e3aa 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/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 0000000000000000000000000000000000000000..d9a942483bd8f06d4a3b34f0a5c4cb8286fc851d --- /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 0000000000000000000000000000000000000000..2685d0fea9053fd310e5b1edb8029405200fbaef --- /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-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 1cf46f7b9c8dc771f1e553b1e9346eb537bc0a05..98ad3af8007e8ce3b9ebaacaada6a4505ab97a85 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 858fa1c60dc5a9346ae72de874ae84d36a4873fc..99954f50d9364a64e7cf0d70d7f26ee0a7f6693b 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/enums/ModuleTypeEnum.java b/rec-common/src/main/java/cn/icanci/rec/common/enums/ModuleTypeEnum.java new file mode 100644 index 0000000000000000000000000000000000000000..9306c3b23fdf1a06f1d91bdf0ab292e43cb31942 --- /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/config/BaseVO.java b/rec-common/src/main/java/cn/icanci/rec/common/model/config/BaseVO.java index 940dc1682874729b8b12df2c0ce3d036c68f3221..cae557cf93b38d03e02cd18862b0cd8247b001b0 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 64ec5902854f114acdf03048c90739dd20ac4d3f..e130e5b3eaa99288da75dd00b0f417b9bae12145 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,9 +1,12 @@ 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; +import com.fasterxml.jackson.annotation.JsonFormat; + /** * @author icanci * @since 1.0 Created in 2022/10/30 21:13 @@ -13,7 +16,7 @@ public class LogOperateVO { private String id; /** 操作模块 */ - private String module; + private ModuleTypeEnum module; /** 对象编号 */ private String targetId; @@ -27,6 +30,7 @@ public class LogOperateVO { private String content; /** 创建时间 */ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss") private Date createTime; /** 环境 */ @@ -40,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; }