AdapayController.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package com.ym.mec.web.controller;
  2. import com.alibaba.fastjson.JSONArray;
  3. import com.ym.mec.biz.dal.dto.HfMemberDto;
  4. import com.ym.mec.common.entity.HttpResponseResult;
  5. import com.ym.mec.common.exception.BizException;
  6. import com.ym.mec.thirdparty.adapay.ConfigInit;
  7. import com.ym.mec.thirdparty.adapay.CorpMember;
  8. import com.ym.mec.common.controller.BaseController;
  9. import com.ym.mec.thirdparty.adapay.Payment;
  10. import com.ym.mec.util.date.DateUtil;
  11. import com.ym.mec.util.excel.POIUtil;
  12. import io.swagger.annotations.Api;
  13. import io.swagger.annotations.ApiOperation;
  14. import org.apache.commons.io.IOUtils;
  15. import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  16. import org.springframework.security.access.prepost.PreAuthorize;
  17. import org.springframework.web.bind.annotation.GetMapping;
  18. import org.springframework.web.bind.annotation.PostMapping;
  19. import org.springframework.web.bind.annotation.RequestMapping;
  20. import org.springframework.web.bind.annotation.RestController;
  21. import javax.servlet.http.HttpServletResponse;
  22. import java.io.*;
  23. import java.util.*;
  24. @RequestMapping("adapay")
  25. @Api(tags = "汇付服务")
  26. @RestController
  27. public class AdapayController extends BaseController {
  28. @ApiOperation("新建企业用户")
  29. @PostMapping(value = "createMember")
  30. public HttpResponseResult createMember(HfMemberDto member) throws Exception {
  31. File file = new File("/var/tmp/" + member.getMultipartFile().getOriginalFilename());
  32. InputStream inputStream = member.getMultipartFile().getInputStream();
  33. try {
  34. if (!file.getParentFile().exists()) {
  35. file.getParentFile().mkdirs();
  36. }
  37. FileOutputStream fos = new FileOutputStream(file);
  38. IOUtils.copy(inputStream, fos);
  39. HashMap<String, Object> memberParams = new HashMap<>();
  40. memberParams.put("order_no", "corp_mem_" + System.currentTimeMillis());
  41. memberParams.put("member_id", member.getMemberId());
  42. memberParams.put("name", member.getName());
  43. memberParams.put("prov_code", member.getProvCode());
  44. memberParams.put("area_code", member.getAreaCode());
  45. memberParams.put("social_credit_code", member.getSocialCreditCode());
  46. memberParams.put("social_credit_code_expires", member.getSocialCreditCodeExpires());
  47. memberParams.put("business_scope", member.getBusinessScope());
  48. memberParams.put("legal_person", member.getLegalPerson());
  49. memberParams.put("legal_cert_id", member.getLegalCertId());
  50. memberParams.put("legal_cert_id_expires", member.getLegalCertIdExpires());
  51. memberParams.put("legal_mp", member.getLegalMp());
  52. memberParams.put("address", member.getAddress());
  53. memberParams.put("zip_code", member.getZipCode());
  54. memberParams.put("bank_code", member.getBankCode());
  55. memberParams.put("bank_acct_type", "1");
  56. memberParams.put("card_no", member.getCardNo());
  57. memberParams.put("card_name", member.getName());
  58. return succeed(new CorpMember().executeCreateMember(memberParams, file));
  59. } catch (IOException e) {
  60. throw new BizException("文件上传失败,请重试");
  61. } finally {
  62. IOUtils.closeQuietly(inputStream);
  63. file.deleteOnExit();
  64. }
  65. }
  66. @ApiOperation("查询企业用户信息")
  67. @GetMapping(value = "getMemberInfo")
  68. public HttpResponseResult getMemberInfo(String memberId) throws Exception {
  69. return succeed(new CorpMember().executeQueryMember(memberId));
  70. }
  71. @ApiOperation("查询企业用户信息")
  72. @GetMapping(value = "exportBill")
  73. @PreAuthorize("@pcs.hasPermissions('adapay/exportBill')")
  74. public void exportBill(Date startTime, Date endTime, HttpServletResponse response) throws Exception {
  75. long createdGte = startTime.getTime();
  76. long createdLte = DateUtil.getLastSecondWithDay(endTime).getTime();
  77. int pageIndex = 1;
  78. List<Map<String, Object>> data = new ArrayList<>();
  79. while (true) {
  80. Map<String, Object> paymentList = Payment.queryList(pageIndex, createdGte, createdLte);
  81. JSONArray payments = (JSONArray) paymentList.get("payments");
  82. if (!paymentList.get("status").equals("succeeded")) {
  83. throw new BizException("查询失败,请重试");
  84. }
  85. if (payments != null && payments.size() > 0) {
  86. for (Object payment : payments) {
  87. Map<String, Object> paymentMap = (Map<String, Object>) payment;
  88. paymentMap.put("created_time", DateUtil.timeStamp2Date(paymentMap.get("created_time").toString(), null));
  89. if (paymentMap.get("pay_channel").equals("alipay_qr")) {
  90. paymentMap.put("pay_channel", "支付宝正扫");
  91. } else if (paymentMap.get("pay_channel").equals("alipay_wap")) {
  92. paymentMap.put("pay_channel", "支付宝H5支付");
  93. } else {
  94. paymentMap.put("pay_channel", "微信公众号支付");
  95. }
  96. if (paymentMap.get("status").equals("pending")) {
  97. paymentMap.put("status", "交易处理中");
  98. } else if (paymentMap.get("status").equals("succeeded")) {
  99. paymentMap.put("status", "交易成功");
  100. } else {
  101. paymentMap.put("status", "交易失败");
  102. }
  103. JSONArray divMembers = (JSONArray) paymentMap.get("div_members");
  104. for (Object divMember : divMembers) {
  105. Map<String, Object> divMemberMap = (Map<String, Object>) divMember;
  106. divMemberMap.putAll(paymentMap);
  107. if (divMemberMap.get("member_id").equals("0")) {
  108. divMemberMap.put("member_id", ConfigInit.merNo);
  109. }
  110. if (divMemberMap.get("fee_flag").equals("N")) {
  111. divMemberMap.put("fee_amt", "0.00");
  112. }
  113. data.add(divMemberMap);
  114. }
  115. }
  116. }
  117. if (paymentList.get("has_more").equals(false)) {
  118. break;
  119. }
  120. pageIndex++;
  121. }
  122. OutputStream outputStream = response.getOutputStream();
  123. try {
  124. String[] header = {"支付流水号", "订单号", "支付渠道", "交易金额", "商户号", "分润金额", "是否承担手续费", "手续费", "第三方订单号", "支付宝/微信订单号", "交易时间", "交易状态"};
  125. String[] body = {"id", "order_no", "pay_channel", "pay_amt", "member_id", "amount", "fee_flag", "fee_amt", "party_order_id", "out_trans_id", "created_time", "status"};
  126. HSSFWorkbook workbook = POIUtil.exportExcel(header, body, data);
  127. response.setContentType("application/octet-stream");
  128. response.setHeader("Content-Disposition", "attachment;filename=bill-" + DateUtil.getDate(new Date()) + ".xls");
  129. response.flushBuffer();
  130. outputStream = response.getOutputStream();
  131. workbook.write(outputStream);
  132. outputStream.flush();
  133. } catch (Exception e) {
  134. e.printStackTrace();
  135. } finally {
  136. if (outputStream != null) {
  137. try {
  138. outputStream.close();
  139. } catch (IOException e) {
  140. e.printStackTrace();
  141. }
  142. }
  143. }
  144. }
  145. }