TJoinpayMchController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352
  1. package com.szwl.controller;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.bean.copier.CopyOptions;
  4. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  5. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  6. import com.szwl.constant.JoinpayConstant;
  7. import com.szwl.constant.ResponseCodesEnum;
  8. import com.szwl.exception.BizException;
  9. import com.szwl.manager.TokenManager;
  10. import com.szwl.model.bo.R;
  11. import com.szwl.model.bo.ResponseModel;
  12. import com.szwl.model.bo.UserDetailBO;
  13. import com.szwl.model.entity.TAdmin;
  14. import com.szwl.model.entity.TJoinpayMch;
  15. import com.szwl.model.entity.TJoinpayMchCheck;
  16. import com.szwl.model.entity.UserLicense;
  17. import com.szwl.model.param.mchParam;
  18. import com.szwl.model.utils.Base64Util;
  19. import com.szwl.service.TAdminService;
  20. import com.szwl.service.TJoinpayMchCheckService;
  21. import com.szwl.service.TJoinpayMchService;
  22. import com.szwl.service.UserLicenseService;
  23. import io.swagger.annotations.Api;
  24. import io.swagger.annotations.ApiOperation;
  25. import org.apache.commons.lang.StringUtils;
  26. import org.springframework.beans.factory.annotation.Autowired;
  27. import org.springframework.web.bind.annotation.*;
  28. import java.util.Date;
  29. import java.util.List;
  30. import java.util.Optional;
  31. import static com.szwl.constant.ResponseCodesEnum.B0001;
  32. /**
  33. * <p>
  34. * 汇聚支付用户收款信息表 前端控制器
  35. * </p>
  36. *
  37. * @author wuhs
  38. * @since 2022-04-29
  39. */
  40. @Api(value = "/tJoinpayMch", tags = {"汇聚支付"})
  41. @RestController
  42. @RequestMapping("/tJoinpayMch")
  43. public class TJoinpayMchController {
  44. @Autowired
  45. TJoinpayMchService tJoinpayMchService;
  46. @Autowired
  47. TJoinpayMchCheckService tJoinpayMchCheckService;
  48. @Autowired
  49. TAdminService adminService;
  50. @Autowired
  51. TokenManager tokenManager;
  52. @Autowired
  53. private UserLicenseService userLicenseService;
  54. @ApiOperation(value = "查找汇聚收款账户信息")
  55. @PostMapping("/getOne")
  56. public ResponseModel<TJoinpayMch> getOne() {
  57. UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
  58. .orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
  59. String adminId = userDetailBO.getId().toString();
  60. // TAdmin admin = adminService.getById(adminId);
  61. LambdaQueryWrapper<TJoinpayMch> query = Wrappers.lambdaQuery();
  62. query.eq(TJoinpayMch::getAdminId, adminId);
  63. List<TJoinpayMch> list = tJoinpayMchService.list(query);
  64. if (list.size() > 0) {
  65. //已经注册,就要查看是否有提交审核的
  66. LambdaQueryWrapper<TJoinpayMchCheck> query1 = Wrappers.lambdaQuery();
  67. query1.eq(TJoinpayMchCheck::getAdminId, adminId);
  68. List<TJoinpayMchCheck> list1 = tJoinpayMchCheckService.list(query1);
  69. if (list1.size() > 0) {
  70. int i = 0;
  71. for (TJoinpayMchCheck tJoinpayMchCheck : list1) {
  72. if (tJoinpayMchCheck.getType().equals("0") || tJoinpayMchCheck.getType().equals("3")) {
  73. i++;
  74. }
  75. }
  76. if (i == 0) {
  77. return R.ok(list.get(0));
  78. } else {
  79. for (int j = list1.size() - 1; j >= 0; j--) {
  80. if (!list1.get(j).getType().equals("2") & !list1.get(j).getType().equals("1")) {
  81. if (list1.get(j).getType().equals("3")) {
  82. Date data = new Date();
  83. long time = data.getTime();
  84. long updateTime = list1.get(j).getModifyDate().getTime();
  85. if (3 * 24 * 60 * 60 * 1000l > time - updateTime) {
  86. //拒绝的审核,超过3天后不显示
  87. return R.ok(list.get(0));
  88. } else {
  89. return R.ok(list.get(j));
  90. }
  91. }
  92. return R.ok(list.get(j));
  93. }
  94. }
  95. }
  96. } else {
  97. return R.ok(list.get(0));
  98. }
  99. return R.ok(list.get(0));
  100. } else {
  101. return R.fail("尚未注册!");
  102. }
  103. }
  104. @ApiOperation(value = "保存或提交审核")
  105. @PostMapping("/save")
  106. public ResponseModel<?> save(@RequestBody TJoinpayMch tJoinpayMch) {
  107. LambdaQueryWrapper<TJoinpayMch> query = Wrappers.lambdaQuery();
  108. query.eq(TJoinpayMch::getAdminId, tJoinpayMch.getAdminId());
  109. TJoinpayMch joinpayMch = tJoinpayMchService.getOne(query);
  110. tJoinpayMch.setCreateDate(new Date());
  111. tJoinpayMch.setModifyDate(new Date());
  112. if (joinpayMch!= null) {
  113. //已有,属于第二次提交信息,
  114. TJoinpayMch mch = joinpayMch;
  115. //提交并修改
  116. if (StringUtils.isNotEmpty(mch.getApproveStatus())) {
  117. if (!mch.getApproveStatus().equals("审核通过")) {
  118. if (!StringUtils.isEmpty(tJoinpayMch.getLegalPerson())) {
  119. mch.setLegalPerson(tJoinpayMch.getLegalPerson());
  120. }
  121. if (tJoinpayMch.getIdCardNo() != null) {
  122. mch.setIdCardNo(tJoinpayMch.getIdCardNo());
  123. }
  124. if (!StringUtils.isEmpty(tJoinpayMch.getLicenseNo())) {
  125. mch.setLicenseNo(tJoinpayMch.getLicenseNo());
  126. }
  127. }
  128. }
  129. if (!StringUtils.isEmpty(tJoinpayMch.getBankAccountName())) {
  130. mch.setBankAccountName(tJoinpayMch.getBankAccountName());
  131. }
  132. if (!StringUtils.isEmpty(tJoinpayMch.getBankAccountNo())) {
  133. mch.setBankAccountNo(tJoinpayMch.getBankAccountNo());
  134. }
  135. if (!StringUtils.isEmpty(tJoinpayMch.getBankChannelNo())) {
  136. mch.setBankChannelNo(tJoinpayMch.getBankChannelNo());
  137. }
  138. if (!StringUtils.isEmpty(tJoinpayMch.getBusiContactName())) {
  139. mch.setBusiContactName(tJoinpayMch.getBusiContactName());
  140. }
  141. if (!StringUtils.isEmpty(tJoinpayMch.getBusiContactMobileNo())) {
  142. mch.setBusiContactMobileNo(tJoinpayMch.getBusiContactMobileNo());
  143. }
  144. if (!StringUtils.isEmpty(tJoinpayMch.getPhoneNo())) {
  145. mch.setPhoneNo(tJoinpayMch.getPhoneNo());
  146. }
  147. if (mch.getSettMode() != null) {
  148. mch.setSettMode(tJoinpayMch.getSettMode());
  149. }
  150. if (mch.getRiskDay() != null) {
  151. mch.setRiskDay(tJoinpayMch.getRiskDay());
  152. }
  153. if (tJoinpayMch.getSettDateType() != null) {
  154. mch.setSettDateType(tJoinpayMch.getSettDateType());
  155. }
  156. String s = tJoinpayMchService.updateMch(mch);
  157. if (s.equals("ok")) {
  158. tJoinpayMchService.updateById(mch);
  159. }
  160. return R.ok(s);
  161. } else {
  162. //没有,直接保存
  163. tJoinpayMch.setStep("0");
  164. String result = tJoinpayMchService.createMch(tJoinpayMch);
  165. if (result.equals("ok")) {
  166. return R.ok(tJoinpayMch);
  167. } else {
  168. return R.fail(ResponseCodesEnum.C0001, result);
  169. }
  170. }
  171. }
  172. @ApiOperation(value = "签约")
  173. @GetMapping("/altMchSign")
  174. public ResponseModel<?> altMchSign(String id) {
  175. TJoinpayMch mch = tJoinpayMchService.getById(id);
  176. //签定协议
  177. String str = tJoinpayMchService.altMchSign(mch);
  178. return R.ok(str);
  179. }
  180. @ApiOperation(value = "上传图片")
  181. @PostMapping("/sentImage")
  182. public ResponseModel<?> sentImage(@RequestBody mchParam tJoinpayMch) {
  183. TJoinpayMch mch = tJoinpayMchService.getById(tJoinpayMch.getId());
  184. if (tJoinpayMch.getType().equals("0")) {
  185. //对公
  186. if (StringUtils.isEmpty(tJoinpayMch.getCardPositive()) || StringUtils.isEmpty(tJoinpayMch.getCardNegative()) || StringUtils.isEmpty(tJoinpayMch.getTradeLicence())) {
  187. return R.fail("图片不能为空");
  188. }
  189. String str = tJoinpayMchService.sendCardBusiness(mch, tJoinpayMch.getCardPositive(), tJoinpayMch.getCardNegative(), tJoinpayMch.getTradeLicence(), tJoinpayMch.getOpenAccountLicence(), tJoinpayMch.getStatus());
  190. return R.ok(str);
  191. }
  192. if (tJoinpayMch.getType().equals("1")) {
  193. //个人
  194. if (StringUtils.isEmpty(tJoinpayMch.getCardPositive()) || StringUtils.isEmpty(tJoinpayMch.getCardNegative())) {
  195. return R.fail("图片不能为空");
  196. }
  197. String str = tJoinpayMchService.sendCard(mch, tJoinpayMch.getCardPositive(), tJoinpayMch.getCardNegative(), tJoinpayMch.getStatus());
  198. return R.ok(str);
  199. }
  200. return R.ok();
  201. }
  202. @ApiOperation(value = "获取提现信息")
  203. @GetMapping("/getMch")
  204. public ResponseModel<TJoinpayMch> getMch(@RequestParam String id) {
  205. TAdmin admin = adminService.getById(id);
  206. if (admin.getType() <= 1) {
  207. //公司
  208. TJoinpayMch tJoinpayMch = new TJoinpayMch();
  209. tJoinpayMch.setType("0");
  210. return R.ok(tJoinpayMch);
  211. } else {
  212. //商家
  213. LambdaQueryWrapper<TJoinpayMch> query = Wrappers.lambdaQuery();
  214. query.eq(TJoinpayMch::getAdminId, Long.valueOf(id));
  215. TJoinpayMch tJoinpayMch = tJoinpayMchService.getOne(query);
  216. if (tJoinpayMch == null) {
  217. return R.ok(null);
  218. }
  219. tJoinpayMchService.refreshMch(tJoinpayMch);
  220. tJoinpayMchService.refreshMyAccount(tJoinpayMch);
  221. TJoinpayMch joinPayMch = tJoinpayMchService.getById(tJoinpayMch.getId());
  222. return R.ok(joinPayMch);
  223. }
  224. }
  225. @ApiOperation(value = "商户入网")
  226. @PostMapping("/createMch")
  227. public ResponseModel<?> createMch(@RequestBody TJoinpayMch joinpayMch) {
  228. // 步骤
  229. Integer steps = joinpayMch.getBindingSteps();
  230. LambdaQueryWrapper<TJoinpayMch> query = Wrappers.lambdaQuery();
  231. query.eq(TJoinpayMch::getAdminId, joinpayMch.getAdminId());
  232. TJoinpayMch tJoinpayMch = tJoinpayMchService.getOne(query);
  233. switch (steps) {
  234. case 0:
  235. // 提交证件信息
  236. joinpayMch.setBindingSteps(1);
  237. if (tJoinpayMch == null) {
  238. // 没有,直接保存
  239. joinpayMch.setCreateDate(new Date());
  240. joinpayMch.setModifyDate(new Date());
  241. tJoinpayMchService.save(joinpayMch);
  242. } else {
  243. // 有,更新
  244. joinpayMch.setModifyDate(new Date());
  245. BeanUtil.copyProperties(joinpayMch, tJoinpayMch,
  246. CopyOptions.create()
  247. .setIgnoreNullValue(true) // 忽略源对象中的 null 值
  248. .setIgnoreError(true) // 忽略类型不匹配等错误
  249. );
  250. tJoinpayMchService.updateById(tJoinpayMch);
  251. }
  252. return R.ok();
  253. case 1:
  254. // 提交结算信息
  255. tJoinpayMch.setBankAccountType(joinpayMch.getBankAccountType());
  256. tJoinpayMch.setBankAccountName(joinpayMch.getBankAccountName());
  257. tJoinpayMch.setBankAccountNo(joinpayMch.getBankAccountNo());
  258. tJoinpayMch.setBankChannelNo(joinpayMch.getBankChannelNo());
  259. tJoinpayMch.setSettMode(joinpayMch.getSettMode());
  260. tJoinpayMch.setBindingSteps(2);
  261. tJoinpayMch.setModifyDate(new Date());
  262. tJoinpayMchService.updateById(tJoinpayMch);
  263. return R.ok();
  264. case 2:
  265. // 提交信息审核
  266. tJoinpayMch.setModifyDate(new Date());
  267. tJoinpayMch.setBindingSteps(3);
  268. String result = "";
  269. String altMchNo = tJoinpayMch.getAltMchNo();
  270. if (StringUtils.isEmpty(tJoinpayMch.getAltMchNo())) {
  271. // 没入网,入网接口
  272. result = tJoinpayMchService.newCreateMch(tJoinpayMch);
  273. } else {
  274. // 已入网有,修改接口
  275. result = tJoinpayMchService.newUpdateMch(tJoinpayMch);
  276. }
  277. if (JoinpayConstant.biz_code1.equals(result)) {
  278. return R.ok();
  279. }
  280. return R.fail(result);
  281. }
  282. return R.fail(B0001);
  283. }
  284. @ApiOperation("上传照片审核")
  285. @PostMapping("/uploadPhotos")
  286. public ResponseModel<?> uploadPhotos(@RequestBody TJoinpayMch tJoinpayMch) {
  287. UserLicense userLicense = userLicenseService.getById(tJoinpayMch.getAdminId());
  288. Integer altMerchantType = tJoinpayMch.getAltMerchantType();
  289. TJoinpayMch mch = tJoinpayMchService.getById(tJoinpayMch.getId());
  290. String cardNegative = Base64Util.imgToBase64(userLicense.getIdCardFront());
  291. String cardPositive = Base64Util.imgToBase64(userLicense.getIdCardBack());
  292. if (JoinpayConstant.ALT_MERCHANT_TYPE_ENTERPRISE == altMerchantType) {
  293. //对公
  294. String tradeLicence = Base64Util.imgToBase64(userLicense.getBusinessLicense());
  295. String openAccountLicence = Base64Util.imgToBase64(userLicense.getAccountLicense());
  296. String str = tJoinpayMchService.sendCardBusiness(mch, cardPositive, cardNegative, tradeLicence, openAccountLicence, tJoinpayMch.getStatus());
  297. return R.ok(str);
  298. }
  299. if (JoinpayConstant.ALT_MERCHANT_TYPE_PERSON == altMerchantType) {
  300. //个人
  301. String str = tJoinpayMchService.sendCard(mch, cardPositive, cardNegative, tJoinpayMch.getStatus());
  302. return R.ok(str);
  303. }
  304. return R.ok();
  305. }
  306. @ApiOperation("更新商户认证状态")
  307. @PostMapping("/updateMchApproveStatus")
  308. public ResponseModel<?> updateMchApproveStatus(@RequestBody TJoinpayMch mch) {
  309. TJoinpayMch joinpayMch = tJoinpayMchService.getById(mch.getId());
  310. String authStauts = tJoinpayMchService.updateMchApproveStatus(joinpayMch);
  311. return R.ok(authStauts);
  312. }
  313. @ApiOperation(value = "更新图片审核状态")
  314. @PostMapping("/updateApproveStatus")
  315. public ResponseModel<?> updateApproveStatus(@RequestBody TJoinpayMch mch) {
  316. TJoinpayMch byId = tJoinpayMchService.getById(mch.getId());
  317. String str = tJoinpayMchService.updateApproveStatus(byId);
  318. return R.ok(str);
  319. }
  320. @ApiOperation("更新签约状态")
  321. @PostMapping("/updateMchSignStatus")
  322. public ResponseModel<?> updateMchSignStatus(@RequestBody TJoinpayMch mch) {
  323. TJoinpayMch joinpayMch = tJoinpayMchService.getById(mch.getId());
  324. String signStatus = tJoinpayMchService.updateMchSignStatus(joinpayMch);
  325. return R.ok(signStatus);
  326. }
  327. }