1
0

SalesDetaiServicelImpl.java 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package com.emato.biz.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.emato.biz.domain.mall.InventoryDataPushVo;
  5. import com.emato.biz.domain.mall.InventoryDataVo;
  6. import com.emato.biz.domain.mall.NewSystemFormatEntiy;
  7. import com.emato.biz.mapper.mall.InventoryDataMapper;
  8. import com.emato.biz.mapper.mall.MallMngChangeMapper;
  9. import com.emato.biz.service.mall.ISalesDetaiServicel;
  10. import com.emato.common.core.Result;
  11. import com.emato.common.utils.DateUtils;
  12. import com.emato.common.utils.sign.Md5Utils;
  13. import com.emato.system.mapper.SysConfigMapper;
  14. import org.slf4j.Logger;
  15. import org.slf4j.LoggerFactory;
  16. import org.springframework.beans.factory.annotation.Autowired;
  17. import org.springframework.stereotype.Service;
  18. import javax.servlet.http.HttpServletRequest;
  19. import java.util.HashMap;
  20. import java.util.List;
  21. import java.util.Map;
  22. /**
  23. * CW推送数据接口
  24. */
  25. @Service
  26. public class SalesDetaiServicelImpl implements ISalesDetaiServicel {
  27. private final Logger logger = LoggerFactory.getLogger(SalesDetaiServicelImpl.class);
  28. @Autowired
  29. private InventoryDataMapper inventoryDataMapper;
  30. @Autowired
  31. private MallMngChangeMapper mallMngChangeMapper;
  32. @Autowired
  33. private SysConfigMapper configMapper;
  34. /**
  35. * kmall向eccs系统推送数据
  36. * @param newSystemFormatEntiy
  37. * @return
  38. */
  39. @Override
  40. public int pushSalesDetaiServicel(NewSystemFormatEntiy newSystemFormatEntiy) {
  41. return mallMngChangeMapper.pushSalesDetaiDate(newSystemFormatEntiy);
  42. }
  43. /**
  44. * 外部系统查询订单销售数据
  45. * @param msg
  46. * @return
  47. */
  48. @Override
  49. public Result getSalesDetaiData(JSONObject msg, HttpServletRequest httpServletRequest) {
  50. try {
  51. String strMsg = httpServletRequest.getHeader("Sign");
  52. String tranDtion = httpServletRequest.getHeader("tranDtion")==null?"":httpServletRequest.getHeader("tranDtion");
  53. if(!strMsg.equals(configMapper.getConfigValue("sign"))){
  54. return Result.error("1003","签名错误");
  55. }
  56. if(tranDtion.equals("")){
  57. return Result.error("1002","参数错误");
  58. }
  59. Map<String, Object> weChatMapMsg = JSONObject.toJavaObject(msg, Map.class);
  60. String starTime = (String) weChatMapMsg.get("starTime");
  61. String endTime = (String) weChatMapMsg.get("endTime");
  62. Integer pageIndex = Integer.parseInt(weChatMapMsg.get("pageIndex")+"");
  63. Integer pageSize = Integer.parseInt(weChatMapMsg.get("pageSize")+"");
  64. weChatMapMsg.put("starTime", DateUtils.getStrDate((String) weChatMapMsg.get("starTime")));
  65. weChatMapMsg.put("endTime",DateUtils.getStrDate((String)weChatMapMsg.get("endTime")));
  66. weChatMapMsg.put("offset",pageIndex);
  67. weChatMapMsg.put("limit",pageSize);
  68. if((pageSize-pageIndex)>500){
  69. return Result.error("1005","请求总数或时间区间过大");
  70. }
  71. //记录调用参数接口日志
  72. long diff=(Long.parseLong(endTime) - Long.parseLong(starTime))/1000/60/60;
  73. if(diff<=24){
  74. weChatMapMsg.put("tranDtion",tranDtion);
  75. pullQueryData(weChatMapMsg);
  76. List<NewSystemFormatEntiy> list = mallMngChangeMapper.getSalesDetaiData(weChatMapMsg);
  77. //desList = DesUtils.encode(JSON.toJSONString(list));
  78. if(list.size()==0){
  79. return Result.error("1004","该条件下无数据");
  80. }else{
  81. return Result.success(list);
  82. }
  83. }else{
  84. return Result.error("1005","请求总数或时间区间过大");
  85. }
  86. }catch (Exception e){
  87. logger.error("外部系统查询订单销售数据错误="+ JSON.toJSONString(msg),e);
  88. return Result.error("1002","参数错误");
  89. }
  90. }
  91. /**
  92. * 记录外部调用接口参数,时间和调用方
  93. * @param msg
  94. */
  95. private void pullQueryData(Map msg) {
  96. Map<String,Object> map = new HashMap<>();
  97. map.put("tranDirection",msg.get("tranDtion"));
  98. map.put("msg",msg.toString());
  99. mallMngChangeMapper.pullQueryData(map);
  100. }
  101. /**
  102. * 插入来源于oms的库存数据
  103. * @param inventoryDataVo
  104. */
  105. @Override
  106. public Result inserInventory(InventoryDataVo inventoryDataVo) {
  107. try{
  108. //查询是否存在该库存信息
  109. Integer checkStuts = inventoryDataMapper.queryOneInventory(inventoryDataVo);
  110. if(checkStuts>0){
  111. inventoryDataMapper.updateInventory(inventoryDataVo);
  112. }else{
  113. inventoryDataMapper.inserInventory(inventoryDataVo);
  114. }
  115. return Result.success();
  116. }catch (Exception e){
  117. logger.error("插入来源于oms的库存数据"+JSON.toJSONString(inventoryDataVo),e);
  118. return Result.error("1001","数据插入出错");
  119. }
  120. }
  121. /**
  122. * 查询库存数据提供给外部系统
  123. * @param msg
  124. * @param httpServletRequest
  125. * @return
  126. */
  127. @Override
  128. public Result queryInventory(JSONObject msg, HttpServletRequest httpServletRequest) {
  129. try{
  130. //签名验证
  131. String strSign = httpServletRequest.getHeader("Sign");
  132. String tranDtion = httpServletRequest.getHeader("tranDtion")==null?"":httpServletRequest.getHeader("tranDtion");
  133. String timestamp = httpServletRequest.getHeader("timestamp")==null?"":httpServletRequest.getHeader("timestamp");
  134. String interType = httpServletRequest.getHeader("interType")==null?"":httpServletRequest.getHeader("interType");
  135. if(tranDtion.equals("")||timestamp.equals("")||interType.equals("")){
  136. return Result.error("1005","参数错误");
  137. }
  138. if(!strSign.equals(checkType(tranDtion,timestamp,interType))){
  139. return Result.error("1003","签名错误");
  140. }
  141. //校验签名
  142. Map<String, Object> weChatMapMsg = JSONObject.toJavaObject(msg, Map.class);
  143. Integer pageIndex = Integer.parseInt(weChatMapMsg.get("pageIndex")+"");
  144. Integer pageSize = Integer.parseInt(weChatMapMsg.get("pageSize")+"");
  145. weChatMapMsg.put("offset",pageIndex);
  146. weChatMapMsg.put("limit",pageSize);
  147. weChatMapMsg.put("tranDtion",tranDtion);
  148. weChatMapMsg.put("interType",interType);
  149. if(pageSize>3000){
  150. return Result.error("1004","请求数量过大");
  151. }
  152. //数据查询
  153. pullQueryData(weChatMapMsg);
  154. List<InventoryDataPushVo> list = inventoryDataMapper.getInventoryData(weChatMapMsg);
  155. if(list.size()==0){
  156. return Result.error("1002","该条件下无数据");
  157. }else{
  158. return Result.success(list);
  159. }
  160. }catch (Exception e){
  161. logger.error("外部系统查询库存系统条件="+JSON.toJSONString(msg),e);
  162. return Result.error("1005","参数错误");
  163. }
  164. }
  165. //签名加密校验
  166. public String checkType(String tranDtion,String timestamp,String interType) {
  167. String sign = "tranDtion=" + tranDtion + "&timestamp=" + timestamp + "&interType=" + interType;
  168. return Md5Utils.encryption(sign);
  169. }
  170. }