package com.szwl.controller;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.szwl.constant.HuifuConstant;
import com.szwl.constant.ResponseCodesEnum;
import com.szwl.model.bo.R;
import com.szwl.model.bo.ResponseModel;
import com.szwl.model.entity.THuifuMch;
import com.szwl.model.entity.THuifuMchCheck;
import com.szwl.service.THuifuMchCheckService;
import com.szwl.service.THuifuMchService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid;
import java.util.Date;
/**
*
* 前端控制器
*
*
* @author wuhs
* @since 2023-07-12
*/
@Api(value = "/tHuifuMch", tags = {"汇付支付"})
@RestController
@RequestMapping("/tHuifuMch")
public class THuifuMchController {
@Autowired
private THuifuMchService tHuifuMchService;
@Autowired
private THuifuMchCheckService tHuifuMchCheckService;
@ApiOperation(value = "商户入驻申请")
@PostMapping("/addMerchant")
public ResponseModel> addMerchant(@Valid @RequestBody THuifuMchCheck tHuifuMchCheck) {
if (tHuifuMchCheck.getAdminId() == null) {
return R.fail(ResponseCodesEnum.A0001);
}
tHuifuMchCheck.setCreateDate(new Date());
tHuifuMchCheck.setModifyDate(new Date());
tHuifuMchCheck.setStatus("0");
tHuifuMchCheckService.save(tHuifuMchCheck);
return R.ok();
}
@ApiOperation(value = "商户修改申请")
@PostMapping("/updateMerchant")
public ResponseModel> updateMerchant(@Valid @RequestBody THuifuMchCheck tHuifuMchCheck) {
if (tHuifuMchCheck.getAdminId() == null) {
return R.fail(ResponseCodesEnum.A0001);
}
// 排除掉不复制的属性
String[] ignoreProperties = {"id", "createDate","adminId","huifuId"};
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(THuifuMchCheck::getAdminId,tHuifuMchCheck.getAdminId());
THuifuMchCheck newHuifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
newHuifuMchCheck.setModifyDate(new Date());
if(newHuifuMchCheck.getStatus().equals("3")) {
BeanUtil.copyProperties(tHuifuMchCheck,newHuifuMchCheck,ignoreProperties);
newHuifuMchCheck.setStatus("1");
} else {
BeanUtil.copyProperties(tHuifuMchCheck,newHuifuMchCheck,ignoreProperties);
newHuifuMchCheck.setStatus("4");
}
tHuifuMchCheckService.updateById(newHuifuMchCheck);
return R.ok();
}
@ApiOperation(value = "审核商户入驻")
@GetMapping ("/auditAddMerchant")
public ResponseModel> auditAddMerchant(Long id, String status) throws Exception {
if (id == null) {
return R.fail(ResponseCodesEnum.A0001);
}
// 找到用户id对应的审核信息
THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getById(id);
String data = null;
if(status.equals("1")) {
//通过
// 判断商户类型,“0”为个人,“1”为企业
if(huifuMchCheck.getType().equals("0")) {
data = tHuifuMchService.addPersonage(huifuMchCheck);
} else {
data = tHuifuMchService.addEnterprise(huifuMchCheck);
}
// 判断是否入驻成功
String success = "success";
// 判断是否修改成功
if(success.equals(data)) {
return R.ok();
} else {
return R.fail(ResponseCodesEnum.A0001,data);
}
} else {
// 拒绝
huifuMchCheck.setModifyDate(new Date());
huifuMchCheck.setStatus("3");
tHuifuMchCheckService.updateById(huifuMchCheck);
return R.ok();
}
}
@ApiOperation(value = "审核商户修改")
@GetMapping("/auditUpdateMerchant")
public ResponseModel> auditUpdateMerchant(Long id, String status) throws Exception {
if (id == null) {
return R.fail(ResponseCodesEnum.A0001);
}
// 找到id对应的审核信息
THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getById(id);
if(status.equals("1")) {
// 同意
String data = tHuifuMchService.updateMerchant(huifuMchCheck);
String success = "success";
// 判断是否修改成功
if(success.equals(data)) {
return R.ok();
} else {
return R.fail(ResponseCodesEnum.A0001,data);
}
} else {
// 拒绝
huifuMchCheck.setModifyDate(new Date());
huifuMchCheck.setStatus("3");
tHuifuMchCheckService.updateById(huifuMchCheck);
return R.ok();
}
}
@ApiOperation(value = "上传材料图片")
@PostMapping("/uploadPic")
public ResponseModel> uploadPic(@RequestParam("file") MultipartFile file,
@RequestParam("adminId") Long adminId,
@RequestParam("fileType") String fileType){
if (adminId == null) {
return R.fail(ResponseCodesEnum.A0001);
}
// 找到用户id对应的审核信息
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(THuifuMchCheck::getAdminId,adminId);
THuifuMchCheck tHuifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
if(tHuifuMchCheck == null) {
return R.fail(ResponseCodesEnum.A0206,"还未填写个人资料");
}
String result = "";
if(file != null) {
try{
if(fileType.equals(HuifuConstant.fileType.F02.toString())) {
result = tHuifuMchService.uploadPic(file, HuifuConstant.fileType.F02);
tHuifuMchCheck.setCardFrontPic(result);
} else if (fileType.equals(HuifuConstant.fileType.F03.toString())){
result = tHuifuMchService.uploadPic(file, HuifuConstant.fileType.F03);
tHuifuMchCheck.setCertBackPic(result);
} else if (fileType.equals(HuifuConstant.fileType.F13.toString())) {
result = tHuifuMchService.uploadPic(file, HuifuConstant.fileType.F13);
tHuifuMchCheck.setCardFrontPic(result);
} else if (fileType.equals(HuifuConstant.fileType.F07.toString())) {
result = tHuifuMchService.uploadPic(file, HuifuConstant.fileType.F07);
tHuifuMchCheck.setLicensePic(result);
} else if (fileType.equals(HuifuConstant.fileType.F08.toString())) {
result = tHuifuMchService.uploadPic(file, HuifuConstant.fileType.F08);
tHuifuMchCheck.setRegAcctPic(result);
} else if (fileType.equals(HuifuConstant.fileType.F40.toString())) {
result = tHuifuMchService.uploadPic(file, HuifuConstant.fileType.F40);
tHuifuMchCheck.setLegalCertFrontPic(result);
} else if (fileType.equals(HuifuConstant.fileType.F41.toString())) {
result = tHuifuMchService.uploadPic(file, HuifuConstant.fileType.F41);
tHuifuMchCheck.setLegalCertBackPic(result);
}
} catch (Exception e) {
e.printStackTrace();
}
}
if(StrUtil.isNotEmpty(result)) {
tHuifuMchCheckService.updateById(tHuifuMchCheck);
return R.ok("上传成功").setData(result);
} else {
return R.fail(ResponseCodesEnum.F0000,"上传失败");
}
}
@ApiOperation(value = "提交审核")
@PostMapping("/submitCheck")
public ResponseModel> submitCheck(@RequestBody THuifuMchCheck tHuifuMchCheck){
if (tHuifuMchCheck.getAdminId() == null) {
return R.fail(ResponseCodesEnum.A0001);
}
// 找到用户id对应的审核信息
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(THuifuMchCheck::getAdminId,tHuifuMchCheck.getAdminId());
THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
huifuMchCheck.setStatus("1");
tHuifuMchCheckService.updateById(huifuMchCheck);
return R.ok();
}
@ApiOperation(value = "审核回调")
@PostMapping("/auditNotify")
public ResponseModel> auditNotify(HttpServletRequest request){
String data = request.getParameter("data");
JSONObject jsonObject = JSONObject.parseObject(data);
String auditStatus = jsonObject.getString("audit_status");
String auditDesc = jsonObject.getString("audit_desc");
System.out.println("data:" + data);
System.out.println("audit_status:" + auditStatus);
System.out.println("audit_desc:" + auditDesc);
return R.ok().setData(data);
}
@ApiOperation(value = "获取汇付商户号")
@GetMapping("/getHuifuId")
public ResponseModel getHuifuId(@RequestParam Long adminId) {
if(adminId == null) {
return R.fail(ResponseCodesEnum.A0001);
}
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(THuifuMch::getAdminId,adminId);
THuifuMch huifuMch = tHuifuMchService.getOne(wrapper);
return R.ok(huifuMch);
}
@ApiOperation(value = "获取审核信息")
@GetMapping("/getHuifuMchCheck")
public ResponseModel getHuifuMchCheck(@RequestParam Long adminId) {
if(adminId == null) {
return R.fail(ResponseCodesEnum.A0001);
}
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(THuifuMchCheck::getAdminId,adminId);
THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
return R.ok(huifuMchCheck);
}
@ApiOperation(value = "发送验证码")
@GetMapping("/sendSms")
public ResponseModel> sendSms(@RequestParam Long adminId) throws Exception {
if(adminId == null) {
return R.fail(ResponseCodesEnum.A0001);
}
LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(THuifuMch::getAdminId,adminId);
THuifuMch tHuifuMch = tHuifuMchService.getOne(queryWrapper);
String result = tHuifuMchService.sendSms(tHuifuMch);
if(result.equals("00000000")) {
return R.ok(tHuifuMch);
} else {
return R.fail(ResponseCodesEnum.A0001,"验证码发送失败");
}
}
}