package com.nova.sankuai.controller.v2;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.nova.sankuai.domain.api.yixin.response.YXAuditResponse;
|
import com.nova.sankuai.domain.api.yixin.response.YXCreditLimitResponse;
|
import com.nova.sankuai.domain.dto.*;
|
import com.nova.sankuai.domain.entity.City;
|
import com.nova.sankuai.domain.entity.Customer;
|
import com.nova.sankuai.domain.vo.Version4FlowPathVo;
|
import com.nova.sankuai.domain.vo.common.MapVo;
|
import com.nova.sankuai.infra.constants.ResultCode;
|
import com.nova.sankuai.infra.utils.ImageUtil;
|
import com.nova.sankuai.infra.utils.MapUtil;
|
import com.nova.sankuai.infra.utils.ResultJson;
|
import com.nova.sankuai.infra.utils.UserUtil;
|
import com.nova.sankuai.infra.utils.chuxin.ChuxinDataUtil;
|
import com.nova.sankuai.security.UserDetail;
|
import com.nova.sankuai.service.IChannelInfoService;
|
import com.nova.sankuai.service.ICustomerService;
|
import com.nova.sankuai.service.IYiXinService;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.AllArgsConstructor;
|
import lombok.extern.slf4j.Slf4j;
|
import org.apache.commons.lang.StringUtils;
|
import org.jetbrains.annotations.Nullable;
|
import org.slf4j.Logger;
|
import org.slf4j.LoggerFactory;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.io.IOException;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* @author weikangdi
|
*/
|
@Api(tags = "客户管理V2版本")
|
@RestController
|
@RequestMapping(value = "/api/v2/customer")
|
@AllArgsConstructor
|
@Slf4j
|
public class CustomerV2Controller {
|
|
private final ICustomerService customerService;
|
|
|
private final IChannelInfoService channelInfoService;
|
|
private final IYiXinService yiXinService;
|
|
private final ImageUtil imageUtil;
|
|
// 身份证二要素验证工具类
|
private final ChuxinDataUtil chuxinDataUtil;
|
|
private static final Logger logger = LoggerFactory.getLogger("uploadFileLogger");
|
|
private static final Logger systemLogger = LoggerFactory.getLogger("systemLogger");
|
|
@GetMapping("/getCustomerUserNameAndIdCard")
|
@ApiOperation(value = "获取用户姓名和身份证")
|
public ResultJson<Map<String,String>> getCustomerUserNameAndIdCard(HttpServletRequest request) {
|
String token = request.getHeader("Authorization");
|
UserDetail user = UserUtil.getUser(token);
|
Customer customer = customerService.getOne(Wrappers.lambdaQuery(Customer.class).eq(Customer::getPhone, user.getPhone()).orderByDesc(Customer::getApplyDate).last("LIMIT 1"));
|
Map<String,String> map = new HashMap<>();
|
map.put("name",customer.getName());
|
map.put("idCard",customer.getIdCard());
|
return ResultJson.ok(map);
|
}
|
|
@GetMapping("/searchPlace")
|
@ApiOperation(value = "地址联想")
|
@PreAuthorize("hasAuthority('customer.searchPlace')")
|
public ResultJson<List<MapVo>> searchPlace(String query, String city) {
|
if (StringUtils.isEmpty(query)) {
|
return ResultJson.failure(ResultCode.SERVER_ERROR, "搜索关键字不能为空");
|
}
|
List<MapVo> place = MapUtil.searchPlace(query, city);
|
return ResultJson.ok(place);
|
}
|
|
@PostMapping(value = "/appAddBasicInfo")
|
@ApiOperation(value = "APP新增客户基本资料")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson appAddBasicInfo(@RequestBody CustomerBaseDto customer, String appId, HttpServletRequest request) {
|
ResultJson checkResult = channelInfoService.checkChannel(appId, customer.toString());
|
if (checkResult != null) {
|
return checkResult;
|
}
|
String id = customerService.appAddBasicInfo(customer, appId, request);
|
|
return ResultJson.ok(id);
|
}
|
|
@PostMapping(value = "/h5Match")
|
@ApiOperation(value = "H5匹配资金方")
|
public ResultJson h5Match(@RequestBody CustomerBaseDto customer, HttpServletRequest request) {
|
return customerService.h5Match(customer, request);
|
}
|
|
@GetMapping(value = "/getH5Match")
|
@ApiOperation(value = "根据手机号获取H5匹配资金方的信息")
|
public ResultJson getH5Match(@RequestParam String phone) {
|
return customerService.getH5Match(phone);
|
}
|
|
@PostMapping(value = "/appAddCapitalInfo")
|
@ApiOperation(value = "APP新增客户资金方资料")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson appAddCapitalInfo(HttpServletRequest request, @RequestBody CustomerCapitalDto customer, String appId, String channelInfo) {
|
log.info("客户资金方资料原始参数信息:" + customer.toString());
|
ResultJson checkResult = channelInfoService.checkChannel(appId, customer.toString());
|
if (checkResult != null) {
|
return checkResult;
|
}
|
String id = customerService.appAddCapitalInfo(request, customer, appId, channelInfo);
|
return ResultJson.ok(id);
|
}
|
|
@GetMapping(value = "/getTXFaceInfo")
|
@ApiOperation(value = "人脸核身的SIGN和NONCE 信息")
|
public ResultJson getTXFaceInfo(@RequestParam String phone, String name, String idNo, String channelInfo) {
|
ResultJson resultJson = yiXinService.getTXFaceInfo(phone, name, idNo, channelInfo);
|
return resultJson;
|
}
|
|
@GetMapping(value = "/checkIdCardTwo")
|
@ApiOperation(value = "身份证二要素验证")
|
public ResultJson checkIdCardTwo(@RequestParam String idCard, String name) {
|
return chuxinDataUtil.getRemoteResult(idCard, name);
|
}
|
|
@GetMapping(value = "/getTXOcrInfo")
|
@ApiOperation(value = "获取ocr签名信息")
|
public ResultJson getTXOcrInfo(@RequestParam String phone, String channelInfo) {
|
ResultJson resultJson = yiXinService.getTXOcrInfo(phone, channelInfo);
|
return resultJson;
|
}
|
|
@PostMapping("/uploadBase64File")
|
@ApiOperation(value = "上传base64图片")
|
public ResultJson uploadBase64File(@RequestBody Base64InfoDto base64Info, HttpServletRequest request) {
|
if (StringUtils.isEmpty(base64Info.getBase64Info())) {
|
systemLogger.error("上传图片失败,图片内容为空" + base64Info);
|
return ResultJson.failure(ResultCode.SERVER_ERROR, "上传图片失败,图片内容为空");
|
}
|
UserDetail user = null;
|
try {
|
String token = request.getHeader("Authorization");
|
user = UserUtil.getUser(token);
|
systemLogger.info("上传图片用户信息:" + user.toString());
|
ResultJson resultJson = yiXinService.uploadBase64File(base64Info.getBase64Info());
|
return resultJson;
|
} catch (Exception e) {
|
if (user != null) {
|
systemLogger.error("上传base64图片出错," + "登录用户信息:" + user.toString()
|
+ "原始参数信息:" + base64Info + "错误日志详情:", e);
|
} else {
|
systemLogger.error("上传base64图片出错,原始参数信息:" + base64Info + "错误日志详情:", e);
|
}
|
return ResultJson.failure(ResultCode.SERVER_ERROR, "上传图片失败");
|
}
|
}
|
|
@PostMapping("/yxUploadFile")
|
@ApiOperation(value = "上传图片")
|
public ResultJson yxUploadFile(HttpServletRequest request) {
|
try {
|
logger.info("file=====>:{}", request);
|
MultipartHttpServletRequest req = (MultipartHttpServletRequest) request;
|
|
//对应前端的upload的name参数"file"
|
MultipartFile file = req.getFile("file");
|
logger.info("file.getOriginalFilename=====>:{}", file.getOriginalFilename());
|
logger.info("file.getBytes=====>:{}", file.getBytes());
|
return ResultJson.ok(imageUtil.yxUploadFile(file, false));
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return ResultJson.failure(ResultCode.SERVER_ERROR);
|
}
|
|
|
@GetMapping(value = "/getYxContractListQuery")
|
@ApiOperation(value = "宜信合同信息")
|
public ResultJson getYxContractListQuery(@AuthenticationPrincipal UserDetail userDetail) {
|
ResultJson resultJson = yiXinService.getYxContractListQuery(userDetail);
|
return resultJson;
|
}
|
|
@PostMapping(value = "/appAddOCRInfo")
|
@ApiOperation(value = "APP新增客户OCR+人脸识别资料")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson appAddOCRInfo(@RequestBody CustomerOcrDto customerOcrDto, String appId) {
|
// logger.info("客户OCR+人脸识别资料原始参数信息:" + customerOcrDto.toString());
|
ResultJson checkResult = channelInfoService.checkChannel(appId, customerOcrDto.toString());
|
if (checkResult != null) {
|
return checkResult;
|
}
|
String id = customerService.appAddOCRInfo(customerOcrDto, appId);
|
return ResultJson.ok(id);
|
}
|
|
@PostMapping(value = "/appAddBankCardInfo")
|
@ApiOperation(value = "APP新增客户银行卡信息")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson appAddBankCardInfo(@RequestBody CustomerBankCardDto customerBankCardDto, String appId) {
|
log.info("客户银行卡资料原始参数信息:" + customerBankCardDto.toString());
|
ResultJson checkResult = channelInfoService.checkChannel(appId, customerBankCardDto.toString());
|
if (checkResult != null) {
|
return checkResult;
|
}
|
String id = customerService.appAddBankCardInfo(customerBankCardDto, appId);
|
return ResultJson.ok(id);
|
}
|
|
@GetMapping(value = "/getYxCreditAudit")
|
@ApiOperation(value = "授信审批查询")
|
public ResultJson getYxCreditAudit(@AuthenticationPrincipal UserDetail userDetail) {
|
YXAuditResponse yxResponse = yiXinService.getYxCreditAudit(userDetail.getPhone());
|
return ResultJson.ok(yxResponse);
|
}
|
|
|
@GetMapping(value = "/getYxCreditLimit")
|
@ApiOperation(value = "额度查询接口")
|
public ResultJson getYxCreditLimit(@AuthenticationPrincipal UserDetail userDetail) {
|
YXCreditLimitResponse yxResponse = yiXinService.getYxCreditLimit(userDetail);
|
return ResultJson.ok(yxResponse);
|
}
|
|
@PostMapping(value = "/appAddRepayInfo")
|
@ApiOperation(value = "APP新增客户还款计划")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson appAddRepayInfo(@RequestBody CustomerRepayDto customerRepayDto, String appId) {
|
ResultJson checkResult = channelInfoService.checkChannel(appId, customerRepayDto.toString());
|
if (checkResult != null) {
|
return checkResult;
|
}
|
String id = customerService.appAddRepayInfo(customerRepayDto, appId);
|
return ResultJson.ok(id);
|
}
|
|
@GetMapping(value = "/rongYiTuiVip")
|
@ApiOperation(value = "融易推用户会员购买")
|
public UserDetail rongYiTuiVip(@AuthenticationPrincipal UserDetail userDetail, Integer vipCardType) {
|
customerService.rongYiTuiVip(userDetail, vipCardType);
|
return userDetail;
|
}
|
|
@GetMapping("/getUserIpCity")
|
@ApiOperation(value = "根据用户ip获取城市信息")
|
public ResultJson<City> getUserIpCity(HttpServletRequest request) {
|
City userIpCity = customerService.getUserIpCity(request);
|
return ResultJson.ok(userIpCity);
|
}
|
|
@GetMapping("/version4FlowPath")
|
@ApiOperation(value = "4.0流程")
|
public ResultJson<Version4FlowPathVo> version4FlowPath(@AuthenticationPrincipal UserDetail userDetail) {
|
Version4FlowPathVo version4FlowPathVo = customerService.version4FlowPath(userDetail);
|
return ResultJson.ok(version4FlowPathVo);
|
}
|
|
|
@PostMapping(value = "/appFourAddRelationInfo")
|
@ApiOperation(value = "4.0开启下APP新增客户资料二")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson appFourAddRelationInfo(HttpServletRequest request, @RequestBody CustomerRelationDto customer, String appId, String channelInfo) {
|
log.info("客户资金方资料原始参数信息:" + customer.toString());
|
ResultJson checkResult = channelInfoService.checkChannel(appId, customer.toString());
|
if (checkResult != null) {
|
return checkResult;
|
}
|
String id = customerService.appFourAddRelationInfo(request, customer, appId, channelInfo);
|
return ResultJson.ok(id);
|
}
|
|
@PostMapping(value = "/appFourAddCompanyInfo")
|
@ApiOperation(value = "4.0开启下APP新增客户资料三")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson appFourAddCompanyInfo(HttpServletRequest request, @RequestBody CustomerCompanyDto customer, String appId, String channelInfo) {
|
log.info("客户资金方资料原始参数信息:" + customer.toString());
|
ResultJson checkResult = channelInfoService.checkChannel(appId, customer.toString());
|
if (checkResult != null) {
|
return checkResult;
|
}
|
String id = customerService.appFourAddCompanyInfo(request, customer, appId);
|
return ResultJson.ok(id);
|
}
|
|
@PostMapping(value = "/appFiveAddAssetInfo")
|
@ApiOperation(value = "新增资产信息")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson appFiveAddAssetInfo(HttpServletRequest request, @RequestBody CustomerAssetDto customer, String appId) {
|
ResultJson checkResult = getResultJson(customer, appId);
|
if (checkResult != null) return checkResult;
|
String id = customerService.appFiveAddAssetInfo(request, customer, appId);
|
return ResultJson.ok(id);
|
}
|
|
@PostMapping(value = "/h5FiveAddAssetInfo")
|
@ApiOperation(value = "从浏览器新增资产信息")
|
@PreAuthorize("hasAuthority('customer.appAdd')")
|
public ResultJson h5FiveAddAssetInfo(HttpServletRequest request, @RequestBody CustomerAssetDto customer, String appId) {
|
ResultJson checkResult = getResultJson(customer, appId);
|
if (checkResult != null) return checkResult;
|
String id = customerService.h5FiveAddAssetInfo(request, customer, appId);
|
return ResultJson.ok(id);
|
}
|
|
@PostMapping(value = "/h5PushInfo")
|
@ApiOperation(value = "浏览器推送数据")
|
public ResultJson h5PushInfo(@RequestBody Customer customer) {// 这个接口不推送慧借钱包
|
customerService.h5PushInfo(customer);
|
return ResultJson.ok("ok");
|
}
|
|
@PostMapping(value = "/h5HjPushInfo")
|
@ApiOperation(value = "浏览器推送数据给慧借钱包")
|
public ResultJson h5HjPushInfo(@RequestBody Customer customer) {// 这个接口只推送慧借钱包
|
customerService.h5PushInfoInclude(customer);
|
return ResultJson.ok("ok");
|
}
|
|
@PostMapping(value = "/appPushInfo")
|
@ApiOperation(value = "app推送数据")
|
public ResultJson appPushInfo(HttpServletRequest request) {
|
customerService.appPushInfo(request);
|
return ResultJson.ok("ok");
|
}
|
|
@Nullable
|
private ResultJson getResultJson(@RequestBody CustomerAssetDto customer, String appId) {
|
log.info("客户资金方资料原始参数信息:" + customer.toString());
|
ResultJson checkResult = channelInfoService.checkChannel(appId, customer.toString());
|
if (checkResult != null) {
|
return checkResult;
|
}
|
return null;
|
}
|
}
|