From af2627bad5096f6fc7e9918fbd6e1c0ff1f37337 Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Fri, 4 Jul 2025 15:41:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=9A=E5=91=98=E5=90=8C=E6=AD=A5=E5=92=8C?= =?UTF-8?q?=E6=B4=BB=E5=8A=A8=E5=90=8C=E6=AD=A5=E8=B0=83=E8=AF=95=E9=97=AE?= =?UTF-8?q?=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/Adapter/BigDecimalTypeAdapter.java | 21 +++++ .../client/Schedule/DynamicTaskScheduler.java | 2 +- .../client/controller/WebController.java | 45 ++++++++++- .../java/com/small/client/dao/BaseDao.java | 65 ++++++++++++++- .../java/com/small/client/dao/SxDataDao.java | 57 +++++++------ .../java/com/small/client/dto/ActiveDto.java | 5 +- .../com/small/client/dto/ActiveShopInfo.java | 3 + .../java/com/small/client/dto/SxSyncVip.java | 10 ++- .../client/service/imp/SxDataServiceImp.java | 79 ++++++++----------- 9 files changed, 211 insertions(+), 76 deletions(-) create mode 100644 client/src/main/java/com/small/client/Adapter/BigDecimalTypeAdapter.java diff --git a/client/src/main/java/com/small/client/Adapter/BigDecimalTypeAdapter.java b/client/src/main/java/com/small/client/Adapter/BigDecimalTypeAdapter.java new file mode 100644 index 00000000..48c17249 --- /dev/null +++ b/client/src/main/java/com/small/client/Adapter/BigDecimalTypeAdapter.java @@ -0,0 +1,21 @@ +package com.small.client.Adapter; + +import com.google.gson.*; +import java.lang.reflect.Type; +import java.math.BigDecimal; + +public class BigDecimalTypeAdapter implements JsonSerializer, JsonDeserializer { + @Override + public JsonElement serialize(BigDecimal value, Type type, JsonSerializationContext context) { + if (value == null) { + return JsonNull.INSTANCE; + } + // 去除末尾的 0,并避免科学计数法 + return new JsonPrimitive(value.stripTrailingZeros().toPlainString()); + } + + @Override + public BigDecimal deserialize(JsonElement json, Type type, JsonDeserializationContext context) { + return json.isJsonNull() ? null : new BigDecimal(json.getAsString()); + } +} \ No newline at end of file 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 f153ad71..a5a5c0ab 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/controller/WebController.java b/client/src/main/java/com/small/client/controller/WebController.java index 4567f33f..97160ea6 100644 --- a/client/src/main/java/com/small/client/controller/WebController.java +++ b/client/src/main/java/com/small/client/controller/WebController.java @@ -7,6 +7,7 @@ import com.small.client.dto.DataBaseInfo; import com.small.client.service.SxDataService; import com.small.client.service.WebClientService; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -61,7 +62,19 @@ public class WebController { public void synvip(){ log.info("synvip"); // sxDataService.getAppSign(); - sxDataService.SyncVipList(new DataBaseInfo(),sxDataService.getCommentModel()); + CommentModel commentModel= sxDataService.getCommentModel(); + DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel); + if(dataBaseInfo==null){ + log.error("syncGoods dataBaseInfo is null"); + return; + } + if(StringUtils.isEmpty(commentModel.getSyncTime())){ + commentModel =sxDataService.getCommentModel(); + } + if(ObjectUtil.isNotEmpty(dataBaseInfo.getRefreshTime())){ + commentModel.setSyncTime(DateUtil.formatDateTime(dataBaseInfo.getRefreshTime())); + } + sxDataService.SyncVipList(new DataBaseInfo(),commentModel); } // @RequestMapping("/getAppSign") @@ -96,12 +109,38 @@ public class WebController { @RequestMapping("/syncActives") public void syncActives(){ - sxDataService.syncAtive(new DataBaseInfo(),sxDataService.getCommentModel()); + CommentModel commentModel= sxDataService.getCommentModel(); + DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel); + if(dataBaseInfo==null){ + log.error("syncGoods dataBaseInfo is null"); + return; + } + if(StringUtils.isEmpty(commentModel.getSyncTime())){ + commentModel =sxDataService.getCommentModel(); + } + if(ObjectUtil.isNotEmpty(dataBaseInfo.getRefreshTime())){ + commentModel.setSyncTime(DateUtil.formatDateTime(dataBaseInfo.getRefreshTime())); + } + sxDataService.syncAtive(new DataBaseInfo(),commentModel); + // sxDataService.syncAtive(new DataBaseInfo(),new CommentModel()); } @RequestMapping("/syncAtiveShops") public void syncAtiveShops(){ - sxDataService.syncAtiveShops(new DataBaseInfo(),sxDataService.getCommentModel()); + CommentModel commentModel= sxDataService.getCommentModel(); + DataBaseInfo dataBaseInfo=sxDataService.getDataBaseInfo(commentModel); + if(dataBaseInfo==null){ + log.error("syncGoods dataBaseInfo is null"); + return; + } + if(StringUtils.isEmpty(commentModel.getSyncTime())){ + commentModel =sxDataService.getCommentModel(); + } + if(ObjectUtil.isNotEmpty(dataBaseInfo.getRefreshTime())){ + commentModel.setSyncTime(DateUtil.formatDateTime(dataBaseInfo.getRefreshTime())); + } + sxDataService.syncAtiveShops(new DataBaseInfo(),commentModel); + //sxDataService.syncAtiveShops(new DataBaseInfo(),new CommentModel()); } } 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 c2b94238..38962228 100644 --- a/client/src/main/java/com/small/client/dao/BaseDao.java +++ b/client/src/main/java/com/small/client/dao/BaseDao.java @@ -16,7 +16,8 @@ import java.sql.SQLException; public class BaseDao { private final static String DEFAULT_IP="127.0.0.1"; - private final static String DEFAULT_DATABASE="hbposev9"; + // private final static String DEFAULT_DATABASE="hbposev9"; + private final static String DEFAULT_DATABASE="hbposv10"; private final static String DEFAULT_USERNAME="sa"; private final static String DEFAULT_PWD="123456"; private final static int PortNumber=1433; @@ -123,6 +124,40 @@ public class BaseDao { return resultDto; } + /** + * 带分页数据 + * @param ip + * @param username + * @param password + * @param dataBaseName + * @param table + * @return + */ + public ResultDto baseVipFindListPage(String ip, String username, String password,Integer portNumber, String dataBaseName, String table,String orderColumn, 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=" select * from( " + + " select ROW_NUMBER() OVER( ORDER BY %s) as rowId," + + "ROW_NUMBER() OVER(partition by mobile ORDER BY vip_start_date desc) as rn," + + "* from %s %s" + + " ) as r where rn='1' and rowId between %s and %s"; + sql=String.format(sql, orderColumn,table,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.baseFindListPage",e.getMessage()); + throw new RuntimeException(e); + } + resultDto.setResultSet(rs); + resultDto.setConnection(connection); + return resultDto; + } + public Integer getBaseTotal(String ip, String username, String password,Integer portNumber, String dataBaseName, String table,String where){ int total=0; Connection connection=getConnection(ip,username,password,portNumber,dataBaseName); @@ -149,6 +184,34 @@ public class BaseDao { return total; } + public Integer getVipBaseTotal(String ip, String username, String password,Integer portNumber, String dataBaseName, String table,String where){ + int total=0; + Connection connection=getConnection(ip,username,password,portNumber,dataBaseName); + try { + String sql=" select COUNT(1) from " + + "(select mobile from %s %s group by mobile " + + ")t"; + sql=String.format(sql, table,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; + } + public Integer getBaseJoinTotal(String ip, String username, String password,Integer portNumber, String dataBaseName, String table,String joinTable,String onLeft,String onRight,String orderColumn,String rightSelect,String where){ int total=0; 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 3cb38dd7..d3daac7b 100644 --- a/client/src/main/java/com/small/client/dao/SxDataDao.java +++ b/client/src/main/java/com/small/client/dao/SxDataDao.java @@ -2,10 +2,13 @@ package com.small.client.dao; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; import com.small.client.Utils.BigDecimalFormatter; import com.small.client.dto.*; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.math.NumberUtils; +import org.apache.commons.lang3.time.DateUtils; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -48,6 +51,7 @@ public class SxDataDao extends BaseDao{ private final static String T_RM_SPEC_PRICE="t_rm_spec_price";//活动表 public final static Integer PAGESIZE=500; + public final static Integer PAGESIZE_MEMBER=300; public final static String DEFALTWHERE="where 1=1"; @@ -164,7 +168,7 @@ public class SxDataDao extends BaseDao{ * @return */ public int getTrmVipInfoTotal(DataBaseInfo dataBaseInfo){ - return getBaseTotal(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_VIP_INFO,dataBaseInfo.getWhere()); + return getVipBaseTotal(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_VIP_INFO,dataBaseInfo.getWhere()); } @@ -255,7 +259,7 @@ public class SxDataDao extends BaseDao{ * @param pageSize */ public List findRmVipInfoListPage(DataBaseInfo dataBaseInfo, int pageNo, int pageSize){ - ResultDto resultDto=baseFindListPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_VIP_INFO,CARD_ID,pageNo,pageSize,dataBaseInfo.getWhere()); + ResultDto resultDto=baseVipFindListPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_VIP_INFO,CARD_ID,pageNo,pageSize,dataBaseInfo.getWhere()); ResultSet rs= resultDto.getResultSet(); List sxSyncVips=new ArrayList<>(); SxSyncVip sxSyncVip=null; @@ -269,21 +273,26 @@ public class SxDataDao extends BaseDao{ sxSyncVip.setMobile(rs.getString("mobile"));//会员名称 sxSyncVip.setBirthday(rs.getString("birthday"));//会员生日 sxSyncVip.setCard_type(rs.getString("card_type")==null?"v1":rs.getString("card_type"));//会员生日 - sxSyncVip.setCard_no(rs.getString("card_no"));//会员卡号 - sxSyncVip.setCard_no(rs.getString("now_acc_num"));//会员积分 - sxSyncVip.setCard_no(rs.getString("residual_amt"));//储值余额 - sxSyncVip.setCard_no(rs.getString("vip_start_date"));//建档日期 + sxSyncVip.setCard_no(rs.getString("card_id"));//会员卡号 + BigDecimal now_acc_num=null; + try { + now_acc_num=rs.getBigDecimal("now_acc_num"); + }catch (Exception e){ + //log.info("now_acc_num错误now_acc_num:{}",e.getMessage()); + now_acc_num = rs.getBigDecimal("acc_num"); + } - log.info(rs.getString("vip_name"));//会员名称 - log.info(rs.getString("mobile"));//会员手机号 - log.info(rs.getString("vip_sex"));//会员性别 - log.info(rs.getString("birthday"));//会员生日 - log.info(rs.getString("card_no"));//会员卡号 - log.info(rs.getString("card_type"));//会员等级 - log.info("{}",rs.getBigDecimal("residual_amt"));//储值余额 - log.info("{}",rs.getBigDecimal("now_acc_num"));//会员积分 - log.info(rs.getString("vip_start_date"));//建档日期 - log.info("{}",rs.getInt("card_status"));//会员状态 + sxSyncVip.setNow_acc_num(now_acc_num);//会员积分 + String residual_amtStr=rs.getString("residual_amt"); + if(NumberUtils.isCreatable(residual_amtStr)){ + BigDecimal residual_amt=new BigDecimal(residual_amtStr); + sxSyncVip.setResidual_amt(residual_amt);//储值余额 + }else { + sxSyncVip.setResidual_amtStr(residual_amtStr); + } + sxSyncVip.setVip_date(rs.getTimestamp("vip_start_date"));//建档日期 + sxSyncVip.setUser_nickname(rs.getString("vip_name")); + sxSyncVip.setUser_realname(rs.getString("vip_name")); } sxSyncVips.add(sxSyncVip); @@ -531,12 +540,12 @@ public class SxDataDao extends BaseDao{ if(specialType.equals("6")||specialType.equals("G")){//折扣 BigDecimal discount=rs.getBigDecimal("discount"); String discountStr=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("discount").multiply(new BigDecimal(10))); - activeDto.setActivityName(rs.getString(discountStr+"折商品")); + activeDto.setActivityName(discountStr+"折商品"); activeDto.setActivityTypeId(2); activeDto.setDiscount(discount); } if(specialType.equals("0")){//特价(秒杀) - activeDto.setActivityName(rs.getString("限时特价秒杀")); + activeDto.setActivityName("限时特价秒杀"); activeDto.setActivityTypeId(1); } if(specialType.equals("E")){//满减 @@ -544,7 +553,7 @@ public class SxDataDao extends BaseDao{ String max1=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price")); String max2=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price").add(rs.getBigDecimal("new_price1"))); String total2=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("old_price").add(rs.getBigDecimal("old_price1"))); - activeDto.setActivityName(rs.getString("满")+total1+"减"+max1+",满"+total2+"减"+max2); + activeDto.setActivityName("满"+total1+"减"+max1+",满"+total2+"减"+max2); List activeMaxDesList=new ArrayList<>(); ActiveMaxDes activeMaxDes=new ActiveMaxDes(); activeMaxDes.setMaxNum(rs.getBigDecimal("spe_price")); @@ -561,6 +570,7 @@ public class SxDataDao extends BaseDao{ activeDto.setActivityTypeId(3); activeDto.setActiveMaxDesList(activeMaxDesList); } + activeDto.setFlowNo(rs.getString("flow_no")); activeDto.setActivityReleasetime(rs.getDate("oper_date")); activeDto.setActivityStarttime(rs.getDate("start_date")); activeDto.setActivityEndtime(rs.getDate("end_date")); @@ -633,13 +643,13 @@ public class SxDataDao extends BaseDao{ if(specialType.equals("6")||specialType.equals("G")){//折扣 BigDecimal discount=rs.getBigDecimal("discount"); String discountStr=BigDecimalFormatter.formatWithoutTrailingZeros(discount.multiply(new BigDecimal(10))); - activeShopInfo.setActivityName(rs.getString(discountStr+"折商品")); + activeShopInfo.setActivityName(discountStr+"折商品"); activeShopInfo.setActivityTypeId(2); } if(specialType.equals("0")){//特价(秒杀) - activeShopInfo.setActivityName(rs.getString("限时特价秒杀")); + activeShopInfo.setActivityName("限时特价秒杀"); activeShopInfo.setOldPrice(rs.getBigDecimal("old_price")); - activeShopInfo.setSpecPrice(rs.getBigDecimal("spec_price")); + activeShopInfo.setSpecPrice(rs.getBigDecimal("spe_price")); activeShopInfo.setActivityTypeId(1); } if(specialType.equals("E")){//满减 @@ -647,11 +657,12 @@ public class SxDataDao extends BaseDao{ String max1=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price")); String max2=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price").add(rs.getBigDecimal("new_price1"))); String total2=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("old_price").add(rs.getBigDecimal("old_price1"))); - activeShopInfo.setActivityName(rs.getString("满")+total1+"减"+max1+",满"+total2+"减"+max2); + activeShopInfo.setActivityName("满"+total1+"减"+max1+",满"+total2+"减"+max2); activeShopInfo.setActivityTypeId(3); } activeShopInfo.setActivityStarttime(rs.getDate("start_date")); activeShopInfo.setActivityEndtime(rs.getDate("end_date")); + activeShopInfo.setFlowNo(rs.getString("flow_no")); if(DateUtil.compare(activeShopInfo.getActivityEndtime(),DateUtil.date())>0){ activeShopInfo.setActivityState(1);//正常进行中 }else { diff --git a/client/src/main/java/com/small/client/dto/ActiveDto.java b/client/src/main/java/com/small/client/dto/ActiveDto.java index 42e6a100..6dbb5820 100644 --- a/client/src/main/java/com/small/client/dto/ActiveDto.java +++ b/client/src/main/java/com/small/client/dto/ActiveDto.java @@ -21,12 +21,10 @@ public class ActiveDto implements Serializable { private Integer activityTypeId; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @ApiModelProperty(value = "活动开始时间") private Date activityStarttime; @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") - @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @ApiModelProperty(value = "活动结束时间") private Date activityEndtime; @@ -42,4 +40,7 @@ public class ActiveDto implements Serializable { @ApiModelProperty(value = "满减规则") private List activeMaxDesList; + @ApiModelProperty(value = "活动id") + private String flowNo; + } diff --git a/client/src/main/java/com/small/client/dto/ActiveShopInfo.java b/client/src/main/java/com/small/client/dto/ActiveShopInfo.java index 9ee1b0d8..001ed0a9 100644 --- a/client/src/main/java/com/small/client/dto/ActiveShopInfo.java +++ b/client/src/main/java/com/small/client/dto/ActiveShopInfo.java @@ -41,4 +41,7 @@ public class ActiveShopInfo { @ApiModelProperty(value = "折后价") private BigDecimal specPrice;//折后价 + + @ApiModelProperty(value = "活动id") + private String flowNo; } diff --git a/client/src/main/java/com/small/client/dto/SxSyncVip.java b/client/src/main/java/com/small/client/dto/SxSyncVip.java index ff2d1fb4..da3f9f7d 100644 --- a/client/src/main/java/com/small/client/dto/SxSyncVip.java +++ b/client/src/main/java/com/small/client/dto/SxSyncVip.java @@ -56,12 +56,14 @@ public class SxSyncVip implements Serializable { @ApiModelProperty(value = "储值余额") private BigDecimal residual_amt; + @ApiModelProperty(value = "储值余额") + private String residual_amtStr; @ApiModelProperty(value = "会员积分") private BigDecimal now_acc_num; @ApiModelProperty(value = "加入时间") - private String vip_date; + private Date vip_date; @ApiModelProperty(value = "会员状态") private Integer card_status; @@ -77,4 +79,10 @@ public class SxSyncVip implements Serializable { @ApiModelProperty(value = "更新时间") private Date updated_at; + + @ApiModelProperty("会员昵称") + private String user_nickname; + + @ApiModelProperty("会员真实姓名") + private String user_realname; } 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 0232c469..84617e24 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 @@ -8,6 +8,8 @@ import cn.hutool.json.JSONUtil; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.small.client.Adapter.BigDecimalTypeAdapter; import com.small.client.Cache.CommonCache; import com.small.client.Utils.*; import com.small.client.dao.SxDataDao; @@ -34,6 +36,7 @@ import org.springframework.web.client.RestTemplate; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +import java.math.BigDecimal; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.time.Duration; @@ -88,7 +91,6 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService List sxCategoryModelList= ConVToSxCategoryModel(sxSyncCategories,allSxSyncCategories); JSONArray jsonArray =null; String jsonString=""; - ObjectMapper objectMapper = new ObjectMapper(); try { Gson gson=new Gson(); jsonString=gson.toJson(sxCategoryModelList); @@ -181,7 +183,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService @Override public void SyncVipList(DataBaseInfo dataBaseInfo, CommentModel commentModel) { dataBaseInfo= getDataBaseInfo(commentModel); - String where="where 1=1 "; + String where="where mobile is not null and mobile <>'' "; if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ where+="and oper_date > '"+commentModel.getSyncTime()+"'"; } @@ -193,21 +195,16 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService return; } // 总页数 - int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE); + int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE_MEMBER); List memberList=new ArrayList<>(); int syncCount =0; for (int i = 1; i <=pages; i++) { memberList.clear(); - List sxSyncVipList= sxDataDao.findRmVipInfoListPage(dataBaseInfo,i,SxDataDao.PAGESIZE); + List sxSyncVipList= sxDataDao.findRmVipInfoListPage(dataBaseInfo,i,SxDataDao.PAGESIZE_MEMBER); //处理数据转换SxSyncVip>SyncThirdMemberReq memberList=ConverList(sxSyncVipList); - String jsonString =""; - ObjectMapper objectMapper = new ObjectMapper(); - try { - jsonString = objectMapper.writeValueAsString(memberList); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + Gson gson=new Gson(); + String jsonString = gson.toJson(memberList); String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey()); String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_MEMBER +"?appKey="+commentModel.getAppKey() @@ -706,14 +703,9 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService public void syncAtive(DataBaseInfo dataBaseInfo, CommentModel commentModel) { String where="where 1=1"; Integer total =0; - if(DicEnum.SYNCTYPE_02.getCode().equals(dataBaseInfo.getSyncType())){ - if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ - where+=" and b.modify_date>'"+commentModel.getSyncTime()+"' "; - where+=" or b.build_date>'"+commentModel.getSyncTime()+"' "; - } - if(StringUtils.isNotEmpty(dataBaseInfo.getOperDate())){ - where+=" and t.oper_date>'"+dataBaseInfo.getOperDate()+"' "; - } + if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ + where+=" and b.start_date>'"+commentModel.getSyncTime()+"' "; + where+=" or b.oper_date>'"+commentModel.getSyncTime()+"' "; } dataBaseInfo.setWhere(where); total = sxDataDao.getActiveCount(dataBaseInfo); @@ -724,20 +716,20 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService // 总页数 int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE); int syncCount =0; - String encryptedData= getPrimaryKey(); + // String encryptedData= getPrimaryKey(); Date tenMinutesAgo = Date.from(Instant.now());//刷新时间 Date refreshDate= DateUtil.date(tenMinutesAgo); for (int i = 1; i <=pages; i++) { List activeDtos= sxDataDao.getActiveList(dataBaseInfo,i,SxDataDao.PAGESIZE); - String jsonString=""; - ObjectMapper objectMapper = new ObjectMapper(); - try { - jsonString = objectMapper.writeValueAsString(activeDtos); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + Gson gson=new GsonBuilder() + .setDateFormat("yyyy-MM-dd HH:mm:ss") // 设置全局 Date 格式 + .create(); + String jsonString= gson.toJson(activeDtos); + JSONArray jsonArray = JSONUtil.parseArray(jsonString); + String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey()); String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_ACTIVE - +"?primaryKey="+encryptedData, jsonString); + +"?appKey="+commentModel.getAppKey() + +"&sign="+sign, jsonArray); if (!HttpUtils.SUCCESSCODE.equals(code)) { continue; } @@ -751,15 +743,11 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService public void syncAtiveShops(DataBaseInfo dataBaseInfo, CommentModel commentModel) { String where="where 1=1"; Integer total =0; - if(DicEnum.SYNCTYPE_02.getCode().equals(dataBaseInfo.getSyncType())){ - if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ - where+=" and b.modify_date>'"+commentModel.getSyncTime()+"' "; - where+=" or b.build_date>'"+commentModel.getSyncTime()+"' "; - } - if(StringUtils.isNotEmpty(dataBaseInfo.getOperDate())){ - where+=" and t.oper_date>'"+dataBaseInfo.getOperDate()+"' "; - } + if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ + where+=" and start_date>'"+commentModel.getSyncTime()+"' "; + where+=" or oper_date>'"+commentModel.getSyncTime()+"' "; } + dataBaseInfo.setWhere(where); total = sxDataDao.getAllSpecCount(dataBaseInfo); if(total==0){ @@ -769,20 +757,21 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService // 总页数 int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE); int syncCount =0; - String encryptedData= getPrimaryKey(); + // String encryptedData= getPrimaryKey(); Date tenMinutesAgo = Date.from(Instant.now());//刷新时间 Date refreshDate= DateUtil.date(tenMinutesAgo);//todo 要记录刷新时间 for (int i = 1; i <=pages; i++) { List activeDtos= sxDataDao.getAllSpecPriceList(dataBaseInfo,i,SxDataDao.PAGESIZE); - String jsonString=""; - ObjectMapper objectMapper = new ObjectMapper(); - try { - jsonString = objectMapper.writeValueAsString(activeDtos); - } catch (JsonProcessingException e) { - throw new RuntimeException(e); - } + Gson gson=new GsonBuilder() + .setDateFormat("yyyy-MM-dd HH:mm:ss") // 设置全局 Date 格式 + .registerTypeAdapter(BigDecimal.class,new BigDecimalTypeAdapter()) + .create(); + String jsonString=gson.toJson(activeDtos); + JSONArray jsonArray = JSONUtil.parseArray(jsonString); + String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey()); String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_ACTIVE_SHOP - +"?primaryKey="+encryptedData, jsonString); + +"?appKey="+commentModel.getAppKey() + +"&sign="+sign, jsonArray); if (!HttpUtils.SUCCESSCODE.equals(code)) { continue; }