package com.szwl.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.szwl.constant.JoinpayConstant;
import com.szwl.constant.ResponseCodesEnum;
import com.szwl.exception.BizException;
import com.szwl.manager.TokenManager;
import com.szwl.model.bo.R;
import com.szwl.model.bo.ResponseModel;
import com.szwl.model.bo.UserDetailBO;
import com.szwl.model.entity.TAdmin;
import com.szwl.model.entity.TJoinpayMch;
import com.szwl.model.entity.TJoinpayMchCheck;
import com.szwl.model.entity.UserLicense;
import com.szwl.model.param.mchParam;
import com.szwl.model.utils.Base64Util;
import com.szwl.service.TAdminService;
import com.szwl.service.TJoinpayMchCheckService;
import com.szwl.service.TJoinpayMchService;
import com.szwl.service.UserLicenseService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import static com.szwl.constant.ResponseCodesEnum.B0001;
/**
*
* 汇聚支付用户收款信息表 前端控制器
*
*
* @author wuhs
* @since 2022-04-29
*/
@Api(value = "/tJoinpayMch", tags = {"汇聚支付"})
@RestController
@RequestMapping("/tJoinpayMch")
public class TJoinpayMchController {
@Autowired
TJoinpayMchService tJoinpayMchService;
@Autowired
TJoinpayMchCheckService tJoinpayMchCheckService;
@Autowired
TAdminService adminService;
@Autowired
TokenManager tokenManager;
@Autowired
private UserLicenseService userLicenseService;
@ApiOperation(value = "查找汇聚收款账户信息")
@PostMapping("/getOne")
public ResponseModel getOne() {
UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
.orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
String adminId = userDetailBO.getId().toString();
// TAdmin admin = adminService.getById(adminId);
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TJoinpayMch::getAdminId, adminId);
List list = tJoinpayMchService.list(query);
if (list.size() > 0) {
//已经注册,就要查看是否有提交审核的
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.eq(TJoinpayMchCheck::getAdminId, adminId);
List list1 = tJoinpayMchCheckService.list(query1);
if (list1.size() > 0) {
int i = 0;
for (TJoinpayMchCheck tJoinpayMchCheck : list1) {
if (tJoinpayMchCheck.getType().equals("0") || tJoinpayMchCheck.getType().equals("3")) {
i++;
}
}
if (i == 0) {
return R.ok(list.get(0));
} else {
for (int j = list1.size() - 1; j >= 0; j--) {
if (!list1.get(j).getType().equals("2") & !list1.get(j).getType().equals("1")) {
if (list1.get(j).getType().equals("3")) {
Date data = new Date();
long time = data.getTime();
long updateTime = list1.get(j).getModifyDate().getTime();
if (3 * 24 * 60 * 60 * 1000l > time - updateTime) {
//拒绝的审核,超过3天后不显示
return R.ok(list.get(0));
} else {
return R.ok(list.get(j));
}
}
return R.ok(list.get(j));
}
}
}
} else {
return R.ok(list.get(0));
}
return R.ok(list.get(0));
} else {
return R.fail("尚未注册!");
}
}
@ApiOperation(value = "保存或提交审核")
@PostMapping("/save")
public ResponseModel> save(@RequestBody TJoinpayMch tJoinpayMch) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TJoinpayMch::getAdminId, tJoinpayMch.getAdminId());
TJoinpayMch joinpayMch = tJoinpayMchService.getOne(query);
tJoinpayMch.setCreateDate(new Date());
tJoinpayMch.setModifyDate(new Date());
if (joinpayMch!= null) {
//已有,属于第二次提交信息,
TJoinpayMch mch = joinpayMch;
//提交并修改
if (StringUtils.isNotEmpty(mch.getApproveStatus())) {
if (!mch.getApproveStatus().equals("审核通过")) {
if (!StringUtils.isEmpty(tJoinpayMch.getLegalPerson())) {
mch.setLegalPerson(tJoinpayMch.getLegalPerson());
}
if (tJoinpayMch.getIdCardNo() != null) {
mch.setIdCardNo(tJoinpayMch.getIdCardNo());
}
if (!StringUtils.isEmpty(tJoinpayMch.getLicenseNo())) {
mch.setLicenseNo(tJoinpayMch.getLicenseNo());
}
}
}
if (!StringUtils.isEmpty(tJoinpayMch.getBankAccountName())) {
mch.setBankAccountName(tJoinpayMch.getBankAccountName());
}
if (!StringUtils.isEmpty(tJoinpayMch.getBankAccountNo())) {
mch.setBankAccountNo(tJoinpayMch.getBankAccountNo());
}
if (!StringUtils.isEmpty(tJoinpayMch.getBankChannelNo())) {
mch.setBankChannelNo(tJoinpayMch.getBankChannelNo());
}
if (!StringUtils.isEmpty(tJoinpayMch.getBusiContactName())) {
mch.setBusiContactName(tJoinpayMch.getBusiContactName());
}
if (!StringUtils.isEmpty(tJoinpayMch.getBusiContactMobileNo())) {
mch.setBusiContactMobileNo(tJoinpayMch.getBusiContactMobileNo());
}
if (!StringUtils.isEmpty(tJoinpayMch.getPhoneNo())) {
mch.setPhoneNo(tJoinpayMch.getPhoneNo());
}
if (mch.getSettMode() != null) {
mch.setSettMode(tJoinpayMch.getSettMode());
}
if (mch.getRiskDay() != null) {
mch.setRiskDay(tJoinpayMch.getRiskDay());
}
if (tJoinpayMch.getSettDateType() != null) {
mch.setSettDateType(tJoinpayMch.getSettDateType());
}
String s = tJoinpayMchService.updateMch(mch);
if (s.equals("ok")) {
tJoinpayMchService.updateById(mch);
}
return R.ok(s);
} else {
//没有,直接保存
tJoinpayMch.setStep("0");
String result = tJoinpayMchService.createMch(tJoinpayMch);
if (result.equals("ok")) {
return R.ok(tJoinpayMch);
} else {
return R.fail(ResponseCodesEnum.C0001, result);
}
}
}
@ApiOperation(value = "签约")
@GetMapping("/altMchSign")
public ResponseModel> altMchSign(String id) {
TJoinpayMch mch = tJoinpayMchService.getById(id);
//签定协议
String str = tJoinpayMchService.altMchSign(mch);
return R.ok(str);
}
@ApiOperation(value = "上传图片")
@PostMapping("/sentImage")
public ResponseModel> sentImage(@RequestBody mchParam tJoinpayMch) {
TJoinpayMch mch = tJoinpayMchService.getById(tJoinpayMch.getId());
if (tJoinpayMch.getType().equals("0")) {
//对公
if (StringUtils.isEmpty(tJoinpayMch.getCardPositive()) || StringUtils.isEmpty(tJoinpayMch.getCardNegative()) || StringUtils.isEmpty(tJoinpayMch.getTradeLicence())) {
return R.fail("图片不能为空");
}
String str = tJoinpayMchService.sendCardBusiness(mch, tJoinpayMch.getCardPositive(), tJoinpayMch.getCardNegative(), tJoinpayMch.getTradeLicence(), tJoinpayMch.getOpenAccountLicence(), tJoinpayMch.getStatus());
return R.ok(str);
}
if (tJoinpayMch.getType().equals("1")) {
//个人
if (StringUtils.isEmpty(tJoinpayMch.getCardPositive()) || StringUtils.isEmpty(tJoinpayMch.getCardNegative())) {
return R.fail("图片不能为空");
}
String str = tJoinpayMchService.sendCard(mch, tJoinpayMch.getCardPositive(), tJoinpayMch.getCardNegative(), tJoinpayMch.getStatus());
return R.ok(str);
}
return R.ok();
}
@ApiOperation(value = "获取提现信息")
@GetMapping("/getMch")
public ResponseModel getMch(@RequestParam String id) {
TAdmin admin = adminService.getById(id);
if (admin.getType() <= 1) {
//公司
TJoinpayMch tJoinpayMch = new TJoinpayMch();
tJoinpayMch.setType("0");
return R.ok(tJoinpayMch);
} else {
//商家
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TJoinpayMch::getAdminId, Long.valueOf(id));
TJoinpayMch tJoinpayMch = tJoinpayMchService.getOne(query);
if (tJoinpayMch == null) {
return R.ok(null);
}
tJoinpayMchService.refreshMch(tJoinpayMch);
tJoinpayMchService.refreshMyAccount(tJoinpayMch);
TJoinpayMch joinPayMch = tJoinpayMchService.getById(tJoinpayMch.getId());
return R.ok(joinPayMch);
}
}
@ApiOperation(value = "商户入网")
@PostMapping("/createMch")
public ResponseModel> createMch(@RequestBody TJoinpayMch joinpayMch) {
// 步骤
Integer steps = joinpayMch.getBindingSteps();
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TJoinpayMch::getAdminId, joinpayMch.getAdminId());
TJoinpayMch tJoinpayMch = tJoinpayMchService.getOne(query);
switch (steps) {
case 0:
// 提交证件信息
joinpayMch.setBindingSteps(1);
if (tJoinpayMch == null) {
// 没有,直接保存
joinpayMch.setCreateDate(new Date());
joinpayMch.setModifyDate(new Date());
tJoinpayMchService.save(joinpayMch);
} else {
// 有,更新
joinpayMch.setModifyDate(new Date());
BeanUtil.copyProperties(joinpayMch, tJoinpayMch,
CopyOptions.create()
.setIgnoreNullValue(true) // 忽略源对象中的 null 值
.setIgnoreError(true) // 忽略类型不匹配等错误
);
tJoinpayMchService.updateById(tJoinpayMch);
}
return R.ok();
case 1:
// 提交结算信息
tJoinpayMch.setBankAccountType(joinpayMch.getBankAccountType());
tJoinpayMch.setBankAccountName(joinpayMch.getBankAccountName());
tJoinpayMch.setBankAccountNo(joinpayMch.getBankAccountNo());
tJoinpayMch.setBankChannelNo(joinpayMch.getBankChannelNo());
tJoinpayMch.setSettMode(joinpayMch.getSettMode());
tJoinpayMch.setBindingSteps(2);
tJoinpayMch.setModifyDate(new Date());
tJoinpayMchService.updateById(tJoinpayMch);
return R.ok();
case 2:
// 提交信息审核
tJoinpayMch.setModifyDate(new Date());
tJoinpayMch.setBindingSteps(3);
String result = "";
String altMchNo = tJoinpayMch.getAltMchNo();
if (StringUtils.isEmpty(tJoinpayMch.getAltMchNo())) {
// 没入网,入网接口
result = tJoinpayMchService.newCreateMch(tJoinpayMch);
} else {
// 已入网有,修改接口
result = tJoinpayMchService.newUpdateMch(tJoinpayMch);
}
if (JoinpayConstant.biz_code1.equals(result)) {
return R.ok();
}
return R.fail(result);
}
return R.fail(B0001);
}
@ApiOperation("上传照片审核")
@PostMapping("/uploadPhotos")
public ResponseModel> uploadPhotos(@RequestBody TJoinpayMch tJoinpayMch) {
UserLicense userLicense = userLicenseService.getById(tJoinpayMch.getAdminId());
Integer altMerchantType = tJoinpayMch.getAltMerchantType();
TJoinpayMch mch = tJoinpayMchService.getById(tJoinpayMch.getId());
String cardNegative = Base64Util.imgToBase64(userLicense.getIdCardFront());
String cardPositive = Base64Util.imgToBase64(userLicense.getIdCardBack());
if (JoinpayConstant.ALT_MERCHANT_TYPE_ENTERPRISE == altMerchantType) {
//对公
String tradeLicence = Base64Util.imgToBase64(userLicense.getBusinessLicense());
String openAccountLicence = Base64Util.imgToBase64(userLicense.getAccountLicense());
String str = tJoinpayMchService.sendCardBusiness(mch, cardPositive, cardNegative, tradeLicence, openAccountLicence, tJoinpayMch.getStatus());
return R.ok(str);
}
if (JoinpayConstant.ALT_MERCHANT_TYPE_PERSON == altMerchantType) {
//个人
String str = tJoinpayMchService.sendCard(mch, cardPositive, cardNegative, tJoinpayMch.getStatus());
return R.ok(str);
}
return R.ok();
}
@ApiOperation("更新商户认证状态")
@PostMapping("/updateMchApproveStatus")
public ResponseModel> updateMchApproveStatus(@RequestBody TJoinpayMch mch) {
TJoinpayMch joinpayMch = tJoinpayMchService.getById(mch.getId());
String authStauts = tJoinpayMchService.updateMchApproveStatus(joinpayMch);
return R.ok(authStauts);
}
@ApiOperation(value = "更新图片审核状态")
@PostMapping("/updateApproveStatus")
public ResponseModel> updateApproveStatus(@RequestBody TJoinpayMch mch) {
TJoinpayMch byId = tJoinpayMchService.getById(mch.getId());
String str = tJoinpayMchService.updateApproveStatus(byId);
return R.ok(str);
}
@ApiOperation("更新签约状态")
@PostMapping("/updateMchSignStatus")
public ResponseModel> updateMchSignStatus(@RequestBody TJoinpayMch mch) {
TJoinpayMch joinpayMch = tJoinpayMchService.getById(mch.getId());
String signStatus = tJoinpayMchService.updateMchSignStatus(joinpayMch);
return R.ok(signStatus);
}
}