InvokeCallParams.java 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. package com.dderp.common.entity.base;
  2. import com.dderp.common.entity.site.ERPTokenUser;
  3. import com.dySweetFishPlugin.tool.crypto.EncryptUtil;
  4. import com.sweetfish.convert.json.JsonConvert;
  5. import com.sweetfish.source.PageFlipper;
  6. import com.sweetfish.util.AnyValue;
  7. import com.sweetfish.util.Comment;
  8. import org.apache.commons.lang3.StringUtils;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. public class InvokeCallParams extends BaseEntity {
  12. @Comment("业务名称")
  13. private String businessMethod;
  14. @Comment("时间戳")
  15. private String timeStamp;
  16. /**
  17. * json字符串
  18. * 这里针对业务类的数据直接用json字符串,是当前各平台的通用做法,之前验签如果双发使用了不同的序列化工具,导致有的null的字段没有带上,序列化之后的结果会不同,验签就出现问题
  19. * 现在直接统一Params即可
  20. */
  21. @Comment("参数")
  22. private String params;
  23. /**
  24. * 附加字符串,params不够用的情况下,增加附件参数
  25. */
  26. @Comment("附加参数")
  27. private AnyValue attach;
  28. /**
  29. * 分页对象,这里还是把分页信息从params里面拆分出来,减少脚本中转换的次数
  30. */
  31. @Comment("分页对象")
  32. private PageFlipper page;
  33. /**
  34. * 客户编号,由我们提供
  35. */
  36. @Comment("客户编号")
  37. private String clientCode;
  38. /**
  39. * md5串,字符串由
  40. * <ul>clientCode=xxx&params=xxx&timestamp=xxx</ul>
  41. * 组成,所有参数均使用此格式,避免扩展麻烦,至于具体的业务,则由params的json字符串定义即可
  42. */
  43. @Comment("md5串")
  44. private String digest;
  45. @Comment("token")
  46. private String token;
  47. //下面的字段由服务端赋值
  48. @Comment("操作人")
  49. private ERPTokenUser currentUser;
  50. @Comment("分库")
  51. private String dataSourceId;
  52. @Comment("分表")
  53. private long supplierCode;
  54. @Comment("json转换器")
  55. private final Map<String, JsonConvert> jsonConvertMap = new HashMap<>();
  56. public InvokeCallParams() {
  57. }
  58. private InvokeCallParams(Builder builder) {
  59. setBusinessMethod(builder.businessMethod);
  60. setTimeStamp(builder.timeStamp);
  61. setParams(builder.params);
  62. setAttach(builder.attach);
  63. setPage(builder.page);
  64. setClientCode(builder.clientCode);
  65. setDigest(builder.digest);
  66. setToken(builder.token);
  67. setCurrentUser(builder.currentUser);
  68. setDataSourceId(builder.dataSourceId);
  69. setSupplierCode(builder.supplierCode);
  70. }
  71. public static Builder newBuilder() {
  72. return new Builder();
  73. }
  74. public boolean verifySign(String key) {
  75. String params = "businessMethod=" + this.businessMethod + "&clientCode=" + this.clientCode + "&params=" + this.params + "&timestamp=" + this.timeStamp + "&key=" + key;
  76. String newDigest = EncryptUtil.md5Digest(params);
  77. return StringUtils.equals(newDigest.toUpperCase(), digest);
  78. }
  79. public InvokeCallParams generateSign(String key) {
  80. String params = "businessMethod=" + this.businessMethod + "&clientCode=" + this.clientCode + "&params=" + this.params + "&timestamp=" + this.timeStamp + "&key=" + key;
  81. this.digest = EncryptUtil.md5Digest(params);
  82. return this;
  83. }
  84. public InvokeCallParams addConvert(String name, JsonConvert jsonConvert) {
  85. this.jsonConvertMap.put(name, jsonConvert);
  86. return this;
  87. }
  88. public String getBusinessMethod() {
  89. return businessMethod;
  90. }
  91. public void setBusinessMethod(String businessMethod) {
  92. this.businessMethod = businessMethod;
  93. }
  94. public String getTimeStamp() {
  95. return timeStamp;
  96. }
  97. public void setTimeStamp(String timeStamp) {
  98. this.timeStamp = timeStamp;
  99. }
  100. public String getParams() {
  101. return params;
  102. }
  103. public void setParams(String params) {
  104. this.params = params;
  105. }
  106. public ERPTokenUser getCurrentUser() {
  107. return currentUser;
  108. }
  109. public void setCurrentUser(ERPTokenUser currentUser) {
  110. this.currentUser = currentUser;
  111. }
  112. public String getDataSourceId() {
  113. return dataSourceId;
  114. }
  115. public void setDataSourceId(String dataSourceId) {
  116. this.dataSourceId = dataSourceId;
  117. }
  118. public long getSupplierCode() {
  119. return supplierCode;
  120. }
  121. public void setSupplierCode(long supplierCode) {
  122. this.supplierCode = supplierCode;
  123. }
  124. public Map<String, JsonConvert> getJsonConvertMap() {
  125. return jsonConvertMap;
  126. }
  127. public String getClientCode() {
  128. return clientCode;
  129. }
  130. public void setClientCode(String clientCode) {
  131. this.clientCode = clientCode;
  132. }
  133. public String getDigest() {
  134. return digest;
  135. }
  136. public void setDigest(String digest) {
  137. this.digest = digest;
  138. }
  139. public PageFlipper getPage() {
  140. return page;
  141. }
  142. public void setPage(PageFlipper page) {
  143. this.page = page;
  144. }
  145. public String getToken() {
  146. return token;
  147. }
  148. public void setToken(String token) {
  149. this.token = token;
  150. }
  151. public AnyValue getAttach() {
  152. return attach;
  153. }
  154. public void setAttach(AnyValue attach) {
  155. this.attach = attach;
  156. }
  157. public static final class Builder {
  158. private String businessMethod;
  159. private String timeStamp;
  160. private String params;
  161. private AnyValue attach;
  162. private PageFlipper page;
  163. private String clientCode;
  164. private String digest;
  165. private String token;
  166. private ERPTokenUser currentUser;
  167. private String dataSourceId;
  168. private long supplierCode;
  169. private Builder() {
  170. }
  171. public Builder businessMethod(String val) {
  172. businessMethod = val;
  173. return this;
  174. }
  175. public Builder timeStamp(String val) {
  176. timeStamp = val;
  177. return this;
  178. }
  179. public Builder params(String val) {
  180. params = val;
  181. return this;
  182. }
  183. public Builder attach(AnyValue val) {
  184. attach = val;
  185. return this;
  186. }
  187. public Builder page(PageFlipper val) {
  188. page = val;
  189. return this;
  190. }
  191. public Builder clientCode(String val) {
  192. clientCode = val;
  193. return this;
  194. }
  195. public Builder digest(String val) {
  196. digest = val;
  197. return this;
  198. }
  199. public Builder token(String val) {
  200. token = val;
  201. return this;
  202. }
  203. public Builder currentUser(ERPTokenUser val) {
  204. currentUser = val;
  205. return this;
  206. }
  207. public Builder dataSourceId(String val) {
  208. dataSourceId = val;
  209. return this;
  210. }
  211. public Builder supplierCode(long val) {
  212. supplierCode = val;
  213. return this;
  214. }
  215. public InvokeCallParams build() {
  216. return new InvokeCallParams(this);
  217. }
  218. }
  219. }