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.framework.domain.web.result.ApiResult;
|
||||||
import cn.axzo.tyr.client.model.product.ProductAddReq;
|
import cn.axzo.tyr.client.model.product.ProductAddReq;
|
||||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationSearchReq;
|
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.ProductFeatureRelationVO;
|
||||||
import cn.axzo.tyr.client.model.product.ProductSearchListReq;
|
import cn.axzo.tyr.client.model.product.ProductSearchListReq;
|
||||||
import cn.axzo.tyr.client.model.product.ProductSearchPageReq;
|
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 org.springframework.web.bind.annotation.RequestBody;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品相关 API
|
* 产品相关 API
|
||||||
@ -92,4 +92,11 @@ public interface ProductApi {
|
|||||||
@PostMapping("api/auth/product/feature/relation/list")
|
@PostMapping("api/auth/product/feature/relation/list")
|
||||||
ApiResult<List<ProductFeatureRelationVO>> featureList(@Validated @RequestBody ProductFeatureRelationSearchReq req);
|
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.feign.ProductApi;
|
||||||
import cn.axzo.tyr.client.model.product.ProductAddReq;
|
import cn.axzo.tyr.client.model.product.ProductAddReq;
|
||||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationSearchReq;
|
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.ProductFeatureRelationVO;
|
||||||
import cn.axzo.tyr.client.model.product.ProductSearchListReq;
|
import cn.axzo.tyr.client.model.product.ProductSearchListReq;
|
||||||
import cn.axzo.tyr.client.model.product.ProductSearchPageReq;
|
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 cn.axzo.tyr.server.service.ProductService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -107,4 +109,18 @@ public class ProductController implements ProductApi {
|
|||||||
public ApiResult<List<ProductFeatureRelationVO>> featureList(ProductFeatureRelationSearchReq req) {
|
public ApiResult<List<ProductFeatureRelationVO>> featureList(ProductFeatureRelationSearchReq req) {
|
||||||
return productFeatureRelationService.featureList(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.framework.domain.web.result.ApiResult;
|
||||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationSearchReq;
|
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.ProductFeatureRelationVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -14,4 +15,6 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public interface ProductFeatureRelationService {
|
public interface ProductFeatureRelationService {
|
||||||
ApiResult<List<ProductFeatureRelationVO>> featureList(ProductFeatureRelationSearchReq req);
|
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.basics.common.BeanMapper;
|
||||||
import cn.axzo.framework.domain.web.result.ApiResult;
|
import cn.axzo.framework.domain.web.result.ApiResult;
|
||||||
import cn.axzo.tyr.client.model.product.ProductFeatureRelationSearchReq;
|
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.ProductFeatureRelationVO;
|
||||||
import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation;
|
import cn.axzo.tyr.server.repository.entity.SaasProductModuleFeatureRelation;
|
||||||
import cn.axzo.tyr.server.repository.service.SaasProductModuleFeatureRelationDao;
|
import cn.axzo.tyr.server.repository.service.SaasProductModuleFeatureRelationDao;
|
||||||
@ -10,9 +11,13 @@ import cn.axzo.tyr.server.service.ProductFeatureRelationService;
|
|||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
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.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 产品与权限点的 Service 接口实现
|
* 产品与权限点的 Service 接口实现
|
||||||
@ -34,4 +39,21 @@ public class ProductFeatureRelationServiceImpl implements ProductFeatureRelation
|
|||||||
.list();
|
.list();
|
||||||
return ApiResult.ok(BeanMapper.copyList(list, ProductFeatureRelationVO.class));
|
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