feat(REQ-2186): 政务端产品接口更新

This commit is contained in:
李昆鹏 2024-05-08 08:42:07 +08:00
parent d1a3082851
commit b810f9b569
9 changed files with 32 additions and 34 deletions

View File

@ -12,7 +12,7 @@ import cn.axzo.tyr.client.model.product.ProductUpdateReq;
import cn.axzo.tyr.client.model.product.ProductVO;
import cn.axzo.tyr.client.model.req.ProductSaveReq;
import cn.axzo.tyr.client.model.req.UpdateProductStatusReq;
import cn.axzo.tyr.client.model.res.ChiefTerminalResp;
import cn.axzo.tyr.client.model.res.GovernmentTerminalResp;
import cn.axzo.tyr.client.model.res.WorkspaceProductResp;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
@ -142,10 +142,10 @@ public interface ProductApi {
* 获取政务端列表
*
* @param terminal 政务端
* @return {@link ChiefTerminalResp}
* @return {@link GovernmentTerminalResp}
*/
@GetMapping("api/auth/product/getChiefTerminal")
ApiResult<List<ChiefTerminalResp>> getChiefTerminal(@RequestParam @NotNull(message = "terminal不能为空") String terminal);
@GetMapping("api/auth/product/getGovernmentTerminal")
ApiResult<List<GovernmentTerminalResp>> getGovernmentTerminal(@RequestParam @NotNull(message = "terminal不能为空") String terminal);
/**
* 根据租户类型查询产品信息新增租户开通管理

View File

@ -32,7 +32,7 @@ public enum WorkspaceTypeCodeEnum {
/**
* 政务
*/
CHIEF("3", "政务"),
GOVERNMENT("3", "政务"),
/**
* 班组
@ -68,5 +68,5 @@ public enum WorkspaceTypeCodeEnum {
/**
* 后台允许新增的租户类型
*/
public static final List<WorkspaceTypeCodeEnum> ALLOW_ADD_WORKSPACE_TYPE_CODE_ENUM = Lists.newArrayList(GENERAL_ENT, GENERAL_PROJECT, CHIEF);
public static final List<WorkspaceTypeCodeEnum> ALLOW_ADD_WORKSPACE_TYPE_CODE_ENUM = Lists.newArrayList(GENERAL_ENT, GENERAL_PROJECT, GOVERNMENT);
}

View File

@ -202,6 +202,6 @@ public class ProductVO {
/**
* 政务端featureResourceId
*/
private Long chiefFeatureResourceId;
private Long governmentFeatureResourceId;
}
}

View File

@ -162,6 +162,6 @@ public class ProductSaveReq {
/**
* 政务端featureResourceId
*/
private Long chiefFeatureResourceId;
private Long governmentFeatureResourceId;
}
}

View File

@ -14,7 +14,7 @@ import lombok.NoArgsConstructor;
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ChiefTerminalResp {
public class GovernmentTerminalResp {
/**
* 功能资源ID

View File

@ -42,7 +42,7 @@ public class WorkspaceProductResp {
/**
* 政务产品
*/
private List<Product> chiefProduct;
private List<Product> governmentProduct;
@Data
@Builder
@ -77,7 +77,7 @@ public class WorkspaceProductResp {
.addValueServices(Lists.newArrayList())
.generalServices(Lists.newArrayList())
.hardware(Lists.newArrayList())
.chiefProduct(Lists.newArrayList())
.governmentProduct(Lists.newArrayList())
.build();
}
}

View File

@ -13,7 +13,7 @@ import cn.axzo.tyr.client.model.product.ProductUpdateReq;
import cn.axzo.tyr.client.model.product.ProductVO;
import cn.axzo.tyr.client.model.req.ProductSaveReq;
import cn.axzo.tyr.client.model.req.UpdateProductStatusReq;
import cn.axzo.tyr.client.model.res.ChiefTerminalResp;
import cn.axzo.tyr.client.model.res.GovernmentTerminalResp;
import cn.axzo.tyr.client.model.res.WorkspaceProductResp;
import cn.axzo.tyr.server.model.PermissionCacheKey;
import cn.axzo.tyr.server.service.PermissionCacheService;
@ -169,8 +169,8 @@ public class ProductController implements ProductApi {
* @return 返回端列表
*/
@Override
public ApiResult<List<ChiefTerminalResp>> getChiefTerminal(String terminal) {
return productService.getChiefTerminal(terminal);
public ApiResult<List<GovernmentTerminalResp>> getGovernmentTerminal(String terminal) {
return productService.getGovernmentTerminal(terminal);
}
/**

View File

@ -9,7 +9,7 @@ import cn.axzo.tyr.client.model.product.ProductUpdateReq;
import cn.axzo.tyr.client.model.product.ProductVO;
import cn.axzo.tyr.client.model.req.ProductSaveReq;
import cn.axzo.tyr.client.model.req.UpdateProductStatusReq;
import cn.axzo.tyr.client.model.res.ChiefTerminalResp;
import cn.axzo.tyr.client.model.res.GovernmentTerminalResp;
import cn.axzo.tyr.client.model.res.WorkspaceProductResp;
import java.util.List;
@ -38,7 +38,7 @@ public interface ProductService {
ApiResult<Long> saveOrUpdate(ProductSaveReq req);
ApiResult<List<ChiefTerminalResp>> getChiefTerminal(String terminal);
ApiResult<List<GovernmentTerminalResp>> getGovernmentTerminal(String terminal);
ApiResult<WorkspaceProductResp> getWorkspaceProduct(String workspaceType);
}

View File

@ -2,6 +2,7 @@ package cn.axzo.tyr.server.service.impl;
import cn.axzo.basics.common.BeanMapper;
import cn.axzo.basics.common.util.AssertUtil;
import cn.axzo.framework.auth.domain.TerminalInfo;
import cn.axzo.framework.domain.page.PageResp;
import cn.axzo.framework.domain.web.result.ApiPageResult;
import cn.axzo.framework.domain.web.result.ApiResult;
@ -12,7 +13,7 @@ import cn.axzo.tyr.client.model.enums.WorkspaceTypeCodeEnum;
import cn.axzo.tyr.client.model.product.*;
import cn.axzo.tyr.client.model.req.ProductSaveReq;
import cn.axzo.tyr.client.model.req.UpdateProductStatusReq;
import cn.axzo.tyr.client.model.res.ChiefTerminalResp;
import cn.axzo.tyr.client.model.res.GovernmentTerminalResp;
import cn.axzo.tyr.client.model.res.WorkspaceProductResp;
import cn.axzo.tyr.server.repository.entity.ProductModule;
import cn.axzo.tyr.server.repository.dao.ProductModuleDao;
@ -52,9 +53,6 @@ public class ProductServiceImpl implements ProductService {
private final SaasFeatureResourceService saasFeatureResourceService;
private final SaasBasicDictService saasBasicDictService;
// todo 政务端最终使用常量
private final static String CHIEF_TERMINAL = "NT_CHIEF";
@Override
public ApiResult<List<ProductVO>> list(ProductSearchListReq req) {
LambdaQueryChainWrapper<ProductModule> eq = productModuleDao.lambdaQuery()
@ -122,7 +120,7 @@ public class ProductServiceImpl implements ProductService {
.videos(byId.getMaterial().getVideos())
.detailImages(byId.getMaterial().getDetailImages())
.build());
if (WorkspaceTypeCodeEnum.CHIEF.getCode().equals(productVO.getDictWorkspaceTypeCode())) {
if (WorkspaceTypeCodeEnum.GOVERNMENT.getCode().equals(productVO.getDictWorkspaceTypeCode())) {
fillFeatureScope(productVO);
}
return ApiResult.ok(productVO);
@ -214,16 +212,16 @@ public class ProductServiceImpl implements ProductService {
productModuleDao.save(productModule);
}
// 保存商品权限信息
if (WorkspaceTypeCodeEnum.CHIEF.getCode().equals(productModule.getDictWorkspaceTypeCode())) {
saveChiefFeatureResource(productModule.getId(), productModule.getDictWorkspaceTypeId(), productModule.getDictWorkspaceTypeCode(), req.getFeatureScope().getChiefFeatureResourceId());
if (WorkspaceTypeCodeEnum.GOVERNMENT.getCode().equals(productModule.getDictWorkspaceTypeCode())) {
saveGovernmentFeatureResource(productModule.getId(), productModule.getDictWorkspaceTypeId(), productModule.getDictWorkspaceTypeCode(), req.getFeatureScope().getGovernmentFeatureResourceId());
}
return ApiResult.ok(productModule.getId());
}
@Override
public ApiResult<List<ChiefTerminalResp>> getChiefTerminal(String terminal) {
public ApiResult<List<GovernmentTerminalResp>> getGovernmentTerminal(String terminal) {
List<SaasFeatureResource> featureResources = saasFeatureResourceService.listByParentIdAndTerminalAndIds(0L, terminal, null);
List<ChiefTerminalResp> resps = CollectionUtil.isEmpty(featureResources) ? Collections.emptyList() : featureResources.stream().map(e -> ChiefTerminalResp.builder()
List<GovernmentTerminalResp> resps = CollectionUtil.isEmpty(featureResources) ? Collections.emptyList() : featureResources.stream().map(e -> GovernmentTerminalResp.builder()
.featureResourceId(e.getId())
.featureResourceName(e.getFeatureName())
.build()).collect(Collectors.toList());
@ -245,8 +243,8 @@ public class ProductServiceImpl implements ProductService {
Map<String, List<ProductModule>> categoryMap = productModules.stream().collect(Collectors.groupingBy(ProductModule::getCategory));
categoryMap.forEach((k,v) -> {
// 政务产品
if (WorkspaceTypeCodeEnum.CHIEF.getCode().equals(workspaceType)) {
resp.getChiefProduct().addAll(v.stream().map(e -> WorkspaceProductResp.Product.builder()
if (WorkspaceTypeCodeEnum.GOVERNMENT.getCode().equals(workspaceType)) {
resp.getGovernmentProduct().addAll(v.stream().map(e -> WorkspaceProductResp.Product.builder()
.productId(e.getId())
.productName(e.getProductName())
.build()).collect(Collectors.toList()));
@ -306,9 +304,9 @@ public class ProductServiceImpl implements ProductService {
AssertUtil.notNull(req.getMaxPersonCount(), "人数上限不能为空");
AssertUtil.notNull(req.getPrice(), "价格不能为空");
}
if (WorkspaceTypeCodeEnum.CHIEF.equals(workspaceTypeCodeEnum)) {
AssertUtil.isTrue(Objects.nonNull(req.getFeatureScope()) && Objects.nonNull(req.getFeatureScope().getChiefFeatureResourceId())
&& req.getFeatureScope().getChiefFeatureResourceId() > 0, "功能范围选择有误");
if (WorkspaceTypeCodeEnum.GOVERNMENT.equals(workspaceTypeCodeEnum)) {
AssertUtil.isTrue(Objects.nonNull(req.getFeatureScope()) && Objects.nonNull(req.getFeatureScope().getGovernmentFeatureResourceId())
&& req.getFeatureScope().getGovernmentFeatureResourceId() > 0, "功能范围选择有误");
}
productModule.setProductName(req.getProductName());
productModule.setIcon(req.getIcon());
@ -338,10 +336,10 @@ public class ProductServiceImpl implements ProductService {
/**
* 保存政务端产品功能权限
*/
private void saveChiefFeatureResource(Long productId, Long dictWorkspaceTypeId, String dictWorkspaceTypeCode, Long rootFeatureId) {
private void saveGovernmentFeatureResource(Long productId, Long dictWorkspaceTypeId, String dictWorkspaceTypeCode, Long rootFeatureId) {
SaasFeatureResource saasFeatureResource = saasFeatureResourceService.featureResourceById(rootFeatureId);
AssertUtil.notNull(saasFeatureResource, "功能范围选择端不能为空");
AssertUtil.isTrue(saasFeatureResource.getParentId() == 0 && CHIEF_TERMINAL.equals(saasFeatureResource.getTerminal()), "功能范围选择端有误");
AssertUtil.isTrue(saasFeatureResource.getParentId() == 0 && TerminalInfo.NT_PC_GA_GENERAL.equals(saasFeatureResource.getTerminal()), "功能范围选择端有误");
List<SaasFeatureResource> saasFeatureResources = saasFeatureResourceService.listDescendant(rootFeatureId);
ProductFeatureRelationUpdateReq req = new ProductFeatureRelationUpdateReq();
@ -366,9 +364,9 @@ public class ProductServiceImpl implements ProductService {
return;
}
List<Long> featureIds = result.getData().stream().map(ProductFeatureRelationVO::getFeatureId).collect(Collectors.toList());
List<SaasFeatureResource> featureResources = saasFeatureResourceService.listByParentIdAndTerminalAndIds(0L, CHIEF_TERMINAL, featureIds);
List<SaasFeatureResource> featureResources = saasFeatureResourceService.listByParentIdAndTerminalAndIds(0L, TerminalInfo.NT_PC_GA_GENERAL, featureIds);
if (CollectionUtil.isNotEmpty(featureResources)) {
product.setFeatureScope(ProductVO.FeatureScope.builder().chiefFeatureResourceId(featureResources.get(0).getId()).build());
product.setFeatureScope(ProductVO.FeatureScope.builder().governmentFeatureResourceId(featureResources.get(0).getId()).build());
}
}
}