MkYpUtil.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. package com.malk.siku.utils;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.malk.utils.UtilHttp;
  4. import com.malk.utils.UtilMap;
  5. import com.malk.utils.UtilToken;
  6. import lombok.extern.slf4j.Slf4j;
  7. import org.apache.commons.codec.digest.DigestUtils;
  8. import org.apache.commons.lang3.StringUtils;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import java.util.HashMap;
  11. import java.util.List;
  12. import java.util.Map;
  13. /**
  14. * 每刻云票
  15. */
  16. @Slf4j
  17. public class MkYpUtil {
  18. //测试环境
  19. private final static String appCode = "AP53EP1SVDS1N9";
  20. private final static String appSecret = "qF4nm3nPnyXYcrWcr5jl";
  21. private final static String host = "pms-uat.maycur.com";
  22. //生产环境
  23. /*private final static String appCode = "AP565SLVOI76UA";
  24. private final static String appSecret = "sGoMNMSbaw4MWLLbUTtPye2k6trtfIs1";
  25. private final static String host = "pms.maycur.com";*/
  26. private final Object $lock = new Object[0];
  27. private static final Long EXPIRES_IN = 1800000L;
  28. public static Map initTokenHeader(){
  29. Map header = new HashMap();
  30. String tokenId = UtilToken.get("invalid-tokenId-mkyp");
  31. String entCode = UtilToken.get("invalid-entCode-mkyp");
  32. if (StringUtils.isNotBlank(tokenId) && StringUtils.isNotBlank(entCode)) {
  33. header.put("tokenId",tokenId);
  34. header.put("entCode",entCode);
  35. return header;
  36. } else {
  37. //每刻云票登录认证
  38. Map body = new HashMap();
  39. long timeMillis = System.currentTimeMillis();
  40. body.put("appCode",appCode);
  41. body.put("secret",getSecret(appCode,appSecret,timeMillis));
  42. body.put("timestamp",timeMillis);
  43. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/common/openapi/auth/login", null, null, body));
  44. Map data = UtilMap.getMap(result, "data");
  45. tokenId = UtilMap.getString(data, "tokenId");
  46. entCode = UtilMap.getString(data, "entCode");
  47. log.info("每刻云票tokenId, {}", tokenId);
  48. log.info("每刻云票entCode, {}", entCode);
  49. UtilToken.put("invalid-tokenId-mkyp", tokenId, EXPIRES_IN);
  50. UtilToken.put("invalid-entCode-mkyp", entCode, EXPIRES_IN);
  51. header.put("tokenId",tokenId);
  52. header.put("entCode",entCode);
  53. return header;
  54. }
  55. }
  56. //开票通知单导入
  57. public static Map application(Object body){
  58. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/ar/openapi/application_oa/batch", MkYpUtil.initTokenHeader(), null, body,(Map) null));
  59. // Map result = (Map) JSONObject.parse(UtilHttp.doRequest(UtilHttp.METHOD.POST, "https://" + host + "/api/ar/openapi/application_oa/batch", MkYpUtil.initTokenHeader(), null, body));
  60. log.info("Result:{}",result);
  61. return result;
  62. }
  63. //保存云票客户
  64. public static Map saveClient(Object body){
  65. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/ar/openapi/client/batch", MkYpUtil.initTokenHeader(), null, body,(Map) null));
  66. log.info("Result:{}",result);
  67. return result;
  68. }
  69. //应收单查询
  70. public static List<Map> searchReceivable(Object body){
  71. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/ar/openapi/receivable_oa/search", MkYpUtil.initTokenHeader(), null, body,(Map) null));
  72. log.info("Result:{}",result);
  73. Map data = UtilMap.getMap(result, "data");
  74. List<Map> data2 = UtilMap.getList(data, "data");
  75. return data2;
  76. }
  77. //员工批量查询接口
  78. public static List<Map> getAllEmployee(){
  79. Map result = (Map) JSONObject.parse(UtilHttp.doPost("https://" + host + "/api/openapi/employee/getAllEmployee", MkYpUtil.initTokenHeader(), null, null,(Map) null));
  80. log.info("Result:{}",result);
  81. List<Map> data = UtilMap.getList(result, "data");
  82. return data;
  83. }
  84. private static String getSecret(String appCode, String appSecret, long timeMillis){
  85. log.info("time:{}",timeMillis);
  86. String s = DigestUtils.sha256Hex(appSecret + ":" + appCode + ":" + timeMillis);
  87. log.info("s:{}",s);
  88. return s;
  89. }
  90. }