1
0

SalesDetaiServicelImpl.java 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  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. //校验签名
  52. Map<String, Object> weChatMapSalesMsg = JSONObject.toJavaObject(msg, Map.class);
  53. //签名验证
  54. String strSign = weChatMapSalesMsg.get("sign").toString().trim();
  55. String merchId = weChatMapSalesMsg.get("merchId").toString().trim()==null?"":weChatMapSalesMsg.get("merchId").toString().trim();
  56. String timestamp = weChatMapSalesMsg.get("timestamp").toString().trim()==null?"":weChatMapSalesMsg.get("timestamp").toString().trim();
  57. String str = configMapper.getConfigValue("salesdetai").trim();;
  58. if(timestamp.equals("")||merchId.equals("")){
  59. return Result.error("900000051","参数错误");
  60. }
  61. if(!strSign.equals(checkType(weChatMapSalesMsg.get("data").toString(),timestamp,str))){
  62. return Result.error("900000052","签名错误");
  63. }
  64. Map<String, Object> weSalesMsg = JSONObject.toJavaObject(JSON.parseObject(weChatMapSalesMsg.get("data").toString()), Map.class);
  65. String starTime = (String) weSalesMsg.get("starTime");
  66. String endTime = (String) weSalesMsg.get("endTime");
  67. Integer pageIndex = Integer.parseInt(weSalesMsg.get("pageIndex")+"");
  68. Integer pageSize = Integer.parseInt(weSalesMsg.get("pageSize")+"");
  69. weSalesMsg.put("starTime", DateUtils.getStrDate((String) weSalesMsg.get("starTime")));
  70. weSalesMsg.put("endTime",DateUtils.getStrDate((String)weSalesMsg.get("endTime")));
  71. weSalesMsg.put("offset",pageIndex);
  72. weSalesMsg.put("limit",pageSize);
  73. if((pageSize-pageIndex)>500){
  74. return Result.error("900000053","请求总数或时间区间过大");
  75. }
  76. //记录调用参数接口日志
  77. long diff=(Long.parseLong(endTime) - Long.parseLong(starTime))/1000/60/60;
  78. if(diff<=24){
  79. pullQueryData(weChatMapSalesMsg);
  80. List<NewSystemFormatEntiy> list = mallMngChangeMapper.getSalesDetaiData(weSalesMsg);
  81. //desList = DesUtils.encode(JSON.toJSONString(list));
  82. if(list.size()==0){
  83. return Result.error("900000054","该条件下无数据");
  84. }else{
  85. Map<String,Object> map = new HashMap<>();
  86. map.put("total",list.size());
  87. map.put("rows",list);
  88. return Result.success(map);
  89. }
  90. }else{
  91. return Result.error("900000053","请求总数或时间区间过大");
  92. }
  93. }catch (Exception e){
  94. logger.error("外部系统查询订单销售数据错误="+ JSON.toJSONString(msg),e);
  95. return Result.error("900000051","参数错误");
  96. }
  97. }
  98. /**
  99. * 记录外部调用接口参数,时间和调用方
  100. * @param msg
  101. */
  102. private void pullQueryData(Map msg) {
  103. Map<String,Object> map = new HashMap<>();
  104. map.put("tranDirection",msg.get("merchId"));
  105. map.put("msg",msg.toString());
  106. mallMngChangeMapper.pullQueryData(map);
  107. }
  108. /**
  109. * 插入来源于oms的库存数据
  110. * @param inventoryDataVo
  111. */
  112. @Override
  113. public Result inserInventory(InventoryDataVo inventoryDataVo) {
  114. try{
  115. logger.error("插入来源于oms的库存数据");
  116. //查询是否存在该库存信息
  117. Integer checkStuts = inventoryDataMapper.queryOneInventory(inventoryDataVo);
  118. if(checkStuts>0){
  119. inventoryDataMapper.updateInventory(inventoryDataVo);
  120. }else{
  121. inventoryDataMapper.inserInventory(inventoryDataVo);
  122. }
  123. return Result.success();
  124. }catch (Exception e){
  125. logger.error("插入来源于oms的库存数据"+JSON.toJSONString(inventoryDataVo),e);
  126. return Result.error("1001","数据插入出错");
  127. }
  128. }
  129. /**
  130. * 查询库存数据提供给外部系统
  131. * @param msg
  132. * @param httpServletRequest
  133. * @return
  134. */
  135. @Override
  136. public Result queryInventory(JSONObject msg, HttpServletRequest httpServletRequest) {
  137. try{
  138. //校验签名
  139. Map<String, Object> weChatMapMsg = JSONObject.toJavaObject(msg, Map.class);
  140. //签名验证
  141. String strSign = weChatMapMsg.get("sign").toString().trim();
  142. String merchId = weChatMapMsg.get("merchId").toString().trim()==null?"":weChatMapMsg.get("merchId").toString().trim();
  143. String timestamp = weChatMapMsg.get("timestamp").toString().trim()==null?"":weChatMapMsg.get("timestamp").toString().trim();
  144. String str = configMapper.getConfigValue("inventory");;
  145. if(timestamp.equals("")||merchId.equals("")){
  146. return Result.error("900000001","参数错误");
  147. }
  148. if(!strSign.equals(checkType(weChatMapMsg.get("data").toString(),timestamp,str))){
  149. return Result.error("900000002","签名错误");
  150. }
  151. Map<String, Object> weDtilMsg = JSONObject.toJavaObject(JSON.parseObject(weChatMapMsg.get("data").toString()), Map.class);
  152. Integer pageIndex = Integer.parseInt(weDtilMsg.get("pageIndex")+"");
  153. Integer pageSize = Integer.parseInt(weDtilMsg.get("pageSize")+"");
  154. weChatMapMsg.put("offset",pageIndex);
  155. weChatMapMsg.put("limit",pageSize);
  156. weChatMapMsg.put("merchId",merchId);
  157. weChatMapMsg.put("sign",strSign);
  158. if(pageSize>3000){
  159. return Result.error("900000003","请求数量过大");
  160. }
  161. //数据查询
  162. pullQueryData(weChatMapMsg);
  163. List<InventoryDataPushVo> list = inventoryDataMapper.getInventoryData(weChatMapMsg);
  164. if(list.size()==0){
  165. return Result.error("900000004","该条件下无数据");
  166. }else{
  167. Map<String,Object> map = new HashMap<>();
  168. map.put("total",list.size());
  169. map.put("rows",list);
  170. return Result.success(map);
  171. }
  172. }catch (Exception e){
  173. logger.error("外部系统查询库存系统条件="+JSON.toJSONString(msg),e);
  174. return Result.error("900000001","参数错误");
  175. }
  176. }
  177. //签名加密校验
  178. public String checkType(String data,String timestamp,String sekey) {
  179. String sign = sekey+"data" + data + "timestamp" + timestamp;
  180. return Md5Utils.encryption(sign);
  181. }
  182. }