EfastRentServiceImpl.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. package com.iamberry.rent.service.efast;
  2. import com.fasterxml.jackson.core.JsonProcessingException;
  3. import com.fasterxml.jackson.databind.ObjectMapper;
  4. import com.iamberry.app.tool.log.RatFWLogger;
  5. import com.iamberry.rent.face.efast.EfastRentService;
  6. import com.iamberry.wechat.core.entity.product.ProductColor;
  7. import com.iamberry.wechat.face.porduct.ProductColorService;
  8. import com.iamberry.wechat.tools.DateTimeUtil;
  9. import com.iamberry.wechat.tools.HttpClient431Util;
  10. import com.iamberry.wechat.tools.NameUtils;
  11. import net.sf.json.JSONObject;
  12. import org.apache.commons.lang3.StringEscapeUtils;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.stereotype.Service;
  15. import java.util.*;
  16. import java.util.regex.Matcher;
  17. import java.util.regex.Pattern;
  18. /**
  19. * Created by Administrator on 2017/4/21.
  20. */
  21. @Service
  22. public class EfastRentServiceImpl implements EfastRentService {
  23. @Autowired
  24. private RatFWLogger logger;
  25. @Autowired
  26. private ProductColorService productColorService;
  27. @Override
  28. public Map<String,Object> getEfastSendOrderInfo(String oid) {
  29. // TODO Auto-generated method stub
  30. // 组装数据
  31. Map<String, String> requestData = new HashMap<String, String>();
  32. Map<String,Object> map = new HashMap<String,Object>();
  33. map.put("status", false);
  34. requestData.put("app_nick", NameUtils.getConfig("app_nick"));
  35. requestData.put("app_key", NameUtils.getConfig("app_key"));
  36. requestData.put("app_secret", NameUtils.getConfig("app_secret"));
  37. requestData.put("timestamp", DateTimeUtil.format(new Date(),"yyyyMMddHHmmss"));
  38. requestData.put("app_act", "efast.trade.detail.get");
  39. requestData.put("oid", oid);
  40. requestData.put("feilds", NameUtils.getConfig("order_field"));
  41. try {
  42. String resultJson = HttpClient431Util.doPost(requestData, NameUtils.getConfig("efast_base_url"));
  43. logger.info("订单号为:" + oid + "的订单,百胜返回信息:" + resultJson);
  44. resultJson = StringEscapeUtils.unescapeJava(resultJson); // unicode
  45. Pattern p = Pattern.compile("\\s*|\t|\r|\n");
  46. Matcher m = p.matcher(resultJson);
  47. if (m.find()) {
  48. resultJson = m.replaceAll("");
  49. }
  50. logger.info("get-订单号为:" + oid + "的订单,百胜返回信息:" + resultJson);
  51. JSONObject jsonObject = JSONObject.fromObject(resultJson);
  52. // default HTTP SUCCESS
  53. JSONObject respData = JSONObject.fromObject(jsonObject.get("resp_data"));
  54. // 发货状态 : shipping_status
  55. String shippingStatus = respData.getString("shipping_status");
  56. if ("1".equals(shippingStatus)) {
  57. map.put("postFirm", respData.getString("shipping_name"));
  58. map.put("postNum", respData.getString("invoice_no"));
  59. map.put("status", true);
  60. }
  61. logger.error(this, "get-订单号为:" + oid + "的订单,百胜返回信息:" + resultJson);
  62. } catch (Exception e) {
  63. // TODO Auto-generated catch block
  64. logger.error(this, "get-订单号为:" + oid + "的订单,发生错误:" + e.getMessage());
  65. }
  66. return map;
  67. }
  68. @Override
  69. public boolean sendRentFilter(String address, String id, Integer colorId, String addrName, String tel, String openId) throws Exception {
  70. Map<String, Object> orderData = new HashMap<String, Object>();
  71. Map<String, String> requestData = new HashMap<String, String>();
  72. // request url
  73. String url = NameUtils.getConfig("efast_base_url");
  74. requestData.put("app_nick", NameUtils.getConfig("app_nick"));
  75. requestData.put("app_key", NameUtils.getConfig("app_key"));
  76. requestData.put("app_secret", NameUtils.getConfig("app_secret"));
  77. requestData.put("timestamp",DateTimeUtil.format(new Date(),"yyyyMMddHHmmss"));
  78. requestData.put("app_act", "efast.trade.new.add");
  79. //颜色表查询
  80. ProductColor productColor = productColorService.selectProductColorById(colorId);
  81. //地址截取
  82. String [] addressDesc = address.split("-");
  83. String provinceName = addressDesc[0];
  84. if (addressDesc[0].indexOf("北京") != -1) {
  85. provinceName = "北京";
  86. } else if (addressDesc[0].indexOf("上海") != -1) {
  87. provinceName = "上海";
  88. } else if (addressDesc[0].indexOf("天津") != -1) {
  89. provinceName = "天津";
  90. } else if (addressDesc[0].indexOf("重庆") != -1) {
  91. provinceName = "重庆";
  92. }
  93. String sd_id = NameUtils.getConfig("sd_id");
  94. orderData.put("add_time", DateTimeUtil.format(new Date())); // 时间
  95. orderData.put("address", addressDesc[3]); // 收货地址
  96. orderData.put("city_name", addressDesc[1]); // 城市
  97. orderData.put("consignee", addrName); // 收货人
  98. orderData.put("district_name", addressDesc[2]); // 区域
  99. orderData.put("email", ""); // email
  100. orderData.put("goods_amount", 0); // 商品总价
  101. orderData.put("goods_count", 1); // 产品数量
  102. orderData.put("mobile", tel); // 手机号码
  103. orderData.put("money_paid", 0); // 已付款
  104. // 兑换
  105. orderData.put("oid", id); // 订单号
  106. orderData.put("order_amount", 0); // 应付款,应付款金额要与已付款金额相同
  107. /**
  108. * 产品信息
  109. */
  110. List<Map<String, Object>> maps = new ArrayList<Map<String, Object>>();
  111. Map<String, Object> orders1 = new HashMap<String, Object>();
  112. orders1.put("goods_name", productColor.getColorProductName()); // 产品名称
  113. orders1.put("goods_number",1); // 产品数量
  114. orders1.put("goods_price", 0); // 产品原价
  115. orders1.put("outer_sku", productColor.getColor69Code()); // 产品SKU
  116. orders1.put("payment_ft", 0); // 产品分摊价
  117. maps.add(orders1);
  118. orderData.put("orders", maps); // 订单产品
  119. orderData.put("pay_name", "weixinpay"); // 支付方式
  120. orderData.put("pay_time", DateTimeUtil.format(new Date())); // 支付时间
  121. orderData.put("postscript", ""); // 买家留言
  122. orderData.put("province_name", provinceName); // 省份
  123. orderData.put("sd_id", sd_id); // 对应 efast 店铺 id
  124. orderData.put("shipping_fee", 0); // 快递费
  125. orderData.put("shipping_name", "yto"); // 快递公司代码
  126. orderData.put("tel", ""); // 我司电话
  127. orderData.put("to_buyer", ""); // 商家备注
  128. orderData.put("total_amount", 0); // 订单总额
  129. orderData.put("user_name", openId); // 买家账户 百胜根据user_name来判断是否有重复,传openId是为了防止重复
  130. orderData.put("zipcode", ""); // 邮编
  131. com.fasterxml.jackson.databind.ObjectMapper mapper = new ObjectMapper();
  132. String orderDataStr = null;
  133. try {
  134. orderDataStr = mapper.writeValueAsString(orderData);
  135. } catch (JsonProcessingException e2) {
  136. e2.printStackTrace();
  137. }
  138. requestData.put("info", orderDataStr);
  139. try {
  140. String result = HttpClient431Util.doGet(requestData, url);
  141. result = StringEscapeUtils.unescapeJava(result); // unicode 编码
  142. logger.info("add-推送订单号为:" + id + "的订单,百胜返回信息:" + result);
  143. // parse JSON String to Object
  144. JSONObject jsonObject = JSONObject.fromObject(result);
  145. JSONObject respData = JSONObject.fromObject(jsonObject.get("resp_data"));
  146. String oderSn = respData.getString("oder_sn");
  147. if (oderSn != null) {
  148. String msg = respData.getString("msg");
  149. if ("success".equals(msg)) {
  150. return true;
  151. }
  152. }
  153. logger.error(this, "add-推送订单号为:" + id + "的订单,百胜返回信息:" + result);
  154. throw new Exception(respData.getString("msg"));
  155. } catch (Exception e) {
  156. throw e;
  157. }
  158. }
  159. }