123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- package com.emato.biz.service.impl;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONObject;
- import com.emato.biz.domain.mall.InventoryDataPushVo;
- import com.emato.biz.domain.mall.InventoryDataVo;
- import com.emato.biz.domain.mall.NewSystemFormatEntiy;
- import com.emato.biz.mapper.mall.InventoryDataMapper;
- import com.emato.biz.mapper.mall.MallMngChangeMapper;
- import com.emato.biz.service.mall.ISalesDetaiServicel;
- import com.emato.common.core.Result;
- import com.emato.common.utils.DateUtils;
- import com.emato.common.utils.sign.Md5Utils;
- import com.emato.system.mapper.SysConfigMapper;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.servlet.http.HttpServletRequest;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- /**
- * CW推送数据接口
- */
- @Service
- public class SalesDetaiServicelImpl implements ISalesDetaiServicel {
- private final Logger logger = LoggerFactory.getLogger(SalesDetaiServicelImpl.class);
- @Autowired
- private InventoryDataMapper inventoryDataMapper;
- @Autowired
- private MallMngChangeMapper mallMngChangeMapper;
- @Autowired
- private SysConfigMapper configMapper;
- /**
- * kmall向eccs系统推送数据
- * @param newSystemFormatEntiy
- * @return
- */
- @Override
- public int pushSalesDetaiServicel(NewSystemFormatEntiy newSystemFormatEntiy) {
- return mallMngChangeMapper.pushSalesDetaiDate(newSystemFormatEntiy);
- }
- /**
- * 外部系统查询订单销售数据
- * @param msg
- * @return
- */
- @Override
- public Result getSalesDetaiData(JSONObject msg, HttpServletRequest httpServletRequest) {
- try {
- //校验签名
- Map<String, Object> weChatMapSalesMsg = JSONObject.toJavaObject(msg, Map.class);
- //签名验证
- String strSign = weChatMapSalesMsg.get("sign").toString().trim();
- String merchId = weChatMapSalesMsg.get("merchId").toString().trim()==null?"":weChatMapSalesMsg.get("merchId").toString().trim();
- String timestamp = weChatMapSalesMsg.get("timestamp").toString().trim()==null?"":weChatMapSalesMsg.get("timestamp").toString().trim();
- String str = configMapper.getConfigValue("salesdetai").trim();;
- if(timestamp.equals("")||merchId.equals("")){
- return Result.error("900000051","参数错误");
- }
- if(!strSign.equals(checkType(weChatMapSalesMsg.get("data").toString(),timestamp,str))){
- return Result.error("900000052","签名错误");
- }
- Map<String, Object> weSalesMsg = JSONObject.toJavaObject(JSON.parseObject(weChatMapSalesMsg.get("data").toString()), Map.class);
- String starTime = (String) weSalesMsg.get("starTime");
- String endTime = (String) weSalesMsg.get("endTime");
- Integer pageIndex = Integer.parseInt(weSalesMsg.get("pageIndex")+"");
- Integer pageSize = Integer.parseInt(weSalesMsg.get("pageSize")+"");
- weSalesMsg.put("starTime", DateUtils.getStrDate((String) weSalesMsg.get("starTime")));
- weSalesMsg.put("endTime",DateUtils.getStrDate((String)weSalesMsg.get("endTime")));
- weSalesMsg.put("offset",pageIndex);
- weSalesMsg.put("limit",pageSize);
- if((pageSize-pageIndex)>500){
- return Result.error("900000053","请求总数或时间区间过大");
- }
- //记录调用参数接口日志
- long diff=(Long.parseLong(endTime) - Long.parseLong(starTime))/1000/60/60;
- if(diff<=24){
- pullQueryData(weChatMapSalesMsg);
- List<NewSystemFormatEntiy> list = mallMngChangeMapper.getSalesDetaiData(weSalesMsg);
- //desList = DesUtils.encode(JSON.toJSONString(list));
- if(list.size()==0){
- return Result.error("900000054","该条件下无数据");
- }else{
- Map<String,Object> map = new HashMap<>();
- map.put("total",list.size());
- map.put("rows",list);
- return Result.success(map);
- }
- }else{
- return Result.error("900000053","请求总数或时间区间过大");
- }
- }catch (Exception e){
- logger.error("外部系统查询订单销售数据错误="+ JSON.toJSONString(msg),e);
- return Result.error("900000051","参数错误");
- }
- }
- /**
- * 记录外部调用接口参数,时间和调用方
- * @param msg
- */
- private void pullQueryData(Map msg) {
- Map<String,Object> map = new HashMap<>();
- map.put("tranDirection",msg.get("merchId"));
- map.put("msg",msg.toString());
- mallMngChangeMapper.pullQueryData(map);
- }
- /**
- * 插入来源于oms的库存数据
- * @param inventoryDataVo
- */
- @Override
- public Result inserInventory(InventoryDataVo inventoryDataVo) {
- try{
- logger.error("插入来源于oms的库存数据");
- //查询是否存在该库存信息
- Integer checkStuts = inventoryDataMapper.queryOneInventory(inventoryDataVo);
- if(checkStuts>0){
- inventoryDataMapper.updateInventory(inventoryDataVo);
- }else{
- inventoryDataMapper.inserInventory(inventoryDataVo);
- }
- return Result.success();
- }catch (Exception e){
- logger.error("插入来源于oms的库存数据"+JSON.toJSONString(inventoryDataVo),e);
- return Result.error("1001","数据插入出错");
- }
- }
- /**
- * 查询库存数据提供给外部系统
- * @param msg
- * @param httpServletRequest
- * @return
- */
- @Override
- public Result queryInventory(JSONObject msg, HttpServletRequest httpServletRequest) {
- try{
- //校验签名
- Map<String, Object> weChatMapMsg = JSONObject.toJavaObject(msg, Map.class);
- //签名验证
- String strSign = weChatMapMsg.get("sign").toString().trim();
- String merchId = weChatMapMsg.get("merchId").toString().trim()==null?"":weChatMapMsg.get("merchId").toString().trim();
- String timestamp = weChatMapMsg.get("timestamp").toString().trim()==null?"":weChatMapMsg.get("timestamp").toString().trim();
- String str = configMapper.getConfigValue("inventory");;
- if(timestamp.equals("")||merchId.equals("")){
- return Result.error("900000001","参数错误");
- }
- if(!strSign.equals(checkType(weChatMapMsg.get("data").toString(),timestamp,str))){
- return Result.error("900000002","签名错误");
- }
- Map<String, Object> weDtilMsg = JSONObject.toJavaObject(JSON.parseObject(weChatMapMsg.get("data").toString()), Map.class);
- Integer pageIndex = Integer.parseInt(weDtilMsg.get("pageIndex")+"");
- Integer pageSize = Integer.parseInt(weDtilMsg.get("pageSize")+"");
- weChatMapMsg.put("offset",pageIndex);
- weChatMapMsg.put("limit",pageSize);
- weChatMapMsg.put("merchId",merchId);
- weChatMapMsg.put("sign",strSign);
- if(pageSize>3000){
- return Result.error("900000003","请求数量过大");
- }
- //数据查询
- pullQueryData(weChatMapMsg);
- List<InventoryDataPushVo> list = inventoryDataMapper.getInventoryData(weChatMapMsg);
- if(list.size()==0){
- return Result.error("900000004","该条件下无数据");
- }else{
- Map<String,Object> map = new HashMap<>();
- map.put("total",list.size());
- map.put("rows",list);
- return Result.success(map);
- }
- }catch (Exception e){
- logger.error("外部系统查询库存系统条件="+JSON.toJSONString(msg),e);
- return Result.error("900000001","参数错误");
- }
- }
- //签名加密校验
- public String checkType(String data,String timestamp,String sekey) {
- String sign = sekey+"data" + data + "timestamp" + timestamp;
- return Md5Utils.encryption(sign);
- }
- }
|