diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/AppService.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/AppService.java index 1eabc5377bee936b38e7e2b8dfc869dcb413896f..80ad887a94958dc2b2bc85ad1c187e7db931ac9c 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/AppService.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/AppService.java @@ -1,18 +1,24 @@ package cn.icanci.loopstack.ddk.admin.biz.service; +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.TextValue; import cn.icanci.loopstack.ddk.common.model.config.AppVO; +import java.util.List; + /** * @author icanci * @since 1.0 Created in 2023/01/05 21:39 */ public interface AppService { - /** - * 根据appId查询数据 - * - * @param appId appId - * @return 返回查询的结果 - */ + PageList queryPage(AppVO vo, int currentPage, int pageSize); + + void save(AppVO vo); + AppVO queryByAppId(String appId); + + AppVO queryByAppName(String appName); + + List loadSelector(); } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/BaseService.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/BaseService.java index 974a45818763d57a6fdfee3512c688c22bfa8bdb..c658a21bffa1dce9da23f8e674534d8ccaf5da73 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/BaseService.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/BaseService.java @@ -4,14 +4,23 @@ import cn.icanci.loopstack.ddk.admin.biz.utils.EnvUtils; import cn.icanci.loopstack.ddk.admin.biz.utils.IDHolder; import cn.icanci.loopstack.ddk.common.enums.BooleanEnum; import cn.icanci.loopstack.ddk.common.model.config.BaseVO; +import cn.icanci.loopstack.lsi.event.EventDispatcher; import java.util.Date; +import javax.annotation.Resource; + /** * @author icanci * @since 1.0 Created in 2023/01/07 18:39 */ public abstract class BaseService { + /** label 格式化 */ + protected static final String DELETED_FORMAT = "[无效] %s"; + + /** label 格式化 */ + protected static final String NOT_DELETED_FORMAT = "[有效] %s"; + protected String getEnv() { return EnvUtils.getEnv(); } @@ -20,6 +29,9 @@ public abstract class BaseService { return IDHolder.generateNoBySnowFlake("CFG"); } + @Resource + protected EventDispatcher eventDispatcher; + /** * 是否是插入 * diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/GroupService.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/GroupService.java index f46290b89760a736b23b7fe73e8580c283edec6e..5a16775a04a84a6e2648f9799e89f6fd9d594c7a 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/GroupService.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/GroupService.java @@ -1,8 +1,11 @@ package cn.icanci.loopstack.ddk.admin.biz.service; import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.TextValue; import cn.icanci.loopstack.ddk.common.model.config.GroupVO; +import java.util.List; + /** * @author icanci * @since 1.0 Created in 2023/01/05 21:40 @@ -40,4 +43,11 @@ public interface GroupService { * @return 返回查询的结果 */ GroupVO queryByGroupName(String groupName); + + /** + * 加载下拉框 + * + * @return 返回下拉框数据 + */ + List loadSelector(); } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/TeamService.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/TeamService.java index f1d61321b53c4bfea41e26196026e61f3c769802..97890f706d81c32e4399123d8fdc3fd431fe5da6 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/TeamService.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/TeamService.java @@ -1,8 +1,24 @@ package cn.icanci.loopstack.ddk.admin.biz.service; +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.TextValue; +import cn.icanci.loopstack.ddk.common.model.config.TeamVO; + +import java.util.List; + /** * @author icanci * @since 1.0 Created in 2023/01/05 21:40 */ public interface TeamService { + + PageList queryPage(TeamVO vo, int currentPage, int pageSize); + + void save(TeamVO vo); + + TeamVO queryByTeamId(String teamId); + + TeamVO queryByTeamName(String teamName); + + List loadSelector(); } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/AppServiceImpl.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/AppServiceImpl.java index 6d78c0c5745ad028cd77b3bd0d5ddc565dafa205..01ab6aff803a3b36f0e60eaae01d300666d4d6d4 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/AppServiceImpl.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/AppServiceImpl.java @@ -1,16 +1,29 @@ package cn.icanci.loopstack.ddk.admin.biz.service.impl; +import cn.hutool.json.JSONUtil; +import cn.icanci.loopstack.ddk.admin.biz.event.log.LogEvent; import cn.icanci.loopstack.ddk.admin.biz.mapping.config.AppMapping; import cn.icanci.loopstack.ddk.admin.biz.service.AppService; +import cn.icanci.loopstack.ddk.admin.biz.service.BaseService; import cn.icanci.loopstack.ddk.admin.biz.utils.EnvUtils; import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.AppDO; import cn.icanci.loopstack.ddk.admin.dal.mapper.mapper.AppMapper; +import cn.icanci.loopstack.ddk.common.enums.LogOperatorTypeEnum; +import cn.icanci.loopstack.ddk.common.enums.ModuleTypeEnum; +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.TextValue; import cn.icanci.loopstack.ddk.common.model.config.AppVO; +import cn.icanci.loopstack.ddk.common.utils.PaginatorUtils; + +import java.util.List; import javax.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import com.google.common.collect.Lists; + /** * App 操作 * @@ -18,15 +31,74 @@ import org.springframework.stereotype.Service; * @since 1.0 Created in 2023/01/06 09:44 */ @Service -public class AppServiceImpl implements AppService { +public class AppServiceImpl extends BaseService implements AppService { @Resource private AppMapper appMapper; @Resource private AppMapping appMapping; + @Override + public PageList queryPage(AppVO vo, int currentPage, int pageSize) { + vo.setEnv(getEnv()); + vo.setIsDelete(null); + + currentPage = Math.max(currentPage - 1, 0); + + List ret = appMapper.selectPage(appMapping.vo2do(vo), currentPage, pageSize); + + return PaginatorUtils.formatPaginator(appMapping.dos2vos(ret), currentPage, pageSize); + } + + @Override + public void save(AppVO vo) { + if (doInsert(vo)) { + beforeInsert(vo); + AppDO app = appMapping.vo2do(vo); + appMapper.insert(app); + eventDispatcher.fire(new LogEvent(vo.getUuid(), ModuleTypeEnum.DDK_APP, JSONUtil.toJsonStr(app), LogOperatorTypeEnum.CREATE), false); + } else { + beforeUpdate(vo); + AppDO app = appMapping.vo2do(vo); + appMapper.update(app); + eventDispatcher.fire(new LogEvent(vo.getUuid(), ModuleTypeEnum.DDK_APP, JSONUtil.toJsonStr(app), LogOperatorTypeEnum.UPDATE), false); + } + } + @Override public AppVO queryByAppId(String appId) { AppDO appDO = appMapper.queryByAppId(appId, EnvUtils.getEnv()); return appMapping.do2vo(appDO); } + + @Override + public AppVO queryByAppName(String appName) { + AppDO appDO = appMapper.queryByAppName(appName, EnvUtils.getEnv()); + return appMapping.do2vo(appDO); + } + + @Override + public List loadSelector() { + AppDO appDO = new AppDO(); + appDO.setEnv(getEnv()); + + List apps = appMapper.selectList(appDO); + + if (CollectionUtils.isEmpty(apps)) { + return Lists.newArrayList(); + } + + List appVOS = appMapping.dos2vos(apps); + List textValues = Lists.newArrayList(); + for (AppVO app : appVOS) { + String label; + if (isDeleted(app)) { + label = String.format(DELETED_FORMAT, app.getAppName()); + } else { + label = String.format(NOT_DELETED_FORMAT, app.getAppName()); + } + String value = app.getUuid(); + textValues.add(new TextValue(label, value)); + } + return textValues; + } } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/GroupServiceImpl.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/GroupServiceImpl.java index c21969c24c8352668ca06383930762327e19fa4e..4b1e945d233ca5832a9666be32742d70d94ddf92 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/GroupServiceImpl.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/GroupServiceImpl.java @@ -10,16 +10,19 @@ import cn.icanci.loopstack.ddk.admin.dal.mapper.mapper.GroupMapper; import cn.icanci.loopstack.ddk.common.enums.LogOperatorTypeEnum; import cn.icanci.loopstack.ddk.common.enums.ModuleTypeEnum; import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.TextValue; import cn.icanci.loopstack.ddk.common.model.config.GroupVO; import cn.icanci.loopstack.ddk.common.utils.PaginatorUtils; -import cn.icanci.loopstack.lsi.event.EventDispatcher; import java.util.List; import javax.annotation.Resource; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import com.google.common.collect.Lists; + /** * @author icanci * @since 1.0 Created in 2023/01/06 21:06 @@ -28,12 +31,9 @@ import org.springframework.stereotype.Service; public class GroupServiceImpl extends BaseService implements GroupService { @Resource - private GroupMapper groupMapper; - @Resource - private GroupMapping groupMapping; - + private GroupMapper groupMapper; @Resource - private EventDispatcher eventDispatcher; + private GroupMapping groupMapping; @Override public PageList queryPage(GroupVO vo, int currentPage, int pageSize) { @@ -75,4 +75,30 @@ public class GroupServiceImpl extends BaseService implements GroupServi return groupMapping.do2vo(group); } + @Override + public List loadSelector() { + GroupDO groupDO = new GroupDO(); + groupDO.setEnv(getEnv()); + + List groups = groupMapper.selectList(groupDO); + + if (CollectionUtils.isEmpty(groups)) { + return Lists.newArrayList(); + } + + List groupVOS = groupMapping.dos2vos(groups); + List textValues = Lists.newArrayList(); + for (GroupVO group : groupVOS) { + String label; + if (isDeleted(group)) { + label = String.format(DELETED_FORMAT, group.getGroupName()); + } else { + label = String.format(NOT_DELETED_FORMAT, group.getGroupName()); + } + String value = group.getUuid(); + textValues.add(new TextValue(label, value)); + } + return textValues; + } + } diff --git a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/TeamServiceImpl.java b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/TeamServiceImpl.java index 51b417a36cae2cf1a9f88d639b68d65ff2ebb889..0160f519b9043e360737de9cef302a684c5264fc 100644 --- a/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/TeamServiceImpl.java +++ b/admin/admin-biz/src/main/java/cn/icanci/loopstack/ddk/admin/biz/service/impl/TeamServiceImpl.java @@ -1,14 +1,102 @@ package cn.icanci.loopstack.ddk.admin.biz.service.impl; +import cn.hutool.json.JSONUtil; +import cn.icanci.loopstack.ddk.admin.biz.event.log.LogEvent; +import cn.icanci.loopstack.ddk.admin.biz.mapping.config.TeamMapping; +import cn.icanci.loopstack.ddk.admin.biz.service.BaseService; import cn.icanci.loopstack.ddk.admin.biz.service.TeamService; +import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.TeamDO; +import cn.icanci.loopstack.ddk.admin.dal.mapper.mapper.TeamMapper; +import cn.icanci.loopstack.ddk.common.enums.LogOperatorTypeEnum; +import cn.icanci.loopstack.ddk.common.enums.ModuleTypeEnum; +import cn.icanci.loopstack.ddk.common.model.PageList; +import cn.icanci.loopstack.ddk.common.model.TextValue; +import cn.icanci.loopstack.ddk.common.model.config.TeamVO; +import cn.icanci.loopstack.ddk.common.utils.PaginatorUtils; +import java.util.List; + +import javax.annotation.Resource; + +import org.apache.commons.collections4.CollectionUtils; import org.springframework.stereotype.Service; +import com.google.common.collect.Lists; + /** * @author icanci * @since 1.0 Created in 2023/01/06 21:07 */ @Service -public class TeamServiceImpl implements TeamService { +public class TeamServiceImpl extends BaseService implements TeamService { + @Resource + private TeamMapper teamMapper; + @Resource + private TeamMapping teamMapping; + + @Override + public PageList queryPage(TeamVO vo, int currentPage, int pageSize) { + + vo.setEnv(getEnv()); + vo.setIsDelete(null); + + currentPage = Math.max(currentPage - 1, 0); + + List ret = teamMapper.selectPage(teamMapping.vo2do(vo), currentPage, pageSize); + + return PaginatorUtils.formatPaginator(teamMapping.dos2vos(ret), currentPage, pageSize); + } + + @Override + public void save(TeamVO vo) { + if (doInsert(vo)) { + beforeInsert(vo); + TeamDO teamDO = teamMapping.vo2do(vo); + teamMapper.insert(teamDO); + eventDispatcher.fire(new LogEvent(vo.getUuid(), ModuleTypeEnum.DDK_TEAM, JSONUtil.toJsonStr(teamDO), LogOperatorTypeEnum.CREATE), false); + } else { + beforeUpdate(vo); + TeamDO teamDO = teamMapping.vo2do(vo); + teamMapper.update(teamDO); + eventDispatcher.fire(new LogEvent(vo.getUuid(), ModuleTypeEnum.DDK_TEAM, JSONUtil.toJsonStr(teamDO), LogOperatorTypeEnum.UPDATE), false); + } + } + + @Override + public TeamVO queryByTeamId(String teamId) { + TeamDO teamDO = teamMapper.selectByTeamId(teamId, getEnv()); + return teamMapping.do2vo(teamDO); + } + + @Override + public TeamVO queryByTeamName(String teamName) { + TeamDO teamDO = teamMapper.selectByTeamName(teamName, getEnv()); + return teamMapping.do2vo(teamDO); + } + + @Override + public List loadSelector() { + TeamDO teamDO = new TeamDO(); + teamDO.setEnv(getEnv()); + + List teams = teamMapper.selectList(teamDO); + + if (CollectionUtils.isEmpty(teams)) { + return Lists.newArrayList(); + } + List teamVOS = teamMapping.dos2vos(teams); + List textValues = Lists.newArrayList(); + for (TeamVO teamVO : teamVOS) { + String label; + if (isDeleted(teamVO)) { + label = String.format(DELETED_FORMAT, teamVO.getTeamName()); + } else { + label = String.format(NOT_DELETED_FORMAT, teamVO.getTeamName()); + } + String value = teamVO.getUuid(); + textValues.add(new TextValue(label, value)); + } + return textValues; + } } diff --git a/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/AppMapper.java b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/AppMapper.java index 48a1eec7886cfc3ec1619e6101ce85162981fa03..76f4aff2eb65bc6a9f9728e3cb1188f659ac4a5f 100644 --- a/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/AppMapper.java +++ b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/AppMapper.java @@ -59,13 +59,6 @@ public interface AppMapper { **/ AppDO selectByKey(Object key); - /** - * 根据appId查询 - * - * @param appId appId - * @param env 环境 - **/ - AppDO queryByAppId(String appId, String env); /** * 根据条件查询 @@ -89,4 +82,21 @@ public interface AppMapper { * @param ddkApp 查询条件 **/ int total(AppDO ddkApp); + + /** + * 根据appId查询 + * + * @param appId appId + * @param env 环境 + **/ + AppDO queryByAppId(@Param("appId") String appId,@Param("env") String env); + + + /** + * 根据appName查询 + * + * @param appName appName + * @param env 环境 + **/ + AppDO queryByAppName(@Param("appName") String appName,@Param("env") String env); } diff --git a/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/TeamMapper.java b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/TeamMapper.java index eeef3193216de947a4fc1407442ad0983dee98b9..b082d5e273b15b76eaa79758aa5bb2468839488c 100644 --- a/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/TeamMapper.java +++ b/admin/admin-dal/src/main/java/cn/icanci/loopstack/ddk/admin/dal/mapper/mapper/TeamMapper.java @@ -1,11 +1,12 @@ package cn.icanci.loopstack.ddk.admin.dal.mapper.mapper; -import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.*; -import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; +import cn.icanci.loopstack.ddk.admin.dal.mapper.entity.TeamDO; import java.util.List; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + /** * DdkTeamMapper * ⚠️ 修改之后请勿使用生成器再次生成,否则会覆盖修改 @@ -63,7 +64,7 @@ public interface TeamMapper { * * @param ddkTeam 查询条件 **/ - List selectList (TeamDO ddkTeam); + List selectList(TeamDO ddkTeam); /** * 分页条件查询 @@ -72,7 +73,7 @@ public interface TeamMapper { * @param page 页 * @param pageSize 每页大小 **/ - List selectPage (@Param("ddkTeam") TeamDO ddkTeam, @Param("page") Integer page, @Param("pageSize") Integer pageSize); + List selectPage(@Param("ddkTeam") TeamDO ddkTeam, @Param("page") Integer page, @Param("pageSize") Integer pageSize); /** * 总量查询 @@ -80,4 +81,21 @@ public interface TeamMapper { * @param ddkTeam 查询条件 **/ int total(TeamDO ddkTeam); + + /** + * 根据teamId查询数据 + * + * @param teamId teamId + * @param env env + * @return 返回查询结果 + */ + TeamDO selectByTeamId(@Param("teamId") String teamId, @Param("env") String env); + /** + * 根据teamName查询数据 + * + * @param teamName teamName + * @param env env + * @return 返回查询结果 + */ + TeamDO selectByTeamName(@Param("teamName") String teamName, @Param("env") String env); } diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/AppMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/AppMapper.xml index cea08de948297752e416e73fb2a4c540884766c6..2f073db14a8f07c1d056f15ba6e2ab2d441c6a14 100644 --- a/admin/admin-dal/src/main/resources/mybatis/mapper/AppMapper.xml +++ b/admin/admin-dal/src/main/resources/mybatis/mapper/AppMapper.xml @@ -159,13 +159,7 @@ WHERE `id` = #{key} - - + @@ -235,15 +229,16 @@ and `env` = #{ddkApp.env} - and `app_id` = #{ddkApp.appId} + and `app_id` like CONCAT('%',#{ddkApp.appId},'%') - and `app_name` = #{ddkApp.appName} + and `app_name` like CONCAT('%',#{ddkApp.appName},'%') - and `team_uuid` = #{ddkApp.teamUuid} + and `team_uuid` like CONCAT('%',#{ddkApp.teamUuid},'%') + order by create_time desc limit #{page,jdbcType=INTEGER}, #{pageSize,jdbcType=INTEGER} @@ -283,4 +278,19 @@ + + + + + \ No newline at end of file diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/GroupMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/GroupMapper.xml index a4e200c473af1607ac1ea3b8cbae83c5794d3039..bc81a17753eac9bbd1a3fcda295f927eadb364a7 100644 --- a/admin/admin-dal/src/main/resources/mybatis/mapper/GroupMapper.xml +++ b/admin/admin-dal/src/main/resources/mybatis/mapper/GroupMapper.xml @@ -219,6 +219,7 @@ and `env` = #{ddkGroup.env} + order by create_time desc limit #{page,jdbcType=INTEGER}, #{pageSize,jdbcType=INTEGER} diff --git a/admin/admin-dal/src/main/resources/mybatis/mapper/TeamMapper.xml b/admin/admin-dal/src/main/resources/mybatis/mapper/TeamMapper.xml index 18958ef47a770148a986ee15d4553e5d53ea7efc..88bbe2384a9660a4da70b8fb4110db9ef9d6433b 100644 --- a/admin/admin-dal/src/main/resources/mybatis/mapper/TeamMapper.xml +++ b/admin/admin-dal/src/main/resources/mybatis/mapper/TeamMapper.xml @@ -226,15 +226,16 @@ and `env` = #{ddkTeam.env} - and `team_id` = #{ddkTeam.teamId} + and `team_id` like CONCAT('%',#{ddkTeam.teamId},'%') - and `team_name` = #{ddkTeam.teamName} + and `team_name` like CONCAT('%',#{ddkTeam.teamName},'%') - and `group_uuid` = #{ddkTeam.groupUuid} + and `group_uuid` like CONCAT('%',#{ddkTeam.groupUuid},'%') + order by create_time desc limit #{page,jdbcType=INTEGER}, #{pageSize,jdbcType=INTEGER} @@ -274,4 +275,18 @@ + + + + \ No newline at end of file diff --git a/admin/admin-views/src/main/resources/vueboot/src/api/appApi.js b/admin/admin-views/src/main/resources/vueboot/src/api/appApi.js new file mode 100644 index 0000000000000000000000000000000000000000..335710eac1d6a2e89f4ba2587a3d530837324f76 --- /dev/null +++ b/admin/admin-views/src/main/resources/vueboot/src/api/appApi.js @@ -0,0 +1,59 @@ +import request from '@/utils/request' + +/** + * 分页查询 + * + * @param app app + * @param paginator paginator + * @returns {*} + */ +export async function appQuery(app, paginator) { + return await request({ + url: '/ddk/app/query', + method: 'post', + data: { + 'app': app, + 'paginator': paginator + } + }) +} + +/** + * 保存 + * + * @param app app + * @returns {*} + */ +export async function saveApp(app) { + return await request({ + url: '/ddk/app/save', + method: 'post', + data: app + }) +} + +/** + * remoteValidateAppId + * + * @param appId appId + * @returns {*} + */ +export async function remoteValidateAppId(appId) { + return await request({ + url: '/ddk/app/validateAppId/' + appId, + method: 'get' + }) +} + +/** + * remoteValidateAppName + * + * @param appName appName + * @returns {*} + */ +export async function remoteValidateAppName(appName) { + return await request({ + url: '/ddk/app/validateAppName/' + appName, + method: 'get' + }) +} diff --git a/admin/admin-views/src/main/resources/vueboot/src/api/loadSelectorApi.js b/admin/admin-views/src/main/resources/vueboot/src/api/loadSelectorApi.js new file mode 100644 index 0000000000000000000000000000000000000000..6e14bfb7935781d19bfc8b761b9f60c2eebc080e --- /dev/null +++ b/admin/admin-views/src/main/resources/vueboot/src/api/loadSelectorApi.js @@ -0,0 +1,49 @@ +import request from '@/utils/request' + +/** + * loadGroupSelector + * + * @returns {*} + */ +export async function loadGroupSelector() { + let ret = await request({ + url: '/ddk/group/loadSelector', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] +} + +/** + * loadTeamSelector + * + * @returns {*} + */ +export async function loadTeamSelector() { + let ret = await request({ + url: '/ddk/team/loadSelector', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] +} + +/** + * loadAppSelector + * + * @returns {*} + */ +export async function loadAppSelector() { + let ret = await request({ + url: '/ddk/app/loadSelector', + method: 'get', + }); + if (ret.ok) { + return ret.data.textValues; + } + return [] +} diff --git a/admin/admin-views/src/main/resources/vueboot/src/api/teamApi.js b/admin/admin-views/src/main/resources/vueboot/src/api/teamApi.js new file mode 100644 index 0000000000000000000000000000000000000000..5d8286de33a6245136f58bda5713a06bbb9a4a5a --- /dev/null +++ b/admin/admin-views/src/main/resources/vueboot/src/api/teamApi.js @@ -0,0 +1,59 @@ +import request from '@/utils/request' + +/** + * 分页查询 + * + * @param team team + * @param paginator paginator + * @returns {*} + */ +export async function teamQuery(team, paginator) { + return await request({ + url: '/ddk/team/query', + method: 'post', + data: { + 'team': team, + 'paginator': paginator + } + }) +} + +/** + * 保存 + * + * @param team team + * @returns {*} + */ +export async function saveTeam(team) { + return await request({ + url: '/ddk/team/save', + method: 'post', + data: team + }) +} + +/** + * remoteValidateTeamId + * + * @param teamId teamId + * @returns {*} + */ +export async function remoteValidateTeamId(teamId) { + return await request({ + url: '/ddk/team/validateTeamId/' + teamId, + method: 'get' + }) +} + +/** + * remoteValidateTeamName + * + * @param teamName teamName + * @returns {*} + */ +export async function remoteValidateTeamName(teamName) { + return await request({ + url: '/ddk/team/validateTeamName/' + teamName, + method: 'get' + }) +} diff --git a/admin/admin-views/src/main/resources/vueboot/src/router/index.js b/admin/admin-views/src/main/resources/vueboot/src/router/index.js index 57f472b4d1acdaf6271a27b5ccc6c5f2ae3dbce3..2bf1e9af29c582bb72295dd3b6cf1d610a703f7f 100644 --- a/admin/admin-views/src/main/resources/vueboot/src/router/index.js +++ b/admin/admin-views/src/main/resources/vueboot/src/router/index.js @@ -72,15 +72,16 @@ export const constantRouterMap = [ icon: 'link' } }, - // { - // path: 'metadata', - // name: 'metadata', - // component: () => import('@/views/ruleConfig/metadata'), - // meta: { - // title: '元数据配置', - // icon: 'exit-fullscreen' - // } - // }, { + { + path: 'app', + name: '项目', + component: () => import('@/views/config/app'), + meta: { + title: '项目', + icon: 'exit-fullscreen' + } + }, + // { // path: 'baseData', // name: 'baseData', // component: () => import('@/views/ruleConfig/baseData'), diff --git a/admin/admin-views/src/main/resources/vueboot/src/views/config/app.vue b/admin/admin-views/src/main/resources/vueboot/src/views/config/app.vue new file mode 100644 index 0000000000000000000000000000000000000000..1c8a867cfba58c275b6f70f2166ced08e4f563d5 --- /dev/null +++ b/admin/admin-views/src/main/resources/vueboot/src/views/config/app.vue @@ -0,0 +1,221 @@ + + + + + diff --git a/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/appForm.vue b/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/appForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..f142771861fec95bec1c7c0dbccde00c88e3fc9c --- /dev/null +++ b/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/appForm.vue @@ -0,0 +1,159 @@ + + + diff --git a/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/teamForm.vue b/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/teamForm.vue new file mode 100644 index 0000000000000000000000000000000000000000..2b300a06dec1d3620a3788fda41a72e2943a8f7a --- /dev/null +++ b/admin/admin-views/src/main/resources/vueboot/src/views/config/dialog/teamForm.vue @@ -0,0 +1,159 @@ + + + diff --git a/admin/admin-views/src/main/resources/vueboot/src/views/config/group.vue b/admin/admin-views/src/main/resources/vueboot/src/views/config/group.vue index 4e8b3e689dea91be43a56e54e4261e799837b8c3..cc283bd2226762696ec877c5de380540710ed05d 100644 --- a/admin/admin-views/src/main/resources/vueboot/src/views/config/group.vue +++ b/admin/admin-views/src/main/resources/vueboot/src/views/config/group.vue @@ -2,10 +2,10 @@
- + - + @@ -25,12 +25,12 @@ + label="事业群名称"> + label="事业群ID">
- team + + + + + + + + + + + + + + + + 查询 + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/AppController.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/AppController.java index bd40b075355ccf1955e86a9178f33cb4f3b72a45..c290b93a63e8bcf3a7358e0f5e7809c57aff3b94 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/AppController.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/AppController.java @@ -1,8 +1,59 @@ package cn.icanci.loopstack.ddk.web.controller.config; +import cn.icanci.loopstack.ddk.admin.biz.service.AppService; +import cn.icanci.loopstack.ddk.common.model.TextValue; +import cn.icanci.loopstack.ddk.common.model.config.AppVO; +import cn.icanci.loopstack.ddk.common.result.R; +import cn.icanci.loopstack.ddk.web.form.AppQueryForm; +import cn.icanci.loopstack.ddk.web.mapping.AppWebMapping; +import cn.icanci.loopstack.ddk.web.model.App; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.*; + /** * @author icanci * @since 1.0 Created in 2023/01/06 21:11 */ +@RestController +@RequestMapping("/ddk/app") public class AppController { + @Resource + private AppService appService; + + @Resource + private AppWebMapping appWebMapping; + + @PostMapping("query") + public R query(@RequestBody AppQueryForm form) { + return R.builderOk().data("queryPage", appService.queryPage(appWebMapping.web2vo(form.getApp()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize())) + .build(); + } + + @PostMapping("save") + public R save(@RequestBody App app) { + appService.save(appWebMapping.web2vo(app)); + return R.builderOk().build(); + } + + @GetMapping("validateAppId/{appId:.*}") + public R validateAppId(@PathVariable("appId") String appId) { + AppVO app = appService.queryByAppId(appId); + return R.builderOk().data("result", app == null).build(); + } + + @GetMapping("validateAppName/{appName:.*}") + public R validateAppName(@PathVariable("appName") String appName) { + AppVO app = appService.queryByAppName(appName); + return R.builderOk().data("result", app == null).build(); + } + + @GetMapping("loadSelector") + public R loadSelector() { + List textValues = appService.loadSelector(); + return R.builderOk().data("textValues", textValues).build(); + } } diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/GroupController.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/GroupController.java index d3f3d13f712910ee9fd525355e8ca5816493a8c9..b1953ed8aec2b83dec0430125062048f3c7de388 100644 --- a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/GroupController.java +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/GroupController.java @@ -1,12 +1,15 @@ package cn.icanci.loopstack.ddk.web.controller.config; import cn.icanci.loopstack.ddk.admin.biz.service.GroupService; +import cn.icanci.loopstack.ddk.common.model.TextValue; import cn.icanci.loopstack.ddk.common.model.config.GroupVO; import cn.icanci.loopstack.ddk.common.result.R; import cn.icanci.loopstack.ddk.web.form.GroupQueryForm; import cn.icanci.loopstack.ddk.web.mapping.GroupWebMapping; import cn.icanci.loopstack.ddk.web.model.Group; +import java.util.List; + import javax.annotation.Resource; import org.springframework.web.bind.annotation.*; @@ -48,4 +51,10 @@ public class GroupController { return R.builderOk().data("result", group == null).build(); } + @GetMapping("loadSelector") + public R loadSelector() { + List textValues = groupService.loadSelector(); + return R.builderOk().data("textValues", textValues).build(); + } + } diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/TeamController.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/TeamController.java new file mode 100644 index 0000000000000000000000000000000000000000..16b401e3695d923f4b35d3ec930cb299628e84ce --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/controller/config/TeamController.java @@ -0,0 +1,60 @@ +package cn.icanci.loopstack.ddk.web.controller.config; + +import cn.icanci.loopstack.ddk.admin.biz.service.TeamService; +import cn.icanci.loopstack.ddk.common.model.TextValue; +import cn.icanci.loopstack.ddk.common.model.config.TeamVO; +import cn.icanci.loopstack.ddk.common.result.R; +import cn.icanci.loopstack.ddk.web.form.TeamQueryForm; +import cn.icanci.loopstack.ddk.web.mapping.TeamWebMapping; +import cn.icanci.loopstack.ddk.web.model.Team; + +import java.util.List; + +import javax.annotation.Resource; + +import org.springframework.web.bind.annotation.*; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/07 18:17 + */ +@RestController +@RequestMapping("/ddk/team") +public class TeamController { + @Resource + private TeamService teamService; + + @Resource + private TeamWebMapping teamWebMapping; + + @PostMapping("query") + public R query(@RequestBody TeamQueryForm form) { + return R.builderOk() + .data("queryPage", teamService.queryPage(teamWebMapping.web2vo(form.getTeam()), form.getPaginator().getCurrentPage(), form.getPaginator().getPageSize())).build(); + } + + @PostMapping("save") + public R save(@RequestBody Team team) { + teamService.save(teamWebMapping.web2vo(team)); + return R.builderOk().build(); + } + + @GetMapping("validateTeamId/{teamId:.*}") + public R validateTeamId(@PathVariable("teamId") String teamId) { + TeamVO team = teamService.queryByTeamId(teamId); + return R.builderOk().data("result", team == null).build(); + } + + @GetMapping("validateTeamName/{teamName:.*}") + public R validateTeamName(@PathVariable("teamName") String teamName) { + TeamVO team = teamService.queryByTeamName(teamName); + return R.builderOk().data("result", team == null).build(); + } + + @GetMapping("loadSelector") + public R loadSelector() { + List textValues = teamService.loadSelector(); + return R.builderOk().data("textValues", textValues).build(); + } + +} diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/AppQueryForm.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/AppQueryForm.java new file mode 100644 index 0000000000000000000000000000000000000000..164aacbaff48ca373a0966449f0af967f4c10dc0 --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/AppQueryForm.java @@ -0,0 +1,22 @@ +package cn.icanci.loopstack.ddk.web.form; + +import cn.icanci.loopstack.ddk.web.model.App; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/08 10:28 + */ +public class AppQueryForm extends BaseQueryForm { + /** + * App 查询信息 + */ + private App app; + + public App getApp() { + return app; + } + + public void setApp(App app) { + this.app = app; + } +} diff --git a/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/TeamQueryForm.java b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/TeamQueryForm.java new file mode 100644 index 0000000000000000000000000000000000000000..6021b56d46f5dc76749fe1029f5bcd8f9b0c8db6 --- /dev/null +++ b/admin/admin-web/src/main/java/cn/icanci/loopstack/ddk/web/form/TeamQueryForm.java @@ -0,0 +1,22 @@ +package cn.icanci.loopstack.ddk.web.form; + +import cn.icanci.loopstack.ddk.web.model.Team; + +/** + * @author icanci + * @since 1.0 Created in 2023/01/08 09:51 + */ +public class TeamQueryForm extends BaseQueryForm { + /** + * Team 查询信息 + */ + private Team team; + + public Team getTeam() { + return team; + } + + public void setTeam(Team team) { + this.team = team; + } +} diff --git a/common/src/main/java/cn/icanci/loopstack/ddk/common/model/config/AppVO.java b/common/src/main/java/cn/icanci/loopstack/ddk/common/model/config/AppVO.java index 3a1d56b6edc6a6100fbaa56701f0c2d96d12dac6..ddc01001eafe357774b1ed45285779c6412f5a9a 100644 --- a/common/src/main/java/cn/icanci/loopstack/ddk/common/model/config/AppVO.java +++ b/common/src/main/java/cn/icanci/loopstack/ddk/common/model/config/AppVO.java @@ -12,7 +12,7 @@ public class AppVO extends BaseVO { /** * 项目id,全局唯一 */ - private String appUniqueId; + private String appId; /** * 项目名字 */ @@ -22,12 +22,12 @@ public class AppVO extends BaseVO { */ private String teamUuid; - public String getAppUniqueId() { - return appUniqueId; + public String getAppId() { + return appId; } - public void setAppUniqueId(String appUniqueId) { - this.appUniqueId = appUniqueId; + public void setAppId(String appId) { + this.appId = appId; } public String getAppName() { @@ -48,6 +48,6 @@ public class AppVO extends BaseVO { @Override public String toString() { - return new StringJoiner(",").add("appUniqueId=" + appUniqueId).add("appName=" + appName).add("teamUuid=" + teamUuid).toString(); + return new StringJoiner(",").add("appId=" + appId).add("appName=" + appName).add("teamUuid=" + teamUuid).toString(); } }