package com.nova.sankuai.controller.v2; import cn.hutool.json.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.nova.sankuai.domain.dto.CapitalPushDto; import com.nova.sankuai.domain.dto.DdqBindCardDto; import com.nova.sankuai.domain.dto.capitalflow.*; import com.nova.sankuai.domain.entity.CapitalInfo; import com.nova.sankuai.domain.entity.CustomerUser; import com.nova.sankuai.domain.entity.CustomerZcy; import com.nova.sankuai.domain.entity.PlatformCapital; import com.nova.sankuai.domain.enums.capitalInfo.CapitalInfoTypeCodeEnum; import com.nova.sankuai.domain.vo.*; import com.nova.sankuai.domain.vo.capitalflow.*; import com.nova.sankuai.domain.vo.capitalresult.CapitalInfoAppVo; import com.nova.sankuai.domain.vo.capitalresult.CapitalInfoVo; import com.nova.sankuai.domain.vo.capitalresult.ChannelUnionResultVo; import com.nova.sankuai.infra.config.CommonException; import com.nova.sankuai.infra.utils.ResultJson; import com.nova.sankuai.infra.utils.UserUtil; import com.nova.sankuai.infra.utils.eshidai.EsdUtil; import com.nova.sankuai.infra.utils.hht.HhtUtil; import com.nova.sankuai.infra.utils.hjqb.HjqbUtil; import com.nova.sankuai.infra.utils.ryh.RyhUtil; import com.nova.sankuai.infra.utils.syh.SyhUtil; import com.nova.sankuai.infra.utils.zhd.ZhdUtil; import com.nova.sankuai.infra.utils.zhxyp.ZhxypUtil; import com.nova.sankuai.security.UserDetail; import com.nova.sankuai.service.*; 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.springframework.beans.BeanUtils; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Objects; /** * @author weikangdi * @create 2022/4/29 */ @Api(tags = "资方管理V2") @RestController @RequestMapping(value = "/api/v2/capitalInfo") @AllArgsConstructor @Slf4j public class CapitalInfoV2Controller { private ICapitalInfoService capitalInfoService; private final ICustomerCapitalResultService customerCapitalResultService; private final ICustomerUserService customerUserService; private final ICustomerZcyService customerZcyService; ; private final IHengYiDaiService hengYiDaiService; private final IDouDouQianService douDouQianService; private final SyhUtil syhUtil; private final HhtUtil hhtUtil; private final ZhdUtil zhdUtil; private final RyhUtil ryhUtil; private final HjqbUtil hjqbUtil; private final EsdUtil esdUtil; private final ZhxypUtil zhxypUtil; @GetMapping("/getCapitalList") @ApiOperation("获取可用资方列表") public ResultJson> getCapitalList() { List result = capitalInfoService.getCapitalList(); return ResultJson.ok(result); } @GetMapping("/getCapital") @ApiOperation("根据ID获取资方资料") public ResultJson getCapital(Long id) { if (Objects.isNull(id)) { throw new CommonException("参数不正确"); } CapitalInfo capitalInfo = capitalInfoService.getById(id); if (Objects.isNull(capitalInfo)) { throw new CommonException("获取数据失败!"); } CapitalInfoVo capitalInfoVo = new CapitalInfoVo(); BeanUtils.copyProperties(capitalInfo, capitalInfoVo); return ResultJson.ok(capitalInfoVo); } @GetMapping("/getCapitalByWld") @ApiOperation("根据ID和手机号获取资方资料") public ResultJson getCapitalByWld(Long id, String mobile) { if (Objects.isNull(id)) { throw new CommonException("参数不正确"); } if (Objects.isNull(mobile)) { throw new CommonException("参数不正确"); } CapitalInfo capitalInfo = capitalInfoService.getById(id); if (Objects.isNull(capitalInfo)) { throw new CommonException("获取数据失败!"); } CustomerZcy customerZcy = customerZcyService.getOne(Wrappers.lambdaQuery() .eq(CustomerZcy::getPhone, mobile)); if (Objects.isNull(customerZcy)) { throw new CommonException("获取数据失败!"); } //CapitalInfoVo capitalInfoVo = new CapitalInfoVo(); //BeanUtils.copyProperties(capitalInfo, capitalInfoVo); JSONObject jsonObject = new JSONObject(); jsonObject.putOpt("userName", customerZcy.getName()); jsonObject.putOpt("mobile", mobile); jsonObject.putOpt("idCard", customerZcy.getIdCard()); jsonObject.putOpt("capitalName", capitalInfo.getName()); jsonObject.putOpt("companyName", capitalInfo.getCompany()); return ResultJson.ok(jsonObject); } @PostMapping(value = "/pushCustomerToCapital") @ApiOperation(value = "推送数据给资方") public ResultJson pushCustomerToCapital(@RequestBody CapitalPushDto capitalPushDto, HttpServletRequest request) { CapitalInfo capitalInfo = capitalInfoService.getById(capitalPushDto.getCapitalId()); if (capitalInfo == null) { throw new CommonException("对应资方机构不存在"); } String token = request.getHeader("Authorization"); UserDetail user = UserUtil.getUser(token); if (user == null) { throw new CommonException("用户Token无效"); } CustomerUser customerUser = customerUserService.getById(user.getId()); if (customerUser == null) { throw new CommonException("用户不存在"); } // 标注:推送数据给资方 // ResultJson resultJson = customerCapitalResultService.pushCustomer(capitalInfo, customerUser, capitalPushDto); String url = zhxypUtil.check(customerUser.getIdCard(), customerUser.getPhone(), customerUser.getName()); ChannelUnionResultVo cr = new ChannelUnionResultVo(); cr.setCheckResult(StringUtils.isBlank(url) ? false : true); cr.setUrl(url); return ResultJson.ok(cr); // if (resultJson != null) { // return resultJson; // } // throw new CommonException("对应资方机构不存在"); } @PostMapping(value = "/incomeToSyh") @ApiOperation(value = "进件数据给随易花") public ResultJson incomeToSyh(HttpServletRequest request) { // 标注:推送数据给资方 ResultJson resultJson = syhUtil.income(request); if (resultJson != null) { return resultJson; } throw new CommonException("进件给随易花失败!"); } @PostMapping(value = "/incomeToHht") @ApiOperation(value = "进件数据给好汇推") public ResultJson incomeToHht(HttpServletRequest request) { // 标注:推送数据给资方 ResultJson resultJson = hhtUtil.income(request); if (resultJson != null) { return resultJson; } throw new CommonException("进件给好汇推失败!"); } @PostMapping(value = "/incomeToZhd") @ApiOperation(value = "进件数据给助贷") public ResultJson incomeToZhd(HttpServletRequest request) { // 标注:推送数据给资方 ResultJson resultJson = zhdUtil.income(request); if (resultJson != null) { return resultJson; } throw new CommonException("进件给助贷失败!"); } @PostMapping(value = "/incomeToRyh") @ApiOperation(value = "进件数据给任意花") public ResultJson incomeToRyh(HttpServletRequest request) { // 标注:推送数据给资方 ResultJson resultJson = ryhUtil.income(request); if (resultJson != null) { return resultJson; } throw new CommonException("进件给任意花失败!"); } @PostMapping(value = "/incomeToEsd") @ApiOperation(value = "进件数据给e时贷") public ResultJson incomeToEsd(HttpServletRequest request) { // 标注:推送数据给资方 ResultJson resultJson = esdUtil.income(request); if (resultJson != null) { return resultJson; } throw new CommonException("进件给e时贷失败!"); } @PostMapping(value = "/incomeToHjqb") @ApiOperation(value = "进件数据给慧借钱包") public ResultJson incomeToHjqb(HttpServletRequest request) { // 标注:推送数据给资方 ResultJson resultJson = hjqbUtil.income(request); if (resultJson != null) { return resultJson; } throw new CommonException("进件给慧借钱包失败!"); } @GetMapping("/orderExamineNum") @ApiOperation("已匹配资金机构的数量") public ResultJson orderExamineNum() { Integer integer = capitalInfoService.orderExamineNum(); return ResultJson.ok(integer); } @GetMapping("/orderExamineShow") @ApiOperation("已匹配资金机构匹配信息") public ResultJson orderExamineShow(@AuthenticationPrincipal UserDetail userDetail) { OrderExamineShowResultVo resultVo = capitalInfoService.orderExamineShow(userDetail); // 于2022-11-21新增:是否只是app3.0 /*String isVersion3 = request.getParameter("isVersion3"); if ("1".equals(isVersion3)) {// app3.0逻辑 // 于2022-11-21新增 List orderExamineShowVoZm = new ArrayList<>(); // 1.1)当显示主界面顶部=是;自动推送=不启用,当产品撞库通过后,产品显示在主界面中;自动推送 0为启用,1为不启用 for (OrderExamineShowVo vo : orderExamineShowVos) { if (vo.getAutoPush() == 1) { orderExamineShowVoZm.add(vo); } } for (OrderExamineShowVo vo : orderExamineShowVoZm) { orderExamineShowVos.remove(vo); } // 1.2)当显示主界面顶部=是;自动推送=启用,只有当产品审批通过,产品显示在主界面中; for (OrderExamineShowVo vo : orderExamineShowVos) { if (vo.getAutoPush() == 0 && "1".equals(vo.getApprovalResult())) { orderExamineShowVoZm.add(vo); } } return ResultJson.ok(orderExamineShowVoZm); // 完 }*/ return ResultJson.ok(resultVo); } @GetMapping("/capitalHomePageShow") @ApiOperation("银行直贷资方首页显示") public ResultJson> capitalHomePageShow(@AuthenticationPrincipal UserDetail userDetail) { List capitalHomePageShowVos = capitalInfoService.capitalHomePageShow(userDetail); return ResultJson.ok(capitalHomePageShowVos); } @GetMapping("/capitalNotificationShow") @ApiOperation("线上贷款首页弹窗显示") public ResultJson> capitalNotificationShow(@AuthenticationPrincipal UserDetail userDetail) { List isNotificationVos = capitalInfoService.capitalNotificationShow(userDetail); return ResultJson.ok(isNotificationVos); } @PostMapping("/capitalGetSignUrl") @ApiOperation("获取资方绑卡/签约页面") public ResultJson capitalGetSignUrl(@RequestBody CapitalGetSignUrlDto paramDto) { CapitalInfo capitalInfo = capitalInfoService.getById(paramDto.getCapitalId()); if (capitalInfo == null) { throw new CommonException("对应资方机构不存在"); } if (StringUtils.isEmpty(paramDto.getReturnUrl())) { throw new CommonException("回调url不能为空"); } if (CapitalInfoTypeCodeEnum.HENG_YI_DAI.getCode().equals(capitalInfo.getCode())) { return hengYiDaiService.capitalGetSignUrl(paramDto, capitalInfo); } throw new CommonException("对应资方机构不存在"); } @PostMapping("/capitalLoanTrial") @ApiOperation("资方借款试算接口") public ResultJson capitalLoanTrial(@RequestBody CapitalBaseParamDto paramDto) { CapitalInfo capitalInfo = capitalInfoService.getById(paramDto.getCapitalId()); if (capitalInfo == null) { throw new CommonException("对应资方机构不存在"); } if (CapitalInfoTypeCodeEnum.HENG_YI_DAI.getCode().equals(capitalInfo.getCode())) { return hengYiDaiService.capitalLoanTrial(paramDto, capitalInfo); } throw new CommonException("对应资方机构不存在"); } @PostMapping("/capitalConfirmLoan") @ApiOperation("资方确认借款接口") public ResultJson capitalConfirmLoan(@RequestBody CapitalConfirmLoanDto paramDto) { CapitalInfo capitalInfo = capitalInfoService.getById(paramDto.getCapitalId()); if (capitalInfo == null) { throw new CommonException("对应资方机构不存在"); } if (CapitalInfoTypeCodeEnum.HENG_YI_DAI.getCode().equals(capitalInfo.getCode())) { return hengYiDaiService.capitalConfirmLoan(paramDto, capitalInfo); } throw new CommonException("对应资方机构不存在"); } @PostMapping("/capitalGetRepayUrl") @ApiOperation("获取资方还款页面") public ResultJson capitalGetRepayUrl(@RequestBody CapitalGetRepayUrlDto paramDto) { CapitalInfo capitalInfo = capitalInfoService.getById(paramDto.getCapitalId()); if (capitalInfo == null) { throw new CommonException("对应资方机构不存在"); } if (StringUtils.isEmpty(paramDto.getReturnUrl())) { throw new CommonException("回调url不能为空"); } if (CapitalInfoTypeCodeEnum.HENG_YI_DAI.getCode().equals(capitalInfo.getCode())) { return hengYiDaiService.capitalGetRepayUrl(paramDto, capitalInfo); } throw new CommonException("对应资方机构不存在"); } @PostMapping("/capitalRepayPlan") @ApiOperation("获取资方还款计划") public ResultJson capitalRepayPlan(@RequestBody CapitalBaseParamDto paramDto) { CapitalInfo capitalInfo = capitalInfoService.getById(paramDto.getCapitalId()); if (capitalInfo == null) { throw new CommonException("对应资方机构不存在"); } if (CapitalInfoTypeCodeEnum.HENG_YI_DAI.getCode().equals(capitalInfo.getCode())) { return hengYiDaiService.capitalRepayPlan(paramDto, capitalInfo); } throw new CommonException("对应资方机构不存在"); } @PostMapping("/capitalContracts") @ApiOperation("获取资方协议列表") public ResultJson> capitalContracts(@RequestBody CapitalContractsDto paramDto) { CapitalInfo capitalInfo = capitalInfoService.getById(paramDto.getCapitalId()); if (capitalInfo == null) { throw new CommonException("对应资方机构不存在"); } if (CapitalInfoTypeCodeEnum.HENG_YI_DAI.getCode().equals(capitalInfo.getCode())) { return hengYiDaiService.capitalContracts(paramDto, capitalInfo); } throw new CommonException("对应资方机构不存在"); } @PostMapping("/getRepayEntry") @ApiOperation("获取资方还款入口") public ResultJson getRepayEntry(HttpServletRequest request) { CapitalRepayEntryVo result = customerCapitalResultService.getRepayEntry(request); return ResultJson.ok(result); } @GetMapping("/notificationStatistics") @ApiOperation("点击弹窗统计") public ResultJson capitalHomePageShow(@RequestParam("type") Integer type, @RequestParam("capitalResultId") String capitalResultId, String notificationUrl) { customerCapitalResultService.notificationStatistics(type, capitalResultId, notificationUrl); return ResultJson.success(); } @GetMapping("/getSupportBankListByDDQ") @ApiOperation("豆豆钱获取支持的银行卡列表") public ResultJson> getSupportBankListByDDQ(HttpServletRequest request) { List result = douDouQianService.getSupportBankList(request); return ResultJson.ok(result); } @PostMapping("/bindCardByDDQ") @ApiOperation("豆豆钱绑定银行卡") public ResultJson bindCardByDDQ(@RequestBody DdqBindCardDto bindCardDto, HttpServletRequest request) { DdqBindCardVo result = douDouQianService.bindCardByDDQ(bindCardDto, request); return ResultJson.ok(result); } @PostMapping("/bindCardConfirmByDDQ") @ApiOperation("豆豆钱绑定银行卡确认") public ResultJson bindCardConfirmByDDQ(@RequestBody DdqBindCardDto bindCardDto, HttpServletRequest request) { boolean result = douDouQianService.bindCardConfirmByDDQ(bindCardDto, request); return ResultJson.ok(result); } @PostMapping("/bindCard") @ApiOperation("随便绑定银行卡") public ResultJson bindCard(@RequestBody DdqBindCardDto bindCardDto, HttpServletRequest request) { boolean result = douDouQianService.bindCardConfirmByDDQ(bindCardDto, request); return ResultJson.ok(result); } @GetMapping("/getPopupByDdq") @ApiOperation("获取豆豆钱弹窗") public ResultJson getPopupByDdq(HttpServletRequest request) { DdqPopupVo result = douDouQianService.getPopupByDdq(request); return ResultJson.ok(result); } @GetMapping(value = "/findOrdinaryApplyData") @ApiOperation(value = "获取普通申请数据") public ResultJson findOrdinaryApplyData(@AuthenticationPrincipal UserDetail userDetail) { List ordinaryApplyData = capitalInfoService.findOrdinaryApplyData(userDetail); return ResultJson.ok(ordinaryApplyData); } @GetMapping(value = "/findAppOrdinaryApplyData") @ApiOperation(value = "获取普通申请数据不包括直贷") public ResultJson findAppOrdinaryApplyData(@AuthenticationPrincipal UserDetail userDetail) { List ordinaryApplyData = capitalInfoService.findAppOrdinaryApplyData(userDetail); return ResultJson.ok(ordinaryApplyData); } @GetMapping(value = "/findVmOrdinaryApplyData") @ApiOperation(value = "获取普通申请虚拟数据") public ResultJson findVmOrdinaryApplyData(@AuthenticationPrincipal UserDetail userDetail) { List ordinaryApplyData = capitalInfoService.findVmOrdinaryApplyData(userDetail); return ResultJson.ok(ordinaryApplyData); } @GetMapping(value = "/findPlatformCapital") @ApiOperation(value = "获取撞库资方相关资料") public ResultJson> findPlatformCapital(@AuthenticationPrincipal UserDetail userDetail) { List list = capitalInfoService.findPlatformCapital(userDetail); return ResultJson.ok(list); } /** * @param capitalId 资方ID * @return */ @GetMapping(value = "/pushIsSucc") @ApiOperation(value = "银行直贷推送是否成功") public ResultJson pushIsSucc(HttpServletRequest request, Long capitalId) { Boolean rs = capitalInfoService.pushIsSucc(request, capitalId); return ResultJson.ok(rs); } }