package com.nova.sankuai.controller.v1.platform;
import com.nova.sankuai.domain.api.xiamenzhongheyinhua.XiaMenZhongHeYinHuaResponse;
import com.nova.sankuai.domain.api.xiamenzhongheyinhua.XiaMenZhongHeYinHuaUtil;
import com.nova.sankuai.domain.entity.ApiCompany;
import com.nova.sankuai.domain.entity.ApiCompanyRecord;
import com.nova.sankuai.domain.entity.CustomerUser;
import com.nova.sankuai.domain.entity.ProtocolInfo;
import com.nova.sankuai.domain.enums.ApiCompanyCodeEnum;
import com.nova.sankuai.domain.vo.platform.ImportCustomerParameter;
import com.nova.sankuai.infra.config.CommonException;
import com.nova.sankuai.infra.constants.ResultCode;
import com.nova.sankuai.infra.utils.ResultJson;
import com.nova.sankuai.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Objects;
/**
*
* 平台提供给其他系统调用的接口
*
*
* @author Zhangjc
* @since 2021/11/18
*/
@Api(tags = "平台提供给其他系统调用的接口")
@RestController()
@RequestMapping("/api/v1/largecredit")
@RequiredArgsConstructor
@Slf4j
public class LargeCreditController {
private final ICustomerService customerService;
private final IChannelInfoService channelInfoService;
private final IApiCompanyService apiCompanyService;
private final IApiCompanyRecordService apiCompanyRecordService;
private final IProtocolInfoService protocolInfoService;
private final ICustomerUserService customerUserService;
@ApiOperation("撞库测试")
@GetMapping("/customCheck")
public ResultJson checkCustomer(@RequestParam(name = "phone",required = false) String phone, @RequestParam(name = "phone_md5",required = false) String phoneMD5) {
ResultJson result = new ResultJson<>(ResultCode.SUCCESS);
if (StringUtils.isEmpty(phone) && StringUtils.isEmpty(phoneMD5)) {
result.setData(false);
result.setMsg("失败");
result.setCode(ResultCode.BAD_REQUEST.getCode());
return result;
}
CustomerUser customerUser = customerUserService.checkCustomer(phone, phoneMD5);
if (customerUser == null) {
result.setMsg("成功");
result.setData(true);
} else {
result.setMsg("失败");
result.setData(false);
}
return result;
}
@ApiOperation("爱助贷撞库测试")
@GetMapping("/aizhudai/customCheck")
public ResultJson> aizhudaiCustomCheck(@RequestParam String phone) {
ApiCompany one = apiCompanyService.lambdaQuery()
.eq(ApiCompany::getCompanyCode, ApiCompanyCodeEnum.XiaMenZhongHeYinHua.getCode())
.eq(ApiCompany::getEnableFlag, 1).one();
if (one != null) {
Integer count = apiCompanyRecordService.lambdaQuery().eq(ApiCompanyRecord::getCompanyId, one.getId())
.eq(ApiCompanyRecord::getStatus, ApiCompanyRecord.SUCCESS).count();
if (one.getCustomerNum() == null || count < one.getCustomerNum()) {
XiaMenZhongHeYinHuaResponse checkResp = XiaMenZhongHeYinHuaUtil.phoneCheckExists(phone);
if (Objects.equals(checkResp.getCode(), 0)) {
return ResultJson.ok(true);
}
}
}
return ResultJson.ok(false);
}
@ApiOperation("同步用户信息")
@PostMapping("/customImport")
public ResultJson importCustomer(@RequestBody @Valid ImportCustomerParameter parameter) {
ResultJson result = new ResultJson<>(ResultCode.SUCCESS);
CustomerUser customerUser = customerUserService.checkCustomer(parameter.getPhone(), null);
if (customerUser != null) {
log.info("撞库失败:手机号为:" + parameter.getPhone());
result.setCode(ResultCode.SERVER_ERROR.getCode());
result.setMsg("失败");
result.setData(false);
return result;
}
try {
ResultJson checkResult = channelInfoService.checkChannel(parameter.getAppid(), parameter.toString());
if (checkResult != null) {
return checkResult;
}
log.info("导入其他平台用户开始,原始数据:" + parameter.toString());
customerService.importCustomerFromPlatform(parameter);
result.setMsg("成功");
result.setData(true);
} catch (CommonException e) {
log.error("导入其他平台用户出错", e);
result.setCode(ResultCode.SERVER_ERROR.getCode());
result.setMsg(e.getMessage());
result.setData(false);
}
return result;
}
@ApiOperation("爱助贷同步用户信息")
@PostMapping("/aizhudai/customImport")
public ResultJson aizhudaiCustomImport(@RequestBody @Valid ImportCustomerParameter parameter) {
ResultJson result = new ResultJson<>(ResultCode.SUCCESS);
try {
ResultJson> checkResult = channelInfoService.checkChannel(parameter.getAppid(), parameter.toString());
if (checkResult != null) {
return checkResult;
}
log.info("爱助贷同步用户信息开始,原始数据:" + parameter);
customerService.aizhudaiCustomImport(parameter);
result.setMsg("成功");
result.setData(true);
log.info("爱助贷同步用户信息结束");
} catch (CommonException e) {
log.error("爱助贷同步用户信息出错", e);
result.setCode(ResultCode.SERVER_ERROR.getCode());
result.setMsg(e.getMessage());
result.setData(false);
}
return result;
}
@GetMapping(value = "/getProtocol")
@ApiOperation(value = "获取协议")
public String getProtocol(String code) {
ProtocolInfo protocolInfo = protocolInfoService.lambdaQuery().eq(ProtocolInfo::getCode, code).one();
String content = "";
if (protocolInfo != null) {
content = String.format("%s