Commit 725a3594 by zhangxingmin

公告佣比率信息

parent 352eb7be
...@@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -4,8 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.product.api.service.ApiAnnouncementCommissionRatioService; import com.yd.product.api.service.ApiAnnouncementCommissionRatioService;
import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient; import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioEditRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioAddRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse; import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse; import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -14,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -14,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
/** /**
* 公告佣比率信息 * 公告佣比率规格明细信息
* *
* @author zxm * @author zxm
* @since 2025-11-27 * @since 2025-11-27
...@@ -28,7 +29,7 @@ public class ApiAnnouncementCommissionRatioController implements ApiAnnouncement ...@@ -28,7 +29,7 @@ public class ApiAnnouncementCommissionRatioController implements ApiAnnouncement
private ApiAnnouncementCommissionRatioService apiAnnouncementCommissionRatioService; private ApiAnnouncementCommissionRatioService apiAnnouncementCommissionRatioService;
/** /**
* 分页列表查询-公告佣比率信息 * 分页列表查询-公告佣比率规格明细信息
* @param request * @param request
* @return * @return
*/ */
...@@ -38,22 +39,52 @@ public class ApiAnnouncementCommissionRatioController implements ApiAnnouncement ...@@ -38,22 +39,52 @@ public class ApiAnnouncementCommissionRatioController implements ApiAnnouncement
} }
/** /**
* 保存-公告佣比率信息 * 添加-公告佣比率规格明细信息
* @param request * @param request
* @return * @return
*/ */
@Override @Override
public Result save(ApiAnnouncementCommissionRatioSaveRequest request) { public Result add(ApiAnnouncementCommissionRatioAddRequest request) {
return apiAnnouncementCommissionRatioService.save(request); return apiAnnouncementCommissionRatioService.add(request);
} }
/** /**
* 详情-公告佣比率信息 * 编辑-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率表唯一业务ID * @param request
* @return
*/
@Override
public Result edit(ApiAnnouncementCommissionRatioEditRequest request) {
return apiAnnouncementCommissionRatioService.edit(request);
}
/**
* 详情-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return * @return
*/ */
@Override @Override
public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) { public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) {
return apiAnnouncementCommissionRatioService.detail(announcementCommissionRatioBizId); return apiAnnouncementCommissionRatioService.detail(announcementCommissionRatioBizId);
} }
/**
* 删除-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return
*/
@Override
public Result del(String announcementCommissionRatioBizId) {
return apiAnnouncementCommissionRatioService.del(announcementCommissionRatioBizId);
}
/**
* 复制-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return
*/
@Override
public Result copy(String announcementCommissionRatioBizId) {
return apiAnnouncementCommissionRatioService.copy(announcementCommissionRatioBizId);
}
} }
package com.yd.product.api.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.product.api.service.ApiAnnouncementSpeciesService;
import com.yd.product.feign.client.announcementspecies.ApiAnnouncementSpeciesFeignClient;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesImportRequest;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesPageRequest;
import com.yd.product.feign.response.announcementspecies.ApiAnnouncementSpeciesPageResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 公告佣比率规格信息
*
* @author zxm
* @since 2025-12-01
*/
@RestController
@RequestMapping("/announcementSpecies")
@Validated
public class ApiAnnouncementSpeciesController implements ApiAnnouncementSpeciesFeignClient {
@Autowired
private ApiAnnouncementSpeciesService apiAnnouncementSpeciesService;
/**
* 分页列表查询-公告佣比率规格信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiAnnouncementSpeciesPageResponse>> page(ApiAnnouncementSpeciesPageRequest request) {
return apiAnnouncementSpeciesService.page(request);
}
/**
* 导入规格数据
* @param request
* @return
*/
@Override
public Result importSpecies(ApiAnnouncementSpeciesImportRequest request) {
return apiAnnouncementSpeciesService.importSpecies(request);
}
/**
* 删除规格数据 TODO
* @param announcementSpeciesBizId
* @return
*/
@Override
public Result delSpecies(String announcementSpeciesBizId) {
return null;
}
}
...@@ -2,8 +2,9 @@ package com.yd.product.api.service; ...@@ -2,8 +2,9 @@ package com.yd.product.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioEditRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioAddRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse; import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse; import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
import com.yd.product.service.model.AnnouncementCommissionRatio; import com.yd.product.service.model.AnnouncementCommissionRatio;
...@@ -11,9 +12,15 @@ import com.yd.product.service.model.AnnouncementCommissionRatio; ...@@ -11,9 +12,15 @@ import com.yd.product.service.model.AnnouncementCommissionRatio;
public interface ApiAnnouncementCommissionRatioService { public interface ApiAnnouncementCommissionRatioService {
Result<IPage<ApiAnnouncementCommissionRatioPageResponse>> page(ApiAnnouncementCommissionRatioPageRequest request); Result<IPage<ApiAnnouncementCommissionRatioPageResponse>> page(ApiAnnouncementCommissionRatioPageRequest request);
Result save(ApiAnnouncementCommissionRatioSaveRequest request); Result add(ApiAnnouncementCommissionRatioAddRequest request);
Result edit(ApiAnnouncementCommissionRatioEditRequest request);
Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId); Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId);
Result del(String announcementCommissionRatioBizId);
Result copy(String announcementCommissionRatioBizId);
Result<AnnouncementCommissionRatio> checkAnnouncementCommissionRatioIsExist(String announcementCommissionRatioBizId); Result<AnnouncementCommissionRatio> checkAnnouncementCommissionRatioIsExist(String announcementCommissionRatioBizId);
} }
package com.yd.product.api.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yd.common.result.Result;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesImportRequest;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesPageRequest;
import com.yd.product.feign.response.announcementspecies.ApiAnnouncementSpeciesPageResponse;
import com.yd.product.service.model.AnnouncementSpecies;
public interface ApiAnnouncementSpeciesService {
Result<IPage<ApiAnnouncementSpeciesPageResponse>> page(ApiAnnouncementSpeciesPageRequest request);
Result importSpecies(ApiAnnouncementSpeciesImportRequest request);
Result<AnnouncementSpecies> checkAnnouncementSpeciesIsExist(String productLaunchBizId);
}
package com.yd.product.api.service.impl; package com.yd.product.api.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException; import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.product.api.service.ApiAnnouncementCommissionRatioService; import com.yd.product.api.service.ApiAnnouncementCommissionRatioService;
import com.yd.product.api.service.ApiProductLaunchService; import com.yd.product.api.service.ApiAnnouncementSpeciesService;
import com.yd.product.feign.dto.ApiSpeciesSettingDto; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioEditRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioAddRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse; import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse; import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
import com.yd.product.service.model.AnnouncementCommissionRatio; import com.yd.product.service.model.AnnouncementCommissionRatio;
import com.yd.product.service.model.ProductLaunch;
import com.yd.product.service.service.IAnnouncementCommissionRatioService; import com.yd.product.service.service.IAnnouncementCommissionRatioService;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service @Service
...@@ -34,10 +29,10 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen ...@@ -34,10 +29,10 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen
private IAnnouncementCommissionRatioService iAnnouncementCommissionRatioService; private IAnnouncementCommissionRatioService iAnnouncementCommissionRatioService;
@Autowired @Autowired
private ApiProductLaunchService apiProductLaunchService; private ApiAnnouncementSpeciesService apiAnnouncementSpeciesService;
/** /**
* 分页列表查询-公告佣比率信息 * 分页列表查询-公告佣比率规格明细信息
* @param request * @param request
* @return * @return
*/ */
...@@ -49,49 +44,89 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen ...@@ -49,49 +44,89 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen
} }
/** /**
* 保存-公告佣比率信息 * 添加-公告佣比率规格明细信息
* @param request * @param request
* @return * @return
*/ */
@Override @Override
public Result save(ApiAnnouncementCommissionRatioSaveRequest request) { public Result add(ApiAnnouncementCommissionRatioAddRequest request) {
//校验产品上架信息是否存在 //校验公告佣比率规格信息是否存在
Result<ProductLaunch> result = apiProductLaunchService.checkProductLaunchIsExist(request.getProductLaunchBizId()); apiAnnouncementSpeciesService.checkAnnouncementSpeciesIsExist(request.getAnnouncementSpeciesBizId());
ProductLaunch productLaunch = result.getData(); //入参校验,佣金年限校验不同条件下的唯一性 TODO
//先删后新增 //新增
//删除 AnnouncementCommissionRatio ratio = new AnnouncementCommissionRatio();
iAnnouncementCommissionRatioService.delByProductLaunchBizId(request.getProductLaunchBizId()); BeanUtils.copyProperties(request,ratio);
ratio.setAnnouncementCommissionRatioBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_ANNOUNCEMENT_COMMISSION_RATIO.getCode()));
iAnnouncementCommissionRatioService.saveOrUpdate(ratio);
return Result.success();
}
/**
* 编辑-公告佣比率规格明细信息
* @param request
* @return
*/
@Override
public Result edit(ApiAnnouncementCommissionRatioEditRequest request) {
//校验公告佣比率规格明细信息是否存在
Result<AnnouncementCommissionRatio> result = checkAnnouncementCommissionRatioIsExist(request.getAnnouncementCommissionRatioBizId());
AnnouncementCommissionRatio ratio = result.getData();
//校验公告佣比率规格信息是否存在
apiAnnouncementSpeciesService.checkAnnouncementSpeciesIsExist(request.getAnnouncementSpeciesBizId());
//入参校验,佣金年限校验不同条件下的唯一性 TODO
//新增 //新增
List<AnnouncementCommissionRatio> expectedCommissionRatioList = request.getApiAnnouncementCommissionRatioDtoList() BeanUtils.copyProperties(request,ratio);
.stream().map(dto -> { iAnnouncementCommissionRatioService.saveOrUpdate(ratio);
AnnouncementCommissionRatio ratio = new AnnouncementCommissionRatio();
BeanUtils.copyProperties(dto,ratio);
ratio.setSpeciesJson(!CollectionUtils.isEmpty(dto.getApiSpeciesSettingDtoList()) ? JSON.toJSONString(dto.getApiSpeciesSettingDtoList()) : "");
return ratio;
}).collect(Collectors.toList());
iAnnouncementCommissionRatioService.saveBatch(expectedCommissionRatioList);
return Result.success(); return Result.success();
} }
/** /**
* 详情-公告佣比率信息 * 详情-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率表唯一业务ID * @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return * @return
*/ */
@Override @Override
public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) { public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) {
//校验公告佣比率信息是否存在 //校验公告佣比率规格明细信息是否存在
Result<AnnouncementCommissionRatio> result = checkAnnouncementCommissionRatioIsExist(announcementCommissionRatioBizId); Result<AnnouncementCommissionRatio> result = checkAnnouncementCommissionRatioIsExist(announcementCommissionRatioBizId);
AnnouncementCommissionRatio announcementCommissionRatio = result.getData(); AnnouncementCommissionRatio announcementCommissionRatio = result.getData();
ApiAnnouncementCommissionRatioDetailResponse response = new ApiAnnouncementCommissionRatioDetailResponse(); ApiAnnouncementCommissionRatioDetailResponse response = new ApiAnnouncementCommissionRatioDetailResponse();
BeanUtils.copyProperties(announcementCommissionRatio,response); BeanUtils.copyProperties(announcementCommissionRatio,response);
response.setApiSpeciesSettingDtoList(StringUtil.isNotBlank(announcementCommissionRatio.getSpeciesJson()) ? JSON.parseArray(announcementCommissionRatio.getSpeciesJson(), ApiSpeciesSettingDto.class) : new ArrayList<>());
return Result.success(response); return Result.success(response);
} }
/** /**
* 校验公告佣比率信息是否存在 * 删除-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return
*/
@Override
public Result del(String announcementCommissionRatioBizId) {
//校验公告佣比率规格明细信息是否存在
Result<AnnouncementCommissionRatio> result = checkAnnouncementCommissionRatioIsExist(announcementCommissionRatioBizId);
AnnouncementCommissionRatio announcementCommissionRatio = result.getData();
iAnnouncementCommissionRatioService.removeById(announcementCommissionRatio.getId());
return Result.success();
}
/**
* 复制-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return
*/
@Override
public Result copy(String announcementCommissionRatioBizId) {
//校验公告佣比率规格明细信息是否存在
Result<AnnouncementCommissionRatio> result = checkAnnouncementCommissionRatioIsExist(announcementCommissionRatioBizId);
AnnouncementCommissionRatio announcementCommissionRatio = result.getData();
announcementCommissionRatio.setId(null);
announcementCommissionRatio.setAnnouncementCommissionRatioBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_ANNOUNCEMENT_COMMISSION_RATIO.getCode()));
iAnnouncementCommissionRatioService.saveOrUpdate(announcementCommissionRatio);
return Result.success();
}
/**
* 校验公告佣比率规格明细信息是否存在
* @param announcementCommissionRatioBizId * @param announcementCommissionRatioBizId
* @return * @return
*/ */
...@@ -100,7 +135,7 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen ...@@ -100,7 +135,7 @@ public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncemen
AnnouncementCommissionRatio announcementCommissionRatio = iAnnouncementCommissionRatioService.queryOne(announcementCommissionRatioBizId); AnnouncementCommissionRatio announcementCommissionRatio = iAnnouncementCommissionRatioService.queryOne(announcementCommissionRatioBizId);
if (Objects.isNull(announcementCommissionRatio)) { if (Objects.isNull(announcementCommissionRatio)) {
//数据不存在 //数据不存在
throw new BusinessException("公告佣比率信息不存在"); throw new BusinessException("公告佣比率规格明细信息不存在");
} }
return Result.success(announcementCommissionRatio); return Result.success(announcementCommissionRatio);
} }
......
package com.yd.product.api.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.base.feign.enums.SpeciesTypeEnum;
import com.yd.common.enums.CommonEnum;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.common.utils.RandomStringGenerator;
import com.yd.product.api.service.ApiAnnouncementSpeciesService;
import com.yd.product.api.service.ApiProductLaunchService;
import com.yd.product.api.service.ApiSpeciesPriceService;
import com.yd.product.feign.dto.ApiSpeciesPriceDto;
import com.yd.product.feign.dto.ApiSpeciesSettingDto;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesImportRequest;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesPageRequest;
import com.yd.product.feign.response.announcementspecies.ApiAnnouncementSpeciesPageResponse;
import com.yd.product.service.model.AnnouncementSpecies;
import com.yd.product.service.service.IAnnouncementSpeciesService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Service
public class ApiAnnouncementSpeciesServiceImpl implements ApiAnnouncementSpeciesService {
@Autowired
private IAnnouncementSpeciesService iAnnouncementSpeciesService;
@Autowired
private ApiProductLaunchService apiProductLaunchService;
@Autowired
private ApiSpeciesPriceService apiSpeciesPriceService;
/**
* 分页列表查询-公告佣比率规格信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiAnnouncementSpeciesPageResponse>> page(ApiAnnouncementSpeciesPageRequest request) {
Page<ApiAnnouncementSpeciesPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiAnnouncementSpeciesPageResponse> iPage = iAnnouncementSpeciesService.page(page, request);
return Result.success(iPage);
}
/**
* 导入规格数据
* @param request
* @return
*/
@Override
public Result importSpecies(ApiAnnouncementSpeciesImportRequest request) {
//校验产品上架信息是否存在
apiProductLaunchService.checkProductLaunchIsExist(request.getProductLaunchBizId());
//查询规格价格配置列表
List<ApiSpeciesPriceDto> apiSpeciesPriceDtoList = apiSpeciesPriceService.querySpeciesPriceDtoList(request.getProductLaunchBizId());
if (CollectionUtils.isEmpty(apiSpeciesPriceDtoList)) {
throw new BusinessException("导入的数据不存在");
}
//查询规格价格配置列表 -> 新增公告佣比率规格数据
List<AnnouncementSpecies> saveList = apiSpeciesPriceDtoList.stream().map(dto -> {
AnnouncementSpecies species = new AnnouncementSpecies();
//规格条件列表JSON串
species.setSpeciesJson(dto.getSpeciesJson());
//公告佣比率规格表唯一业务ID
species.setAnnouncementSpeciesBizId(RandomStringGenerator.generateBizId16(CommonEnum.UID_TYPE_ANNOUNCEMENT_SPECIES.getCode()));
//供款年期(5、10、20年期等)(固定规格条件)
species.setPaymentTerm(getSpeciesValue(dto.getApiSpeciesSettingDtoList(), SpeciesTypeEnum.PAYMENT_TERM.getItemValue()));
species.setProductLaunchBizId(request.getProductLaunchBizId());
//保障计划(0-64岁等)(固定规格条件)
species.setProtectionPlan(getSpeciesValue(dto.getApiSpeciesSettingDtoList(), SpeciesTypeEnum.PROTECTION_PLAN.getItemValue()));
return species;
}).collect(Collectors.toList());
iAnnouncementSpeciesService.saveOrUpdateBatch(saveList);
return Result.success();
}
/**
* 根据规格类型编码获取apiSpeciesSettingDtoList中的规格值
* @param apiSpeciesSettingDtoList
* @param typeCode
* @return
*/
public String getSpeciesValue(List<ApiSpeciesSettingDto> apiSpeciesSettingDtoList,String typeCode) {
String speciesValue = "";
if (!CollectionUtils.isEmpty(apiSpeciesSettingDtoList)){
List<ApiSpeciesSettingDto> dtoList = apiSpeciesSettingDtoList
.stream()
.filter(d -> d.getTypeCode().equals(typeCode))
.collect(Collectors.toList());
if (!CollectionUtils.isEmpty(dtoList)) {
ApiSpeciesSettingDto settingDto = dtoList.get(0);
speciesValue = settingDto.getValue();
}
}
return speciesValue;
}
/**
* 校验公告佣比率规格信息是否存在
* @param announcementSpeciesBizId
* @return
*/
@Override
public Result<AnnouncementSpecies> checkAnnouncementSpeciesIsExist(String announcementSpeciesBizId) {
AnnouncementSpecies announcementSpecies = iAnnouncementSpeciesService.queryOne(announcementSpeciesBizId);
if (Objects.isNull(announcementSpecies)) {
//数据不存在
throw new BusinessException("公告佣比率规格信息不存在");
}
return Result.success(announcementSpecies);
}
}
...@@ -2,25 +2,23 @@ package com.yd.product.feign.client.announcementcommissionratio; ...@@ -2,25 +2,23 @@ package com.yd.product.feign.client.announcementcommissionratio;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.product.feign.fallback.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignFallbackFactory; import com.yd.product.feign.fallback.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignFallbackFactory;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioEditRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioAddRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse; import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
/** /**
* 产品服务-公告佣比率信息Feign客户端 * 产品服务-公告佣比率规格明细信息Feign客户端
*/ */
@FeignClient(name = "yd-product-api", fallbackFactory = ApiAnnouncementCommissionRatioFeignFallbackFactory.class) @FeignClient(name = "yd-product-api", fallbackFactory = ApiAnnouncementCommissionRatioFeignFallbackFactory.class)
public interface ApiAnnouncementCommissionRatioFeignClient { public interface ApiAnnouncementCommissionRatioFeignClient {
/** /**
* 分页列表查询-公告佣比率信息 * 分页列表查询-公告佣比率规格明细信息
* @param request * @param request
* @return * @return
*/ */
...@@ -28,19 +26,42 @@ public interface ApiAnnouncementCommissionRatioFeignClient { ...@@ -28,19 +26,42 @@ public interface ApiAnnouncementCommissionRatioFeignClient {
Result page(@RequestBody ApiAnnouncementCommissionRatioPageRequest request); Result page(@RequestBody ApiAnnouncementCommissionRatioPageRequest request);
/** /**
* 保存-公告佣比率信息 * 添加-公告佣比率规格明细信息
* @param request * @param request
* @return * @return
*/ */
@PostMapping("/save") @PostMapping("/add")
Result save(@Validated @RequestBody ApiAnnouncementCommissionRatioSaveRequest request); Result add(@Validated @RequestBody ApiAnnouncementCommissionRatioAddRequest request);
/** /**
* 详情-公告佣比率信息 * 编辑-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率表唯一业务ID * @param request
* @return
*/
@PostMapping("/edit")
Result edit(@Validated @RequestBody ApiAnnouncementCommissionRatioEditRequest request);
/**
* 详情-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return * @return
*/ */
@GetMapping("/detail") @GetMapping("/detail")
Result<ApiAnnouncementCommissionRatioDetailResponse> detail(@NotBlank(message = "公告佣比率表唯一业务ID不能为空") @RequestParam(value = "announcementCommissionRatioBizId") String announcementCommissionRatioBizId); Result<ApiAnnouncementCommissionRatioDetailResponse> detail(@NotBlank(message = "公告佣比率规格明细表唯一业务ID不能为空") @RequestParam(value = "announcementCommissionRatioBizId") String announcementCommissionRatioBizId);
/**
* 删除-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return
*/
@DeleteMapping("/del")
Result del(@NotBlank(message = "公告佣比率规格明细表唯一业务ID不能为空") @RequestParam(value = "announcementCommissionRatioBizId") String announcementCommissionRatioBizId);
/**
* 复制-公告佣比率规格明细信息
* @param announcementCommissionRatioBizId 公告佣比率规格明细表唯一业务ID
* @return
*/
@PutMapping("/copy")
Result copy(@NotBlank(message = "公告佣比率规格明细表唯一业务ID不能为空") @RequestParam(value = "announcementCommissionRatioBizId") String announcementCommissionRatioBizId);
} }
package com.yd.product.feign.client.announcementspecies;
import com.yd.common.result.Result;
import com.yd.product.feign.fallback.announcementspecies.ApiAnnouncementSpeciesFeignFallbackFactory;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesImportRequest;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesPageRequest;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
/**
* 产品服务-公告佣比率规格信息Feign客户端
*/
@FeignClient(name = "yd-product-api", fallbackFactory = ApiAnnouncementSpeciesFeignFallbackFactory.class)
public interface ApiAnnouncementSpeciesFeignClient {
/**
* 分页列表查询-公告佣比率规格信息
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiAnnouncementSpeciesPageRequest request);
/**
* 导入规格数据
* @param request
* @return
*/
@PostMapping("/import/species")
Result importSpecies(@RequestBody ApiAnnouncementSpeciesImportRequest request);
/**
* 删除规格数据
* @param announcementSpeciesBizId
* @return
*/
@DeleteMapping("/del/species")
Result delSpecies(@NotBlank(message = "公告佣比率规格表唯一业务ID不能为空") @RequestParam(value = "announcementSpeciesBizId") String announcementSpeciesBizId);
}
...@@ -21,6 +21,11 @@ public class ApiSpeciesSettingDto { ...@@ -21,6 +21,11 @@ public class ApiSpeciesSettingDto {
private String speciesTypeBizId; private String speciesTypeBizId;
/** /**
* 规格类型编码
*/
private String typeCode;
/**
* 规格类型名称 * 规格类型名称
*/ */
private String typeName; private String typeName;
......
...@@ -2,15 +2,18 @@ package com.yd.product.feign.fallback.announcementcommissionratio; ...@@ -2,15 +2,18 @@ package com.yd.product.feign.fallback.announcementcommissionratio;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient; import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioEditRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest; import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioAddRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse; import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import javax.validation.constraints.NotBlank;
/** /**
* 产品服务-公告佣比率信息Feign降级处理 * 产品服务-公告佣比率规格明细信息Feign降级处理
*/ */
@Slf4j @Slf4j
@Component @Component
...@@ -24,7 +27,12 @@ public class ApiAnnouncementCommissionRatioFeignFallbackFactory implements Fallb ...@@ -24,7 +27,12 @@ public class ApiAnnouncementCommissionRatioFeignFallbackFactory implements Fallb
} }
@Override @Override
public Result save(ApiAnnouncementCommissionRatioSaveRequest request) { public Result add(ApiAnnouncementCommissionRatioAddRequest request) {
return null;
}
@Override
public Result edit(ApiAnnouncementCommissionRatioEditRequest request) {
return null; return null;
} }
...@@ -32,6 +40,16 @@ public class ApiAnnouncementCommissionRatioFeignFallbackFactory implements Fallb ...@@ -32,6 +40,16 @@ public class ApiAnnouncementCommissionRatioFeignFallbackFactory implements Fallb
public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) { public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) {
return null; return null;
} }
@Override
public Result del(String announcementCommissionRatioBizId) {
return null;
}
@Override
public Result copy(String announcementCommissionRatioBizId) {
return null;
}
}; };
} }
} }
package com.yd.product.feign.fallback.announcementspecies;
import com.yd.common.result.Result;
import com.yd.product.feign.client.announcementspecies.ApiAnnouncementSpeciesFeignClient;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesImportRequest;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesPageRequest;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 产品服务-公告佣比率规格信息Feign降级处理
*/
@Slf4j
@Component
public class ApiAnnouncementSpeciesFeignFallbackFactory implements FallbackFactory<ApiAnnouncementSpeciesFeignClient> {
@Override
public ApiAnnouncementSpeciesFeignClient create(Throwable cause) {
return new ApiAnnouncementSpeciesFeignClient() {
@Override
public Result page(ApiAnnouncementSpeciesPageRequest request) {
return null;
}
@Override
public Result importSpecies(ApiAnnouncementSpeciesImportRequest request) {
return null;
}
@Override
public Result delSpecies(String announcementSpeciesBizId) {
return null;
}
};
}
}
package com.yd.product.feign.request.announcementcommissionratio;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ApiAnnouncementCommissionRatioAddRequest {
/**
* 公告佣比率规格表唯一业务ID
*/
@NotBlank(message = "公告佣比率规格表唯一业务ID不能为空")
private String announcementSpeciesBizId;
/**
* 费用名称(转介费等)
*/
@NotBlank(message = "费用名称不能为空")
private String expenseName;
/**
* 佣金年限(起)
*/
@NotBlank(message = "佣金年限(起)不能为空")
private String startPeriod;
/**
* 佣金年限(止)
*/
@NotBlank(message = "佣金年限(止)不能为空")
private String endPeriod;
/**
* 标保折算比例(基本保费)
*/
@NotNull(message = "标保折算比例不能为空")
private BigDecimal discountRatio;
/**
* 佣金率
*/
@NotNull(message = "佣金率不能为空")
private BigDecimal commissionRate;
/**
* 有效开始时间
*/
@NotNull(message = "有效开始时间不能为空")
private LocalDateTime effectiveStart;
/**
* 有效结束时间
*/
@NotNull(message = "有效结束时间不能为空")
private LocalDateTime effectiveEnd;
/**
* 适用范围(经纪人/分销员/加盟商/签单员/转介人/全部,字典)
*/
@NotBlank(message = "适用范围不能为空")
private String scope;
/**
* 是否受汇率影响 0-否 1-是,字典)
*/
@NotBlank(message = "是否受汇率影响不能为空")
private String isExchangeRate;
/**
* 结算币种(字典)
*/
@NotBlank(message = "结算币种不能为空")
private String currency;
/**
* 状态(0:停用 1:启用)
*/
@NotNull(message = "状态不能为空")
private Integer status;
}
package com.yd.product.feign.request.announcementcommissionratio;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ApiAnnouncementCommissionRatioEditRequest {
/**
* 公告佣比率规格明细表唯一业务ID
*/
@NotBlank(message = "公告佣比率规格明细表唯一业务ID不能为空")
private String announcementCommissionRatioBizId;
/**
* 公告佣比率规格表唯一业务ID
*/
@NotBlank(message = "公告佣比率规格表唯一业务ID不能为空")
private String announcementSpeciesBizId;
/**
* 费用名称(转介费等)
*/
@NotBlank(message = "费用名称不能为空")
private String expenseName;
/**
* 佣金年限(起)
*/
@NotBlank(message = "佣金年限(起)不能为空")
private String startPeriod;
/**
* 佣金年限(止)
*/
@NotBlank(message = "佣金年限(止)不能为空")
private String endPeriod;
/**
* 标保折算比例(基本保费)
*/
@NotNull(message = "标保折算比例不能为空")
private BigDecimal discountRatio;
/**
* 佣金率
*/
@NotNull(message = "佣金率不能为空")
private BigDecimal commissionRate;
/**
* 有效开始时间
*/
@NotNull(message = "有效开始时间不能为空")
private LocalDateTime effectiveStart;
/**
* 有效结束时间
*/
@NotNull(message = "有效结束时间不能为空")
private LocalDateTime effectiveEnd;
/**
* 适用范围(经纪人/分销员/加盟商/签单员/转介人/全部,字典)
*/
@NotBlank(message = "适用范围不能为空")
private String scope;
/**
* 是否受汇率影响 0-否 1-是,字典)
*/
@NotBlank(message = "是否受汇率影响不能为空")
private String isExchangeRate;
/**
* 结算币种(字典)
*/
@NotBlank(message = "结算币种不能为空")
private String currency;
/**
* 状态(0:停用 1:启用)
*/
@NotNull(message = "状态不能为空")
private Integer status;
}
...@@ -3,21 +3,19 @@ package com.yd.product.feign.request.announcementcommissionratio; ...@@ -3,21 +3,19 @@ package com.yd.product.feign.request.announcementcommissionratio;
import com.yd.common.dto.PageDto; import com.yd.common.dto.PageDto;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data @Data
public class ApiAnnouncementCommissionRatioPageRequest extends PageDto { public class ApiAnnouncementCommissionRatioPageRequest extends PageDto {
/** /**
* 产品上架信息表唯一业务ID * 公告佣比率规格表唯一业务ID
*/
private String productLaunchBizId;
/**
* 供款年期(产品有5年期的有10年期等)
*/ */
private String term; @NotBlank(message = "公告佣比率规格表唯一业务ID不能为空")
private String announcementSpeciesBizId;
/** /**
* 期数(数字代表第几年 * 费用名称(转介费等
*/ */
private String issueNumber; private String expenseName;
} }
package com.yd.product.feign.request.announcementcommissionratio; package com.yd.product.feign.request.announcementspecies;
import com.yd.product.feign.dto.ApiAnnouncementCommissionRatioDto;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data @Data
public class ApiAnnouncementCommissionRatioSaveRequest { public class ApiAnnouncementSpeciesImportRequest {
/** /**
* 产品上架信息表唯一业务ID * 产品上架信息表唯一业务ID
*/ */
@NotBlank(message = "产品上架信息表唯一业务ID不能为空") @NotBlank(message = "产品上架信息表唯一业务ID不能为空")
private String productLaunchBizId; private String productLaunchBizId;
/**
* 公告佣比率信息配置列表
*/
@NotEmpty(message = "公告佣比率信息配置列表不能为空")
private List<ApiAnnouncementCommissionRatioDto> apiAnnouncementCommissionRatioDtoList;
} }
package com.yd.product.feign.request.announcementspecies;
import com.yd.common.dto.PageDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@Data
public class ApiAnnouncementSpeciesPageRequest extends PageDto {
/**
* 产品上架信息表唯一业务ID
*/
@NotBlank(message = "产品上架信息表唯一业务ID不能为空")
private String productLaunchBizId;
/**
* 保障计划(0-64岁等)(固定规格条件)
*/
private String protectionPlan;
/**
* 供款年期(5、10、20年期等)(固定规格条件)
*/
private String paymentTerm;
}
package com.yd.product.feign.response.announcementcommissionratio; package com.yd.product.feign.response.announcementcommissionratio;
import com.yd.product.feign.dto.ApiSpeciesSettingDto;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List;
@Data @Data
public class ApiAnnouncementCommissionRatioDetailResponse { public class ApiAnnouncementCommissionRatioDetailResponse {
/** /**
* 公告佣比率表主键ID * 公告佣比率规格明细表主键ID
*/ */
private Long id; private Long id;
/** /**
* 公告佣比率表唯一业务ID * 公告佣比率规格明细表唯一业务ID
*/ */
private String announcementCommissionRatioBizId; private String announcementCommissionRatioBizId;
/** /**
* 产品上架信息表唯一业务ID(冗余) * 公告佣比率规格表唯一业务ID
*/ */
private String productLaunchBizId; private String announcementSpeciesBizId;
/** /**
* 产品唯一业务ID(冗余 * 费用名称(转介费等
*/ */
private String productBizId; private String expenseName;
/** /**
* 规格条件列表JSON串 * 佣金年限(起)
*/ */
private String speciesJson; private String startPeriod;
/** /**
* 上架产品规格配置表信息JSON串对应转化的列表 * 佣金年限(止)
*/ */
private List<ApiSpeciesSettingDto> apiSpeciesSettingDtoList; private String endPeriod;
/** /**
* 供款年期(产品有5年期的有10年期等 * 标保折算比例(基本保费
*/ */
private String term; private BigDecimal discountRatio;
/** /**
* 期数(数字代表第几年 * 计算基数(保费/保费*折算比例
*/ */
private String issueNumber; private BigDecimal cardinalNumber;
/** /**
* 公告比例 * 佣金率
*/ */
private BigDecimal announcementRatio; private BigDecimal commissionRate;
/** /**
* 有效开始时间 * 有效开始时间
...@@ -60,14 +58,24 @@ public class ApiAnnouncementCommissionRatioDetailResponse { ...@@ -60,14 +58,24 @@ public class ApiAnnouncementCommissionRatioDetailResponse {
private LocalDateTime effectiveStart; private LocalDateTime effectiveStart;
/** /**
* 有效结束时间(不在这个时间区间内,公告比例按照announcement_ratio算,在这个区间内公告比例按照有效期内公告比例算) * 有效结束时间
*/ */
private LocalDateTime effectiveEnd; private LocalDateTime effectiveEnd;
/** /**
* 有效期内公告比例 * 适用范围(经纪人/分销员/加盟商/签单员/转介人/全部,字典)
*/ */
private BigDecimal ratio; private String scope;
/**
* 是否受汇率影响 0-否 1-是,字典)
*/
private String isExchangeRate;
/**
* 结算币种(字典)
*/
private String currency;
/** /**
* 状态(0:停用 1:启用) * 状态(0:停用 1:启用)
...@@ -90,11 +98,21 @@ public class ApiAnnouncementCommissionRatioDetailResponse { ...@@ -90,11 +98,21 @@ public class ApiAnnouncementCommissionRatioDetailResponse {
private String creatorId; private String creatorId;
/** /**
* 创建人名称
*/
private String creatorName;
/**
* 更新人ID * 更新人ID
*/ */
private String updaterId; private String updaterId;
/** /**
* 更新人名称
*/
private String updaterName;
/**
* 创建时间 * 创建时间
*/ */
private LocalDateTime createTime; private LocalDateTime createTime;
......
package com.yd.product.feign.response.announcementcommissionratio; package com.yd.product.feign.response.announcementcommissionratio;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -8,44 +9,44 @@ import java.time.LocalDateTime; ...@@ -8,44 +9,44 @@ import java.time.LocalDateTime;
public class ApiAnnouncementCommissionRatioPageResponse { public class ApiAnnouncementCommissionRatioPageResponse {
/** /**
* 公告佣比率表主键ID * 公告佣比率规格明细表主键ID
*/ */
private Long id; private Long id;
/** /**
* 公告佣比率表唯一业务ID * 公告佣比率规格明细表唯一业务ID
*/ */
private String announcementCommissionRatioBizId; private String announcementCommissionRatioBizId;
/** /**
* 产品上架信息表唯一业务ID(冗余) * 公告佣比率规格表唯一业务ID
*/ */
private String productLaunchBizId; private String announcementSpeciesBizId;
/** /**
* 产品唯一业务ID(冗余 * 费用名称(转介费等
*/ */
private String productBizId; private String expenseName;
/** /**
* 规格条件列表JSON串 * 佣金年限(起)
*/ */
private String speciesJson; private String startPeriod;
/** /**
* 供款年期(产品有5年期的有10年期等 * 佣金年限(止
*/ */
private String term; private String endPeriod;
/** /**
* 期数(数字代表第几年 * 标保折算比例(基本保费
*/ */
private String issueNumber; private BigDecimal discountRatio;
/** /**
* 公告比例 * 佣金率
*/ */
private BigDecimal announcementRatio; private BigDecimal commissionRate;
/** /**
* 有效开始时间 * 有效开始时间
...@@ -53,14 +54,24 @@ public class ApiAnnouncementCommissionRatioPageResponse { ...@@ -53,14 +54,24 @@ public class ApiAnnouncementCommissionRatioPageResponse {
private LocalDateTime effectiveStart; private LocalDateTime effectiveStart;
/** /**
* 有效结束时间(不在这个时间区间内,公告比例按照announcement_ratio算,在这个区间内公告比例按照有效期内公告比例算) * 有效结束时间
*/ */
private LocalDateTime effectiveEnd; private LocalDateTime effectiveEnd;
/** /**
* 有效期内公告比例 * 适用范围(经纪人/分销员/加盟商/签单员/转介人/全部,字典)
*/
private String scope;
/**
* 是否受汇率影响 0-否 1-是,字典)
*/ */
private BigDecimal ratio; private String isExchangeRate;
/**
* 结算币种(字典)
*/
private String currency;
/** /**
* 状态(0:停用 1:启用) * 状态(0:停用 1:启用)
...@@ -68,6 +79,31 @@ public class ApiAnnouncementCommissionRatioPageResponse { ...@@ -68,6 +79,31 @@ public class ApiAnnouncementCommissionRatioPageResponse {
private Integer status; private Integer status;
/** /**
* 通用备注
*/
private String remark;
/**
* 创建人ID
*/
private String creatorId;
/**
* 创建人名称
*/
private String creatorName;
/**
* 更新人ID
*/
private String updaterId;
/**
* 更新人名称
*/
private String updaterName;
/**
* 创建时间 * 创建时间
*/ */
private LocalDateTime createTime; private LocalDateTime createTime;
......
package com.yd.product.feign.dto; package com.yd.product.feign.response.announcementspecies;
import com.yd.product.feign.dto.ApiSpeciesSettingDto;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
@Data @Data
public class ApiAnnouncementCommissionRatioDto { public class ApiAnnouncementSpeciesPageResponse {
/** /**
* 公告佣比率表唯一业务ID * 公告佣比率规格表主键ID
*/ */
private String announcementCommissionRatioBizId; private Long id;
/** /**
* 产品上架信息表唯一业务ID(冗余) * 公告佣比率规格表唯一业务ID
*/
private String announcementSpeciesBizId;
/**
* 产品上架信息表唯一业务ID
*/ */
private String productLaunchBizId; private String productLaunchBizId;
/** /**
* 产品唯一业务ID(冗余) * 产品唯一业务ID
*/ */
private String productBizId; private String productBizId;
...@@ -35,42 +40,27 @@ public class ApiAnnouncementCommissionRatioDto { ...@@ -35,42 +40,27 @@ public class ApiAnnouncementCommissionRatioDto {
private List<ApiSpeciesSettingDto> apiSpeciesSettingDtoList; private List<ApiSpeciesSettingDto> apiSpeciesSettingDtoList;
/** /**
* 供款年期(产品有5年期的有10年期等) * 保障计划(0-64岁等)(固定规格条件)
*/
private String term;
/**
* 期数(数字代表第几年)
*/
private String issueNumber;
/**
* 公告比例
*/
private BigDecimal announcementRatio;
/**
* 有效开始时间
*/ */
private LocalDateTime effectiveStart; private String protectionPlan;
/** /**
* 有效结束时间(不在这个时间区间内,公告比例按照announcement_ratio算,在这个区间内公告比例按照有效期内公告比例算) * 供款年期(5、10、20年期等)(固定规格条件)
*/ */
private LocalDateTime effectiveEnd; private String paymentTerm;
/** /**
* 有效期内公告比例 * 状态(0:停用 1:启用)
*/ */
private BigDecimal ratio; private Integer status;
/** /**
* 状态(0:停用 1:启用) * 创建时间
*/ */
private Integer status; private LocalDateTime createTime;
/** /**
* 通用备注 * 更新时间
*/ */
private String remark; private LocalDateTime updateTime;
} }
...@@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Param; ...@@ -10,7 +10,7 @@ import org.apache.ibatis.annotations.Param;
/** /**
* <p> * <p>
* 公告佣比率表 Mapper 接口 * 公告佣比率规格明细表 Mapper 接口
* </p> * </p>
* *
* @author zxm * @author zxm
......
package com.yd.product.service.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesPageRequest;
import com.yd.product.feign.response.announcementspecies.ApiAnnouncementSpeciesPageResponse;
import com.yd.product.service.model.AnnouncementSpecies;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 公告佣比率规格表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-12-01
*/
public interface AnnouncementSpeciesMapper extends BaseMapper<AnnouncementSpecies> {
IPage<ApiAnnouncementSpeciesPageResponse> page(@Param("page") Page<ApiAnnouncementSpeciesPageResponse> page,
@Param("request") ApiAnnouncementSpeciesPageRequest request);
}
package com.yd.product.service.handler;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.yd.product.feign.dto.ApiSpeciesSettingDto;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@MappedTypes(List.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class JsonToListTypeHandler extends BaseTypeHandler<List<ApiSpeciesSettingDto>> {
private static final ObjectMapper objectMapper = new ObjectMapper();
@Override
public void setNonNullParameter(PreparedStatement ps, int i,
List<ApiSpeciesSettingDto> parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, toJson(parameter));
}
@Override
public List<ApiSpeciesSettingDto> getNullableResult(ResultSet rs, String columnName) throws SQLException {
return toObject(rs.getString(columnName));
}
@Override
public List<ApiSpeciesSettingDto> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
return toObject(rs.getString(columnIndex));
}
@Override
public List<ApiSpeciesSettingDto> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
return toObject(cs.getString(columnIndex));
}
private String toJson(List<ApiSpeciesSettingDto> list) {
try {
return objectMapper.writeValueAsString(list);
} catch (Exception e) {
throw new RuntimeException("JSON序列化失败", e);
}
}
private List<ApiSpeciesSettingDto> toObject(String json) {
if (json == null || json.trim().isEmpty()) {
return null;
}
try {
return objectMapper.readValue(json, new TypeReference<List<ApiSpeciesSettingDto>>() {});
} catch (Exception e) {
throw new RuntimeException("JSON反序列化失败: " + json, e);
}
}
}
\ No newline at end of file
...@@ -4,19 +4,20 @@ import com.baomidou.mybatisplus.annotation.IdType; ...@@ -4,19 +4,20 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable; import java.io.Serializable;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
/** /**
* <p> * <p>
* 公告佣比率表 * 公告佣比率规格明细
* </p> * </p>
* *
* @author zxm * @author zxm
* @since 2025-11-27 * @since 2025-12-01
*/ */
@Getter @Getter
@Setter @Setter
...@@ -32,46 +33,52 @@ public class AnnouncementCommissionRatio implements Serializable { ...@@ -32,46 +33,52 @@ public class AnnouncementCommissionRatio implements Serializable {
private Long id; private Long id;
/** /**
* 公告佣比率表唯一业务ID * 公告佣比率规格明细表唯一业务ID
*/ */
@TableField("announcement_commission_ratio_biz_id") @TableField("announcement_commission_ratio_biz_id")
private String announcementCommissionRatioBizId; private String announcementCommissionRatioBizId;
/** /**
* 产品上架信息表唯一业务ID(冗余) * 公告佣比率规格表唯一业务ID
*/ */
@TableField("product_launch_biz_id") @TableField("announcement_species_biz_id")
private String productLaunchBizId; private String announcementSpeciesBizId;
/** /**
* 产品唯一业务ID(冗余 * 费用名称(转介费等
*/ */
@TableField("product_biz_id") @TableField("expense_name")
private String productBizId; private String expenseName;
/** /**
* 规格条件列表JSON串 * 佣金年限(起)
*/ */
@TableField("species_json") @TableField("start_period")
private String speciesJson; private String startPeriod;
/** /**
* 供款年期(产品有5年期的有10年期等 * 佣金年限(止
*/ */
@TableField("term") @TableField("end_period")
private String term; private String endPeriod;
/** /**
* 期数(数字代表第几年 * 标保折算比例(基本保费
*/ */
@TableField("issue_number") @TableField("discount_ratio")
private String issueNumber; private BigDecimal discountRatio;
/** /**
* 公告比例 * 计算基数(保费/保费*折算比例)
*/ */
@TableField("announcement_ratio") @TableField("cardinal_number")
private BigDecimal announcementRatio; private BigDecimal cardinalNumber;
/**
* 佣金率
*/
@TableField("commission_rate")
private BigDecimal commissionRate;
/** /**
* 有效开始时间 * 有效开始时间
...@@ -80,34 +87,34 @@ public class AnnouncementCommissionRatio implements Serializable { ...@@ -80,34 +87,34 @@ public class AnnouncementCommissionRatio implements Serializable {
private LocalDateTime effectiveStart; private LocalDateTime effectiveStart;
/** /**
* 有效结束时间(不在这个时间区间内,公告比例按照announcement_ratio算,在这个区间内公告比例按照有效期内公告比例算) * 有效结束时间
*/ */
@TableField("effective_end") @TableField("effective_end")
private LocalDateTime effectiveEnd; private LocalDateTime effectiveEnd;
/** /**
* 有效期内公告比例 * 适用范围(经纪人/分销员/加盟商/签单员/转介人/全部,字典)
*/ */
@TableField("ratio") @TableField("scope")
private BigDecimal ratio; private String scope;
/** /**
* 状态(0:停用 1:启用) * 是否受汇率影响 0-否 1-是,字典)
*/ */
@TableField("status") @TableField("is_exchange_rate")
private Integer status; private String isExchangeRate;
/** /**
* 所属租户唯一业务ID(冗余 * 结算币种(字典
*/ */
@TableField("tenant_biz_id") @TableField("currency")
private String tenantBizId; private String currency;
/** /**
* 所属项目唯一业务ID(冗余) * 状态(0:停用 1:启用)
*/ */
@TableField("project_biz_id") @TableField("status")
private String projectBizId; private Integer status;
/** /**
* 通用备注 * 通用备注
...@@ -128,12 +135,24 @@ public class AnnouncementCommissionRatio implements Serializable { ...@@ -128,12 +135,24 @@ public class AnnouncementCommissionRatio implements Serializable {
private String creatorId; private String creatorId;
/** /**
* 创建人名称
*/
@TableField("creator_name")
private String creatorName;
/**
* 更新人ID * 更新人ID
*/ */
@TableField("updater_id") @TableField("updater_id")
private String updaterId; private String updaterId;
/** /**
* 更新人名称
*/
@TableField("updater_name")
private String updaterName;
/**
* 创建时间 * 创建时间
*/ */
@TableField("create_time") @TableField("create_time")
......
package com.yd.product.service.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 公告佣比率规格表
* </p>
*
* @author zxm
* @since 2025-12-01
*/
@Getter
@Setter
@TableName("announcement_species")
public class AnnouncementSpecies implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 主键ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 公告佣比率规格表唯一业务ID
*/
@TableField("announcement_species_biz_id")
private String announcementSpeciesBizId;
/**
* 产品上架信息表唯一业务ID
*/
@TableField("product_launch_biz_id")
private String productLaunchBizId;
/**
* 产品唯一业务ID
*/
@TableField("product_biz_id")
private String productBizId;
/**
* 规格条件列表JSON串
*/
@TableField("species_json")
private String speciesJson;
/**
* 保障计划(0-64岁等)(固定规格条件)
*/
@TableField("protection_plan")
private String protectionPlan;
/**
* 供款年期(5、10、20年期等)(固定规格条件)
*/
@TableField("payment_term")
private String paymentTerm;
/**
* 状态(0:停用 1:启用)
*/
@TableField("status")
private Integer status;
/**
* 通用备注
*/
@TableField("remark")
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人ID
*/
@TableField("creator_id")
private String creatorId;
/**
* 创建人名称
*/
@TableField("creator_name")
private String creatorName;
/**
* 更新人ID
*/
@TableField("updater_id")
private String updaterId;
/**
* 更新人名称
*/
@TableField("updater_name")
private String updaterName;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 更新时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}
...@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService; ...@@ -9,7 +9,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
/** /**
* <p> * <p>
* 公告佣比率表 服务类 * 公告佣比率规格明细表 服务类
* </p> * </p>
* *
* @author zxm * @author zxm
...@@ -20,7 +20,5 @@ public interface IAnnouncementCommissionRatioService extends IService<Announceme ...@@ -20,7 +20,5 @@ public interface IAnnouncementCommissionRatioService extends IService<Announceme
IPage<ApiAnnouncementCommissionRatioPageResponse> page(Page<ApiAnnouncementCommissionRatioPageResponse> page, IPage<ApiAnnouncementCommissionRatioPageResponse> page(Page<ApiAnnouncementCommissionRatioPageResponse> page,
ApiAnnouncementCommissionRatioPageRequest request); ApiAnnouncementCommissionRatioPageRequest request);
Boolean delByProductLaunchBizId(String productLaunchBizId);
AnnouncementCommissionRatio queryOne(String announcementCommissionRatioBizId); AnnouncementCommissionRatio queryOne(String announcementCommissionRatioBizId);
} }
package com.yd.product.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesPageRequest;
import com.yd.product.feign.response.announcementspecies.ApiAnnouncementSpeciesPageResponse;
import com.yd.product.service.model.AnnouncementSpecies;
/**
* <p>
* 公告佣比率规格表 服务类
* </p>
*
* @author zxm
* @since 2025-12-01
*/
public interface IAnnouncementSpeciesService extends IService<AnnouncementSpecies> {
IPage<ApiAnnouncementSpeciesPageResponse> page(Page<ApiAnnouncementSpeciesPageResponse> page,
ApiAnnouncementSpeciesPageRequest request);
AnnouncementSpecies queryOne(String announcementSpeciesBizId);
}
...@@ -13,7 +13,7 @@ import org.springframework.stereotype.Service; ...@@ -13,7 +13,7 @@ import org.springframework.stereotype.Service;
/** /**
* <p> * <p>
* 公告佣比率表 服务实现类 * 公告佣比率规格明细表 服务实现类
* </p> * </p>
* *
* @author zxm * @author zxm
...@@ -29,11 +29,6 @@ public class AnnouncementCommissionRatioServiceImpl extends ServiceImpl<Announce ...@@ -29,11 +29,6 @@ public class AnnouncementCommissionRatioServiceImpl extends ServiceImpl<Announce
} }
@Override @Override
public Boolean delByProductLaunchBizId(String productLaunchBizId) {
return this.remove(new LambdaQueryWrapper<AnnouncementCommissionRatio>().eq(AnnouncementCommissionRatio::getProductLaunchBizId,productLaunchBizId));
}
@Override
public AnnouncementCommissionRatio queryOne(String announcementCommissionRatioBizId) { public AnnouncementCommissionRatio queryOne(String announcementCommissionRatioBizId) {
return this.getOne(new LambdaQueryWrapper<AnnouncementCommissionRatio>().eq(AnnouncementCommissionRatio::getAnnouncementCommissionRatioBizId,announcementCommissionRatioBizId)); return this.getOne(new LambdaQueryWrapper<AnnouncementCommissionRatio>().eq(AnnouncementCommissionRatio::getAnnouncementCommissionRatioBizId,announcementCommissionRatioBizId));
} }
......
package com.yd.product.service.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.yd.product.feign.request.announcementspecies.ApiAnnouncementSpeciesPageRequest;
import com.yd.product.feign.response.announcementspecies.ApiAnnouncementSpeciesPageResponse;
import com.yd.product.service.dao.AnnouncementSpeciesMapper;
import com.yd.product.service.model.AnnouncementSpecies;
import com.yd.product.service.service.IAnnouncementSpeciesService;
import org.springframework.stereotype.Service;
/**
* <p>
* 公告佣比率规格表 服务实现类
* </p>
*
* @author zxm
* @since 2025-12-01
*/
@Service
public class AnnouncementSpeciesServiceImpl extends ServiceImpl<AnnouncementSpeciesMapper, AnnouncementSpecies> implements IAnnouncementSpeciesService {
@Override
public IPage<ApiAnnouncementSpeciesPageResponse> page(Page<ApiAnnouncementSpeciesPageResponse> page,
ApiAnnouncementSpeciesPageRequest request) {
return baseMapper.page(page,request);
}
@Override
public AnnouncementSpecies queryOne(String announcementSpeciesBizId) {
return this.getOne(new LambdaQueryWrapper<AnnouncementSpecies>().eq(AnnouncementSpecies::getAnnouncementSpeciesBizId,announcementSpeciesBizId));
}
}
...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator { ...@@ -21,7 +21,7 @@ public class MyBatisPlusCodeGenerator {
}) })
.strategyConfig(builder -> { .strategyConfig(builder -> {
builder.addInclude( builder.addInclude(
"announcement_commission_ratio" "announcement_species","announcement_commission_ratio"
) )
.entityBuilder() .entityBuilder()
......
...@@ -6,15 +6,10 @@ ...@@ -6,15 +6,10 @@
resultType="com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse"> resultType="com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse">
select acr.* from announcement_commission_ratio acr select acr.* from announcement_commission_ratio acr
<where> <where>
<if test="request.productLaunchBizId != null and request.productLaunchBizId != ''"> <if test="request.expenseName != null and request.expenseName != ''">
and acr.product_launch_biz_id = #{request.productLaunchBizId} and acr.expense_name = #{request.expenseName}
</if>
<if test="request.term != null and request.term != ''">
and acr.term = #{request.term}
</if>
<if test="request.issueNumber != null and request.issueNumber != ''">
and acr.issue_number = #{request.issueNumber}
</if> </if>
and acr.announcement_species_biz_id = #{request.announcementSpeciesBizId}
and acr.is_deleted = 0 and acr.is_deleted = 0
</where> </where>
</select> </select>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd.product.service.dao.AnnouncementSpeciesMapper">
<resultMap id="AnnouncementSpeciesPageResultMap"
type="com.yd.product.feign.response.announcementspecies.ApiAnnouncementSpeciesPageResponse">
<id property="id" column="id"/>
<result property="announcementSpeciesBizId" column="announcement_species_biz_id"/>
<result property="productLaunchBizId" column="product_launch_biz_id"/>
<result property="productBizId" column="product_biz_id"/>
<result property="speciesJson" column="species_json"/>
<result property="protectionPlan" column="protection_plan"/>
<result property="paymentTerm" column="payment_term"/>
<result property="status" column="status"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<!-- 使用类型处理器转换 species_json 字段 -->
<result property="apiSpeciesSettingDtoList" column="species_json"
typeHandler="com.yd.product.service.handler.JsonToListTypeHandler"/>
</resultMap>
<select id="page" resultMap="AnnouncementSpeciesPageResultMap">
select
a.id,
a.announcement_species_biz_id,
a.product_launch_biz_id,
a.product_biz_id,
a.species_json,
a.protection_plan,
a.payment_term,
a.status,
a.create_time,
a.update_time
from announcement_species a
<where>
<if test="request.productLaunchBizId != null and request.productLaunchBizId != ''">
and a.product_launch_biz_id = #{request.productLaunchBizId}
</if>
<if test="request.protectionPlan != null and request.protectionPlan != ''">
and a.protection_plan like concat('%', #{request.protectionPlan}, '%')
</if>
<if test="request.paymentTerm != null and request.paymentTerm != ''">
and a.payment_term = #{request.paymentTerm}
</if>
and a.is_deleted = 0
</where>
order by a.create_time desc
</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