Commit 088449dd by zhangxingmin

公告佣比率信息

parent 58f40d42
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.ApiAnnouncementCommissionRatioService;
import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
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-11-27
*/
@RestController
@RequestMapping("/announcementCommissionRatio")
@Validated
public class ApiAnnouncementCommissionRatioController implements ApiAnnouncementCommissionRatioFeignClient {
@Autowired
private ApiAnnouncementCommissionRatioService apiAnnouncementCommissionRatioService;
/**
* 分页列表查询-公告佣比率信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiAnnouncementCommissionRatioPageResponse>> page(ApiAnnouncementCommissionRatioPageRequest request) {
return apiAnnouncementCommissionRatioService.page(request);
}
/**
* 保存-公告佣比率信息
* @param request
* @return
*/
@Override
public Result save(ApiAnnouncementCommissionRatioSaveRequest request) {
return apiAnnouncementCommissionRatioService.save(request);
}
/**
* 详情-公告佣比率信息
* @param announcementCommissionRatioBizId 公告佣比率表唯一业务ID
* @return
*/
@Override
public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) {
return apiAnnouncementCommissionRatioService.detail(announcementCommissionRatioBizId);
}
}
...@@ -6,12 +6,15 @@ import com.yd.product.api.service.ApiExpectedCommissionRatioService; ...@@ -6,12 +6,15 @@ import com.yd.product.api.service.ApiExpectedCommissionRatioService;
import com.yd.product.feign.client.expectedcommissionratio.ApiExpectedCommissionRatioFeignClient; import com.yd.product.feign.client.expectedcommissionratio.ApiExpectedCommissionRatioFeignClient;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest;
import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioDetailResponse;
import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioPageResponse; import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioPageResponse;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
/** /**
* 预计来佣比率信息 * 预计来佣比率信息
* *
...@@ -46,4 +49,14 @@ public class ApiExpectedCommissionRatioController implements ApiExpectedCommissi ...@@ -46,4 +49,14 @@ public class ApiExpectedCommissionRatioController implements ApiExpectedCommissi
return apiExpectedCommissionRatioService.save(request); return apiExpectedCommissionRatioService.save(request);
} }
/**
* 详情-预计来佣比率信息
* @param expectedCommissionRatioBizId 预计来佣比率表唯一业务ID
* @return
*/
@Override
public Result<ApiExpectedCommissionRatioDetailResponse> detail(String expectedCommissionRatioBizId) {
return apiExpectedCommissionRatioService.detail(expectedCommissionRatioBizId);
}
} }
package com.yd.product.api.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 产品和公告比例关系表(原有表) 前端控制器
* </p>
*
* @author zxm
* @since 2025-11-20
*/
@RestController
@RequestMapping("/relProductAnnouncement")
public class RelProductAnnouncementController {
}
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.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
import com.yd.product.service.model.AnnouncementCommissionRatio;
public interface ApiAnnouncementCommissionRatioService {
Result<IPage<ApiAnnouncementCommissionRatioPageResponse>> page(ApiAnnouncementCommissionRatioPageRequest request);
Result save(ApiAnnouncementCommissionRatioSaveRequest request);
Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId);
Result<AnnouncementCommissionRatio> checkAnnouncementCommissionRatioIsExist(String announcementCommissionRatioBizId);
}
...@@ -4,10 +4,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -4,10 +4,16 @@ 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.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest;
import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioDetailResponse;
import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioPageResponse; import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioPageResponse;
import com.yd.product.service.model.ExpectedCommissionRatio;
public interface ApiExpectedCommissionRatioService { public interface ApiExpectedCommissionRatioService {
Result<IPage<ApiExpectedCommissionRatioPageResponse>> page(ApiExpectedCommissionRatioPageRequest request); Result<IPage<ApiExpectedCommissionRatioPageResponse>> page(ApiExpectedCommissionRatioPageRequest request);
Result save(ApiExpectedCommissionRatioSaveRequest request); Result save(ApiExpectedCommissionRatioSaveRequest request);
Result<ApiExpectedCommissionRatioDetailResponse> detail(String expectedCommissionRatioBizId);
Result<ExpectedCommissionRatio> checkExpectedCommissionRatioIsExist(String expectedCommissionRatioBizId);
} }
package com.yd.product.api.service.impl;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.common.exception.BusinessException;
import com.yd.common.result.Result;
import com.yd.product.api.service.ApiAnnouncementCommissionRatioService;
import com.yd.product.api.service.ApiProductLaunchService;
import com.yd.product.feign.dto.ApiSpeciesSettingDto;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
import com.yd.product.service.model.AnnouncementCommissionRatio;
import com.yd.product.service.model.ProductLaunch;
import com.yd.product.service.service.IAnnouncementCommissionRatioService;
import jodd.util.StringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
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.stream.Collectors;
@Slf4j
@Service
public class ApiAnnouncementCommissionRatioServiceImpl implements ApiAnnouncementCommissionRatioService {
@Autowired
private IAnnouncementCommissionRatioService iAnnouncementCommissionRatioService;
@Autowired
private ApiProductLaunchService apiProductLaunchService;
/**
* 分页列表查询-公告佣比率信息
* @param request
* @return
*/
@Override
public Result<IPage<ApiAnnouncementCommissionRatioPageResponse>> page(ApiAnnouncementCommissionRatioPageRequest request) {
Page<ApiAnnouncementCommissionRatioPageResponse> page = new Page<>(request.getPageNo(), request.getPageSize());
IPage<ApiAnnouncementCommissionRatioPageResponse> iPage = iAnnouncementCommissionRatioService.page(page, request);
return Result.success(iPage);
}
/**
* 保存-公告佣比率信息
* @param request
* @return
*/
@Override
public Result save(ApiAnnouncementCommissionRatioSaveRequest request) {
//校验产品上架信息是否存在
Result<ProductLaunch> result = apiProductLaunchService.checkProductLaunchIsExist(request.getProductLaunchBizId());
ProductLaunch productLaunch = result.getData();
//先删后新增
//删除
iAnnouncementCommissionRatioService.delByProductLaunchBizId(request.getProductLaunchBizId());
//新增
List<AnnouncementCommissionRatio> expectedCommissionRatioList = request.getApiAnnouncementCommissionRatioDtoList()
.stream().map(dto -> {
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();
}
/**
* 详情-公告佣比率信息
* @param announcementCommissionRatioBizId 公告佣比率表唯一业务ID
* @return
*/
@Override
public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) {
//校验公告佣比率信息是否存在
Result<AnnouncementCommissionRatio> result = checkAnnouncementCommissionRatioIsExist(announcementCommissionRatioBizId);
AnnouncementCommissionRatio announcementCommissionRatio = result.getData();
ApiAnnouncementCommissionRatioDetailResponse response = new ApiAnnouncementCommissionRatioDetailResponse();
BeanUtils.copyProperties(announcementCommissionRatio,response);
response.setApiSpeciesSettingDtoList(StringUtil.isNotBlank(announcementCommissionRatio.getSpeciesJson()) ? JSON.parseArray(announcementCommissionRatio.getSpeciesJson(), ApiSpeciesSettingDto.class) : new ArrayList<>());
return Result.success(response);
}
/**
* 校验公告佣比率信息是否存在
* @param announcementCommissionRatioBizId
* @return
*/
@Override
public Result<AnnouncementCommissionRatio> checkAnnouncementCommissionRatioIsExist(String announcementCommissionRatioBizId) {
AnnouncementCommissionRatio announcementCommissionRatio = iAnnouncementCommissionRatioService.queryOne(announcementCommissionRatioBizId);
if (Objects.isNull(announcementCommissionRatio)) {
//数据不存在
throw new BusinessException("公告佣比率信息不存在");
}
return Result.success(announcementCommissionRatio);
}
}
...@@ -3,22 +3,29 @@ package com.yd.product.api.service.impl; ...@@ -3,22 +3,29 @@ package com.yd.product.api.service.impl;
import com.alibaba.fastjson.JSON; 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.exception.BusinessException;
import com.yd.common.result.Result; import com.yd.common.result.Result;
import com.yd.product.api.service.ApiExpectedCommissionRatioService; import com.yd.product.api.service.ApiExpectedCommissionRatioService;
import com.yd.product.api.service.ApiProductLaunchService; import com.yd.product.api.service.ApiProductLaunchService;
import com.yd.product.feign.dto.ApiSpeciesSettingDto;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest;
import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioDetailResponse;
import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioPageResponse; import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioPageResponse;
import com.yd.product.service.model.ExpectedCommissionRatio; import com.yd.product.service.model.ExpectedCommissionRatio;
import com.yd.product.service.model.ProductLaunch; import com.yd.product.service.model.ProductLaunch;
import com.yd.product.service.service.IExpectedCommissionRatioService; import com.yd.product.service.service.IExpectedCommissionRatioService;
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 org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -68,4 +75,34 @@ public class ApiExpectedCommissionRatioServiceImpl implements ApiExpectedCommiss ...@@ -68,4 +75,34 @@ public class ApiExpectedCommissionRatioServiceImpl implements ApiExpectedCommiss
iExpectedCommissionRatioService.saveBatch(expectedCommissionRatioList); iExpectedCommissionRatioService.saveBatch(expectedCommissionRatioList);
return Result.success(); return Result.success();
} }
/**
* 详情-预计来佣比率信息
* @param expectedCommissionRatioBizId 预计来佣比率表唯一业务ID
* @return
*/
@Override
public Result<ApiExpectedCommissionRatioDetailResponse> detail(String expectedCommissionRatioBizId) {
Result<ExpectedCommissionRatio> result = checkExpectedCommissionRatioIsExist(expectedCommissionRatioBizId);
ExpectedCommissionRatio expectedCommissionRatio = result.getData();
ApiExpectedCommissionRatioDetailResponse response = new ApiExpectedCommissionRatioDetailResponse();
BeanUtils.copyProperties(expectedCommissionRatio,response);
response.setApiSpeciesSettingDtoList(StringUtil.isNotBlank(expectedCommissionRatio.getSpeciesJson()) ? JSON.parseArray(expectedCommissionRatio.getSpeciesJson(), ApiSpeciesSettingDto.class) : new ArrayList<>());
return Result.success(response);
}
/**
* 校验预计来佣比率信息是否存在
* @param expectedCommissionRatioBizId
* @return
*/
@Override
public Result<ExpectedCommissionRatio> checkExpectedCommissionRatioIsExist(String expectedCommissionRatioBizId) {
ExpectedCommissionRatio expectedCommissionRatio = iExpectedCommissionRatioService.queryOne(expectedCommissionRatioBizId);
if (Objects.isNull(expectedCommissionRatio)) {
//数据不存在
throw new BusinessException("预计来佣比率信息不存在");
}
return Result.success(expectedCommissionRatio);
}
} }
package com.yd.product.feign.client.announcementcommissionratio;
import com.yd.common.result.Result;
import com.yd.product.feign.fallback.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignFallbackFactory;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
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 = ApiAnnouncementCommissionRatioFeignFallbackFactory.class)
public interface ApiAnnouncementCommissionRatioFeignClient {
/**
* 分页列表查询-公告佣比率信息
* @param request
* @return
*/
@PostMapping("/page")
Result page(@RequestBody ApiAnnouncementCommissionRatioPageRequest request);
/**
* 保存-公告佣比率信息
* @param request
* @return
*/
@PostMapping("/save")
Result save(@Validated @RequestBody ApiAnnouncementCommissionRatioSaveRequest request);
/**
* 详情-公告佣比率信息
* @param announcementCommissionRatioBizId 公告佣比率表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiAnnouncementCommissionRatioDetailResponse> detail(@NotBlank(message = "公告佣比率表唯一业务ID不能为空") @RequestParam(value = "announcementCommissionRatioBizId") String announcementCommissionRatioBizId);
}
...@@ -4,10 +4,14 @@ import com.yd.common.result.Result; ...@@ -4,10 +4,14 @@ import com.yd.common.result.Result;
import com.yd.product.feign.fallback.expectedcommissionratio.ApiExpectedCommissionRatioFeignFallbackFactory; import com.yd.product.feign.fallback.expectedcommissionratio.ApiExpectedCommissionRatioFeignFallbackFactory;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest;
import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioDetailResponse;
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.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import javax.validation.constraints.NotBlank;
/** /**
* 产品服务-预计来佣比率信息Feign客户端 * 产品服务-预计来佣比率信息Feign客户端
...@@ -30,4 +34,12 @@ public interface ApiExpectedCommissionRatioFeignClient { ...@@ -30,4 +34,12 @@ public interface ApiExpectedCommissionRatioFeignClient {
*/ */
@PostMapping("/save") @PostMapping("/save")
Result save(@Validated @RequestBody ApiExpectedCommissionRatioSaveRequest request); Result save(@Validated @RequestBody ApiExpectedCommissionRatioSaveRequest request);
/**
* 详情-预计来佣比率信息
* @param expectedCommissionRatioBizId 预计来佣比率表唯一业务ID
* @return
*/
@GetMapping("/detail")
Result<ApiExpectedCommissionRatioDetailResponse> detail(@NotBlank(message = "预计来佣比率表唯一业务ID不能为空") @RequestParam(value = "expectedCommissionRatioBizId") String expectedCommissionRatioBizId);
} }
...@@ -39,7 +39,7 @@ public interface ApiProductLaunchFeignClient { ...@@ -39,7 +39,7 @@ public interface ApiProductLaunchFeignClient {
* @return * @return
*/ */
@GetMapping("/detail") @GetMapping("/detail")
Result<ApiProductLaunchDetailResponse> detail(@NotBlank(message = "产品上架信息表唯一业务ID唯一业务ID能为空") @RequestParam(value = "productLaunchBizId") String productLaunchBizId); Result<ApiProductLaunchDetailResponse> detail(@NotBlank(message = "产品上架信息表唯一业务ID唯一业务ID能为空") @RequestParam(value = "productLaunchBizId") String productLaunchBizId);
/** /**
* 保存-产品上架信息 * 保存-产品上架信息
......
package com.yd.product.feign.dto;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ApiAnnouncementCommissionRatioDto {
/**
* 公告佣比率表唯一业务ID
*/
private String announcementCommissionRatioBizId;
/**
* 产品上架信息表唯一业务ID(冗余)
*/
private String productLaunchBizId;
/**
* 产品唯一业务ID(冗余)
*/
private String productBizId;
/**
* 规格条件列表JSON串
*/
private String speciesJson;
/**
* 上架产品规格配置表信息JSON串对应转化的列表
*/
private List<ApiSpeciesSettingDto> apiSpeciesSettingDtoList;
/**
* 供款年期(产品有5年期的有10年期等)
*/
private String term;
/**
* 期数(数字代表第几年)
*/
private String issueNumber;
/**
* 公告比例
*/
private BigDecimal announcementRatio;
/**
* 有效开始时间
*/
private LocalDateTime effectiveStart;
/**
* 有效结束时间(不在这个时间区间内,公告比例按照announcement_ratio算,在这个区间内公告比例按照有效期内公告比例算)
*/
private LocalDateTime effectiveEnd;
/**
* 有效期内公告比例
*/
private BigDecimal ratio;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 通用备注
*/
private String remark;
}
package com.yd.product.feign.fallback.announcementcommissionratio;
import com.yd.common.result.Result;
import com.yd.product.feign.client.announcementcommissionratio.ApiAnnouncementCommissionRatioFeignClient;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioSaveRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioDetailResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.cloud.openfeign.FallbackFactory;
import org.springframework.stereotype.Component;
/**
* 产品服务-公告佣比率信息Feign降级处理
*/
@Slf4j
@Component
public class ApiAnnouncementCommissionRatioFeignFallbackFactory implements FallbackFactory<ApiAnnouncementCommissionRatioFeignClient> {
@Override
public ApiAnnouncementCommissionRatioFeignClient create(Throwable cause) {
return new ApiAnnouncementCommissionRatioFeignClient() {
@Override
public Result page(ApiAnnouncementCommissionRatioPageRequest request) {
return null;
}
@Override
public Result save(ApiAnnouncementCommissionRatioSaveRequest request) {
return null;
}
@Override
public Result<ApiAnnouncementCommissionRatioDetailResponse> detail(String announcementCommissionRatioBizId) {
return null;
}
};
}
}
...@@ -4,10 +4,13 @@ import com.yd.common.result.Result; ...@@ -4,10 +4,13 @@ import com.yd.common.result.Result;
import com.yd.product.feign.client.expectedcommissionratio.ApiExpectedCommissionRatioFeignClient; import com.yd.product.feign.client.expectedcommissionratio.ApiExpectedCommissionRatioFeignClient;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioPageRequest;
import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest; import com.yd.product.feign.request.expectedcommissionratio.ApiExpectedCommissionRatioSaveRequest;
import com.yd.product.feign.response.expectedcommissionratio.ApiExpectedCommissionRatioDetailResponse;
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降级处理
*/ */
...@@ -26,6 +29,11 @@ public class ApiExpectedCommissionRatioFeignFallbackFactory implements FallbackF ...@@ -26,6 +29,11 @@ public class ApiExpectedCommissionRatioFeignFallbackFactory implements FallbackF
public Result save(ApiExpectedCommissionRatioSaveRequest request) { public Result save(ApiExpectedCommissionRatioSaveRequest request) {
return null; return null;
} }
@Override
public Result<ApiExpectedCommissionRatioDetailResponse> detail(String expectedCommissionRatioBizId) {
return null;
}
}; };
} }
} }
package com.yd.product.feign.request.announcementcommissionratio;
import com.yd.common.dto.PageDto;
import lombok.Data;
@Data
public class ApiAnnouncementCommissionRatioPageRequest extends PageDto {
/**
* 产品上架信息表唯一业务ID
*/
private String productLaunchBizId;
/**
* 供款年期(产品有5年期的有10年期等)
*/
private String term;
/**
* 期数(数字代表第几年)
*/
private String issueNumber;
}
package com.yd.product.feign.request.announcementcommissionratio;
import com.yd.product.feign.dto.ApiAnnouncementCommissionRatioDto;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import java.util.List;
@Data
public class ApiAnnouncementCommissionRatioSaveRequest {
/**
* 产品上架信息表唯一业务ID
*/
@NotBlank(message = "产品上架信息表唯一业务ID不能为空")
private String productLaunchBizId;
/**
* 公告佣比率信息配置列表
*/
@NotEmpty(message = "公告佣比率信息配置列表不能为空")
private List<ApiAnnouncementCommissionRatioDto> apiAnnouncementCommissionRatioDtoList;
}
package com.yd.product.feign.response.announcementcommissionratio;
import com.yd.product.feign.dto.ApiSpeciesSettingDto;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ApiAnnouncementCommissionRatioDetailResponse {
/**
* 公告佣比率表主键ID
*/
private Long id;
/**
* 公告佣比率表唯一业务ID
*/
private String announcementCommissionRatioBizId;
/**
* 产品上架信息表唯一业务ID(冗余)
*/
private String productLaunchBizId;
/**
* 产品唯一业务ID(冗余)
*/
private String productBizId;
/**
* 规格条件列表JSON串
*/
private String speciesJson;
/**
* 上架产品规格配置表信息JSON串对应转化的列表
*/
private List<ApiSpeciesSettingDto> apiSpeciesSettingDtoList;
/**
* 供款年期(产品有5年期的有10年期等)
*/
private String term;
/**
* 期数(数字代表第几年)
*/
private String issueNumber;
/**
* 公告比例
*/
private BigDecimal announcementRatio;
/**
* 有效开始时间
*/
private LocalDateTime effectiveStart;
/**
* 有效结束时间(不在这个时间区间内,公告比例按照announcement_ratio算,在这个区间内公告比例按照有效期内公告比例算)
*/
private LocalDateTime effectiveEnd;
/**
* 有效期内公告比例
*/
private BigDecimal ratio;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.product.feign.response.announcementcommissionratio;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class ApiAnnouncementCommissionRatioPageResponse {
/**
* 公告佣比率表主键ID
*/
private Long id;
/**
* 公告佣比率表唯一业务ID
*/
private String announcementCommissionRatioBizId;
/**
* 产品上架信息表唯一业务ID(冗余)
*/
private String productLaunchBizId;
/**
* 产品唯一业务ID(冗余)
*/
private String productBizId;
/**
* 规格条件列表JSON串
*/
private String speciesJson;
/**
* 供款年期(产品有5年期的有10年期等)
*/
private String term;
/**
* 期数(数字代表第几年)
*/
private String issueNumber;
/**
* 公告比例
*/
private BigDecimal announcementRatio;
/**
* 有效开始时间
*/
private LocalDateTime effectiveStart;
/**
* 有效结束时间(不在这个时间区间内,公告比例按照announcement_ratio算,在这个区间内公告比例按照有效期内公告比例算)
*/
private LocalDateTime effectiveEnd;
/**
* 有效期内公告比例
*/
private BigDecimal ratio;
/**
* 状态(0:停用 1:启用)
*/
private Integer status;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.product.feign.response.expectedcommissionratio;
import com.yd.product.feign.dto.ApiSpeciesSettingDto;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class ApiExpectedCommissionRatioDetailResponse {
/**
* 预计来佣比率表主键ID
*/
private Long id;
/**
* 预计来佣比率表唯一业务ID
*/
private String expectedCommissionRatioBizId;
/**
* 产品上架信息表唯一业务ID
*/
private String productLaunchBizId;
/**
* 产品唯一业务ID
*/
private String productBizId;
/**
* 规格条件列表JSON串
*/
private String speciesJson;
/**
* 上架产品规格配置表信息JSON串对应转化的列表
*/
private List<ApiSpeciesSettingDto> apiSpeciesSettingDtoList;
/**
* 保障年限(固定规格条件)
*/
private String warrantyPeriod;
/**
* 期数(固定规格条件)
*/
private String issueNumber;
// /**
// * 缴费年限(起)
// */
// @TableField("start_period")
// private String startPeriod;
//
// /**
// * 缴费年限(止)
// */
// @TableField("end_period")
// private String endPeriod;
/**
* 标保折算比例
*/
private BigDecimal discountRatio;
/**
* 计算基数(保费/保费*折算比例)
*/
private BigDecimal cardinalNumber;
/**
* 来佣类型
*/
private String commissionType;
/**
* 来佣比例
*/
private BigDecimal commissionRatio;
/**
* 出单渠道
*/
private String channel;
/**
* 有效开始时间
*/
private LocalDateTime effectiveStart;
/**
* 有效结束时间
*/
private LocalDateTime effectiveEnd;
/**
* 来佣日规则
*/
private String rules;
/**
* 通用备注
*/
private String remark;
/**
* 删除标识: 0-正常, 1-删除
*/
private Integer isDeleted;
/**
* 创建人ID
*/
private String creatorId;
/**
* 更新人ID
*/
private String updaterId;
/**
* 创建时间
*/
private LocalDateTime createTime;
/**
* 更新时间
*/
private LocalDateTime updateTime;
}
package com.yd.product.service.dao;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
import com.yd.product.service.model.AnnouncementCommissionRatio;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 公告佣比率表 Mapper 接口
* </p>
*
* @author zxm
* @since 2025-11-27
*/
public interface AnnouncementCommissionRatioMapper extends BaseMapper<AnnouncementCommissionRatio> {
IPage<ApiAnnouncementCommissionRatioPageResponse> page(@Param("page") Page<ApiAnnouncementCommissionRatioPageResponse> page,
@Param("request") ApiAnnouncementCommissionRatioPageRequest request);
}
package com.yd.product.service.dao;
import com.yd.product.service.model.RelProductAnnouncement;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 产品和公告比例关系表(原有表) Mapper 接口
* </p>
*
* @author zxm
* @since 2025-11-20
*/
public interface RelProductAnnouncementMapper extends BaseMapper<RelProductAnnouncement> {
}
...@@ -12,16 +12,16 @@ import lombok.Setter; ...@@ -12,16 +12,16 @@ import lombok.Setter;
/** /**
* <p> * <p>
* 产品和公告比例关系表(原有表) * 公告佣比率表
* </p> * </p>
* *
* @author zxm * @author zxm
* @since 2025-11-20 * @since 2025-11-27
*/ */
@Getter @Getter
@Setter @Setter
@TableName("rel_product_announcement") @TableName("announcement_commission_ratio")
public class RelProductAnnouncement implements Serializable { public class AnnouncementCommissionRatio implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -32,28 +32,40 @@ public class RelProductAnnouncement implements Serializable { ...@@ -32,28 +32,40 @@ public class RelProductAnnouncement implements Serializable {
private Long id; private Long id;
/** /**
* 产品唯一业务ID * 公告佣比率表唯一业务ID
*/
@TableField("announcement_commission_ratio_biz_id")
private String announcementCommissionRatioBizId;
/**
* 产品上架信息表唯一业务ID(冗余)
*/
@TableField("product_launch_biz_id")
private String productLaunchBizId;
/**
* 产品唯一业务ID(冗余)
*/ */
@TableField("product_biz_id") @TableField("product_biz_id")
private String productBizId; private String productBizId;
/** /**
* 产品代码 * 规格条件列表JSON串
*/ */
@TableField("product_code") @TableField("species_json")
private String productCode; private String speciesJson;
/** /**
* 供款年期(产品有5年期的有10年期等) * 供款年期(产品有5年期的有10年期等)
*/ */
@TableField("term") @TableField("term")
private Integer term; private String term;
/** /**
* 期数(数字代表第几年) * 期数(数字代表第几年)
*/ */
@TableField("issue_number") @TableField("issue_number")
private Integer issueNumber; private String issueNumber;
/** /**
* 公告比例 * 公告比例
......
package com.yd.product.service.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
import com.yd.product.service.model.AnnouncementCommissionRatio;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 公告佣比率表 服务类
* </p>
*
* @author zxm
* @since 2025-11-27
*/
public interface IAnnouncementCommissionRatioService extends IService<AnnouncementCommissionRatio> {
IPage<ApiAnnouncementCommissionRatioPageResponse> page(Page<ApiAnnouncementCommissionRatioPageResponse> page,
ApiAnnouncementCommissionRatioPageRequest request);
Boolean delByProductLaunchBizId(String productLaunchBizId);
AnnouncementCommissionRatio queryOne(String announcementCommissionRatioBizId);
}
...@@ -21,4 +21,6 @@ public interface IExpectedCommissionRatioService extends IService<ExpectedCommis ...@@ -21,4 +21,6 @@ public interface IExpectedCommissionRatioService extends IService<ExpectedCommis
ApiExpectedCommissionRatioPageRequest request); ApiExpectedCommissionRatioPageRequest request);
Boolean delByProductLaunchBizId(String productLaunchBizId); Boolean delByProductLaunchBizId(String productLaunchBizId);
ExpectedCommissionRatio queryOne(String expectedCommissionRatioBizId);
} }
package com.yd.product.service.service;
import com.yd.product.service.model.RelProductAnnouncement;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 产品和公告比例关系表(原有表) 服务类
* </p>
*
* @author zxm
* @since 2025-11-20
*/
public interface IRelProductAnnouncementService extends IService<RelProductAnnouncement> {
}
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.yd.product.feign.request.announcementcommissionratio.ApiAnnouncementCommissionRatioPageRequest;
import com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse;
import com.yd.product.service.model.AnnouncementCommissionRatio;
import com.yd.product.service.dao.AnnouncementCommissionRatioMapper;
import com.yd.product.service.service.IAnnouncementCommissionRatioService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 公告佣比率表 服务实现类
* </p>
*
* @author zxm
* @since 2025-11-27
*/
@Service
public class AnnouncementCommissionRatioServiceImpl extends ServiceImpl<AnnouncementCommissionRatioMapper, AnnouncementCommissionRatio> implements IAnnouncementCommissionRatioService {
@Override
public IPage<ApiAnnouncementCommissionRatioPageResponse> page(Page<ApiAnnouncementCommissionRatioPageResponse> page,
ApiAnnouncementCommissionRatioPageRequest request) {
return baseMapper.page(page,request);
}
@Override
public Boolean delByProductLaunchBizId(String productLaunchBizId) {
return this.remove(new LambdaQueryWrapper<AnnouncementCommissionRatio>().eq(AnnouncementCommissionRatio::getProductLaunchBizId,productLaunchBizId));
}
@Override
public AnnouncementCommissionRatio queryOne(String announcementCommissionRatioBizId) {
return this.getOne(new LambdaQueryWrapper<AnnouncementCommissionRatio>().eq(AnnouncementCommissionRatio::getAnnouncementCommissionRatioBizId,announcementCommissionRatioBizId));
}
}
...@@ -32,4 +32,9 @@ public class ExpectedCommissionRatioServiceImpl extends ServiceImpl<ExpectedComm ...@@ -32,4 +32,9 @@ public class ExpectedCommissionRatioServiceImpl extends ServiceImpl<ExpectedComm
public Boolean delByProductLaunchBizId(String productLaunchBizId) { public Boolean delByProductLaunchBizId(String productLaunchBizId) {
return this.remove(new LambdaQueryWrapper<ExpectedCommissionRatio>().eq(ExpectedCommissionRatio::getProductLaunchBizId,productLaunchBizId)); return this.remove(new LambdaQueryWrapper<ExpectedCommissionRatio>().eq(ExpectedCommissionRatio::getProductLaunchBizId,productLaunchBizId));
} }
@Override
public ExpectedCommissionRatio queryOne(String expectedCommissionRatioBizId) {
return this.getOne(new LambdaQueryWrapper<ExpectedCommissionRatio>().eq(ExpectedCommissionRatio::getExpectedCommissionRatioBizId,expectedCommissionRatioBizId));
}
} }
package com.yd.product.service.service.impl;
import com.yd.product.service.model.RelProductAnnouncement;
import com.yd.product.service.dao.RelProductAnnouncementMapper;
import com.yd.product.service.service.IRelProductAnnouncementService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 产品和公告比例关系表(原有表) 服务实现类
* </p>
*
* @author zxm
* @since 2025-11-20
*/
@Service
public class RelProductAnnouncementServiceImpl extends ServiceImpl<RelProductAnnouncementMapper, RelProductAnnouncement> implements IRelProductAnnouncementService {
}
...@@ -5,10 +5,10 @@ import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; ...@@ -5,10 +5,10 @@ import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
public class MyBatisPlusCodeGenerator { public class MyBatisPlusCodeGenerator {
public static void main(String[] args) { public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/yd_product?serverTimezone=GMT%2B8", "root", "123456") FastAutoGenerator.create("jdbc:mysql://139.224.145.34:3308/yd_product?serverTimezone=GMT%2B8", "root", "Zxm7320017")
.globalConfig(builder -> { .globalConfig(builder -> {
builder.author("zxm") builder.author("zxm")
// .outputDir("src/main/java/com/yd/user/service"); // .outputDir("src/main/java/com/yd/csf/service");
.outputDir("D:/soft/ideaproject/v2/yd-product/yd-product-service/src/main/java"); .outputDir("D:/soft/ideaproject/v2/yd-product/yd-product-service/src/main/java");
}) })
.packageConfig(builder -> { .packageConfig(builder -> {
...@@ -21,14 +21,8 @@ public class MyBatisPlusCodeGenerator { ...@@ -21,14 +21,8 @@ public class MyBatisPlusCodeGenerator {
}) })
.strategyConfig(builder -> { .strategyConfig(builder -> {
builder.addInclude( builder.addInclude(
"field","field_value","rel_object_field", "announcement_commission_ratio"
"file","category","rel_object_category",
"species","rel_object_species","product",
"expected_commission_ratio","rel_product_announcement",
"product_launch","attribute_setting","species_setting",
"species_price","rel_tenant_product_launch","rel_project_product_launch",
"additional_product","rel_additional_product","rel_product_dept","rel_additional_product_dept",
"rel_tenant_product","rel_project_product"
) )
.entityBuilder() .entityBuilder()
.enableLombok() .enableLombok()
......
<?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.AnnouncementCommissionRatioMapper">
<select id="page"
resultType="com.yd.product.feign.response.announcementcommissionratio.ApiAnnouncementCommissionRatioPageResponse">
select acr.* from announcement_commission_ratio acr
<where>
<if test="request.productLaunchBizId != null and request.productLaunchBizId != ''">
and acr.product_launch_biz_id = #{request.productLaunchBizId}
</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>
and acr.is_deleted = 0
</where>
</select>
</mapper>
<?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.RelProductAnnouncementMapper">
</mapper>
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