迁移项目到 RuoYi-Vue springboot2 基线

This commit is contained in:
wkc
2026-04-14 15:13:51 +08:00
parent f1e4b26800
commit 28088d43a8
544 changed files with 73860 additions and 70367 deletions

View File

@@ -5,7 +5,7 @@
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.9.1</version>
<version>3.9.2</version>
</parent>
<modelVersion>4.0.0</modelVersion>
@@ -35,10 +35,9 @@
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- SpringDoc OpenAPI -->
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>

View File

@@ -0,0 +1,19 @@
package com.ruoyi.loanpricing.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableTransactionManagement(proxyTargetClass = true)
@Configuration
public class MybatisPlusConfig
{
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor()
{
// springboot2 基线下 pagehelper 与 mybatis-plus 的 SQL 解析依赖存在冲突。
// 这里仅保留基础拦截器容器,避免在应用启动期加载分页 SQL 解析器。
return new MybatisPlusInterceptor();
}
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.loanpricing.config.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.ruoyi.common.utils.SecurityUtils;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaHandler implements MetaObjectHandler
{
@Override
public void insertFill(MetaObject metaObject)
{
this.setFieldValByName("createBy", buildOperator(), metaObject);
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateBy", buildOperator(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject)
{
this.setFieldValByName("updateBy", buildOperator(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
}
private String buildOperator()
{
try
{
return SecurityUtils.getLoginUser().getUser().getNickName() + "-" + SecurityUtils.getUsername();
}
catch (Exception ex)
{
return "system";
}
}
}

View File

@@ -1,13 +1,9 @@
package com.ruoyi.loanpricing.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.PageDomain;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.page.TableSupport;
import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.loanpricing.domain.dto.CorporateLoanPricingCreateDTO;
import com.ruoyi.loanpricing.domain.dto.PersonalLoanPricingCreateDTO;
@@ -15,13 +11,11 @@ import com.ruoyi.loanpricing.domain.entity.LoanPricingWorkflow;
import com.ruoyi.loanpricing.domain.vo.LoanPricingWorkflowListVO;
import com.ruoyi.loanpricing.domain.vo.LoanPricingWorkflowVO;
import com.ruoyi.loanpricing.service.ILoanPricingWorkflowService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
/**
@@ -30,7 +24,6 @@ import java.util.Map;
* @author ruoyi
* @date 2025-01-19
*/
@Tag(name = "利率定价流程管理")
@RestController
@RequestMapping("/loanPricing/workflow")
public class LoanPricingWorkflowController extends BaseController
@@ -41,7 +34,6 @@ public class LoanPricingWorkflowController extends BaseController
/**
* 发起个人客户利率定价流程
*/
@Operation(summary = "发起个人客户利率定价流程", description = "用于个人客户的利率定价流程发起")
@Log(title = "个人客户利率定价流程", businessType = BusinessType.INSERT)
@PostMapping("/create/personal")
public AjaxResult createPersonal(@Validated @RequestBody PersonalLoanPricingCreateDTO dto) {
@@ -52,7 +44,6 @@ public class LoanPricingWorkflowController extends BaseController
/**
* 发起企业客户利率定价流程
*/
@Operation(summary = "发起企业客户利率定价流程", description = "用于企业客户的利率定价流程发起")
@Log(title = "企业客户利率定价流程", businessType = BusinessType.INSERT)
@PostMapping("/create/corporate")
public AjaxResult createCorporate(@Validated @RequestBody CorporateLoanPricingCreateDTO dto)
@@ -64,28 +55,19 @@ public class LoanPricingWorkflowController extends BaseController
/**
* 查询利率定价流程列表
*/
@Operation(summary = "查询利率定价流程列表")
@GetMapping("/list")
public TableDataInfo list(LoanPricingWorkflow loanPricingWorkflow)
{
PageDomain pageDomain = TableSupport.buildPageRequest();
Page<LoanPricingWorkflowListVO> page = new Page<>(pageDomain.getPageNum(), pageDomain.getPageSize());
IPage<LoanPricingWorkflowListVO> result = loanPricingWorkflowService.selectLoanPricingPage(page, loanPricingWorkflow);
TableDataInfo rspData = new TableDataInfo();
rspData.setCode(200);
rspData.setMsg("查询成功");
rspData.setRows(result.getRecords());
rspData.setTotal(result.getTotal());
return rspData;
startPage();
List<LoanPricingWorkflowListVO> list = loanPricingWorkflowService.selectLoanPricingPage(loanPricingWorkflow);
return getDataTable(list);
}
/**
* 查询利率定价流程详情
*/
@Operation(summary = "查询利率定价流程详情")
@GetMapping("/{serialNum}")
public AjaxResult getInfo(
@Parameter(description = "业务方流水号")
@PathVariable("serialNum") String serialNum)
{
LoanPricingWorkflowVO workflow = loanPricingWorkflowService.selectLoanPricingBySerialNum(serialNum);
@@ -99,11 +81,9 @@ public class LoanPricingWorkflowController extends BaseController
/**
* 设定执行利率
*/
@Operation(summary = "设定执行利率")
@Log(title = "利率定价流程", businessType = BusinessType.UPDATE)
@PutMapping("/{serialNum}/executeRate")
public AjaxResult setExecuteRate(
@Parameter(description = "业务方流水号")
@PathVariable("serialNum") String serialNum,
@RequestBody Map<String, String> request) {
String executeRate = request.get("executeRate");

View File

@@ -6,10 +6,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.loanpricing.domain.dto.ModelInvokeDTO;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.core.io.ClassPathResource;
import org.springframework.web.bind.annotation.*;
@@ -21,13 +18,11 @@ import java.io.InputStream;
* @Author 吴凯程
* @Date 2025/11/10
**/
@Tag(name = "测算测试接口")
@RestController
@RequestMapping("/rate/pricing/mock")
public class LoanRatePricingMockController extends BaseController {
@Anonymous
@Operation(summary = "调用模型获取测算利率")
@PostMapping("/invokeModel")
public AjaxResult invokeModel( ModelInvokeDTO modelInvokeDTO) {
ObjectNode jsonNodes;

View File

@@ -1,10 +1,9 @@
package com.ruoyi.loanpricing.domain.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
@@ -14,51 +13,37 @@ import java.io.Serializable;
* @date 2025-01-19
*/
@Data
@Schema(description = "企业客户利率定价发起请求")
public class CorporateLoanPricingCreateDTO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "客户内码", requiredMode = Schema.RequiredMode.REQUIRED, example = "CORP001")
@NotBlank(message = "客户内码不能为空")
private String custIsn;
@Schema(description = "客户名称", example = "测试科技有限公司")
private String custName;
@Schema(description = "证件类型", example = "统一社会信用代码")
private String idType;
@Schema(description = "证件号码", example = "91110000100000000X")
private String idNum;
@Schema(description = "担保方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "抵押", allowableValues = {"信用", "保证", "抵押", "质押"})
@NotBlank(message = "担保方式不能为空")
@Pattern(regexp = "^(信用|保证|抵押|质押)$", message = "担保方式必须是:信用、保证、抵押、质押之一")
private String guarType;
@Schema(description = "申请金额(元)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1000000")
@NotBlank(message = "申请金额不能为空")
private String applyAmt;
@Schema(description = "贷款期限", example = "36")
private String loanTerm;
@Schema(description = "省农担担保贷款", example = "false")
private String isAgriGuar;
@Schema(description = "绿色贷款", example = "true")
private String isGreenLoan;
@Schema(description = "科技型企业", example = "true")
private String isTechEnt;
@Schema(description = "贸易和建筑业企业标识", example = "false")
private String isTradeConstruction;
@Schema(description = "抵质押类型", example = "一类")
private String collType;
@Schema(description = "抵质押物是否三方所有", example = "false")
private String collThirdParty;
}

View File

@@ -1,10 +1,9 @@
package com.ruoyi.loanpricing.domain.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.io.Serializable;
/**
@@ -14,51 +13,38 @@ import java.io.Serializable;
* @date 2025-01-19
*/
@Data
@Schema(description = "个人客户利率定价发起请求")
public class PersonalLoanPricingCreateDTO implements Serializable {
private static final long serialVersionUID = 1L;
@Schema(description = "客户内码", requiredMode = Schema.RequiredMode.REQUIRED, example = "CUST001")
@NotBlank(message = "客户内码不能为空")
private String custIsn;
@Schema(description = "客户名称", example = "张三")
private String custName;
@Schema(description = "证件类型", example = "身份证")
private String idType;
@Schema(description = "证件号码", example = "110101199001011234")
private String idNum;
@Schema(description = "担保方式", requiredMode = Schema.RequiredMode.REQUIRED, example = "信用", allowableValues = {"信用", "保证", "抵押", "质押"})
@NotBlank(message = "担保方式不能为空")
@Pattern(regexp = "^(信用|保证|抵押|质押)$", message = "担保方式必须是:信用、保证、抵押、质押之一")
private String guarType;
@Schema(description = "申请金额(元)", requiredMode = Schema.RequiredMode.REQUIRED, example = "500000")
@NotBlank(message = "申请金额不能为空")
private String applyAmt;
@Schema(description = "贷款用途", requiredMode = Schema.RequiredMode.REQUIRED, example = "business", allowableValues = {"consumer", "business"})
@NotBlank(message = "贷款用途不能为空")
@Pattern(regexp = "^(consumer|business)$", message = "贷款用途必须是consumer、business之一")
private String loanPurpose;
@Schema(description = "借款期限(年)", requiredMode = Schema.RequiredMode.REQUIRED, example = "3")
@NotBlank(message = "借款期限不能为空")
private String loanTerm;
@Schema(description = "是否有经营佐证", example = "1")
private String bizProof;
@Schema(description = "循环功能", example = "0")
private String loanLoop;
@Schema(description = "抵质押类型", example = "一类")
private String collType;
@Schema(description = "抵质押物是否三方所有", example = "0")
private String collThirdParty;
}

View File

@@ -2,9 +2,9 @@ package com.ruoyi.loanpricing.domain.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotBlank;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

View File

@@ -1,12 +1,12 @@
package com.ruoyi.loanpricing.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.loanpricing.domain.entity.LoanPricingWorkflow;
import com.ruoyi.loanpricing.domain.vo.LoanPricingWorkflowListVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 利率定价流程Mapper接口
*
@@ -15,6 +15,5 @@ import org.apache.ibatis.annotations.Param;
*/
public interface LoanPricingWorkflowMapper extends BaseMapper<LoanPricingWorkflow>
{
IPage<LoanPricingWorkflowListVO> selectWorkflowPageWithRates(Page<?> page,
@Param("query") LoanPricingWorkflow query);
List<LoanPricingWorkflowListVO> selectWorkflowPageWithRates(@Param("query") LoanPricingWorkflow query);
}

View File

@@ -1,7 +1,5 @@
package com.ruoyi.loanpricing.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.loanpricing.domain.dto.CorporateLoanPricingCreateDTO;
import com.ruoyi.loanpricing.domain.dto.PersonalLoanPricingCreateDTO;
import com.ruoyi.loanpricing.domain.entity.LoanPricingWorkflow;
@@ -45,11 +43,10 @@ public interface ILoanPricingWorkflowService
/**
* 分页查询利率定价流程列表
*
* @param page 分页参数
* @param loanPricingWorkflow 利率定价流程信息
* @return 分页结果
* @return 列表结果
*/
public IPage<LoanPricingWorkflowListVO> selectLoanPricingPage(Page<LoanPricingWorkflowListVO> page, LoanPricingWorkflow loanPricingWorkflow);
public List<LoanPricingWorkflowListVO> selectLoanPricingPage(LoanPricingWorkflow loanPricingWorkflow);
/**
* 查询利率定价流程详情

View File

@@ -10,12 +10,12 @@ import com.ruoyi.loanpricing.domain.entity.ModelRetailOutputFields;
import com.ruoyi.loanpricing.mapper.LoanPricingWorkflowMapper;
import com.ruoyi.loanpricing.mapper.ModelCorpOutputFieldsMapper;
import com.ruoyi.loanpricing.mapper.ModelRetailOutputFieldsMapper;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
/**

View File

@@ -14,13 +14,13 @@ public class LoanPricingSensitiveDisplayService
}
if (custName.contains("公司") && custName.length() > 4)
{
return custName.substring(0, 2) + "*".repeat(custName.length() - 4) + custName.substring(custName.length() - 2);
return custName.substring(0, 2) + repeatMask(custName.length() - 4) + custName.substring(custName.length() - 2);
}
if (custName.length() == 1)
{
return custName;
}
return custName.substring(0, 1) + "*".repeat(custName.length() - 1);
return custName.substring(0, 1) + repeatMask(custName.length() - 1);
}
public String maskIdNum(String idNum)
@@ -31,16 +31,30 @@ public class LoanPricingSensitiveDisplayService
}
if (idNum.startsWith("91") && idNum.length() == 18)
{
return idNum.substring(0, 2) + "*".repeat(13) + idNum.substring(idNum.length() - 3);
return idNum.substring(0, 2) + repeatMask(13) + idNum.substring(idNum.length() - 3);
}
if (idNum.matches("\\d{17}[\\dXx]"))
{
return idNum.substring(0, 4) + "*".repeat(8) + idNum.substring(idNum.length() - 4);
return idNum.substring(0, 4) + repeatMask(8) + idNum.substring(idNum.length() - 4);
}
if (idNum.length() > 5)
{
return idNum.substring(0, 2) + "*".repeat(idNum.length() - 5) + idNum.substring(idNum.length() - 3);
return idNum.substring(0, 2) + repeatMask(idNum.length() - 5) + idNum.substring(idNum.length() - 3);
}
return "*".repeat(idNum.length());
return repeatMask(idNum.length());
}
private String repeatMask(int count)
{
if (count <= 0)
{
return "";
}
StringBuilder builder = new StringBuilder(count);
for (int i = 0; i < count; i++)
{
builder.append('*');
}
return builder.toString();
}
}

View File

@@ -3,18 +3,19 @@ package com.ruoyi.loanpricing.service;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.TypeReference;
import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.redis.RedisCache;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.http.HttpUtils;
import com.ruoyi.loanpricing.domain.dto.ModelInvokeDTO;
import com.ruoyi.loanpricing.domain.entity.LoanPricingWorkflow;
import org.springframework.beans.factory.annotation.Value;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.stereotype.Service;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import java.util.Map;
import java.util.Objects;
@@ -28,6 +29,8 @@ import java.util.Objects;
@EnableAsync
public class ModelService {
private final RestTemplate restTemplate = new RestTemplate();
@Value("${model.url}")
private String modelUrl;
@@ -35,7 +38,7 @@ public class ModelService {
public JSONObject invokeModel(ModelInvokeDTO modelInvokeDTO) {
Map<String, String> requestBody = entityToMap(modelInvokeDTO);
JSONObject response = HttpUtils.doPostFormUrlEncoded(modelUrl, requestBody, null, JSONObject.class);
JSONObject response = doPostFormUrlEncoded(modelUrl, requestBody);
log.info("------------------->调用模型返回结果:" + JSON.toJSONString(response));
if(Objects.nonNull(response) && response.containsKey("code") && response.getInteger("code") == 10000){
JSONObject mappingOutputFields = response.getJSONObject("data").getJSONObject("mappingOutputFields");
@@ -61,10 +64,18 @@ public class ModelService {
return JSON.parseObject(jsonStr, new TypeReference<Map<String, String>>() {});
}
private JSONObject doPostFormUrlEncoded(String url, Map<String, String> params)
{
MultiValueMap<String, String> formParams = new LinkedMultiValueMap<>();
if (params != null && !params.isEmpty())
{
formParams.setAll(params);
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(formParams, headers);
ResponseEntity<String> response = restTemplate.postForEntity(url, requestEntity, String.class);
return JSON.parseObject(response.getBody());
}
}

View File

@@ -1,8 +1,6 @@
package com.ruoyi.loanpricing.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.ruoyi.loanpricing.domain.dto.CorporateLoanPricingCreateDTO;
import com.ruoyi.loanpricing.domain.dto.PersonalLoanPricingCreateDTO;
import com.ruoyi.loanpricing.domain.entity.LoanPricingWorkflow;
@@ -18,11 +16,11 @@ import com.ruoyi.loanpricing.service.LoanPricingSensitiveDisplayService;
import com.ruoyi.loanpricing.service.LoanPricingModelService;
import com.ruoyi.loanpricing.service.SensitiveFieldCryptoService;
import com.ruoyi.loanpricing.util.LoanPricingConverter;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@@ -132,18 +130,17 @@ public class LoanPricingWorkflowServiceImpl implements ILoanPricingWorkflowServi
/**
* 分页查询利率定价流程列表
*
* @param page 分页参数
* @param loanPricingWorkflow 利率定价流程信息
* @return 利率定价流程
* @return 利率定价流程列表
*/
@Override
public IPage<LoanPricingWorkflowListVO> selectLoanPricingPage(Page<LoanPricingWorkflowListVO> page, LoanPricingWorkflow loanPricingWorkflow)
public List<LoanPricingWorkflowListVO> selectLoanPricingPage(LoanPricingWorkflow loanPricingWorkflow)
{
IPage<LoanPricingWorkflowListVO> pageResult = loanPricingWorkflowMapper.selectWorkflowPageWithRates(page, loanPricingWorkflow);
pageResult.getRecords().forEach(row -> row.setCustName(
List<LoanPricingWorkflowListVO> rows = loanPricingWorkflowMapper.selectWorkflowPageWithRates(loanPricingWorkflow);
rows.forEach(row -> row.setCustName(
loanPricingSensitiveDisplayService.maskCustName(
sensitiveFieldCryptoService.decrypt(row.getCustName()))));
return pageResult;
return rows;
}
/**

View File

@@ -9,9 +9,7 @@ import static org.mockito.Mockito.when;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.loanpricing.domain.entity.LoanPricingWorkflow;
import com.ruoyi.loanpricing.domain.entity.ModelCorpOutputFields;
import com.ruoyi.loanpricing.domain.entity.ModelRetailOutputFields;
@@ -83,14 +81,11 @@ class LoanPricingWorkflowServiceImplTest
LoanPricingWorkflowListVO row = new LoanPricingWorkflowListVO();
row.setCalculateRate("6.15");
Page<LoanPricingWorkflowListVO> pageResult = new Page<>(1, 10);
pageResult.setRecords(java.util.List.of(row));
when(loanPricingWorkflowMapper.selectWorkflowPageWithRates(any())).thenReturn(Collections.singletonList(row));
when(loanPricingWorkflowMapper.selectWorkflowPageWithRates(any(), any())).thenReturn(pageResult);
java.util.List<LoanPricingWorkflowListVO> result = loanPricingWorkflowService.selectLoanPricingPage(new LoanPricingWorkflow());
IPage<LoanPricingWorkflowListVO> result = loanPricingWorkflowService.selectLoanPricingPage(new Page<>(1, 10), new LoanPricingWorkflow());
assertEquals("6.15", result.getRecords().get(0).getCalculateRate());
assertEquals("6.15", result.get(0).getCalculateRate());
}
@Test
@@ -99,16 +94,13 @@ class LoanPricingWorkflowServiceImplTest
LoanPricingWorkflowListVO row = new LoanPricingWorkflowListVO();
row.setCustName("cipher-name");
Page<LoanPricingWorkflowListVO> pageResult = new Page<>(1, 10);
pageResult.setRecords(Collections.singletonList(row));
when(loanPricingWorkflowMapper.selectWorkflowPageWithRates(any(), any())).thenReturn(pageResult);
when(loanPricingWorkflowMapper.selectWorkflowPageWithRates(any())).thenReturn(Collections.singletonList(row));
when(sensitiveFieldCryptoService.decrypt("cipher-name")).thenReturn("张三");
when(loanPricingSensitiveDisplayService.maskCustName("张三")).thenReturn("张*");
IPage<LoanPricingWorkflowListVO> result = loanPricingWorkflowService.selectLoanPricingPage(new Page<>(1, 10), new LoanPricingWorkflow());
java.util.List<LoanPricingWorkflowListVO> result = loanPricingWorkflowService.selectLoanPricingPage(new LoanPricingWorkflow());
assertEquals("张*", result.getRecords().get(0).getCustName());
assertEquals("张*", result.get(0).getCustName());
}
@Test