From 96620ba5058a44155c86f5b0901f4d29e8330d4f Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Tue, 1 Jul 2025 14:38:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E5=90=8C=E6=AD=A5=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=80=BB=E8=BE=91=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/pom.xml | 6 ++ .../client/Schedule/DynamicTaskScheduler.java | 2 +- .../com/small/client/Utils/CommonUtil.java | 46 ++++++++++ .../com/small/client/Utils/HttpUtils.java | 3 +- .../java/com/small/client/dao/BaseDao.java | 85 +++++++++++++++++++ .../java/com/small/client/dao/SxDataDao.java | 54 ++++++------ .../com/small/client/dto/CommentModel.java | 5 ++ .../com/small/client/dto/UploadModel.java | 3 +- .../service/SxDataAbst/SxDataAbstService.java | 2 +- .../client/service/WebClientService.java | 2 +- .../client/service/imp/SxDataServiceImp.java | 67 ++++++++++----- 11 files changed, 223 insertions(+), 52 deletions(-) diff --git a/client/pom.xml b/client/pom.xml index 8c99599a..2839698b 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -57,6 +57,12 @@ ${hutool.version} + + com.google.code.gson + gson + 2.10.1 + + diff --git a/client/src/main/java/com/small/client/Schedule/DynamicTaskScheduler.java b/client/src/main/java/com/small/client/Schedule/DynamicTaskScheduler.java index a5a5c0ab..f153ad71 100644 --- a/client/src/main/java/com/small/client/Schedule/DynamicTaskScheduler.java +++ b/client/src/main/java/com/small/client/Schedule/DynamicTaskScheduler.java @@ -33,7 +33,7 @@ public class DynamicTaskScheduler { this.sxDataService = sxDataService; } - @PostConstruct + //@PostConstruct public void initTasks() { refreshTasks(); // 每5分钟检查一次数据库更新 diff --git a/client/src/main/java/com/small/client/Utils/CommonUtil.java b/client/src/main/java/com/small/client/Utils/CommonUtil.java index 4f8db7e3..26ade896 100644 --- a/client/src/main/java/com/small/client/Utils/CommonUtil.java +++ b/client/src/main/java/com/small/client/Utils/CommonUtil.java @@ -12,7 +12,14 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; +import lombok.extern.slf4j.Slf4j; +import org.apache.logging.log4j.util.Strings; +import org.apache.tomcat.util.codec.binary.Base64; +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; + +@Slf4j public class CommonUtil { private final static String apiUrl = "http://4ei8850868ux.vicp.fun"; @@ -94,5 +101,44 @@ public class CommonUtil { return StrUtil.toUnderlineCase(jsonObject.getByPath(expression, String.class)); } + /** + * 生成 md 摘要通用签名(参考了顺丰同城的做法) + * 参考:https://openic.sf-express.com/#/quickstart + * + * @param postData + * @param appId + * @param appKey + * @return + */ + public static String generateOpenSign(String postData, String appId, String appKey) { + try { + + if (StrUtil.isBlank(postData) || StrUtil.isBlank(appId) || StrUtil.isBlank(appKey)) { + log.error("生成签名时缺少必要参数!"); + return Strings.EMPTY; + } + + String sb = postData + "&" + appId + "&" + appKey; + MessageDigest md = MessageDigest.getInstance("MD5"); + byte[] md5 = md.digest(sb.getBytes(StandardCharsets.UTF_8)); + int i; + StringBuffer buf = new StringBuffer(); + for (byte b : md5) { + i = b; + if (i < 0) { + i += 256; + } + if (i < 16) { + buf.append("0"); + } + buf.append(Integer.toHexString(i)); + } + return Base64.encodeBase64String(buf.toString().getBytes(StandardCharsets.UTF_8)); + + } catch (Exception e) { + log.error(e.getMessage()); + return Strings.EMPTY; + } + } } diff --git a/client/src/main/java/com/small/client/Utils/HttpUtils.java b/client/src/main/java/com/small/client/Utils/HttpUtils.java index 7b7c29d2..baaae7c3 100644 --- a/client/src/main/java/com/small/client/Utils/HttpUtils.java +++ b/client/src/main/java/com/small/client/Utils/HttpUtils.java @@ -37,7 +37,7 @@ public class HttpUtils { public static final String URL_SYNC_GET_DOWNCLIENTJAR="/shop/sync/app/downClientJar";//文件下载 - public static final String URL_SYNC_GET_STOREdBCONFIG="/shop/sync/third/getStoreDbConfig";//文件下载 + public static final String URL_SYNC_GET_STOREdBCONFIG="/shop/sync/third/getStoreDbConfig";//获取数据库配置 public static final String URL_SYNC_GET_STOR_DATA_RELEASE="/shop/sync/third/syncStoreDataRelease";//库存同步 @@ -56,7 +56,6 @@ public class HttpUtils { // 设置Content-Type为application/x-www-form-urlencoded HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); - log.info(modelObject.toString()); HttpEntity request = new HttpEntity<>(modelObject, headers); // 发送POST请求 diff --git a/client/src/main/java/com/small/client/dao/BaseDao.java b/client/src/main/java/com/small/client/dao/BaseDao.java index 7d50de06..c2b94238 100644 --- a/client/src/main/java/com/small/client/dao/BaseDao.java +++ b/client/src/main/java/com/small/client/dao/BaseDao.java @@ -178,6 +178,51 @@ public class BaseDao { return total; } + public Integer getBaseGoodsJoinTotal(String ip, String username, String password,Integer portNumber, String dataBaseName,String where){ + int total=0; + Connection connection=getConnection(ip,username,password,portNumber,dataBaseName); + try { + String sql="WITH LatestStock AS (" + + " SELECT " + + " tib.item_no, " + + " tib.stock_qty," + + " tib.oper_date," + + " ROW_NUMBER() OVER(PARTITION BY tib.item_no ORDER BY tib.oper_date DESC) AS rn " + + " FROM t_im_branch_stock tib\n" + + ") " + + "SELECT " + + " b.*, " + + " ls.stock_qty, " + + " ls.oper_date " + + "FROM ( " + + " SELECT " + + " ROW_NUMBER() OVER(ORDER BY item_clsno) AS rowId, " + + " * " + + " FROM t_bd_item_info " + + ") b " + + "LEFT JOIN LatestStock ls ON b.item_no = ls.item_no AND ls.rn = 1 " + + " %s"; + sql=String.format(sql,where); + log.info(sql); + PreparedStatement ps= connection.prepareStatement(sql); + ResultSet rs=ps.executeQuery(); + while (rs.next()){ + total=rs.getInt(1); + } + } catch (SQLException e) { + log.info("数据库查询异常方法{},异常信息{}","com.suisung.mall.shop.sixun.dao.BaseDao.getBaseTotal",e.getMessage()); + throw new RuntimeException(e); + } + finally { + try { + connection.close(); + } catch (SQLException e) { + throw new RuntimeException(e); + } + } + return total; + } + /** * 带分页数据关联分页查询 @@ -211,6 +256,46 @@ public class BaseDao { return resultDto; } + public ResultDto baseFindGoodsListJoinPage(String ip, String username, String password,Integer portNumber, String dataBaseName, int pageNo, int pageSize,String where){ + Connection connection=getConnection(ip,username,password,portNumber,dataBaseName); + int start=(pageNo-1)*pageSize+1; + int end=pageNo*pageSize; + String sql="WITH LatestStock AS (" + + " SELECT " + + " tib.item_no, " + + " tib.stock_qty," + + " tib.oper_date," + + " ROW_NUMBER() OVER(PARTITION BY tib.item_no ORDER BY tib.oper_date DESC) AS rn " + + " FROM t_im_branch_stock tib " + + ") " + + "SELECT " + + " b.*, " + + " ls.stock_qty, " + + " ls.oper_date " + + "FROM ( " + + " SELECT " + + " ROW_NUMBER() OVER(ORDER BY item_clsno) AS rowId ," + + " * " + + " FROM t_bd_item_info\n" + + ") b " + + "LEFT JOIN LatestStock ls ON b.item_no = ls.item_no AND ls.rn = 1 " + + " %s b.rowId BETWEEN %s AND %s "; + sql=String.format(sql,where,start,end); + log.info(sql); + ResultDto resultDto=new ResultDto(); + ResultSet rs=null; + try { + PreparedStatement ps= connection.prepareStatement(sql); + rs = ps.executeQuery(); + } catch (SQLException e) { + log.info("数据库查询异常方法{},异常信息{}","com.suisung.mall.shop.sixun.dao.BaseDao.baseFindListJoinPage",e.getMessage()); + throw new RuntimeException(e); + } + resultDto.setResultSet(rs); + resultDto.setConnection(connection); + return resultDto; + } + /** * * @param ip diff --git a/client/src/main/java/com/small/client/dao/SxDataDao.java b/client/src/main/java/com/small/client/dao/SxDataDao.java index 47710f22..3cb38dd7 100644 --- a/client/src/main/java/com/small/client/dao/SxDataDao.java +++ b/client/src/main/java/com/small/client/dao/SxDataDao.java @@ -36,7 +36,14 @@ public class SxDataDao extends BaseDao{ private final static String T_BD_BASECODE_TYPE="t_bd_basecode_type";//品牌表 private final static String TYPE_NO="type_no";//品牌排序字段 - private final static String T_IM_BRANCH_STOCK="t_im_branch_stock";//库存表 +//private final static String T_IM_BRANCH_STOCK="t_im_branch_stock";//库存表 + + private final static String T_IM_BRANCH_STOCK="(" + + "select * from( " + + " select ROW_NUMBER() OVER( " + + " partition BY tib.item_no order by tib.oper_date desc) as rn, " + + " tib.* " + + " from t_im_branch_stock tib)tib where tib.rn=1) "; private final static String T_RM_SPEC_PRICE="t_rm_spec_price";//活动表 @@ -147,13 +154,7 @@ public class SxDataDao extends BaseDao{ * @return */ public int getTBditemInfoJoninTotal(DataBaseInfo dataBaseInfo){ - return getBaseJoinTotal(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName() - , T_BD_ITEM_INFO - ,T_IM_BRANCH_STOCK - ,"item_no" - ,"item_no" - ,ITEM_CLSNO - ,"t.stock_qty,t.oper_date" + return getBaseGoodsJoinTotal(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName() ,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere()); } @@ -175,13 +176,7 @@ public class SxDataDao extends BaseDao{ * @param pageSize */ public List findBditemInfoListPage(DataBaseInfo dataBaseInfo,int pageNo,int pageSize){ - ResultDto resultDto=baseFindListJoinPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName() - , T_BD_ITEM_INFO - ,T_IM_BRANCH_STOCK - ,"item_no" - ,"item_no" - ,ITEM_CLSNO - ,"t.stock_qty,t.oper_date" + ResultDto resultDto=baseFindGoodsListJoinPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName() ,pageNo,pageSize,dataBaseInfo.getWhere()==null?DEFALTWHERE:dataBaseInfo.getWhere()); ResultSet rs= resultDto.getResultSet(); List sxSyncGoodses=new ArrayList<>(); @@ -204,23 +199,26 @@ public class SxDataDao extends BaseDao{ sxSyncGoods.setGross_margin(new BigDecimal("0"));//毛利率 } sxSyncGoods.setItem_no(rs.getString("item_no"));//货号 - sxSyncGoods.setItem_subname(rs.getString("item_subname"));//商品名称 + sxSyncGoods.setItem_subname(rs.getString("item_name"));//商品名称 sxSyncGoods.setItem_subno(rs.getString("item_subno"));//商品条码 sxSyncGoods.setBig_cls_name("9999");//商品大类 todo 如何关联 sxSyncGoods.setSmall_cls_name(rs.getString("item_clsno").trim());//商品小类 todo 如何关联 sxSyncGoods.setItem_size(rs.getString("item_size"));//规格 - sxSyncGoods.setUnit_no(rs.getString("unit_no"));//单位 todo - sxSyncGoods.setStock(rs.getBigDecimal("stock_qty"));//库存数量 todo item_stock? - + sxSyncGoods.setUnit_no(rs.getString("unit_no"));//单位 + if(null==rs.getBigDecimal("stock_qty")){ + sxSyncGoods.setStock(BigDecimal.ZERO); + }else { + sxSyncGoods.setStock(rs.getBigDecimal("stock_qty"));//库存数量 + } sxSyncGoods.setPrice(rs.getBigDecimal("price"));//进货价 sxSyncGoods.setSale_price(rs.getBigDecimal("sale_price"));//零售价 sxSyncGoods.setVip_price(rs.getBigDecimal("vip_price"));//会员价 sxSyncGoods.setVip_acc_flag(rs.getBigDecimal("vip_acc_flag"));//允许积分 sxSyncGoods.setVip_acc_num(rs.getBigDecimal("vip_acc_num"));//积分值 - sxSyncGoods.setSale_flag(rs.getInt("main_Sale_flag"));//商品状态 todo 是main_Sale_flag? + //sxSyncGoods.setSale_flag(rs.getInt("main_Sale_flag"));//商品状态 todo 是main_Sale_flag? sxSyncGoods.setItem_rem(rs.getString("item_rem"));//助记码 sxSyncGoods.setBuild_date(rs.getString("build_date"));//生产日期 todo sxSyncGoods.setValid_days(getStopDate(rs));//保质期 todo stop_date-build_date? @@ -460,16 +458,24 @@ public class SxDataDao extends BaseDao{ dataBaseInfo.getPassword(), dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName()); try { conn.setAutoCommit(false); // 关闭自动提交,开启事务 - String sql = "update t_im_branch_stock set stock_qty= stock_qty+?,oper_date=? where item_no=?"; + //String sql = "update t_im_branch_stock set stock_qty= stock_qty+(?),oper_date=? where item_no=?"; + String sql = "WITH TopStock AS ( " + + " SELECT TOP(1) * " + + " FROM t_im_branch_stock " + + " WHERE item_no = ? " + + " ORDER BY oper_date DESC " + + ") " + + " UPDATE TopStock " + + " SET stock_qty = stock_qty+(?),oper_date=?;"; Timestamp timestamp = new Timestamp(System.currentTimeMillis()); try (PreparedStatement ps = conn.prepareStatement(sql)) { int batchSize = 1000; // 每批处理1000条 int count = 0; Set sme=map.entrySet(); for (Map.Entry entry : sme) { - ps.setDouble(1, (double) entry.getValue()); - ps.setTimestamp(2, timestamp); - ps.setString(3, (String) entry.getKey()); + ps.setString(1, (String) entry.getKey()); + ps.setDouble(2, (double) entry.getValue()); + ps.setTimestamp(3, timestamp); ps.addBatch(); // 添加至批处理 count++; if (count % batchSize == 0) { diff --git a/client/src/main/java/com/small/client/dto/CommentModel.java b/client/src/main/java/com/small/client/dto/CommentModel.java index 2b39159e..0a3ae060 100644 --- a/client/src/main/java/com/small/client/dto/CommentModel.java +++ b/client/src/main/java/com/small/client/dto/CommentModel.java @@ -8,7 +8,12 @@ public class CommentModel { @ApiModelProperty("店铺的key") private String appKey; @ApiModelProperty("店铺的密钥") + private String appId; + @ApiModelProperty("报文签名") private String sign; + @ApiModelProperty("店铺的密钥") + private String signe; + @ApiModelProperty("店铺的id") private String storeId; diff --git a/client/src/main/java/com/small/client/dto/UploadModel.java b/client/src/main/java/com/small/client/dto/UploadModel.java index 8a1c967f..07599770 100644 --- a/client/src/main/java/com/small/client/dto/UploadModel.java +++ b/client/src/main/java/com/small/client/dto/UploadModel.java @@ -11,5 +11,6 @@ public class UploadModel extends CommentModel{ private String page; @ApiModelProperty("同步类型1商品,2分类,3品牌,4会员") private String syncType; - + @ApiModelProperty("报文签名") + private String sign; } diff --git a/client/src/main/java/com/small/client/service/SxDataAbst/SxDataAbstService.java b/client/src/main/java/com/small/client/service/SxDataAbst/SxDataAbstService.java index 6f85b210..dd08a61a 100644 --- a/client/src/main/java/com/small/client/service/SxDataAbst/SxDataAbstService.java +++ b/client/src/main/java/com/small/client/service/SxDataAbst/SxDataAbstService.java @@ -185,7 +185,7 @@ public abstract class SxDataAbstService { // if(type.equals("2")){ // finalSxGoosModel.setPrice(finalSxGoosModel.getPrice().multiply(m.getDiscount())); // } - finalSxGoosModel.setIsSpecial("1"); + // finalSxGoosModel.setIsSpecial("1"); } }); sxGoosModelList.add(sxGoosModel); diff --git a/client/src/main/java/com/small/client/service/WebClientService.java b/client/src/main/java/com/small/client/service/WebClientService.java index b94a63dc..79f992f3 100644 --- a/client/src/main/java/com/small/client/service/WebClientService.java +++ b/client/src/main/java/com/small/client/service/WebClientService.java @@ -43,10 +43,10 @@ public class WebClientService { public String uploudSxData(String filePath, CommentModel commentModel,String page,String syncType){ UploadModel uploadModel=new UploadModel(); uploadModel.setAppKey(commentModel.getAppKey()); + uploadModel.setAppId(commentModel.getAppId()); uploadModel.setSign(commentModel.getSign()); uploadModel.setPage(page); uploadModel.setSyncType(syncType); - //"C:\\Users\\Administrator\\uploaded\\2025\\3\\25\\goods_1.txt" return this.uploadFile(filePath, remoteIp+HttpUtils.URL_UPLOUP,uploadModel); } diff --git a/client/src/main/java/com/small/client/service/imp/SxDataServiceImp.java b/client/src/main/java/com/small/client/service/imp/SxDataServiceImp.java index 7ef71749..0232c469 100644 --- a/client/src/main/java/com/small/client/service/imp/SxDataServiceImp.java +++ b/client/src/main/java/com/small/client/service/imp/SxDataServiceImp.java @@ -7,6 +7,7 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.Gson; import com.small.client.Cache.CommonCache; import com.small.client.Utils.*; import com.small.client.dao.SxDataDao; @@ -89,14 +90,17 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService String jsonString=""; ObjectMapper objectMapper = new ObjectMapper(); try { - jsonString = objectMapper.writeValueAsString(sxCategoryModelList); + Gson gson=new Gson(); + jsonString=gson.toJson(sxCategoryModelList); jsonArray = JSONUtil.parseArray(jsonString); - } catch (JsonProcessingException e) { + } catch (Exception e) { throw new RuntimeException(e); } + String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey()); + log.info("sign:{}",sign); String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_CATEGORY +"?appKey="+commentModel.getAppKey() - +"&sign="+commentModel.getSign(),jsonArray);//todo 后期改为文件传输 + +"&sign="+sign,jsonArray);//todo 后期改为文件传输 if (!HttpUtils.SUCCESSCODE.equals(code)) { continue; } @@ -147,16 +151,19 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService if(brandModels!=null&&brandModels.size()>0){ String jsonString =""; JSONArray jsonArray =new JSONArray(); - ObjectMapper objectMapper = new ObjectMapper(); + // ObjectMapper objectMapper = new ObjectMapper(); try { - jsonString = objectMapper.writeValueAsString(brandModels); + Gson gson=new Gson(); + jsonString=gson.toJson(brandModels); jsonArray = JSONUtil.parseArray(jsonString); - } catch (JsonProcessingException e) { + } catch (Exception e) { throw new RuntimeException(e); } + String sign=CommonUtil.generateOpenSign(jsonArray.toString(),commentModel.getAppId(),commentModel.getAppKey()); + log.info("sign={}",sign); String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_BRAND +"?appKey="+commentModel.getAppKey() - +"&sign="+commentModel.getSign(),jsonArray);//todo 后期改为文件传输 + +"&sign="+sign,jsonArray);//todo 后期改为文件传输 if(code!=null){ log.info("品牌总共有{}条数据,同步完成{}条",brandModels.size(),brandModels.size()); } @@ -201,14 +208,16 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService } catch (JsonProcessingException e) { throw new RuntimeException(e); } + String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey()); String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_MEMBER +"?appKey="+commentModel.getAppKey() - +"&sign="+commentModel.getSign(),memberList);//todo 后期改为文件传输 + +"&sign="+sign,memberList);//todo 后期改为文件传输 if (!HttpUtils.SUCCESSCODE.equals(code)) { continue; } syncCount+=memberList.size(); } + log.info("vip会员总共有{}条数据,同步完成{}条",total,syncCount); } @@ -222,6 +231,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService String parentId= sxSyncCategories.stream().filter(m->m.getItem_clsname().equals(parentName)). map(SxSyncCategory::getItem_clsno).collect(Collectors.joining()); getBdBrandCacheList(dataBaseInfo); + getCategoryCacheList(sxSyncCategories); String childrens=commonCache.get(CommonCache.CACHE_CATEGROY+parentId); if(childrens==null){ log.info(JSONUtil.toJsonStr(buildTree(sxSyncCategories,parentId))); @@ -300,7 +310,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService where+=" or b.build_date>'"+commentModel.getSyncTime()+"' "; } if(StringUtils.isNotEmpty(dataBaseInfo.getOperDate())){ - where+=" and t.oper_date>'"+dataBaseInfo.getOperDate()+"' "; + where+=" and ls.oper_date>'"+dataBaseInfo.getOperDate()+"' "; } dataBaseInfo.setWhere(where); // 记录总数 @@ -313,6 +323,8 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService log.info("暂无商品同步"); return; } + where+=" and"; + dataBaseInfo.setWhere(where); // 总页数 int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE); @@ -344,23 +356,20 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService //通知服务器上传cos HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_GOODS_NOTICE_UPLOAD_TO_OSS +"?appKey="+commentModel.getAppKey() - +"&sign="+commentModel.getSign() + +"&sign="+commentModel.getAppId() +"&syncType="+DicEnum.MUAL_1.getCode() - +"&refreshDate="+refreshDate, + +"&refreshDateStr="+refreshDate, JSONUtil.parseArray(folders)); - - //folders.add(String.valueOf(4)); - //folders.add(String.valueOf(5)); log.info("商品分类总共有{}条数据,同步完成{}条",total,syncCount); String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_GOODS_READ +"?appKey="+commentModel.getAppKey() - +"&sign="+commentModel.getSign() + +"&sign="+commentModel.getAppId() +"&syncType="+DicEnum.MUAL_1.getCode(), JSONUtil.parseArray(folders)); if (HttpUtils.SUCCESSCODE.equals(code)) { log.info("思迅商品同步完成,通知服务器处理数据相应成功"); //记录同步时间 - createDateFile(); + // createDateFile(); } } @@ -377,6 +386,8 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService String fileName=fileUtils.getFileName(syncType,page,FileUtils.txtEnd); String filePath=file.getAbsolutePath(); fileUtils.writeFile(filePath,fileName,content); + String sign=CommonUtil.generateOpenSign(content,commentModel.getAppId(),commentModel.getAppKey()); + commentModel.setSign(sign); return webClientService.uploudSxData(filePath+FileUtils.pathSeparator+fileName,commentModel,page.toString(),syncType); } @@ -467,10 +478,22 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService } commonCache.setBrandCahce("brandCache",specPriceDtos); } - } } + /** + * 获取商品分类据并加入到缓存 + * @param sxSyncCategories + * @return + */ + public void getCategoryCacheList(List sxSyncCategories){ + if(CollectionUtil.isNotEmpty(sxSyncCategories)){ + for (SxSyncCategory sxSyncCategory : sxSyncCategories) { + commonCache.put(sxSyncCategory.getItem_clsno(),sxSyncCategory.getItem_clsname()); + } + } + } + @Override public CommentModel getCommentModel() { String path=JarPathUtil.getRuntimePath(); @@ -481,7 +504,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService String encryptedData = getPrimaryKey(); Map result= CryptoUtils.decryptAndUnpack(encryptedData); CommentModel commentModel=new CommentModel(); - commentModel.setSign(result.get("sign")); + commentModel.setAppId(result.get("sign")); commentModel.setAppKey(result.get("appKey")); commentModel.setStoreId(result.get("storeId")); //获取上次同步的最大时间 @@ -643,10 +666,11 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService public DataBaseInfo getDataBaseInfo(CommentModel commentModel) { JSONObject jsonObject=new JSONObject(); jsonObject.putOnce("appKey",commentModel.getAppKey()); - jsonObject.putOnce("sign",commentModel.getSign()); + jsonObject.putOnce("sign",commentModel.getAppId()); + StoreDbConfig storeDbConfig= HttpUtils.postDataGetConfig(restTemplate,remoteIp+HttpUtils.URL_SYNC_GET_STOREdBCONFIG +"?appKey="+commentModel.getAppKey() - +"&sign="+commentModel.getSign(), jsonObject); + +"&sign="+commentModel.getAppId(), jsonObject); DataBaseInfo dataBaseInfo=new DataBaseInfo(); if(null!=storeDbConfig){ dataBaseInfo.setIp(storeDbConfig.getDbIp()); @@ -671,8 +695,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService } JSONObject jsonObject= restTemplate.getForObject(remoteIp+HttpUtils.URL_SYNC_GET_STOR_DATA_RELEASE +"?appKey="+commentModel.getAppKey() - +"&sign="+commentModel.getSign(),JSONObject.class); - + +"&sign="+commentModel.getAppId(),JSONObject.class); if(null!=jsonObject.get("result")){ Map map=(Map)jsonObject.get("result"); sxDataDao.updateStoreData(dataBaseInfo,map);