THuifuMchController.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351
  1. package com.szwl.controller;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.bean.copier.CopyOptions;
  4. import cn.hutool.core.util.StrUtil;
  5. import com.alibaba.fastjson.JSONObject;
  6. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  7. import com.baomidou.mybatisplus.core.toolkit.Wrappers;
  8. import com.huifu.bspay.sdk.opps.core.exception.BasePayException;
  9. import com.szwl.constant.HuifuConstant;
  10. import com.szwl.constant.JoinpayConstant;
  11. import com.szwl.constant.ResponseCodesEnum;
  12. import com.szwl.exception.BizException;
  13. import com.szwl.manager.TokenManager;
  14. import com.szwl.model.bo.R;
  15. import com.szwl.model.bo.ResponseModel;
  16. import com.szwl.model.bo.UserDetailBO;
  17. import com.szwl.model.entity.THuifuMch;
  18. import com.szwl.model.entity.THuifuMchCheck;
  19. import com.szwl.model.entity.TJoinpayMch;
  20. import com.szwl.model.param.UploadParms;
  21. import com.szwl.service.THuifuMchCheckService;
  22. import com.szwl.service.THuifuMchService;
  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 org.springframework.web.multipart.MultipartFile;
  29. import javax.servlet.http.HttpServletRequest;
  30. import javax.validation.Valid;
  31. import java.util.Date;
  32. import java.util.Optional;
  33. import static com.szwl.constant.ResponseCodesEnum.B0001;
  34. /**
  35. * <p>
  36. * 前端控制器
  37. * </p>
  38. *
  39. * @author wuhs
  40. * @since 2023-07-12
  41. */
  42. @Api(value = "/tHuifuMch", tags = {"汇付支付"})
  43. @RestController
  44. @RequestMapping("/tHuifuMch")
  45. public class THuifuMchController {
  46. @Autowired
  47. private THuifuMchService tHuifuMchService;
  48. @Autowired
  49. private THuifuMchCheckService tHuifuMchCheckService;
  50. @ApiOperation(value = "商户入驻申请")
  51. @PostMapping("/addApplication")
  52. public ResponseModel<?> addApplication(@Valid @RequestBody THuifuMchCheck tHuifuMchCheck) {
  53. if (tHuifuMchCheck.getAdminId() == null) {
  54. return R.fail(ResponseCodesEnum.A0001);
  55. }
  56. LambdaQueryWrapper<THuifuMchCheck> queryWrapper = new LambdaQueryWrapper<>();
  57. queryWrapper.eq(THuifuMchCheck::getAdminId, tHuifuMchCheck.getAdminId());
  58. THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
  59. if (huifuMchCheck != null) {
  60. tHuifuMchCheck.setModifyDate(new Date());
  61. tHuifuMchCheck.setStatus("0");
  62. tHuifuMchCheckService.updateById(tHuifuMchCheck);
  63. return R.ok();
  64. }
  65. tHuifuMchCheck.setCreateDate(new Date());
  66. tHuifuMchCheck.setModifyDate(new Date());
  67. tHuifuMchCheck.setStatus("0");
  68. tHuifuMchCheckService.save(tHuifuMchCheck);
  69. return R.ok();
  70. }
  71. @ApiOperation(value = "商户入网")
  72. @PostMapping("/createMch")
  73. public ResponseModel<?> createMch(@RequestBody THuifuMchCheck newHuifuMchCheck) {
  74. // 步骤
  75. Integer steps = newHuifuMchCheck.getBindingSteps();
  76. LambdaQueryWrapper<THuifuMchCheck> query = Wrappers.lambdaQuery();
  77. query.eq(THuifuMchCheck::getAdminId, newHuifuMchCheck.getAdminId());
  78. THuifuMchCheck tHuifuMchCheck = tHuifuMchCheckService.getOne(query);
  79. switch (steps) {
  80. case 0:
  81. // 提交证件信息
  82. newHuifuMchCheck.setBindingSteps(1);
  83. if (tHuifuMchCheck == null) {
  84. // 没有,直接保存
  85. newHuifuMchCheck.setCreateDate(new Date());
  86. newHuifuMchCheck.setModifyDate(new Date());
  87. tHuifuMchCheckService.save(newHuifuMchCheck);
  88. } else {
  89. // 有,更新
  90. tHuifuMchCheck.setModifyDate(new Date());
  91. tHuifuMchCheck.setRegName(newHuifuMchCheck.getRegName());
  92. tHuifuMchCheck.setType(newHuifuMchCheck.getType());
  93. tHuifuMchCheck.setName(newHuifuMchCheck.getName());
  94. tHuifuMchCheck.setPhone(newHuifuMchCheck.getPhone());
  95. tHuifuMchCheck.setCertNo(newHuifuMchCheck.getCertNo());
  96. tHuifuMchCheck.setCertValidityType(newHuifuMchCheck.getCertValidityType());
  97. tHuifuMchCheck.setCertBeginDate(newHuifuMchCheck.getCertBeginDate());
  98. tHuifuMchCheck.setCertEndDate(newHuifuMchCheck.getCertEndDate());
  99. tHuifuMchCheck.setProvId(newHuifuMchCheck.getProvId());
  100. tHuifuMchCheck.setAreaId(newHuifuMchCheck.getAreaId());
  101. tHuifuMchCheck.setDistrictId(newHuifuMchCheck.getDistrictId());
  102. tHuifuMchCheck.setLicenseValidityType(newHuifuMchCheck.getLicenseValidityType());
  103. tHuifuMchCheck.setLicenseCode(newHuifuMchCheck.getLicenseCode());
  104. tHuifuMchCheck.setLicenseBeginDate(newHuifuMchCheck.getLicenseBeginDate());
  105. tHuifuMchCheck.setBindingSteps(1);
  106. tHuifuMchCheckService.updateById(tHuifuMchCheck);
  107. }
  108. return R.ok();
  109. case 1:
  110. // 提交结算信息
  111. tHuifuMchCheck.setCardType(newHuifuMchCheck.getCardType());
  112. tHuifuMchCheck.setCardName(newHuifuMchCheck.getCardName());
  113. tHuifuMchCheck.setCardNo(newHuifuMchCheck.getCardNo());
  114. tHuifuMchCheck.setBranchCode(newHuifuMchCheck.getBranchCode());
  115. tHuifuMchCheck.setBankCode(newHuifuMchCheck.getBankCode());
  116. tHuifuMchCheck.setCardProvId(newHuifuMchCheck.getCardProvId());
  117. tHuifuMchCheck.setCardAreaId(newHuifuMchCheck.getCardAreaId());
  118. tHuifuMchCheck.setSettType(newHuifuMchCheck.getSettType());
  119. tHuifuMchCheck.setBindingSteps(2);
  120. tHuifuMchCheck.setModifyDate(new Date());
  121. tHuifuMchCheckService.updateById(tHuifuMchCheck);
  122. return R.ok();
  123. case 2:
  124. // 提交信息审核
  125. tHuifuMchCheck.setModifyDate(new Date());
  126. tHuifuMchCheck.setBindingSteps(3);
  127. String result = "";
  128. String huifuId = tHuifuMchCheck.getHuifuId();
  129. try {
  130. if (StringUtils.isEmpty(huifuId)) {
  131. // 没入网,创建接口
  132. result = tHuifuMchService.openAccount(tHuifuMchCheck);
  133. } else {
  134. // 已入网,修改接口
  135. result = HuifuConstant.SUCCESS;
  136. tHuifuMchCheck.setStatus("4");
  137. tHuifuMchCheckService.updateById(tHuifuMchCheck);
  138. }
  139. } catch (Exception e) {
  140. throw new RuntimeException(e);
  141. }
  142. if (HuifuConstant.SUCCESS.equals(result)) {
  143. return R.ok();
  144. }
  145. return R.fail(result);
  146. }
  147. return R.fail(B0001);
  148. }
  149. @ApiOperation(value = "汇付业务开通(签约)")
  150. @GetMapping("/signCon")
  151. public ResponseModel<?> signCon(Long id) throws Exception {
  152. // 找到用户id对应的审核信息
  153. THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getById(id);
  154. String data = tHuifuMchService.openBusiness(huifuMchCheck);
  155. // 判断是否开户成功或业务开通成功
  156. if (data.equals(HuifuConstant.SUCCESS)) {
  157. return R.ok();
  158. }
  159. return R.fail(ResponseCodesEnum.A0001, data);
  160. }
  161. @ApiOperation("修改结算方式")
  162. @PostMapping("/updateSettlement")
  163. public ResponseModel<?> updateSettlement(@RequestBody THuifuMchCheck huifuMchCheck) {
  164. // 找到用户id对应的审核信息
  165. String result = "";
  166. try {
  167. LambdaQueryWrapper<THuifuMchCheck> query = Wrappers.lambdaQuery();
  168. query.eq(THuifuMchCheck::getAdminId, huifuMchCheck.getAdminId());
  169. THuifuMchCheck tHuifuMchCheck = tHuifuMchCheckService.getOne(query);
  170. tHuifuMchCheck.setSettType(huifuMchCheck.getSettType());
  171. result = tHuifuMchService.changeSettleType(tHuifuMchCheck);
  172. if (result.equals(HuifuConstant.SUCCESS)) {
  173. return R.ok();
  174. }
  175. } catch (Exception e) {
  176. throw new RuntimeException(e);
  177. }
  178. return R.fail(ResponseCodesEnum.A0001, result);
  179. }
  180. @ApiOperation(value = "汇付用户开户或业务开通")
  181. @GetMapping("/openAccount")
  182. public ResponseModel<?> openAccount(Long id) throws Exception {
  183. if (id == null) {
  184. return R.fail(ResponseCodesEnum.A0001);
  185. }
  186. // 找到用户id对应的审核信息
  187. THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getById(id);
  188. String data = "";
  189. // 用户开户或业务开通
  190. if (huifuMchCheck.getStatus().equals("0")) {
  191. data = tHuifuMchService.openAccount(huifuMchCheck);
  192. } else if (huifuMchCheck.getStatus().equals("1") || huifuMchCheck.getStatus().equals("4")) {
  193. data = tHuifuMchService.openBusiness(huifuMchCheck);
  194. } else {
  195. return R.fail(ResponseCodesEnum.A0001);
  196. }
  197. // 判断是否开户成功或业务开通成功
  198. if (data.equals(HuifuConstant.SUCCESS)) {
  199. return R.ok();
  200. } else {
  201. return R.fail(ResponseCodesEnum.A0001, data);
  202. }
  203. }
  204. @ApiOperation("商户信息查询")
  205. @GetMapping("/getHuifuMch")
  206. public ResponseModel<?> getHuifuMch(Long adminId) {
  207. LambdaQueryWrapper<THuifuMchCheck> queryWrapper = new LambdaQueryWrapper<>();
  208. queryWrapper.eq(THuifuMchCheck::getAdminId, adminId);
  209. THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
  210. String result = "";
  211. if (huifuMchCheck != null) {
  212. String huifuId = huifuMchCheck.getHuifuId();
  213. if (StringUtils.isNotEmpty(huifuId)) {
  214. try {
  215. result = tHuifuMchService.getInfo(huifuMchCheck);
  216. } catch (BasePayException e) {
  217. throw new RuntimeException(e);
  218. }
  219. }
  220. }
  221. return R.ok(result);
  222. }
  223. @ApiOperation(value = "商户增加取现业务")
  224. @GetMapping("/addCashBusiness")
  225. public ResponseModel<?> addCashBusiness(Long adminId) {
  226. LambdaQueryWrapper<THuifuMchCheck> queryWrapper = new LambdaQueryWrapper<>();
  227. queryWrapper.eq(THuifuMchCheck::getAdminId, adminId);
  228. THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
  229. String result = "";
  230. if (huifuMchCheck != null) {
  231. try {
  232. result = tHuifuMchService.addCashBusiness(huifuMchCheck);
  233. } catch (Exception e) {
  234. throw new RuntimeException(e);
  235. }
  236. }
  237. return R.ok(result);
  238. }
  239. @ApiOperation(value = "商户修改申请")
  240. @PostMapping("/updateMerchant")
  241. public ResponseModel<?> updateMerchant(@Valid @RequestBody THuifuMchCheck tHuifuMchCheck) {
  242. if (tHuifuMchCheck.getAdminId() == null) {
  243. return R.fail(ResponseCodesEnum.A0001);
  244. }
  245. // 排除掉不复制的属性
  246. String[] ignoreProperties = {"id", "createDate", "adminId", "huifuId"};
  247. LambdaQueryWrapper<THuifuMchCheck> queryWrapper = new LambdaQueryWrapper<>();
  248. queryWrapper.eq(THuifuMchCheck::getAdminId, tHuifuMchCheck.getAdminId());
  249. THuifuMchCheck newHuifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
  250. if (newHuifuMchCheck.getStatus().equals("3")) {
  251. BeanUtil.copyProperties(tHuifuMchCheck, newHuifuMchCheck, ignoreProperties);
  252. newHuifuMchCheck.setStatus("1");
  253. } else {
  254. BeanUtil.copyProperties(tHuifuMchCheck, newHuifuMchCheck, ignoreProperties);
  255. newHuifuMchCheck.setStatus("4");
  256. }
  257. newHuifuMchCheck.setCreateDate(new Date());
  258. newHuifuMchCheck.setModifyDate(new Date());
  259. tHuifuMchCheckService.updateById(newHuifuMchCheck);
  260. return R.ok();
  261. }
  262. @ApiOperation(value = "提交审核")
  263. @PostMapping("/submitCheck")
  264. public ResponseModel<?> submitCheck(@RequestBody THuifuMchCheck tHuifuMchCheck) {
  265. if (tHuifuMchCheck.getAdminId() == null) {
  266. return R.fail(ResponseCodesEnum.A0001);
  267. }
  268. // 找到用户id对应的审核信息
  269. LambdaQueryWrapper<THuifuMchCheck> queryWrapper = new LambdaQueryWrapper<>();
  270. queryWrapper.eq(THuifuMchCheck::getAdminId, tHuifuMchCheck.getAdminId());
  271. THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
  272. huifuMchCheck.setStatus("1");
  273. tHuifuMchCheckService.updateById(huifuMchCheck);
  274. return R.ok();
  275. }
  276. @ApiOperation(value = "审核回调")
  277. @PostMapping("/auditNotify")
  278. public ResponseModel<?> auditNotify(HttpServletRequest request) {
  279. String data = request.getParameter("data");
  280. JSONObject jsonObject = JSONObject.parseObject(data);
  281. String auditStatus = jsonObject.getString("audit_status");
  282. String auditDesc = jsonObject.getString("audit_desc");
  283. return R.ok().setData(data);
  284. }
  285. @ApiOperation(value = "获取汇付商户号")
  286. @GetMapping("/getHuifuId")
  287. public ResponseModel<THuifuMch> getHuifuId(@RequestParam Long adminId) {
  288. if (adminId == null) {
  289. return R.fail(ResponseCodesEnum.A0001);
  290. }
  291. LambdaQueryWrapper<THuifuMch> wrapper = new LambdaQueryWrapper<>();
  292. wrapper.eq(THuifuMch::getAdminId, adminId);
  293. THuifuMch huifuMch = tHuifuMchService.getOne(wrapper);
  294. return R.ok(huifuMch);
  295. }
  296. @ApiOperation(value = "获取审核信息")
  297. @GetMapping("/getHuifuMchCheck")
  298. public ResponseModel<THuifuMchCheck> getHuifuMchCheck(@RequestParam Long adminId) {
  299. if (adminId == null) {
  300. return R.fail(ResponseCodesEnum.A0001);
  301. }
  302. LambdaQueryWrapper<THuifuMchCheck> queryWrapper = new LambdaQueryWrapper<>();
  303. queryWrapper.eq(THuifuMchCheck::getAdminId, adminId);
  304. THuifuMchCheck huifuMchCheck = tHuifuMchCheckService.getOne(queryWrapper);
  305. return R.ok(huifuMchCheck);
  306. }
  307. @ApiOperation(value = "更新签约状态")
  308. @PostMapping("/updateConStat")
  309. public ResponseModel<?> updateConStat(@RequestBody THuifuMchCheck huifuMchCheck) throws BasePayException {
  310. THuifuMchCheck tHuifuMchCheck = tHuifuMchCheckService.getById(huifuMchCheck.getId());
  311. String str = tHuifuMchService.updateConStat(tHuifuMchCheck);
  312. return R.ok(str);
  313. }
  314. @ApiOperation(value = "查询余额")
  315. @GetMapping("/checkBalance")
  316. public ResponseModel<?> checkBalance(@RequestParam Long adminId) throws Exception {
  317. if (adminId == null) {
  318. return R.fail(ResponseCodesEnum.A0001);
  319. }
  320. LambdaQueryWrapper<THuifuMch> queryWrapper = new LambdaQueryWrapper<>();
  321. queryWrapper.eq(THuifuMch::getAdminId, adminId);
  322. THuifuMch tHuifuMch = tHuifuMchService.getOne(queryWrapper);
  323. String result = tHuifuMchService.checkBalance(tHuifuMch.getHuifuId());
  324. return R.ok(result);
  325. }
  326. }