feat(REQ-2899):前端资源管理
This commit is contained in:
parent
008cd8c15b
commit
7113284251
@ -58,6 +58,21 @@ public enum PermissionRelationOperateLogSceneEnum {
|
||||
*/
|
||||
OMS_API_SYNC("OMS_API_SYNC", "oms后台同步API"),
|
||||
|
||||
/**
|
||||
* oms新增、编辑元素类型
|
||||
*/
|
||||
OMS_UPSERT_PAGE_ELEMENT_CATEGORY("OMS_UPSERT_PAGE_ELEMENT_CATEGORY", "oms新增、编辑元素类型"),
|
||||
|
||||
/**
|
||||
* oms删除元素类型
|
||||
*/
|
||||
OMS_DELETE_PAGE_ELEMENT_CATEGORY("OMS_DELETE_PAGE_ELEMENT_CATEGORY", "oms删除元素类型"),
|
||||
|
||||
/**
|
||||
* oms新增、编辑页面元素
|
||||
*/
|
||||
OMS_UPSERT_PAGE_ELEMENT("OMS_UPSERT_PAGE_ELEMENT", "oms新增、编辑页面元素"),
|
||||
|
||||
;
|
||||
|
||||
@EnumValue
|
||||
|
||||
@ -5,6 +5,7 @@ import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
@ -45,4 +46,28 @@ public interface PageElementApi {
|
||||
|
||||
@PostMapping("/api/pageElement/list")
|
||||
ApiResult<List<PageElementResp>> list(PageElementReq param);
|
||||
|
||||
/** 查询页面元素类型(按端分组) **/
|
||||
@PostMapping("/api/pageElementCategory/list")
|
||||
ApiResult<List<ListPageElementCategoryResp>> listPageElementCategory();
|
||||
|
||||
/** 新增、编辑页面元素类型 **/
|
||||
@PostMapping("/api/pageElementCategory/saveOrUpdate")
|
||||
ApiResult<Long> saveOrUpdateCategory(@RequestBody @Valid SaveOrUpdatePageElementCategoryReq req);
|
||||
|
||||
/** 删除页面元素类型 **/
|
||||
@PostMapping("/api/pageElementCategory/delete")
|
||||
ApiResult<Void> deleteCategory(@RequestBody @Valid DeletePageElementCategoryReq req);
|
||||
|
||||
/** 分页查询页面资源V2 **/
|
||||
@PostMapping("/api/pageElement/pageV2")
|
||||
ApiPageResult<PageElementResp> pageV2(@RequestBody @Valid PageQueryElementV2Req req);
|
||||
|
||||
/** 新增、编辑页面元素类型 **/
|
||||
@PostMapping("/api/pageElement/saveOrUpdatePage")
|
||||
ApiResult<Void> saveOrUpdatePage(@RequestBody @Valid SaveOrUpdatePageElementPageReq req);
|
||||
|
||||
/** 新增、编辑页面组件元素类型 **/
|
||||
@PostMapping("/api/pageElement/saveOrUpdateComponent")
|
||||
ApiResult<Void> saveOrUpdateComponent(@RequestBody @Valid SaveOrUpdatePageElementComponentReq req);
|
||||
}
|
||||
|
||||
@ -0,0 +1,31 @@
|
||||
package cn.axzo.tyr.client.model.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/8/21
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class DeletePageElementCategoryReq {
|
||||
|
||||
@NotNull(message = "ID不能为空")
|
||||
@Min(value = 1, message = "ID有误")
|
||||
private Long id;
|
||||
|
||||
/** 操作人personId **/
|
||||
@NotNull(message = "操作人不能为空")
|
||||
@Min(value = 1, message = "操作人有误")
|
||||
private Long operatorId;
|
||||
}
|
||||
@ -0,0 +1,53 @@
|
||||
package cn.axzo.tyr.client.model.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/6/14
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class PageQueryElementV2Req {
|
||||
|
||||
/**
|
||||
* 端
|
||||
*/
|
||||
private String terminal;
|
||||
|
||||
/**
|
||||
* 页面元素组件类型
|
||||
*/
|
||||
private List<String> elementTypes;
|
||||
|
||||
/**
|
||||
* 页面元素名称
|
||||
*/
|
||||
private String pageElementCodeOrName;
|
||||
|
||||
/**
|
||||
* 页面元素名称
|
||||
*/
|
||||
private String pageElementGroupCodeOrName;
|
||||
|
||||
/**
|
||||
* 页码
|
||||
*/
|
||||
@Builder.Default
|
||||
private Long page = 1L;
|
||||
|
||||
/**
|
||||
* 每页大小
|
||||
*/
|
||||
@Builder.Default
|
||||
private Long pageSize = 20L;
|
||||
}
|
||||
@ -0,0 +1,40 @@
|
||||
package cn.axzo.tyr.client.model.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/8/21
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SaveOrUpdatePageElementCategoryReq {
|
||||
|
||||
private Long id;
|
||||
|
||||
/** 项目编码 **/
|
||||
private String itemCode;
|
||||
|
||||
/** 项目名称 **/
|
||||
@NotBlank(message = "项目名称不能为空")
|
||||
private String itemName;
|
||||
|
||||
/** 登录端 **/
|
||||
@NotBlank(message = "所属端不能为空")
|
||||
private String terminal;
|
||||
|
||||
/** 操作人personId **/
|
||||
@NotNull(message = "操作人不能为空")
|
||||
@Min(value = 1, message = "操作人有误")
|
||||
private Long operatorId;
|
||||
}
|
||||
@ -0,0 +1,42 @@
|
||||
package cn.axzo.tyr.client.model.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/8/21
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SaveOrUpdatePageElementComponentReq {
|
||||
|
||||
private Long id;
|
||||
|
||||
/** 分组ID **/
|
||||
@NotNull(message = "分组ID不能为空")
|
||||
@Min(value = 1, message = "分组ID有误")
|
||||
private Long pageId;
|
||||
|
||||
/** 项目编码 **/
|
||||
@NotBlank(message = "项目编码不能为空")
|
||||
private String code;
|
||||
|
||||
/** 元素名称 **/
|
||||
@NotBlank(message = "元素名称不能为空")
|
||||
private String name;
|
||||
|
||||
/** 操作人personId **/
|
||||
@NotNull(message = "操作人不能为空")
|
||||
@Min(value = 1, message = "操作人有误")
|
||||
private Long operatorId;
|
||||
}
|
||||
@ -0,0 +1,59 @@
|
||||
package cn.axzo.tyr.client.model.req;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/8/21
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SaveOrUpdatePageElementPageReq {
|
||||
|
||||
private Long id;
|
||||
|
||||
/** 项目编码 **/
|
||||
@NotBlank(message = "项目编码不能为空")
|
||||
private String itemCode;
|
||||
|
||||
/** 项目编码 **/
|
||||
@NotBlank(message = "项目编码不能为空")
|
||||
private String code;
|
||||
|
||||
/** 元素名称 **/
|
||||
@NotBlank(message = "元素名称不能为空")
|
||||
private String name;
|
||||
|
||||
/** app类型(APP:原生,H5:h5页面, PC:web页面) **/
|
||||
private String appType;
|
||||
|
||||
/** H5的appId **/
|
||||
private String appId;
|
||||
|
||||
/** pc/h5路由地址 **/
|
||||
private String linkUrl;
|
||||
|
||||
/** ios挑战地址 **/
|
||||
private String iosRouterUrl;
|
||||
|
||||
/** android挑战地址 **/
|
||||
private String androidRouterUrl;
|
||||
|
||||
/** 版本号 **/
|
||||
private Integer version;
|
||||
|
||||
/** 操作人personId **/
|
||||
@NotNull(message = "操作人不能为空")
|
||||
@Min(value = 1, message = "操作人有误")
|
||||
private Long operatorId;
|
||||
}
|
||||
@ -0,0 +1,39 @@
|
||||
package cn.axzo.tyr.client.model.res;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/8/20
|
||||
*/
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ListPageElementCategoryResp {
|
||||
|
||||
/** 端 **/
|
||||
private String terminal;
|
||||
/** 页面元素类型列表 **/
|
||||
private List<PageElementCategoryDTO> pageElementCategories;
|
||||
|
||||
@Data
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public static class PageElementCategoryDTO {
|
||||
/** 主键 **/
|
||||
private Long id;
|
||||
/** 项目编码 **/
|
||||
private String itemCode;
|
||||
/** 项目名称 **/
|
||||
private String itemName;
|
||||
}
|
||||
}
|
||||
@ -32,6 +32,11 @@ public class PageElementResp {
|
||||
*/
|
||||
private String groupCode;
|
||||
|
||||
/**
|
||||
* 元素的组编码
|
||||
*/
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 元素编码
|
||||
*/
|
||||
|
||||
@ -3,14 +3,11 @@ package cn.axzo.tyr.server.controller.permission;
|
||||
import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.feign.PageElementApi;
|
||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementCategoryService;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@ -29,6 +26,7 @@ import java.util.List;
|
||||
public class PageElementController implements PageElementApi {
|
||||
|
||||
private final SaasPageElementService saasPageElementService;
|
||||
private final SaasPageElementCategoryService saasPageElementCategoryService;
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> report(PageElementReportReq req) {
|
||||
@ -61,4 +59,37 @@ public class PageElementController implements PageElementApi {
|
||||
public ApiResult<List<PageElementResp>> list(PageElementReq param) {
|
||||
return ApiResult.ok(saasPageElementService.list(param));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<List<ListPageElementCategoryResp>> listPageElementCategory() {
|
||||
return ApiResult.ok(saasPageElementCategoryService.listGroupByTerminal());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Long> saveOrUpdateCategory(SaveOrUpdatePageElementCategoryReq req) {
|
||||
return ApiResult.ok(saasPageElementCategoryService.saveOrUpdate(req));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> deleteCategory(DeletePageElementCategoryReq req) {
|
||||
saasPageElementCategoryService.delete(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiPageResult<PageElementResp> pageV2(PageQueryElementV2Req req) {
|
||||
return ApiPageResult.ok(saasPageElementService.pageV2(req));
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> saveOrUpdatePage(SaveOrUpdatePageElementPageReq req) {
|
||||
saasPageElementService.saveOrUpdatePage(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApiResult<Void> saveOrUpdateComponent(SaveOrUpdatePageElementComponentReq req) {
|
||||
saasPageElementService.saveOrUpdateComponent(req);
|
||||
return ApiResult.ok();
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,15 @@
|
||||
package cn.axzo.tyr.server.repository.dao;
|
||||
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementCategory;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasPageElementCategoryMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/8/20
|
||||
*/
|
||||
@Repository
|
||||
public class SaasPageElementCategoryDao extends ServiceImpl<SaasPageElementCategoryMapper, SaasPageElementCategory> {
|
||||
}
|
||||
@ -1,6 +1,8 @@
|
||||
package cn.axzo.tyr.server.repository.dao;
|
||||
|
||||
import cn.axzo.basics.common.constant.enums.DeleteEnum;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasPageElementMapper;
|
||||
@ -41,4 +43,42 @@ public class SaasPageElementDao extends ServiceImpl<SaasPageElementMapper, SaasP
|
||||
.notIn(CollectionUtils.isNotEmpty(excludeIds), SaasPageElement::getId, excludeIds)
|
||||
.list();
|
||||
}
|
||||
|
||||
public void updateItemNameByItemCode(String itemCode, String itemName, String terminal) {
|
||||
lambdaUpdate()
|
||||
.eq(SaasPageElement::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.eq(SaasPageElement::getItemCode, itemCode)
|
||||
.eq(SaasPageElement::getTerminal, terminal)
|
||||
.set(SaasPageElement::getItemName, itemName)
|
||||
.update();
|
||||
}
|
||||
|
||||
public List<SaasPageElement> listByItemCodeAndTerminal(String itemCode, String terminal) {
|
||||
return lambdaQuery()
|
||||
.eq(SaasPageElement::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.eq(SaasPageElement::getTerminal, terminal)
|
||||
.eq(SaasPageElement::getItemCode, itemCode)
|
||||
.list();
|
||||
}
|
||||
|
||||
public void deleteIdsByTerminal(List<Long> ids, String terminal) {
|
||||
if (CollectionUtils.isEmpty(ids)) {
|
||||
return;
|
||||
}
|
||||
lambdaUpdate()
|
||||
.eq(SaasPageElement::getTerminal, terminal)
|
||||
.in(BaseEntity::getId, ids)
|
||||
.set(SaasPageElement::getIsDelete, DeleteEnum.DELETE.getValue())
|
||||
.update();
|
||||
}
|
||||
|
||||
public void updateComponentsGroupCode(String oldGroupCode, String newGroupCode, String terminal) {
|
||||
lambdaUpdate()
|
||||
.eq(SaasPageElement::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.eq(SaasPageElement::getTerminal, terminal)
|
||||
.eq(SaasPageElement::getType, PageElementTypeEnum.COMPONENT.getCode())
|
||||
.eq(SaasPageElement::getGroupCode, oldGroupCode)
|
||||
.set(SaasPageElement::getGroupCode, newGroupCode)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,8 @@ package cn.axzo.tyr.server.repository.dao;
|
||||
|
||||
import cn.axzo.basics.common.constant.enums.DeleteEnum;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasPageElementFeatureResourceRelationMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
@ -46,4 +48,23 @@ public class SaasPageElementFeatureResourceRelationDao extends ServiceImpl<SaasP
|
||||
.set(Objects.nonNull(operatorId), SaasPageElementFeatureResourceRelation::getUpdateBy, operatorId)
|
||||
.update();
|
||||
}
|
||||
|
||||
public void deleteByTerminalAndPageElementCodes(String terminal, List<String> pageElementCodes, Long operatorId) {
|
||||
lambdaUpdate()
|
||||
.eq(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.eq(SaasPageElementFeatureResourceRelation::getTerminal, terminal)
|
||||
.in(SaasPageElementFeatureResourceRelation::getPageElementCode, pageElementCodes)
|
||||
.set(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.DELETE.getValue())
|
||||
.set(Objects.nonNull(operatorId), SaasPageElementFeatureResourceRelation::getUpdateBy, operatorId)
|
||||
.update();
|
||||
}
|
||||
|
||||
public void updateGroupCode(String oldGroupCode, String newGroupCode, String terminal) {
|
||||
lambdaUpdate()
|
||||
.eq(SaasPageElementFeatureResourceRelation::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.eq(SaasPageElementFeatureResourceRelation::getTerminal, terminal)
|
||||
.eq(SaasPageElementFeatureResourceRelation::getPageElementCode, oldGroupCode)
|
||||
.set(SaasPageElementFeatureResourceRelation::getPageElementCode, newGroupCode)
|
||||
.update();
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
package cn.axzo.tyr.server.repository.entity;
|
||||
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
|
||||
/**
|
||||
* 页面元素表
|
||||
*
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/6/18
|
||||
*/
|
||||
@Getter
|
||||
@Setter
|
||||
@ToString
|
||||
@Builder
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@TableName(value = "saas_page_element_category", autoResultMap = true)
|
||||
public class SaasPageElementCategory extends BaseEntity<SaasPageElementCategory> {
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private Long createBy;
|
||||
|
||||
/**
|
||||
* 更新人
|
||||
*/
|
||||
private Long updateBy;
|
||||
|
||||
/**
|
||||
* 项目code(H5会拉取项目下所有的元素)
|
||||
*/
|
||||
private String itemCode;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
private String itemName;
|
||||
|
||||
/**
|
||||
* 所属端
|
||||
*/
|
||||
private String terminal;
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
package cn.axzo.tyr.server.repository.mapper;
|
||||
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementCategory;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
public interface SaasPageElementCategoryMapper extends BaseMapper<SaasPageElementCategory> {
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,21 @@
|
||||
package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
|
||||
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
|
||||
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/8/20
|
||||
*/
|
||||
public interface SaasPageElementCategoryService {
|
||||
|
||||
List<ListPageElementCategoryResp> listGroupByTerminal();
|
||||
|
||||
Long saveOrUpdate(SaveOrUpdatePageElementCategoryReq req);
|
||||
|
||||
void delete(DeletePageElementCategoryReq req);
|
||||
}
|
||||
@ -1,12 +1,7 @@
|
||||
package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.framework.domain.page.PageResp;
|
||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||
import cn.axzo.tyr.client.model.res.PageElementResp;
|
||||
@ -82,4 +77,10 @@ public interface SaasPageElementService extends IService<SaasPageElement> {
|
||||
List<PageElementResp> list(PageElementReq param);
|
||||
|
||||
cn.axzo.foundation.page.PageResp<PageElementResp> page(PageElementReq param);
|
||||
|
||||
PageResp<PageElementResp> pageV2(PageQueryElementV2Req req);
|
||||
|
||||
Long saveOrUpdatePage(SaveOrUpdatePageElementPageReq req);
|
||||
|
||||
Long saveOrUpdateComponent(SaveOrUpdatePageElementComponentReq req);
|
||||
}
|
||||
|
||||
@ -0,0 +1,174 @@
|
||||
package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.basics.common.constant.enums.DeleteEnum;
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.pokonyan.config.mybatisplus.BaseEntity;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
||||
import cn.axzo.tyr.client.model.req.DeletePageElementCategoryReq;
|
||||
import cn.axzo.tyr.client.model.req.PermissionOperateLogReq;
|
||||
import cn.axzo.tyr.client.model.req.SaveOrUpdatePageElementCategoryReq;
|
||||
import cn.axzo.tyr.client.model.res.ListPageElementCategoryResp;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementCategoryDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementCategory;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementCategoryService;
|
||||
import cn.axzo.tyr.server.service.SaasPgroupPermissionRelationOperateLogService;
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author likunpeng
|
||||
* @version 1.0
|
||||
* @date 2024/8/20
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
@AllArgsConstructor
|
||||
public class SaasPageElementCategoryServiceImpl implements SaasPageElementCategoryService {
|
||||
|
||||
public static final String PAGE_ELEMENT_CATEGORY_TABLE_NAME = "saas_page_element_category";
|
||||
|
||||
private final SaasPageElementCategoryDao saasPageElementCategoryDao;
|
||||
private final SaasPageElementDao saasPageElementDao;
|
||||
private final SaasPageElementFeatureResourceRelationDao saasPageElementFeatureResourceRelationDao;
|
||||
private final SaasPgroupPermissionRelationOperateLogService saasPgroupPermissionRelationOperateLogService;
|
||||
|
||||
@Override
|
||||
public List<ListPageElementCategoryResp> listGroupByTerminal() {
|
||||
List<ListPageElementCategoryResp> categoryResps = Lists.newArrayList();
|
||||
List<SaasPageElementCategory> categories = saasPageElementCategoryDao.lambdaQuery()
|
||||
.eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.value)
|
||||
.list();
|
||||
if (CollectionUtils.isEmpty(categories)) {
|
||||
return categoryResps;
|
||||
}
|
||||
Map<String, List<SaasPageElementCategory>> categoryMap = categories.stream().collect(Collectors.groupingBy(SaasPageElementCategory::getTerminal));
|
||||
categoryMap.forEach((key, value) -> {
|
||||
categoryResps.add(ListPageElementCategoryResp.builder().terminal(key)
|
||||
.pageElementCategories(value.stream().map(c -> ListPageElementCategoryResp.PageElementCategoryDTO
|
||||
.builder()
|
||||
.id(c.getId())
|
||||
.itemCode(c.getItemCode())
|
||||
.itemName(c.getItemName())
|
||||
.build()).collect(Collectors.toList())).build());
|
||||
});
|
||||
return categoryResps;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long saveOrUpdate(SaveOrUpdatePageElementCategoryReq req) {
|
||||
SaasPageElementCategory baseCategory = SaasPageElementCategory.builder()
|
||||
.itemName(req.getItemName())
|
||||
.createBy(req.getOperatorId())
|
||||
.updateBy(req.getOperatorId())
|
||||
.build();
|
||||
validItemName(req.getItemName(), req.getId());
|
||||
|
||||
if (Objects.nonNull(req.getId())) {
|
||||
// 不允许编辑itemCoe,不然端上查询权限点出问题
|
||||
SaasPageElementCategory dbCategory = saasPageElementCategoryDao.getById(req.getId());
|
||||
AssertUtil.notNull(dbCategory, "页面元素分类不存在");
|
||||
baseCategory.setId(req.getId());
|
||||
if (!dbCategory.getItemName().equals(req.getItemName())) {
|
||||
// 更新saas_page_element的item_name
|
||||
saasPageElementDao.updateItemNameByItemCode(dbCategory.getItemCode(), req.getItemName(), dbCategory.getTerminal());
|
||||
}
|
||||
saasPageElementCategoryDao.updateById(baseCategory);
|
||||
} else {
|
||||
AssertUtil.notEmpty(req.getItemCode(), "项目编码不能为空");
|
||||
validItemCode(req.getItemCode());
|
||||
baseCategory.setItemCode(req.getItemCode());
|
||||
baseCategory.setTerminal(req.getTerminal());
|
||||
saasPageElementCategoryDao.save(baseCategory);
|
||||
}
|
||||
|
||||
try {
|
||||
saveOrUpdateOperateLog(req, baseCategory);
|
||||
} catch (Exception e) {
|
||||
log.warn("save operate log error", e);
|
||||
}
|
||||
|
||||
return baseCategory.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void delete(DeletePageElementCategoryReq req) {
|
||||
SaasPageElementCategory dbCategory = saasPageElementCategoryDao.getById(req.getId());
|
||||
AssertUtil.notNull(dbCategory, "页面元素分类不存在");
|
||||
saasPageElementCategoryDao.lambdaUpdate()
|
||||
.eq(BaseEntity::getId, req.getId())
|
||||
.set(SaasPageElementCategory::getIsDelete, DeleteEnum.DELETE.getValue())
|
||||
.set(SaasPageElementCategory::getUpdateBy, req.getOperatorId())
|
||||
.update();
|
||||
|
||||
// 删除页面元素
|
||||
List<SaasPageElement> pageElements = saasPageElementDao.listByItemCodeAndTerminal(dbCategory.getItemCode(), dbCategory.getTerminal());
|
||||
if (CollectionUtils.isEmpty(pageElements)) {
|
||||
return;
|
||||
}
|
||||
List<Long> pageElementIds = pageElements.stream().map(BaseEntity::getId).collect(Collectors.toList());
|
||||
saasPageElementDao.deleteIdsByTerminal(pageElementIds, dbCategory.getTerminal());
|
||||
|
||||
// 删除页面元素绑定关系
|
||||
List<String> pageElementCodes = pageElements.stream().map(SaasPageElement::getCode).collect(Collectors.toList());
|
||||
saasPageElementFeatureResourceRelationDao.deleteByTerminalAndPageElementCodes(dbCategory.getTerminal(), pageElementCodes, req.getOperatorId());
|
||||
|
||||
try {
|
||||
saveDeleteOperateLog(req, dbCategory);
|
||||
} catch (Exception e) {
|
||||
log.warn("save operate log error", e);
|
||||
}
|
||||
}
|
||||
|
||||
private void validItemCode(String itemCode) {
|
||||
List<SaasPageElementCategory> categories = saasPageElementCategoryDao.lambdaQuery()
|
||||
.eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.value)
|
||||
.eq(SaasPageElementCategory::getItemCode, itemCode)
|
||||
.list();
|
||||
AssertUtil.isEmpty(categories, "项目编码已存在");
|
||||
}
|
||||
|
||||
private void validItemName(String itemName, Long categoryId) {
|
||||
List<SaasPageElementCategory> categories = saasPageElementCategoryDao.lambdaQuery()
|
||||
.eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.value)
|
||||
.eq(SaasPageElementCategory::getItemName, itemName)
|
||||
.ne(Objects.nonNull(categoryId), BaseEntity::getId, categoryId)
|
||||
.list();
|
||||
AssertUtil.isEmpty(categories, "项目名称已存在");
|
||||
}
|
||||
|
||||
private void saveOrUpdateOperateLog(SaveOrUpdatePageElementCategoryReq req, SaasPageElementCategory baseCategory) {
|
||||
saasPgroupPermissionRelationOperateLogService.save(PermissionOperateLogReq.builder()
|
||||
.tableName(PAGE_ELEMENT_CATEGORY_TABLE_NAME)
|
||||
.operatorId(req.getOperatorId())
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_UPSERT_PAGE_ELEMENT_CATEGORY.getValue())
|
||||
.sceneId(baseCategory.getId().toString())
|
||||
.requestData(req)
|
||||
.operateData(baseCategory)
|
||||
.build());
|
||||
}
|
||||
|
||||
private void saveDeleteOperateLog(DeletePageElementCategoryReq req, SaasPageElementCategory baseCategory) {
|
||||
saasPgroupPermissionRelationOperateLogService.save(PermissionOperateLogReq.builder()
|
||||
.tableName(PAGE_ELEMENT_CATEGORY_TABLE_NAME)
|
||||
.operatorId(req.getOperatorId())
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_DELETE_PAGE_ELEMENT_CATEGORY.getValue())
|
||||
.sceneId(baseCategory.getId().toString())
|
||||
.requestData(req)
|
||||
.operateData(baseCategory)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
package cn.axzo.tyr.server.service.impl;
|
||||
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.basics.common.constant.enums.DeleteEnum;
|
||||
import cn.axzo.basics.common.util.AssertUtil;
|
||||
import cn.axzo.basics.common.util.StopWatchUtil;
|
||||
import cn.axzo.basics.profiles.api.UserProfileServiceApi;
|
||||
@ -15,15 +16,7 @@ import cn.axzo.tyr.client.common.enums.FeatureResourceType;
|
||||
import cn.axzo.tyr.client.common.enums.PageElementFeatureResourceRelationTypeEnum;
|
||||
import cn.axzo.tyr.client.common.enums.PageElementTypeEnum;
|
||||
import cn.axzo.tyr.client.common.enums.PermissionRelationOperateLogSceneEnum;
|
||||
import cn.axzo.tyr.client.model.req.GetPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.GetUserHasPermissionPageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.IdentityAuthReq;
|
||||
import cn.axzo.tyr.client.model.req.ModifyPageElementRelationDTO;
|
||||
import cn.axzo.tyr.client.model.req.PageElementFeatureResourceRelationReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReportReq;
|
||||
import cn.axzo.tyr.client.model.req.PageElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PageQueryElementReq;
|
||||
import cn.axzo.tyr.client.model.req.PageSaasFeatureResourceReq;
|
||||
import cn.axzo.tyr.client.model.req.*;
|
||||
import cn.axzo.tyr.client.model.res.GetUserHasPermissionPageElementResp;
|
||||
import cn.axzo.tyr.client.model.res.IdentityAuthRes;
|
||||
import cn.axzo.tyr.client.model.res.PageElementBasicDTO;
|
||||
@ -33,12 +26,10 @@ import cn.axzo.tyr.server.config.MqProducer;
|
||||
import cn.axzo.tyr.server.event.payload.PageElementFeatureResourceUpsertPayload;
|
||||
import cn.axzo.tyr.server.model.RelationOperateLogResourceBindElementDO;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasFeatureResourceDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementCategoryDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementDao;
|
||||
import cn.axzo.tyr.server.repository.dao.SaasPageElementFeatureResourceRelationDao;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasFeatureResource;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElement;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPageElementFeatureResourceRelation;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasPgroupPermissionRelationOperateLog;
|
||||
import cn.axzo.tyr.server.repository.entity.*;
|
||||
import cn.axzo.tyr.server.repository.mapper.SaasPageElementMapper;
|
||||
import cn.axzo.tyr.server.service.SaasFeatureResourceService;
|
||||
import cn.axzo.tyr.server.service.SaasPageElementFeatureResourceRelationService;
|
||||
@ -53,6 +44,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.google.common.base.Strings;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Maps;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
@ -69,11 +61,7 @@ import org.springframework.cloud.context.config.annotation.RefreshScope;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.function.Function;
|
||||
@ -102,6 +90,7 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
||||
private final MqProducer mqProducer;
|
||||
private final SaasFeatureResourceService saasFeatureResourceService;
|
||||
private final SaasPageElementFeatureResourceRelationService saasPageElementFeatureResourceRelationService;
|
||||
private final SaasPageElementCategoryDao saasPageElementCategoryDao;
|
||||
|
||||
@Qualifier("asyncExecutor")
|
||||
@Autowired
|
||||
@ -112,6 +101,7 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
||||
private List<String> reportSecretKeys;
|
||||
|
||||
private static final String TARGET_TYPE = "pageElementFeatureResourceId";
|
||||
public static final String PAGE_ELEMENT_TABLE_NAME = "saas_page_element";
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
@ -503,6 +493,123 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
||||
return PageConverter.toResp(page, e -> from(e, featureResources));
|
||||
}
|
||||
|
||||
@Override
|
||||
public PageResp<PageElementResp> pageV2(PageQueryElementV2Req request) {
|
||||
IPage<SaasPageElement> page = saasPageElementDao.lambdaQuery()
|
||||
.eq(StringUtils.isNotBlank(request.getTerminal()), SaasPageElement::getTerminal, request.getTerminal())
|
||||
.in(CollectionUtils.isNotEmpty(request.getElementTypes()), SaasPageElement::getType, request.getElementTypes())
|
||||
.and(StringUtils.isNotBlank(request.getPageElementCodeOrName()), w -> w.like(SaasPageElement::getCode, request.getPageElementCodeOrName())
|
||||
.or().like(SaasPageElement::getName, request.getPageElementCodeOrName()))
|
||||
.eq(StringUtils.isNotBlank(request.getPageElementGroupCodeOrName()), SaasPageElement::getType, PageElementTypeEnum.PAGE.getCode())
|
||||
.and(StringUtils.isNotBlank(request.getPageElementGroupCodeOrName()),
|
||||
w -> w.like(SaasPageElement::getGroupCode, request.getPageElementGroupCodeOrName())
|
||||
.or().like(SaasPageElement::getName, request.getPageElementGroupCodeOrName()))
|
||||
.orderByDesc(BaseEntity::getId)
|
||||
.page(new Page<>(request.getPage(), request.getPageSize()));
|
||||
List<PageElementResp> list = BeanMapper.copyList(page.getRecords(), PageElementResp.class);
|
||||
fillGroupName(list);
|
||||
return PageResp.list(page.getCurrent(), page.getSize(), page.getTotal(), list);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long saveOrUpdatePage(SaveOrUpdatePageElementPageReq req) {
|
||||
List<SaasPageElementCategory> categories = saasPageElementCategoryDao.lambdaQuery()
|
||||
.eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.eq(SaasPageElementCategory::getItemCode, req.getItemCode()).list();
|
||||
AssertUtil.notEmpty(categories, "元素分类不存在。");
|
||||
SaasPageElementCategory category = categories.get(0);
|
||||
|
||||
SaasPageElement basePageElement = SaasPageElement.builder()
|
||||
.version(req.getVersion())
|
||||
.groupCode(req.getCode())
|
||||
.code(req.getCode())
|
||||
.name(req.getName())
|
||||
.type(PageElementTypeEnum.PAGE.getCode())
|
||||
.linkUrl(req.getLinkUrl())
|
||||
.linkExt(getLinkExtStr(req.getIosRouterUrl(), req.getAndroidRouterUrl()))
|
||||
.terminal(category.getTerminal())
|
||||
.appType(req.getAppType())
|
||||
.appId(req.getAppId())
|
||||
.itemCode(req.getItemCode())
|
||||
.itemName(category.getItemName())
|
||||
.build();
|
||||
|
||||
if (Objects.nonNull(req.getId())) {
|
||||
SaasPageElement dbPageElement = saasPageElementDao.getById(req.getId());
|
||||
AssertUtil.notNull(dbPageElement, "页面元素不存在");
|
||||
basePageElement.setId(dbPageElement.getId());
|
||||
if (!dbPageElement.getCode().equals(basePageElement.getCode())) {
|
||||
// 校验code唯一
|
||||
validCode(basePageElement.getCode());
|
||||
// 更新子元素的group_code
|
||||
saasPageElementDao.updateComponentsGroupCode(dbPageElement.getCode(), basePageElement.getCode(), category.getTerminal());
|
||||
// 更新关联关系的page_element_code
|
||||
saasPageElementFeatureResourceRelationDao.updateGroupCode(dbPageElement.getCode(), basePageElement.getCode(), category.getTerminal());
|
||||
}
|
||||
saasPageElementDao.updateById(basePageElement);
|
||||
} else {
|
||||
validCode(basePageElement.getCode());
|
||||
saasPageElementDao.save(basePageElement);
|
||||
}
|
||||
|
||||
// 记录操作日志
|
||||
try {
|
||||
saveOrUpdatePageOperateLog(req, basePageElement);
|
||||
} catch (Exception e) {
|
||||
log.warn("save operate log error", e);
|
||||
}
|
||||
|
||||
return basePageElement.getId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Long saveOrUpdateComponent(SaveOrUpdatePageElementComponentReq req) {
|
||||
List<SaasPageElement> pageElements = saasPageElementDao.lambdaQuery()
|
||||
.eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.eq(SaasPageElement::getId, req.getPageId()).list();
|
||||
AssertUtil.notEmpty(pageElements, "父级元素不存在。");
|
||||
SaasPageElement pageElement = pageElements.get(0);
|
||||
|
||||
SaasPageElement basePageElement = SaasPageElement.builder()
|
||||
.version(pageElement.getVersion())
|
||||
.groupCode(pageElement.getCode())
|
||||
.code(req.getCode())
|
||||
.name(req.getName())
|
||||
.type(PageElementTypeEnum.COMPONENT.getCode())
|
||||
.terminal(pageElement.getTerminal())
|
||||
.appType(pageElement.getAppType())
|
||||
.appId(pageElement.getAppId())
|
||||
.itemCode(pageElement.getItemCode())
|
||||
.itemName(pageElement.getItemName())
|
||||
.build();
|
||||
|
||||
if (Objects.nonNull(req.getId())) {
|
||||
SaasPageElement dbPageElement = saasPageElementDao.getById(req.getId());
|
||||
AssertUtil.notNull(dbPageElement, "页面组件元素不存在");
|
||||
basePageElement.setId(dbPageElement.getId());
|
||||
if (!dbPageElement.getCode().equals(basePageElement.getCode())) {
|
||||
// 校验code唯一
|
||||
validCode(basePageElement.getCode());
|
||||
// 更新关联关系的page_element_code
|
||||
saasPageElementFeatureResourceRelationDao.updateGroupCode(dbPageElement.getCode(), basePageElement.getCode(), pageElement.getTerminal());
|
||||
}
|
||||
saasPageElementDao.updateById(basePageElement);
|
||||
} else {
|
||||
validCode(basePageElement.getCode());
|
||||
saasPageElementDao.save(basePageElement);
|
||||
}
|
||||
|
||||
// 记录操作日志
|
||||
try {
|
||||
saveOrUpdateComponentOperateLog(req, basePageElement);
|
||||
} catch (Exception e) {
|
||||
log.warn("save operate log error", e);
|
||||
}
|
||||
|
||||
return basePageElement.getId();
|
||||
}
|
||||
|
||||
private PageElementResp from(SaasPageElement saasPageElement,
|
||||
Map<String, List<SaasFeatureResourceResp>> featureResources) {
|
||||
PageElementResp pageElementResp = PageElementResp.builder().build();
|
||||
@ -549,4 +656,55 @@ public class SaasPageElementServiceImpl extends ServiceImpl<SaasPageElementMappe
|
||||
.collect(Collectors.groupingBy(SaasPageElementFeatureResourceRelation::getPageElementCode,
|
||||
Collectors.mapping(e -> featureResources.get(e.getFeatureResourceUniCode()), Collectors.toList())));
|
||||
}
|
||||
|
||||
private void fillGroupName(List<PageElementResp> list) {
|
||||
if (CollectionUtils.isEmpty(list)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, SaasPageElement> elementMap = saasPageElementDao.lambdaQuery()
|
||||
.eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.getValue())
|
||||
.in(SaasPageElement::getCode, list.stream().map(PageElementResp::getGroupCode).distinct().collect(Collectors.toList()))
|
||||
.list().stream().collect(Collectors.toMap(SaasPageElement::getCode, Function.identity(), (v1, v2) -> v1));
|
||||
list.forEach(e -> e.setGroupName(Optional.ofNullable(elementMap.get(e.getGroupCode())).map(SaasPageElement::getName).orElse(StringUtils.EMPTY)));
|
||||
}
|
||||
|
||||
private void validCode(String code) {
|
||||
List<SaasPageElement> pageElements = saasPageElementDao.lambdaQuery()
|
||||
.eq(BaseEntity::getIsDelete, DeleteEnum.NORMAL.value)
|
||||
.eq(SaasPageElement::getCode, code)
|
||||
.list();
|
||||
AssertUtil.isEmpty(pageElements, "featureCode已存在");
|
||||
}
|
||||
|
||||
private String getLinkExtStr(String iosRouterUrl, String androidRouterUrl) {
|
||||
if (StringUtils.isBlank(iosRouterUrl) && StringUtils.isBlank(androidRouterUrl)) {
|
||||
return StringUtils.EMPTY;
|
||||
}
|
||||
List<PageElementResp.LinkExt> exts = Lists.newArrayList(PageElementResp.LinkExt.builder().system("ios").routerUrl(Strings.nullToEmpty(iosRouterUrl)).build(),
|
||||
PageElementResp.LinkExt.builder().system("android").routerUrl(Strings.nullToEmpty(androidRouterUrl)).build());
|
||||
return JSONObject.toJSONString(exts);
|
||||
}
|
||||
|
||||
private void saveOrUpdatePageOperateLog(SaveOrUpdatePageElementPageReq req, SaasPageElement basePageElement) {
|
||||
saasPgroupPermissionRelationOperateLogService.save(PermissionOperateLogReq.builder()
|
||||
.tableName(PAGE_ELEMENT_TABLE_NAME)
|
||||
.operatorId(req.getOperatorId())
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_UPSERT_PAGE_ELEMENT.getValue())
|
||||
.sceneId(basePageElement.getId().toString())
|
||||
.requestData(req)
|
||||
.operateData(basePageElement)
|
||||
.build());
|
||||
}
|
||||
|
||||
private void saveOrUpdateComponentOperateLog(SaveOrUpdatePageElementComponentReq req, SaasPageElement basePageElement) {
|
||||
saasPgroupPermissionRelationOperateLogService.save(PermissionOperateLogReq.builder()
|
||||
.tableName(PAGE_ELEMENT_TABLE_NAME)
|
||||
.operatorId(req.getOperatorId())
|
||||
.scene(PermissionRelationOperateLogSceneEnum.OMS_UPSERT_PAGE_ELEMENT.getValue())
|
||||
.sceneId(basePageElement.getId().toString())
|
||||
.requestData(req)
|
||||
.operateData(basePageElement)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user