add - 添加产品相关接口的实现
This commit is contained in:
parent
5473f434d6
commit
e099e97f3f
@ -4,6 +4,7 @@ import cn.axzo.framework.domain.web.result.ApiPageResult;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.model.product.ProductAddReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationSearchReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationUpdateReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationVO;
|
||||
import cn.axzo.tyr.client.model.product.ProductSearchListReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductSearchPageReq;
|
||||
@ -18,7 +19,6 @@ import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 产品相关 API
|
||||
@ -92,4 +92,11 @@ public interface ProductApi {
|
||||
@PostMapping("api/auth/product/feature/relation/list")
|
||||
ApiResult<List<ProductFeatureRelationVO>> featureList(@Validated @RequestBody ProductFeatureRelationSearchReq req);
|
||||
|
||||
/**
|
||||
* 更新产品与权限点的关联关系
|
||||
*
|
||||
* @param req {@link ProductFeatureRelationUpdateReq}
|
||||
* @return
|
||||
*/
|
||||
ApiResult<Boolean> updateFeatureRelation(List<ProductFeatureRelationUpdateReq> req);
|
||||
}
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
package cn.axzo.tyr.client.model.product;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 产品与权限点关系修改入参模型
|
||||
*
|
||||
* @author wangli
|
||||
* @since 2023/9/7 18:53
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ProductFeatureRelationUpdateReq {
|
||||
|
||||
/**
|
||||
* 产品 ID
|
||||
*/
|
||||
@NotNull(message = "产品 ID 不能为空")
|
||||
private Long productModuleId;
|
||||
|
||||
/**
|
||||
* 字典第三级 Code ID(OuType)
|
||||
*/
|
||||
@NotNull(message = "字典 ouType ID 不能为空")
|
||||
private Long dictCodeId;
|
||||
|
||||
/**
|
||||
* 权限点 ID
|
||||
*/
|
||||
private List<Long> featureIds = new ArrayList<>();
|
||||
}
|
||||
@ -5,6 +5,7 @@ import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.feign.ProductApi;
|
||||
import cn.axzo.tyr.client.model.product.ProductAddReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationSearchReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationUpdateReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationVO;
|
||||
import cn.axzo.tyr.client.model.product.ProductSearchListReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductSearchPageReq;
|
||||
@ -14,6 +15,7 @@ import cn.axzo.tyr.server.service.ProductFeatureRelationService;
|
||||
import cn.axzo.tyr.server.service.ProductService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.util.List;
|
||||
@ -107,4 +109,18 @@ public class ProductController implements ProductApi {
|
||||
public ApiResult<List<ProductFeatureRelationVO>> featureList(ProductFeatureRelationSearchReq req) {
|
||||
return productFeatureRelationService.featureList(req);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新产品与权限点的关联关系
|
||||
*
|
||||
* @param req {@link ProductFeatureRelationUpdateReq}
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public ApiResult<Boolean> updateFeatureRelation(List<ProductFeatureRelationUpdateReq> req) {
|
||||
if(CollectionUtils.isEmpty(req)) {
|
||||
return ApiResult.ok(false);
|
||||
}
|
||||
return productFeatureRelationService.updateFeatureRelation(req);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2,6 +2,7 @@ package cn.axzo.tyr.server.service;
|
||||
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationSearchReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationUpdateReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationVO;
|
||||
|
||||
import java.util.List;
|
||||
@ -14,4 +15,6 @@ import java.util.List;
|
||||
*/
|
||||
public interface ProductFeatureRelationService {
|
||||
ApiResult<List<ProductFeatureRelationVO>> featureList(ProductFeatureRelationSearchReq req);
|
||||
|
||||
ApiResult<Boolean> updateFeatureRelation(List<ProductFeatureRelationUpdateReq> req);
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ package cn.axzo.tyr.server.service.impl;
|
||||
import cn.axzo.basics.common.BeanMapper;
|
||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationSearchReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationUpdateReq;
|
||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationVO;
|
||||
import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation;
|
||||
import cn.axzo.tyr.server.repository.service.SaasProductModuleFeatureRelationDao;
|
||||
@ -10,9 +11,13 @@ import cn.axzo.tyr.server.service.ProductFeatureRelationService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 产品与权限点的 Service 接口实现
|
||||
@ -34,4 +39,21 @@ public class ProductFeatureRelationServiceImpl implements ProductFeatureRelation
|
||||
.list();
|
||||
return ApiResult.ok(BeanMapper.copyList(list, ProductFeatureRelationVO.class));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public ApiResult<Boolean> updateFeatureRelation(List<ProductFeatureRelationUpdateReq> req) {
|
||||
List<Long> productIds = req.stream().map(ProductFeatureRelationUpdateReq::getProductModuleId).distinct().collect(Collectors.toList());
|
||||
saasProductModuleFeatureRelationDao.removeByIds(productIds);
|
||||
List<SaasProductModuleFeatureRelation> saveList = new ArrayList<>();
|
||||
req.forEach(i -> i.getFeatureIds().forEach(featureId -> {
|
||||
SaasProductModuleFeatureRelation relation = new SaasProductModuleFeatureRelation();
|
||||
relation.setProductModuleId(i.getProductModuleId());
|
||||
relation.setDictCodeId(i.getDictCodeId());
|
||||
relation.setFeatureId(featureId);
|
||||
saveList.add(relation);
|
||||
}));
|
||||
saasProductModuleFeatureRelationDao.saveBatch(saveList);
|
||||
return ApiResult.ok(true);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user