Commit 237dc6dd by guojuxing

测试环境应用菜单数据同步到生产

parent 63afb3ce
......@@ -388,4 +388,14 @@ public interface MenuApiService {
* @return com.gic.api.base.commons.ServiceResponse<com.gic.auth.dto.MenuDTO>


*/
ServiceResponse<MenuDTO> getMenuByMenuCode(String menuCode);
/**
* 同步测试菜单数据到生产
* @Title: syncProductMenu

* @Description:

* @author guojuxing
* @param menuCode
第一层级菜单code
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Void>


*/
ServiceResponse<Void> syncProductMenu(String menuCode);
}
......@@ -112,4 +112,6 @@ public interface TabSysMenuItemMapper {
void deleteByMenuIdList(@Param("list") List<Integer> menuId);
void deleteByItemId(@Param("itemId") Integer itemId);
List<TabSysMenuItem> listByDev(Integer menuId);
}
\ No newline at end of file
......@@ -211,4 +211,9 @@ public interface TabSysMenuMapper {
* @return void


*/
void deleteNotInApp(@Param("list") List<String> projectList);
List<TabSysMenu> listMenuTemp(String project);
List<TabSysMenu> getAuthItemByDevMenuId(Integer menuId);
}
\ No newline at end of file
......@@ -78,4 +78,12 @@ public interface MenuItemService {
List<AuthItemDTO> listAuthItemGroupByItemId(Integer itemId);
/**
* 查询测试环境表数据
* @param menuId
* @return
*/
List<TabSysMenuItem> listByDev(Integer menuId);
}
......@@ -193,4 +193,27 @@ public interface MenuService {
* @return void


*/
void deleteNotInApp(List<String> projectList);
/***********同步测试环境数据到生产************/
/**
* 查询临时菜单
* @Title: listMenuTemp

* @Description:

* @author guojuxing
* @param project

* @return java.util.List<com.gic.auth.entity.TabSysMenu>


*/
List<TabSysMenu> listMenuTemp(String project);
/**
* 查询生产表的最新ID
* @Title: getAuthItemByDevMenuId

* @Description:

* @author guojuxing
* @param menuId

* @return java.util.List<com.gic.auth.entity.TabSysMenu>


*/
List<TabSysMenu> getAuthItemByDevMenuId(Integer menuId);
}
......@@ -64,4 +64,9 @@ public class MenuItemServiceImpl implements MenuItemService{
public List<AuthItemDTO> listAuthItemGroupByItemId(Integer itemId) {
return tabSysMenuItemMapper.queryAuthItem(itemId);
}
@Override
public List<TabSysMenuItem> listByDev(Integer menuId) {
return tabSysMenuItemMapper.listByDev(menuId);
}
}
......@@ -191,6 +191,16 @@ public class MenuServiceImpl implements MenuService {
tabSysMenuMapper.deleteNotInApp(projectList);
}
@Override
public List<TabSysMenu> listMenuTemp(String project) {
return tabSysMenuMapper.listMenuTemp(project);
}
@Override
public List<TabSysMenu> getAuthItemByDevMenuId(Integer menuId) {
return tabSysMenuMapper.getAuthItemByDevMenuId(menuId);
}
private void updateSort(Integer sort, Integer id) {
TabSysMenu record = new TabSysMenu();
record.setMenuId(id);
......
......@@ -562,6 +562,70 @@ public class MenuApiServiceImpl implements MenuApiService {
return ServiceResponse.success(EntityUtil.changeEntityNew(MenuDTO.class, record));
}
@Override
public ServiceResponse<Void> syncProductMenu(String menuCode) {
TabSysMenu tabSysMenu = menuService.getMenuByMenuCode(menuCode);
if (tabSysMenu == null || tabSysMenu.getLevel() != 1) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "不存在或者不是应用对应的code");
}
String appId = tabSysMenu.getProject();
//临时表(测试环境的菜单数据)
List<TabSysMenu> devMenuList = menuService.listMenuTemp(appId);
if (CollectionUtils.isNotEmpty(devMenuList)) {
devMenuList.forEach(menu -> {
TabSysMenu temp = menuService.getMenuByMenuCode(menu.getMenuCode());
if (temp == null) {
//如果生产环境没有,则新增;如果有了,则不处理
int level = menu.getLevel();
if (level == 1) {
//如果是第一层级的,应用
//不处理
} else if (level == 2) {
//如果是第二层级,则父级code,进行修改
menu.setParentId(tabSysMenu.getMenuId());
menu.setParentCode(tabSysMenu.getMenuCode());
menu.setMenuVersion(tabSysMenu.getMenuVersion());
menu.setMenuVersionName(tabSysMenu.getMenuVersionName());
menuService.savePage(EntityUtil.changeEntityNew(MenuDTO.class, menu));
} else {
//其他层级,查询他的父级ID,根据父级code
TabSysMenu otherLevel = menuService.getMenuByMenuCode(menu.getParentCode());
menu.setParentId(otherLevel.getMenuId());
menu.setMenuVersion(tabSysMenu.getMenuVersion());
menu.setMenuVersionName(tabSysMenu.getMenuVersionName());
menuService.savePage(EntityUtil.changeEntityNew(MenuDTO.class, menu));
}
}
});
//处理完所有的菜单
devMenuList.forEach(item -> {
//权限项和操作项关联数据同步
if (item.getMenuType().intValue() == 1) {
List<TabSysMenu> itemList = menuService.getAuthItemByDevMenuId(item.getMenuId());
if (CollectionUtils.isNotEmpty(itemList)) {
TabSysMenu proMenu = menuService.getMenuByMenuCode(item.getMenuCode());
List<MenuItemDTO> itemDTOList = new ArrayList<>();
Date now = new Date();
itemList.forEach(tempItem -> {
MenuItemDTO menuItemDTO = new MenuItemDTO();
menuItemDTO.setItemId(tempItem.getMenuId());
menuItemDTO.setMenuId(proMenu.getMenuId());
menuItemDTO.setStatus(1);
menuItemDTO.setCreateTime(now);
menuItemDTO.setUpdateTime(now);
itemDTOList.add(menuItemDTO);
});
//delete
menuItemService.deleteByMenuId(proMenu.getMenuId());
//save
menuItemService.saveFetch(itemDTOList);
}
}
});
}
return ServiceResponse.success();
}
private ServiceResponse<Void> savePage(MenuDTO menuDTO, Class clazz) {
ServiceResponse paramsValid = ValidParamsUtils.allCheckValidate(menuDTO, clazz);
if (!paramsValid.isSuccess()) {
......
......@@ -185,4 +185,11 @@
and item_id = #{itemId}
</if>
</update>
<select id="listByDev" resultMap="BaseResultMap">
select <include refid="Base_Column_List"></include>
from tab_sys_menu_item_dev
where status = 1
and menu_id = #{menuId}
</select>
</mapper>
\ No newline at end of file
......@@ -538,4 +538,37 @@
</foreach>
</if>
</update>
<select id="listMenuTemp" resultMap="BaseResultMap">
select <include refid="Base_Column_List"></include>
from tab_sys_menu_dev
where status = 1
and project = #{project}
</select>
<select id="getAuthItemByDevMenuId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List" />
FROM
tab_sys_menu
WHERE
status = 1
and menu_code IN (
SELECT
menu_code
FROM
tab_sys_menu_dev
WHERE
status = 1 and
menu_id IN (
SELECT
item_id
FROM
tab_sys_menu_item_dev
WHERE
menu_id = #{menuId}
and status = 1
)
)
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment