Compare commits

..

No commits in common. "af2627bad5096f6fc7e9918fbd6e1c0ff1f37337" and "f3b5f63f593ea5307ec09048511d969e54514bda" have entirely different histories.

49 changed files with 196 additions and 899 deletions

View File

@ -1,21 +0,0 @@
package com.small.client.Adapter;
import com.google.gson.*;
import java.lang.reflect.Type;
import java.math.BigDecimal;
public class BigDecimalTypeAdapter implements JsonSerializer<BigDecimal>, JsonDeserializer<BigDecimal> {
@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());
}
}

View File

@ -33,7 +33,7 @@ public class DynamicTaskScheduler {
this.sxDataService = sxDataService; this.sxDataService = sxDataService;
} }
@PostConstruct //@PostConstruct
public void initTasks() { public void initTasks() {
refreshTasks(); refreshTasks();
// 每5分钟检查一次数据库更新 // 每5分钟检查一次数据库更新

View File

@ -7,7 +7,6 @@ import com.small.client.dto.DataBaseInfo;
import com.small.client.service.SxDataService; import com.small.client.service.SxDataService;
import com.small.client.service.WebClientService; import com.small.client.service.WebClientService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@ -62,19 +61,7 @@ public class WebController {
public void synvip(){ public void synvip(){
log.info("synvip"); log.info("synvip");
// sxDataService.getAppSign(); // sxDataService.getAppSign();
CommentModel commentModel= sxDataService.getCommentModel(); sxDataService.SyncVipList(new DataBaseInfo(),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") // @RequestMapping("/getAppSign")
@ -109,38 +96,12 @@ public class WebController {
@RequestMapping("/syncActives") @RequestMapping("/syncActives")
public void syncActives(){ public void syncActives(){
CommentModel commentModel= sxDataService.getCommentModel(); sxDataService.syncAtive(new DataBaseInfo(),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") @RequestMapping("/syncAtiveShops")
public void syncAtiveShops(){ public void syncAtiveShops(){
CommentModel commentModel= sxDataService.getCommentModel(); sxDataService.syncAtiveShops(new DataBaseInfo(),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());
} }
} }

View File

@ -16,8 +16,7 @@ import java.sql.SQLException;
public class BaseDao { public class BaseDao {
private final static String DEFAULT_IP="127.0.0.1"; 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_USERNAME="sa";
private final static String DEFAULT_PWD="123456"; private final static String DEFAULT_PWD="123456";
private final static int PortNumber=1433; private final static int PortNumber=1433;
@ -124,40 +123,6 @@ public class BaseDao {
return resultDto; 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){ public Integer getBaseTotal(String ip, String username, String password,Integer portNumber, String dataBaseName, String table,String where){
int total=0; int total=0;
Connection connection=getConnection(ip,username,password,portNumber,dataBaseName); Connection connection=getConnection(ip,username,password,portNumber,dataBaseName);
@ -184,34 +149,6 @@ public class BaseDao {
return total; 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){ 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; int total=0;

View File

@ -2,13 +2,10 @@ package com.small.client.dao;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.small.client.Utils.BigDecimalFormatter; import com.small.client.Utils.BigDecimalFormatter;
import com.small.client.dto.*; import com.small.client.dto.*;
import lombok.extern.slf4j.Slf4j; 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 org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
@ -51,7 +48,6 @@ public class SxDataDao extends BaseDao{
private final static String T_RM_SPEC_PRICE="t_rm_spec_price";//活动表 private final static String T_RM_SPEC_PRICE="t_rm_spec_price";//活动表
public final static Integer PAGESIZE=500; public final static Integer PAGESIZE=500;
public final static Integer PAGESIZE_MEMBER=300;
public final static String DEFALTWHERE="where 1=1"; public final static String DEFALTWHERE="where 1=1";
@ -168,7 +164,7 @@ public class SxDataDao extends BaseDao{
* @return * @return
*/ */
public int getTrmVipInfoTotal(DataBaseInfo dataBaseInfo){ public int getTrmVipInfoTotal(DataBaseInfo dataBaseInfo){
return getVipBaseTotal(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_VIP_INFO,dataBaseInfo.getWhere()); return getBaseTotal(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_VIP_INFO,dataBaseInfo.getWhere());
} }
@ -259,7 +255,7 @@ public class SxDataDao extends BaseDao{
* @param pageSize * @param pageSize
*/ */
public List<SxSyncVip> findRmVipInfoListPage(DataBaseInfo dataBaseInfo, int pageNo, int pageSize){ public List<SxSyncVip> findRmVipInfoListPage(DataBaseInfo dataBaseInfo, int pageNo, int pageSize){
ResultDto resultDto=baseVipFindListPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_VIP_INFO,CARD_ID,pageNo,pageSize,dataBaseInfo.getWhere()); ResultDto resultDto=baseFindListPage(dataBaseInfo.getIp(),dataBaseInfo.getUserName(),dataBaseInfo.getPassword(),dataBaseInfo.getDbPort(),dataBaseInfo.getDataBaseName(),T_RM_VIP_INFO,CARD_ID,pageNo,pageSize,dataBaseInfo.getWhere());
ResultSet rs= resultDto.getResultSet(); ResultSet rs= resultDto.getResultSet();
List<SxSyncVip> sxSyncVips=new ArrayList<>(); List<SxSyncVip> sxSyncVips=new ArrayList<>();
SxSyncVip sxSyncVip=null; SxSyncVip sxSyncVip=null;
@ -273,26 +269,21 @@ public class SxDataDao extends BaseDao{
sxSyncVip.setMobile(rs.getString("mobile"));//会员名称 sxSyncVip.setMobile(rs.getString("mobile"));//会员名称
sxSyncVip.setBirthday(rs.getString("birthday"));//会员生日 sxSyncVip.setBirthday(rs.getString("birthday"));//会员生日
sxSyncVip.setCard_type(rs.getString("card_type")==null?"v1":rs.getString("card_type"));//会员生日 sxSyncVip.setCard_type(rs.getString("card_type")==null?"v1":rs.getString("card_type"));//会员生日
sxSyncVip.setCard_no(rs.getString("card_id"));//会员卡号 sxSyncVip.setCard_no(rs.getString("card_no"));//会员卡号
BigDecimal now_acc_num=null; sxSyncVip.setCard_no(rs.getString("now_acc_num"));//会员积分
try { sxSyncVip.setCard_no(rs.getString("residual_amt"));//储值余额
now_acc_num=rs.getBigDecimal("now_acc_num"); sxSyncVip.setCard_no(rs.getString("vip_start_date"));//建档日期
}catch (Exception e){
//log.info("now_acc_num错误now_acc_num{}",e.getMessage());
now_acc_num = rs.getBigDecimal("acc_num");
}
sxSyncVip.setNow_acc_num(now_acc_num);//会员积分 log.info(rs.getString("vip_name"));//会员名称
String residual_amtStr=rs.getString("residual_amt"); log.info(rs.getString("mobile"));//会员手机号
if(NumberUtils.isCreatable(residual_amtStr)){ log.info(rs.getString("vip_sex"));//会员性别
BigDecimal residual_amt=new BigDecimal(residual_amtStr); log.info(rs.getString("birthday"));//会员生日
sxSyncVip.setResidual_amt(residual_amt);//储值余额 log.info(rs.getString("card_no"));//会员卡号
}else { log.info(rs.getString("card_type"));//会员等级
sxSyncVip.setResidual_amtStr(residual_amtStr); log.info("{}",rs.getBigDecimal("residual_amt"));//储值余额
} log.info("{}",rs.getBigDecimal("now_acc_num"));//会员积分
sxSyncVip.setVip_date(rs.getTimestamp("vip_start_date"));//建档日期 log.info(rs.getString("vip_start_date"));//建档日期
sxSyncVip.setUser_nickname(rs.getString("vip_name")); log.info("{}",rs.getInt("card_status"));//会员状态
sxSyncVip.setUser_realname(rs.getString("vip_name"));
} }
sxSyncVips.add(sxSyncVip); sxSyncVips.add(sxSyncVip);
@ -540,12 +531,12 @@ public class SxDataDao extends BaseDao{
if(specialType.equals("6")||specialType.equals("G")){//折扣 if(specialType.equals("6")||specialType.equals("G")){//折扣
BigDecimal discount=rs.getBigDecimal("discount"); BigDecimal discount=rs.getBigDecimal("discount");
String discountStr=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("discount").multiply(new BigDecimal(10))); String discountStr=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("discount").multiply(new BigDecimal(10)));
activeDto.setActivityName(discountStr+"折商品"); activeDto.setActivityName(rs.getString(discountStr+"折商品"));
activeDto.setActivityTypeId(2); activeDto.setActivityTypeId(2);
activeDto.setDiscount(discount); activeDto.setDiscount(discount);
} }
if(specialType.equals("0")){//特价秒杀 if(specialType.equals("0")){//特价秒杀
activeDto.setActivityName("限时特价秒杀"); activeDto.setActivityName(rs.getString("限时特价秒杀"));
activeDto.setActivityTypeId(1); activeDto.setActivityTypeId(1);
} }
if(specialType.equals("E")){//满减 if(specialType.equals("E")){//满减
@ -553,7 +544,7 @@ public class SxDataDao extends BaseDao{
String max1=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price")); String max1=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price"));
String max2=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price").add(rs.getBigDecimal("new_price1"))); 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"))); String total2=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("old_price").add(rs.getBigDecimal("old_price1")));
activeDto.setActivityName(""+total1+""+max1+",满"+total2+""+max2); activeDto.setActivityName(rs.getString("")+total1+""+max1+",满"+total2+""+max2);
List<ActiveMaxDes> activeMaxDesList=new ArrayList<>(); List<ActiveMaxDes> activeMaxDesList=new ArrayList<>();
ActiveMaxDes activeMaxDes=new ActiveMaxDes(); ActiveMaxDes activeMaxDes=new ActiveMaxDes();
activeMaxDes.setMaxNum(rs.getBigDecimal("spe_price")); activeMaxDes.setMaxNum(rs.getBigDecimal("spe_price"));
@ -570,7 +561,6 @@ public class SxDataDao extends BaseDao{
activeDto.setActivityTypeId(3); activeDto.setActivityTypeId(3);
activeDto.setActiveMaxDesList(activeMaxDesList); activeDto.setActiveMaxDesList(activeMaxDesList);
} }
activeDto.setFlowNo(rs.getString("flow_no"));
activeDto.setActivityReleasetime(rs.getDate("oper_date")); activeDto.setActivityReleasetime(rs.getDate("oper_date"));
activeDto.setActivityStarttime(rs.getDate("start_date")); activeDto.setActivityStarttime(rs.getDate("start_date"));
activeDto.setActivityEndtime(rs.getDate("end_date")); activeDto.setActivityEndtime(rs.getDate("end_date"));
@ -643,13 +633,13 @@ public class SxDataDao extends BaseDao{
if(specialType.equals("6")||specialType.equals("G")){//折扣 if(specialType.equals("6")||specialType.equals("G")){//折扣
BigDecimal discount=rs.getBigDecimal("discount"); BigDecimal discount=rs.getBigDecimal("discount");
String discountStr=BigDecimalFormatter.formatWithoutTrailingZeros(discount.multiply(new BigDecimal(10))); String discountStr=BigDecimalFormatter.formatWithoutTrailingZeros(discount.multiply(new BigDecimal(10)));
activeShopInfo.setActivityName(discountStr+"折商品"); activeShopInfo.setActivityName(rs.getString(discountStr+"折商品"));
activeShopInfo.setActivityTypeId(2); activeShopInfo.setActivityTypeId(2);
} }
if(specialType.equals("0")){//特价秒杀 if(specialType.equals("0")){//特价秒杀
activeShopInfo.setActivityName("限时特价秒杀"); activeShopInfo.setActivityName(rs.getString("限时特价秒杀"));
activeShopInfo.setOldPrice(rs.getBigDecimal("old_price")); activeShopInfo.setOldPrice(rs.getBigDecimal("old_price"));
activeShopInfo.setSpecPrice(rs.getBigDecimal("spe_price")); activeShopInfo.setSpecPrice(rs.getBigDecimal("spec_price"));
activeShopInfo.setActivityTypeId(1); activeShopInfo.setActivityTypeId(1);
} }
if(specialType.equals("E")){//满减 if(specialType.equals("E")){//满减
@ -657,12 +647,11 @@ public class SxDataDao extends BaseDao{
String max1=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price")); String max1=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price"));
String max2=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("spe_price").add(rs.getBigDecimal("new_price1"))); 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"))); String total2=BigDecimalFormatter.formatWithoutTrailingZeros(rs.getBigDecimal("old_price").add(rs.getBigDecimal("old_price1")));
activeShopInfo.setActivityName(""+total1+""+max1+",满"+total2+""+max2); activeShopInfo.setActivityName(rs.getString("")+total1+""+max1+",满"+total2+""+max2);
activeShopInfo.setActivityTypeId(3); activeShopInfo.setActivityTypeId(3);
} }
activeShopInfo.setActivityStarttime(rs.getDate("start_date")); activeShopInfo.setActivityStarttime(rs.getDate("start_date"));
activeShopInfo.setActivityEndtime(rs.getDate("end_date")); activeShopInfo.setActivityEndtime(rs.getDate("end_date"));
activeShopInfo.setFlowNo(rs.getString("flow_no"));
if(DateUtil.compare(activeShopInfo.getActivityEndtime(),DateUtil.date())>0){ if(DateUtil.compare(activeShopInfo.getActivityEndtime(),DateUtil.date())>0){
activeShopInfo.setActivityState(1);//正常进行中 activeShopInfo.setActivityState(1);//正常进行中
}else { }else {

View File

@ -21,10 +21,12 @@ public class ActiveDto implements Serializable {
private Integer activityTypeId; private Integer activityTypeId;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty(value = "活动开始时间") @ApiModelProperty(value = "活动开始时间")
private Date activityStarttime; private Date activityStarttime;
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
@ApiModelProperty(value = "活动结束时间") @ApiModelProperty(value = "活动结束时间")
private Date activityEndtime; private Date activityEndtime;
@ -40,7 +42,4 @@ public class ActiveDto implements Serializable {
@ApiModelProperty(value = "满减规则") @ApiModelProperty(value = "满减规则")
private List<ActiveMaxDes> activeMaxDesList; private List<ActiveMaxDes> activeMaxDesList;
@ApiModelProperty(value = "活动id")
private String flowNo;
} }

View File

@ -41,7 +41,4 @@ public class ActiveShopInfo {
@ApiModelProperty(value = "折后价") @ApiModelProperty(value = "折后价")
private BigDecimal specPrice;//折后价 private BigDecimal specPrice;//折后价
@ApiModelProperty(value = "活动id")
private String flowNo;
} }

View File

@ -56,14 +56,12 @@ public class SxSyncVip implements Serializable {
@ApiModelProperty(value = "储值余额") @ApiModelProperty(value = "储值余额")
private BigDecimal residual_amt; private BigDecimal residual_amt;
@ApiModelProperty(value = "储值余额")
private String residual_amtStr;
@ApiModelProperty(value = "会员积分") @ApiModelProperty(value = "会员积分")
private BigDecimal now_acc_num; private BigDecimal now_acc_num;
@ApiModelProperty(value = "加入时间") @ApiModelProperty(value = "加入时间")
private Date vip_date; private String vip_date;
@ApiModelProperty(value = "会员状态") @ApiModelProperty(value = "会员状态")
private Integer card_status; private Integer card_status;
@ -79,10 +77,4 @@ public class SxSyncVip implements Serializable {
@ApiModelProperty(value = "更新时间") @ApiModelProperty(value = "更新时间")
private Date updated_at; private Date updated_at;
@ApiModelProperty("会员昵称")
private String user_nickname;
@ApiModelProperty("会员真实姓名")
private String user_realname;
} }

View File

@ -8,8 +8,6 @@ import cn.hutool.json.JSONUtil;
import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson; 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.Cache.CommonCache;
import com.small.client.Utils.*; import com.small.client.Utils.*;
import com.small.client.dao.SxDataDao; import com.small.client.dao.SxDataDao;
@ -36,7 +34,6 @@ import org.springframework.web.client.RestTemplate;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.math.BigDecimal;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.Files; import java.nio.file.Files;
import java.time.Duration; import java.time.Duration;
@ -91,6 +88,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
List<SxCategoryModel> sxCategoryModelList= ConVToSxCategoryModel(sxSyncCategories,allSxSyncCategories); List<SxCategoryModel> sxCategoryModelList= ConVToSxCategoryModel(sxSyncCategories,allSxSyncCategories);
JSONArray jsonArray =null; JSONArray jsonArray =null;
String jsonString=""; String jsonString="";
ObjectMapper objectMapper = new ObjectMapper();
try { try {
Gson gson=new Gson(); Gson gson=new Gson();
jsonString=gson.toJson(sxCategoryModelList); jsonString=gson.toJson(sxCategoryModelList);
@ -183,7 +181,7 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
@Override @Override
public void SyncVipList(DataBaseInfo dataBaseInfo, CommentModel commentModel) { public void SyncVipList(DataBaseInfo dataBaseInfo, CommentModel commentModel) {
dataBaseInfo= getDataBaseInfo(commentModel); dataBaseInfo= getDataBaseInfo(commentModel);
String where="where mobile is not null and mobile <>'' "; String where="where 1=1 ";
if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ if(StringUtils.isNotEmpty(commentModel.getSyncTime())){
where+="and oper_date > '"+commentModel.getSyncTime()+"'"; where+="and oper_date > '"+commentModel.getSyncTime()+"'";
} }
@ -195,16 +193,21 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
return; return;
} }
// 总页数 // 总页数
int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE_MEMBER); int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE);
List<SyncThirdMemberReq> memberList=new ArrayList<>(); List<SyncThirdMemberReq> memberList=new ArrayList<>();
int syncCount =0; int syncCount =0;
for (int i = 1; i <=pages; i++) { for (int i = 1; i <=pages; i++) {
memberList.clear(); memberList.clear();
List<SxSyncVip> sxSyncVipList= sxDataDao.findRmVipInfoListPage(dataBaseInfo,i,SxDataDao.PAGESIZE_MEMBER); List<SxSyncVip> sxSyncVipList= sxDataDao.findRmVipInfoListPage(dataBaseInfo,i,SxDataDao.PAGESIZE);
//处理数据转换SxSyncVip>SyncThirdMemberReq //处理数据转换SxSyncVip>SyncThirdMemberReq
memberList=ConverList(sxSyncVipList); memberList=ConverList(sxSyncVipList);
Gson gson=new Gson(); String jsonString ="";
String jsonString = gson.toJson(memberList); ObjectMapper objectMapper = new ObjectMapper();
try {
jsonString = objectMapper.writeValueAsString(memberList);
} catch (JsonProcessingException e) {
throw new RuntimeException(e);
}
String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey()); String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey());
String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_MEMBER String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_MEMBER
+"?appKey="+commentModel.getAppKey() +"?appKey="+commentModel.getAppKey()
@ -703,9 +706,14 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
public void syncAtive(DataBaseInfo dataBaseInfo, CommentModel commentModel) { public void syncAtive(DataBaseInfo dataBaseInfo, CommentModel commentModel) {
String where="where 1=1"; String where="where 1=1";
Integer total =0; Integer total =0;
if(DicEnum.SYNCTYPE_02.getCode().equals(dataBaseInfo.getSyncType())){
if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ if(StringUtils.isNotEmpty(commentModel.getSyncTime())){
where+=" and b.start_date>'"+commentModel.getSyncTime()+"' "; where+=" and b.modify_date>'"+commentModel.getSyncTime()+"' ";
where+=" or b.oper_date>'"+commentModel.getSyncTime()+"' "; where+=" or b.build_date>'"+commentModel.getSyncTime()+"' ";
}
if(StringUtils.isNotEmpty(dataBaseInfo.getOperDate())){
where+=" and t.oper_date>'"+dataBaseInfo.getOperDate()+"' ";
}
} }
dataBaseInfo.setWhere(where); dataBaseInfo.setWhere(where);
total = sxDataDao.getActiveCount(dataBaseInfo); total = sxDataDao.getActiveCount(dataBaseInfo);
@ -716,20 +724,20 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
// 总页数 // 总页数
int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE); int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE);
int syncCount =0; int syncCount =0;
// String encryptedData= getPrimaryKey(); String encryptedData= getPrimaryKey();
Date tenMinutesAgo = Date.from(Instant.now());//刷新时间 Date tenMinutesAgo = Date.from(Instant.now());//刷新时间
Date refreshDate= DateUtil.date(tenMinutesAgo); Date refreshDate= DateUtil.date(tenMinutesAgo);
for (int i = 1; i <=pages; i++) { for (int i = 1; i <=pages; i++) {
List<ActiveDto> activeDtos= sxDataDao.getActiveList(dataBaseInfo,i,SxDataDao.PAGESIZE); List<ActiveDto> activeDtos= sxDataDao.getActiveList(dataBaseInfo,i,SxDataDao.PAGESIZE);
Gson gson=new GsonBuilder() String jsonString="";
.setDateFormat("yyyy-MM-dd HH:mm:ss") // 设置全局 Date 格式 ObjectMapper objectMapper = new ObjectMapper();
.create(); try {
String jsonString= gson.toJson(activeDtos); jsonString = objectMapper.writeValueAsString(activeDtos);
JSONArray jsonArray = JSONUtil.parseArray(jsonString); } catch (JsonProcessingException e) {
String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey()); throw new RuntimeException(e);
}
String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_ACTIVE String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_ACTIVE
+"?appKey="+commentModel.getAppKey() +"?primaryKey="+encryptedData, jsonString);
+"&sign="+sign, jsonArray);
if (!HttpUtils.SUCCESSCODE.equals(code)) { if (!HttpUtils.SUCCESSCODE.equals(code)) {
continue; continue;
} }
@ -743,11 +751,15 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
public void syncAtiveShops(DataBaseInfo dataBaseInfo, CommentModel commentModel) { public void syncAtiveShops(DataBaseInfo dataBaseInfo, CommentModel commentModel) {
String where="where 1=1"; String where="where 1=1";
Integer total =0; Integer total =0;
if(DicEnum.SYNCTYPE_02.getCode().equals(dataBaseInfo.getSyncType())){
if(StringUtils.isNotEmpty(commentModel.getSyncTime())){ if(StringUtils.isNotEmpty(commentModel.getSyncTime())){
where+=" and start_date>'"+commentModel.getSyncTime()+"' "; where+=" and b.modify_date>'"+commentModel.getSyncTime()+"' ";
where+=" or oper_date>'"+commentModel.getSyncTime()+"' "; where+=" or b.build_date>'"+commentModel.getSyncTime()+"' ";
}
if(StringUtils.isNotEmpty(dataBaseInfo.getOperDate())){
where+=" and t.oper_date>'"+dataBaseInfo.getOperDate()+"' ";
}
} }
dataBaseInfo.setWhere(where); dataBaseInfo.setWhere(where);
total = sxDataDao.getAllSpecCount(dataBaseInfo); total = sxDataDao.getAllSpecCount(dataBaseInfo);
if(total==0){ if(total==0){
@ -757,21 +769,20 @@ public class SxDataServiceImp extends SxDataAbstService implements SxDataService
// 总页数 // 总页数
int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE); int pages = CommonUtil.getPagesCount(total, SxDataDao.PAGESIZE);
int syncCount =0; int syncCount =0;
// String encryptedData= getPrimaryKey(); String encryptedData= getPrimaryKey();
Date tenMinutesAgo = Date.from(Instant.now());//刷新时间 Date tenMinutesAgo = Date.from(Instant.now());//刷新时间
Date refreshDate= DateUtil.date(tenMinutesAgo);//todo 要记录刷新时间 Date refreshDate= DateUtil.date(tenMinutesAgo);//todo 要记录刷新时间
for (int i = 1; i <=pages; i++) { for (int i = 1; i <=pages; i++) {
List<ActiveShopInfo> activeDtos= sxDataDao.getAllSpecPriceList(dataBaseInfo,i,SxDataDao.PAGESIZE); List<ActiveShopInfo> activeDtos= sxDataDao.getAllSpecPriceList(dataBaseInfo,i,SxDataDao.PAGESIZE);
Gson gson=new GsonBuilder() String jsonString="";
.setDateFormat("yyyy-MM-dd HH:mm:ss") // 设置全局 Date 格式 ObjectMapper objectMapper = new ObjectMapper();
.registerTypeAdapter(BigDecimal.class,new BigDecimalTypeAdapter()) try {
.create(); jsonString = objectMapper.writeValueAsString(activeDtos);
String jsonString=gson.toJson(activeDtos); } catch (JsonProcessingException e) {
JSONArray jsonArray = JSONUtil.parseArray(jsonString); throw new RuntimeException(e);
String sign=CommonUtil.generateOpenSign(jsonString,commentModel.getAppId(),commentModel.getAppKey()); }
String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_ACTIVE_SHOP String code= HttpUtils.postData(restTemplate,remoteIp+HttpUtils.URL_SYNC_ACTIVE_SHOP
+"?appKey="+commentModel.getAppKey() +"?primaryKey="+encryptedData, jsonString);
+"&sign="+sign, jsonArray);
if (!HttpUtils.SUCCESSCODE.equals(code)) { if (!HttpUtils.SUCCESSCODE.equals(code)) {
continue; continue;
} }

View File

@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.suisung.mall.account.service.*; import com.suisung.mall.account.service.*;
import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.modules.account.*; import com.suisung.mall.common.modules.account.*;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.common.utils.MybatisPlusQueryUtil; import com.suisung.mall.common.utils.MybatisPlusQueryUtil;
import io.seata.core.context.RootContext; import io.seata.core.context.RootContext;
import io.seata.core.exception.TransactionException; import io.seata.core.exception.TransactionException;
@ -439,37 +438,4 @@ public class AccountController {
return accountUserInfoService.find(MybatisPlusQueryUtil.getQueryWrapper(AccountUserBase.class, queryParams)); return accountUserInfoService.find(MybatisPlusQueryUtil.getQueryWrapper(AccountUserBase.class, queryParams));
} }
@RequestMapping(value = "/getAccountsMapByMobile", method = RequestMethod.POST)
public Map<String,Integer> getAccountsMapByMobile(@RequestBody List<String> mobiles) {
return accountUserBaseService.getAccountBaseMapByMobile(mobiles);
}
@RequestMapping(value = "/getAccountMaxId", method = RequestMethod.POST)
public Integer getAccountMaxId() {
return accountUserBaseService.getAccountMaxId();
}
@RequestMapping(value = "/saveBatchAccountBase", method = RequestMethod.POST)
public ThirdApiRes saveBatchAccountBase(@RequestBody List<AccountUserBase> accountUserBaseList) {
return accountUserBaseService.saveBatchAccountBase(accountUserBaseList);
}
@RequestMapping(value = "/saveBatchAccountInfo", method = RequestMethod.POST)
public ThirdApiRes saveBatchAccountInfo(@RequestBody List<AccountUserInfo> accountUserInfoList) {
return accountUserBaseService.saveBatchAccountInfo( accountUserInfoList);
}
@RequestMapping(value = "/findOneAccountUserBase", method = RequestMethod.POST)
public AccountUserBase findOneAccountUserBase(@RequestBody AccountUserBase accountUserBase) {
QueryWrapper<AccountUserBase> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("user_is_admin", accountUserBase.getUser_is_admin());
queryWrapper.eq("store_ids",accountUserBase.getStore_ids());
queryWrapper.last("limit 1");
return accountUserBaseService.getOne(queryWrapper);
}
} }

View File

@ -3,9 +3,7 @@ package com.suisung.mall.account.service;
import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.domain.UserDto; import com.suisung.mall.common.domain.UserDto;
import com.suisung.mall.common.modules.account.AccountUserBase; import com.suisung.mall.common.modules.account.AccountUserBase;
import com.suisung.mall.common.modules.account.AccountUserInfo;
import com.suisung.mall.common.pojo.req.WxUserInfoReq; import com.suisung.mall.common.pojo.req.WxUserInfoReq;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.core.web.service.IBaseService; import com.suisung.mall.core.web.service.IBaseService;
import org.springframework.data.util.Pair; import org.springframework.data.util.Pair;
@ -237,31 +235,4 @@ public interface AccountUserBaseService extends IBaseService<AccountUserBase> {
* @return * @return
*/ */
Boolean sendSmsMessage(String mobile, String templateCode, Map<String, Object> msgArgs); Boolean sendSmsMessage(String mobile, String templateCode, Map<String, Object> msgArgs);
/**
* 根据手机号和商户查询map用于批量匹配
* @param moblies 就是账号集合
* @return
*/
Map<String,Integer> getAccountBaseMapByMobile(List<String> moblies);
/**
* 找出accountbase的最大id
* @return
*/
Integer getAccountMaxId();
/**
* 批量保存accountBase
* @return
*/
ThirdApiRes saveBatchAccountBase(List<AccountUserBase> accountUserBaseList);
/**
* 批量保存accountInfo
* @return
*/
ThirdApiRes saveBatchAccountInfo(List<AccountUserInfo> accountUserInfoList);
} }

View File

@ -52,7 +52,6 @@ import com.suisung.mall.common.modules.pay.PayUserResource;
import com.suisung.mall.common.modules.plantform.ShopPlantformSubsiteUser; import com.suisung.mall.common.modules.plantform.ShopPlantformSubsiteUser;
import com.suisung.mall.common.pojo.dto.SmsDto; import com.suisung.mall.common.pojo.dto.SmsDto;
import com.suisung.mall.common.pojo.req.WxUserInfoReq; import com.suisung.mall.common.pojo.req.WxUserInfoReq;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.common.service.MessageService; import com.suisung.mall.common.service.MessageService;
import com.suisung.mall.common.utils.*; import com.suisung.mall.common.utils.*;
import com.suisung.mall.common.utils.constbank.RSAUtil; import com.suisung.mall.common.utils.constbank.RSAUtil;
@ -3563,57 +3562,8 @@ public class AccountUserBaseServiceImpl extends BaseServiceImpl<AccountUserBaseM
logger.error("发送短信失败:", e); logger.error("发送短信失败:", e);
return false; return false;
} }
}
@Override
public Map<String,Integer> getAccountBaseMapByMobile(List<String> moblies) {
QueryWrapper<AccountUserBase> queryWrapper=new QueryWrapper<>();
queryWrapper.select("user_id", "user_account");
moblies.forEach(moblie -> {
queryWrapper.or(q -> q.eq("user_account", moblie));
});
List<AccountUserBase> userBaseList= this.list(queryWrapper);
return userBaseList.stream().collect(Collectors.toMap(AccountUserBase::getUser_account, AccountUserBase::getUser_id));
}
@Override
public Integer getAccountMaxId() {
QueryWrapper<AccountUserBase> queryWrapper=new QueryWrapper<>();
queryWrapper.select("max(user_id) as user_id");
AccountUserBase accountUserBase=this.getOne(queryWrapper);
return accountUserBase.getUser_id();
}
@Override
public ThirdApiRes saveBatchAccountBase(List<AccountUserBase> accountUserBaseList) {
boolean result=false;
if(!accountUserBaseList.isEmpty()){
try {
result= saveBatch(accountUserBaseList,accountUserBaseList.size());
}catch (RuntimeException e){
throw new ApiException("保存saveBatchAccountBase报错"+e.getMessage());
}
}
if(result){
return new ThirdApiRes().success("成功");
}
return new ThirdApiRes().fail(250,"保存异常");
}
@Override
public ThirdApiRes saveBatchAccountInfo(List<AccountUserInfo> accountUserInfoList){
boolean result=false;
if(!accountUserInfoList.isEmpty()){
try {
result= accountUserInfoService.saveBatch(accountUserInfoList,accountUserInfoList.size());
}catch (Exception e){
throw new RuntimeException("保存AccountUserInfo报错"+e.getMessage());
}
}
if(result){
return new ThirdApiRes().success("成功");
}
return new ThirdApiRes().fail(250,"保存异常");
} }

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,21 +0,0 @@
package com.suisung.mall.common.adapter;
import com.google.gson.*;
import java.lang.reflect.Type;
import java.math.BigDecimal;
public class BigDecimalTypeAdapter implements JsonSerializer<BigDecimal>, JsonDeserializer<BigDecimal> {
@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());
}
}

View File

@ -4,7 +4,6 @@ import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.modules.account.*; import com.suisung.mall.common.modules.account.*;
import com.suisung.mall.common.modules.push.PushTemplate; import com.suisung.mall.common.modules.push.PushTemplate;
import com.suisung.mall.common.pojo.output.TimelineOutput; import com.suisung.mall.common.pojo.output.TimelineOutput;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -230,10 +229,10 @@ public interface AccountService {
@RequestParam(name = "user_type", required = false) Integer user_type); @RequestParam(name = "user_type", required = false) Integer user_type);
@PostMapping("/admin/account/pushTocid") @PostMapping("/admin/account/pushTocid")
String pushTocid(@RequestParam(name = "message") String message,@RequestParam(name = "userId") String userId); String pushTocid(@RequestParam(name = "message") String message, @RequestParam(name = "userId") String userId);
@PostMapping("/admin/account/pushNotificationTocid") @PostMapping("/admin/account/pushNotificationTocid")
String pushNotificationTocid(@RequestParam("userId") String userId,@RequestBody PushTemplate pushTemplate); String pushNotificationTocid(@RequestParam("userId") String userId, @RequestBody PushTemplate pushTemplate);
/** /**
* 根据用户 Id 获取账号推送绑定关系列表记录 * 根据用户 Id 获取账号推送绑定关系列表记录
@ -243,41 +242,4 @@ public interface AccountService {
*/ */
@PostMapping("admin/account/account-user-bind-getui/selectAccountUserBindGeTuiListByUserId") @PostMapping("admin/account/account-user-bind-getui/selectAccountUserBindGeTuiListByUserId")
List<AccountUserBindGeTui> selectAccountUserBindGeTuiListByUserId(@RequestParam(name = "userId", defaultValue = "0") Integer userId); List<AccountUserBindGeTui> selectAccountUserBindGeTuiListByUserId(@RequestParam(name = "userId", defaultValue = "0") Integer userId);
/**
* 通过手机号查找map
* @param mobiles
* @return
*/
@PostMapping(value = "/admin/account/accountController/getAccountsMapByMobile")
Map<String,Integer> getAccountsMapByMobile(@RequestBody List<String> mobiles);
/**
* 找出account表的最大id
* @return
*/
@PostMapping(value = "/admin/account/accountController/getAccountMaxId")
Integer getAccountMaxId();
/**
* 批量保存accountBase
* @return
*/
@PostMapping(value = "/admin/account/accountController/saveBatchAccountBase")
ThirdApiRes saveBatchAccountBase(@RequestBody List<AccountUserBase> accountUserBaseList);
/**
* 批量保存accountInfo
* @return
*/
@PostMapping(value = "/admin/account/accountController/saveBatchAccountInfo")
ThirdApiRes saveBatchAccountInfo(@RequestBody List<AccountUserInfo> accountUserInfoList);
/**
* 批量保存accountInfo
* @return
*/
@PostMapping(value = "/admin/account/accountController/findOneAccountUserBase")
AccountUserBase findOneAccountUserBase(@RequestBody AccountUserBase accountUserBase);
} }

View File

@ -5,9 +5,7 @@ import com.suisung.mall.common.modules.order.ShopOrderReturn;
import com.suisung.mall.common.modules.pay.*; import com.suisung.mall.common.modules.pay.*;
import com.suisung.mall.common.modules.product.ShopProductIndex; import com.suisung.mall.common.modules.product.ShopProductIndex;
import com.suisung.mall.common.pojo.output.TimelineOutput; import com.suisung.mall.common.pojo.output.TimelineOutput;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import org.springframework.cloud.openfeign.FeignClient; import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
@ -194,10 +192,4 @@ public interface PayService {
Boolean changePayConsumeTradeState(@RequestParam(name = "order_id") String orderId, Boolean changePayConsumeTradeState(@RequestParam(name = "order_id") String orderId,
@RequestParam(name = "order_state_id") Integer orderStateId, @RequestParam(name = "order_state_id") Integer orderStateId,
@RequestParam(name = "trade_is_paid") Integer tradeIsPaid); @RequestParam(name = "trade_is_paid") Integer tradeIsPaid);
@PostMapping(value = "/admin/pay/payController/saveBatchPayUserResources")
@Transactional
ThirdApiRes saveBatchPayUserResources(@RequestBody List<PayUserResource> payUserResourceList);
} }

View File

@ -10,8 +10,6 @@ import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
/** /**
* @program: mall-suite * @program: mall-suite
* @description: es远程调用 * @description: es远程调用
@ -34,6 +32,5 @@ public interface SearchService {
@PostMapping(value = "/esProduct/recommend") @PostMapping(value = "/esProduct/recommend")
CommonResult recommend(@RequestBody ProductRecommendDTO productRecommendDTO); CommonResult recommend(@RequestBody ProductRecommendDTO productRecommendDTO);
@PostMapping("/esProduct/batchImport")
CommonResult batchImport(@RequestBody List<ShopProductIndex> shopProductIndexList);
} }

View File

@ -123,8 +123,4 @@ public class ShopStoreActivityBase implements Serializable {
@ApiModelProperty(value = "乐观锁") @ApiModelProperty(value = "乐观锁")
private Integer version; private Integer version;
@ApiModelProperty(value = "思迅活动id")
@TableField(updateStrategy = NOT_EMPTY)
private String flow_no;
} }

View File

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.modules.order.ShopOrderReturn; import com.suisung.mall.common.modules.order.ShopOrderReturn;
import com.suisung.mall.common.modules.pay.*; import com.suisung.mall.common.modules.pay.*;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.common.utils.MybatisPlusQueryUtil; import com.suisung.mall.common.utils.MybatisPlusQueryUtil;
import com.suisung.mall.pay.service.*; import com.suisung.mall.pay.service.*;
import io.seata.core.context.RootContext; import io.seata.core.context.RootContext;
@ -407,11 +406,5 @@ public class PayController {
payUserPayService.wxRefundNotify(request); payUserPayService.wxRefundNotify(request);
} }
@ApiOperation(value = "批量保存", notes = "用户资源表")
@RequestMapping(value = "/saveBatchPayUserResources", method = {RequestMethod.POST})
public ThirdApiRes saveBatchPayUserResources(@RequestBody List<PayUserResource> payUserResourceList) {
return payUserPayService.saveBatchPayUserResources(payUserResourceList);
}
} }

View File

@ -3,8 +3,6 @@ package com.suisung.mall.pay.service;
import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.modules.order.ShopOrderReturn; import com.suisung.mall.common.modules.order.ShopOrderReturn;
import com.suisung.mall.common.modules.pay.PayUserPay; import com.suisung.mall.common.modules.pay.PayUserPay;
import com.suisung.mall.common.modules.pay.PayUserResource;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.core.web.service.IBaseService; import com.suisung.mall.core.web.service.IBaseService;
import com.suisung.mall.pay.entity.PayTypeBean; import com.suisung.mall.pay.entity.PayTypeBean;
@ -65,6 +63,4 @@ public interface PayUserPayService extends IBaseService<PayUserPay> {
boolean deleteUserChainByUid(List<Integer> user_ids); boolean deleteUserChainByUid(List<Integer> user_ids);
ThirdApiRes saveBatchPayUserResources(List<PayUserResource> payUserResourceList);
} }

View File

@ -50,7 +50,6 @@ import com.suisung.mall.common.modules.order.ShopOrderReturn;
import com.suisung.mall.common.modules.pay.*; import com.suisung.mall.common.modules.pay.*;
import com.suisung.mall.common.modules.pay.dto.ItemActivityInfoDTO; import com.suisung.mall.common.modules.pay.dto.ItemActivityInfoDTO;
import com.suisung.mall.common.modules.store.ShopStoreBase; import com.suisung.mall.common.modules.store.ShopStoreBase;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.common.utils.CheckUtil; import com.suisung.mall.common.utils.CheckUtil;
import com.suisung.mall.common.utils.I18nUtil; import com.suisung.mall.common.utils.I18nUtil;
import com.suisung.mall.common.utils.LogUtil; import com.suisung.mall.common.utils.LogUtil;
@ -70,7 +69,6 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition; import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus; import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
@ -1767,23 +1765,4 @@ public class PayUserPayServiceImpl extends BaseServiceImpl<PayUserPayMapper, Pay
shopService.updateRefundOrderReturn(shopOrderReturn); shopService.updateRefundOrderReturn(shopOrderReturn);
} }
@Override
@Transactional
public ThirdApiRes saveBatchPayUserResources(List<PayUserResource> payUserResourceList) {
boolean result=false;
if(!payUserResourceList.isEmpty()){
try {
result=payUserResourceService.saveBatch(payUserResourceList,payUserResourceList.size());
}catch (RuntimeException e){
throw new ApiException("保存saveBatchPayUserResources报错"+e.getMessage());
}
}
if(result){
return new ThirdApiRes().success("批量保存成功");
}
return new ThirdApiRes().fail(250,"批量保存失败");
}
} }

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -1,6 +1,6 @@
spring: spring:
datasource: datasource:
url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://@mysql.host@:@mysql.port@/@mysql.db@?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&&zeroDateTimeBehavior=convertToNull
username: @mysql.user@ username: @mysql.user@
password: @mysql.pwd@ password: @mysql.pwd@
driver-class-name: @mysql.driver@ driver-class-name: @mysql.driver@

View File

@ -78,11 +78,4 @@ public class EsProductController {
} }
@ApiOperation(value = "导入商品到ES")
@RequestMapping(value = "/batchImport", method = RequestMethod.POST)
public CommonResult batchImport(List<ShopProductIndex> shopProductIndexList) {
int count = esProductService.batchImport(shopProductIndexList);
return CommonResult.success(count);
}
} }

View File

@ -49,10 +49,4 @@ public interface EsProductService {
*/ */
PageImpl<? extends Serializable> recommend(ProductRecommendDTO productRecommendDTO); PageImpl<? extends Serializable> recommend(ProductRecommendDTO productRecommendDTO);
/**
* 根据id创建商品
*/
int batchImport(List<ShopProductIndex> shopProductIndexList);
} }

View File

@ -56,14 +56,14 @@ public class EsProductServiceImpl implements EsProductService {
@Override @Override
public int importAll() { public int importAll() {
List<EsProduct> esProductList = productDao.getAllEsProductList(null); List<EsProduct> esProductList = productDao.getAllEsProductList(null);
// Iterable<EsProduct> esProductIterable = productRepository.saveAll(esProductList); Iterable<EsProduct> esProductIterable = productRepository.saveAll(esProductList);
// Iterator<EsProduct> iterator = esProductIterable.iterator(); Iterator<EsProduct> iterator = esProductIterable.iterator();
// int result = 0; int result = 0;
// while (iterator.hasNext()) { while (iterator.hasNext()) {
// result++; result++;
// iterator.next(); iterator.next();
// } }
return saveBatchEsProduct(esProductList); return result;
} }
@Override @Override
@ -311,29 +311,4 @@ public class EsProductServiceImpl implements EsProductService {
return new PageImpl<>(collects, pageable, searchHits.getTotalHits()); return new PageImpl<>(collects, pageable, searchHits.getTotalHits());
} }
@Override
public int batchImport(List<ShopProductIndex> shopProductIndexList) {
List<EsProduct> esProductList = new ArrayList<>();
for (ShopProductIndex shopProductIndex : shopProductIndexList) {
JSONObject jsonObject = JSONUtil.parseObj(shopProductIndex);
EsProduct es_product = JSONUtil.toBean(jsonObject, EsProduct.class);
esProductList.add(es_product);
}
if(esProductList.isEmpty()){
return 0;
}
return saveBatchEsProduct(esProductList);
}
private int saveBatchEsProduct(List<EsProduct> esProductList){
Iterable<EsProduct> esProductIterable = productRepository.saveAll(esProductList);
Iterator<EsProduct> iterator = esProductIterable.iterator();
int result = 0;
while (iterator.hasNext()) {
result++;
iterator.next();
}
return result;
}
} }

View File

@ -29,8 +29,4 @@ public interface ShopNumberSeqService extends IBaseService<ShopNumberSeq> {
List<Integer> getBatchSpecItemId(int batchSize); List<Integer> getBatchSpecItemId(int batchSize);
void clearKeyStoreItemSepcId(); void clearKeyStoreItemSepcId();
List<Integer> getBatchUserAccountBaseId(int batchSize);
void clearKeyStoreAccountBaseId();
} }

View File

@ -2,7 +2,6 @@ package com.suisung.mall.shop.number.service.impl;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.suisung.mall.common.feignService.AccountService;
import com.suisung.mall.common.modules.number.ShopNumberSeq; import com.suisung.mall.common.modules.number.ShopNumberSeq;
import com.suisung.mall.common.modules.product.ShopProductSpecItem; import com.suisung.mall.common.modules.product.ShopProductSpecItem;
import com.suisung.mall.core.web.service.RedisService; import com.suisung.mall.core.web.service.RedisService;
@ -16,6 +15,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -45,9 +45,6 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl<ShopNumberSeqMappe
@Autowired @Autowired
private ShopProductSpecItemService shopProductSpecItemService; private ShopProductSpecItemService shopProductSpecItemService;
@Autowired
private AccountService accountService;
/** /**
* 得到下一个Id * 得到下一个Id
* 方法走到这里会产生串行化集群部署这里不能使用单机锁 * 方法走到这里会产生串行化集群部署这里不能使用单机锁
@ -204,12 +201,6 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl<ShopNumberSeqMappe
redisService.del(RedisKey.STOREDATASPECITEMID); redisService.del(RedisKey.STOREDATASPECITEMID);
} }
public void clearKeyStoreAccountBaseId(){
redisService.del(RedisKey.STOREDATACCOUNTBASEID);
}
/** /**
* 清除缓存专门给并发使用,防止redis的缓存没有加载 * 清除缓存专门给并发使用,防止redis的缓存没有加载
*/ */
@ -270,32 +261,6 @@ public class ShopNumberSeqServiceImpl extends BaseServiceImpl<ShopNumberSeqMappe
return IntStream.rangeClosed(start+1, start+batchSize).boxed().collect(Collectors.toList()); return IntStream.rangeClosed(start+1, start+batchSize).boxed().collect(Collectors.toList());
} }
/**
* 存的是最大值取的是范围如存最大值1批量是2则取范围1+11+2,如果没有则从1开始算即取范围[0+1,0+2]
* @param batchSize
* @return
*/
@Override
public synchronized List<Integer> getBatchUserAccountBaseId(int batchSize) {
int start=0;
if(null!=redisService.get(RedisKey.STOREDATACCOUNTBASEID)){
start=(Integer) redisService.get(RedisKey.STOREDATACCOUNTBASEID);
redisService.set(RedisKey.STOREDATACCOUNTBASEID,start+batchSize);
}
Integer maxId= accountService.getAccountMaxId();
if(null!=maxId){
start=maxId;
redisService.set(RedisKey.STOREDATACCOUNTBASEID,start+batchSize);
}
if(start==0){
redisService.set(RedisKey.STOREDATACCOUNTBASEID,start+batchSize);
return IntStream.rangeClosed(start+1, start+batchSize).boxed().collect(Collectors.toList());
}
return IntStream.rangeClosed(start+1, start+batchSize).boxed().collect(Collectors.toList());
}
public static void main(String[] args) { public static void main(String[] args) {
System.out.printf(IntStream.rangeClosed(1, 1).boxed().collect(Collectors.toList()).toString()); System.out.printf(IntStream.rangeClosed(1, 1).boxed().collect(Collectors.toList()).toString());
} }

View File

@ -288,13 +288,14 @@ public interface ShopProductBaseService extends IBaseService<ShopProductBase> {
List<ShopProductInfo> shopProductInfoList, List<List<ShopProductItem>> shopProductItemList, List<ShopProductInfo> shopProductInfoList, List<List<ShopProductItem>> shopProductItemList,
List<ShopProductImage> shopProductImageList, List<ShopProductImage> shopProductImageList,
List<ShopProductValidPeriod> shopProductValidPeriodList, List<ShopProductValidPeriod> shopProductValidPeriodList,
List<ShopProductAssistIndex> shopProductAssistIndexList,String priorityMode); List<ShopProductAssistIndex> shopProductAssistIndexList);
/** /**
* 加载商品 * 加载商品
* @param store_id * @param store_id
* @return * @return
*/ */
Map<String,Long> getProductBasicIdByStore(Integer store_id,List<String> productNumberList); Map getProductBasicIdByStore(Integer store_id);
void clearBasicIdByStore(Integer store_id);
} }

View File

@ -75,8 +75,9 @@ public interface ShopProductItemService extends IBaseService<ShopProductItem> {
* @param store_id * @param store_id
* @return * @return
*/ */
Map<String,String> getProductItemIdByStore(Integer store_id,List<String> productNumbers); Map getProductItemIdByStore(Integer store_id);
void clearProductItemIdByStore(Integer store_id);
/** /**
* 更加产品名称更新状态 * 更加产品名称更新状态

View File

@ -213,7 +213,6 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
private StoreDbConfigService storeDbConfigService; private StoreDbConfigService storeDbConfigService;
@Override @Override
public boolean trySaveProduct(String productObj, String productItems) { public boolean trySaveProduct(String productObj, String productItems) {
@ -5278,7 +5277,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
List<ShopProductData> shopProductDataList, List<ShopProductDetail> shopProductDetailList, List<ShopProductData> shopProductDataList, List<ShopProductDetail> shopProductDetailList,
List<ShopProductInfo> shopProductInfoList, List<List<ShopProductItem>> shopProductItemList, List<ShopProductInfo> shopProductInfoList, List<List<ShopProductItem>> shopProductItemList,
List<ShopProductImage> shopProductImageList, List<ShopProductValidPeriod> shopProductValidPeriodList, List<ShopProductImage> shopProductImageList, List<ShopProductValidPeriod> shopProductValidPeriodList,
List<ShopProductAssistIndex> shopProductAssistIndexList,String priorityMode) { List<ShopProductAssistIndex> shopProductAssistIndexList) {
// 1. 参数校验 // 1. 参数校验
if (shopProductBaseList == null || shopProductBaseList.isEmpty()) { if (shopProductBaseList == null || shopProductBaseList.isEmpty()) {
@ -5423,7 +5422,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
newProductDataList,updateProductDataList,newShopProductDetailList,updateShopProductDetailList, newProductDataList,updateProductDataList,newShopProductDetailList,updateShopProductDetailList,
newShopProductInfoList,updateShopProductInfoList,newShopProductItemList,updateShopProductItemList, newShopProductInfoList,updateShopProductInfoList,newShopProductItemList,updateShopProductItemList,
newShopProductImageList,updateShopProductImageList,newShopProductValidPeriodList,updateShopProductValidPeriodList, newShopProductImageList,updateShopProductImageList,newShopProductValidPeriodList,updateShopProductValidPeriodList,
newShopProductAssistIndexList,updateShopProductAssistIndexList,priorityMode); newShopProductAssistIndexList,updateShopProductAssistIndexList);
} }
@ -5438,8 +5437,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
List<List<ShopProductItem>> newShopProductItemList,List<List<ShopProductItem>> udpateShopProductItemList, List<List<ShopProductItem>> newShopProductItemList,List<List<ShopProductItem>> udpateShopProductItemList,
List<ShopProductImage> newShopProductImageList, List<ShopProductImage> udpteShopProductImageList, List<ShopProductImage> newShopProductImageList, List<ShopProductImage> udpteShopProductImageList,
List<ShopProductValidPeriod> newShopProductValidPeriodList, List<ShopProductValidPeriod> updateShopProductValidPeriodList, List<ShopProductValidPeriod> newShopProductValidPeriodList, List<ShopProductValidPeriod> updateShopProductValidPeriodList,
List<ShopProductAssistIndex> newShopProductAssistIndexList, List<ShopProductAssistIndex> udpateShopProductAssistIndexList, List<ShopProductAssistIndex> newShopProductAssistIndexList, List<ShopProductAssistIndex> udpateShopProductAssistIndexList
String priorityMode
) { ) {
TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager); TransactionTemplate transactionTemplate = new TransactionTemplate(transactionManager);
transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
@ -5579,6 +5577,8 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
productMappingService.computeProductMapping(newProducts,newProducts.get(0).getStore_id(),false); productMappingService.computeProductMapping(newProducts,newProducts.get(0).getStore_id(),false);
} }
if(CollUtil.isNotEmpty(updateProducts)){//如果时自动优先则按平台规则切割商品 if(CollUtil.isNotEmpty(updateProducts)){//如果时自动优先则按平台规则切割商品
Map map=storeDbConfigService.getPriorityModeCachByStoreId(newProducts.get(0).getStore_id());
String priorityMode= (String) map.get(String.valueOf(newProducts.get(0).getStore_id()));
if(DicEnum.PRIORITY_MODE_2.getCode().equals(priorityMode)){ if(DicEnum.PRIORITY_MODE_2.getCode().equals(priorityMode)){
productMappingService.computeProductMapping(updateProducts,updateProducts.get(0).getStore_id(),true); productMappingService.computeProductMapping(updateProducts,updateProducts.get(0).getStore_id(),true);
} }
@ -5618,11 +5618,7 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
long endTime = System.nanoTime(); long endTime = System.nanoTime();
long duration = (endTime - startTime); long duration = (endTime - startTime);
logger.info("新增newShopProductIndex-{}条数据耗时:{}",newShopProductIndex.size(),duration/1000000000); logger.info("新增newShopProductIndex-{}条数据耗时:{}",newShopProductIndex.size(),duration/1000000000);
boolean esearch_enable = accountBaseConfigService.getConfig("esearch_enable", false);
//调用escreate
if (esearch_enable) {
searchService.batchImport(newShopProductIndex);//创建es
}
//} //}
} }
@ -5633,11 +5629,6 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
long endTime = System.nanoTime(); long endTime = System.nanoTime();
long duration = (endTime - startTime); long duration = (endTime - startTime);
logger.info("更新updateShopProductIndex-{}条数据耗时:{}",updateShopProductIndex.size(),duration/1000000000); logger.info("更新updateShopProductIndex-{}条数据耗时:{}",updateShopProductIndex.size(),duration/1000000000);
boolean esearch_enable = accountBaseConfigService.getConfig("esearch_enable", false);
//调用escreate
if (esearch_enable) {
searchService.batchImport(newShopProductIndex);//创建es
}
// } // }
} }
@ -6112,21 +6103,25 @@ public class ShopProductBaseServiceImpl extends BaseServiceImpl<ShopProductBaseM
} }
@Override @Override
public Map<String,Long> getProductBasicIdByStore(Integer store_id,List<String> productNumberList) { public Map getProductBasicIdByStore(Integer store_id) {
String key=redisService.get(RedisKey.STORESHOPPRODUCTKEY)+":"+store_id;
if(null!=redisService.get(key)){
return (Map) redisService.get(key);
}
QueryWrapper<ShopProductBase> queryWrapper=new QueryWrapper(); QueryWrapper<ShopProductBase> queryWrapper=new QueryWrapper();
queryWrapper.select("product_number","product_id"); queryWrapper.select("product_number","product_id");
productNumberList.forEach(productNumber->{
queryWrapper.or(q->q.eq("store_id",store_id).eq("product_number",productNumber));
});
List<ShopProductBase> shopProductBaseList= this.list(queryWrapper); List<ShopProductBase> shopProductBaseList= this.list(queryWrapper);
Map<String,Long> resultMap=new HashMap(); Map map= shopProductBaseList.stream().collect(Collectors.toMap(shopBase->shopBase.getProduct_number(),shopBase->shopBase.getProduct_id()));
shopProductBaseList.forEach(shopProductBase->{ redisService.set(RedisKey.STORESHOPPRODUCTKEY,map,60*10);
if(StringUtils.isNotEmpty(shopProductBase.getProduct_number())){ return map;
resultMap.put(String.valueOf(shopProductBase.getProduct_number()),shopProductBase.getProduct_id());
}
});
return resultMap;
} }
@Override
public void clearBasicIdByStore(Integer store_id) {
String key=redisService.get(RedisKey.STORESHOPPRODUCTKEY)+":"+store_id;
if(null!=redisService.get(key)){
redisService.del(key);
}
}
} }

View File

@ -2245,24 +2245,34 @@ public class ShopProductItemServiceImpl extends BaseServiceImpl<ShopProductItemM
} }
@Override @Override
public Map<String,String> getProductItemIdByStore(Integer store_id,List<String> productNumbers) { public Map getProductItemIdByStore(Integer store_id) {
String key= RedisKey.STORESHOPPRODUCITEMTKEY+":"+store_id;
if(null!=redisService.get(key)){
return (Map) redisService.get(key);
}
QueryWrapper<ShopProductItem> queryWrapper = new QueryWrapper<>(); QueryWrapper<ShopProductItem> queryWrapper = new QueryWrapper<>();
/** /**
* 一对多如product_id:1002,item_number:120_121;数据格式为item_id,item_id item_unit_price,item_unit_price * 一对多如product_id:1002,item_number:120_121;数据格式为item_id,item_id item_unit_price,item_unit_price
* 最终组合item_id,item_id_item_unit_price,item_unit_price * 最终组合item_id,item_id_item_unit_price,item_unit_price
*/ */
queryWrapper.select("product_id","GROUP_CONCAT(item_id SEPARATOR ',') AS mergedItemId","GROUP_CONCAT(item_unit_price SEPARATOR ',') AS mergedUnitPrices"); queryWrapper.select("product_id","GROUP_CONCAT(item_id SEPARATOR ',') AS mergedItemId","GROUP_CONCAT(item_unit_price SEPARATOR ',') AS mergedUnitPrices");
productNumbers.forEach(productNumber -> {
queryWrapper.or(q->q.eq("store_id",store_id).eq("item_src_id",productNumber));
});
queryWrapper.eq("store_id",store_id); queryWrapper.eq("store_id",store_id);
queryWrapper.groupBy("product_id"); queryWrapper.groupBy("product_id");
List<ShopProductItem> shopProductItems= this.list(queryWrapper); List<ShopProductItem> shopProductItems= this.list(queryWrapper);
Map map=shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id,shopProductItem->shopProductItem.getMergedItemId() Map map=shopProductItems.stream().collect(Collectors.toMap(ShopProductItem::getProduct_id,shopProductItem->shopProductItem.getMergedItemId()
+"_"+shopProductItem.getMergedUnitPrices())); +"_"+shopProductItem.getMergedUnitPrices()));
redisService.set(key,map,60*10);
return map; return map;
} }
@Override
public void clearProductItemIdByStore(Integer store_id) {
String key= RedisKey.STORESHOPPRODUCITEMTKEY+":"+store_id;
if(null!=redisService.get(key)){
redisService.del(key);
}
}
/** /**
* 清理库存缓存 * 清理库存缓存

View File

@ -174,7 +174,7 @@ public class ActiveShopJsonUtils {
for (int i = 0; i < discountArray.length(); i++) { for (int i = 0; i < discountArray.length(); i++) {
JSONObject seckillItem = discountArray.getJSONObject(i); JSONObject seckillItem = discountArray.getJSONObject(i);
if (seckillItem.getInt("item_id") == itemId) { if (seckillItem.getInt("item_id") == itemId) {
seckillItem.put("price", item.getBigDecimal("price")); seckillItem.put("price", item.getInt("price"));
break; break;
} }
} }
@ -182,7 +182,7 @@ public class ActiveShopJsonUtils {
// 添加新商品 // 添加新商品
JSONObject seckillItem = new JSONObject(); JSONObject seckillItem = new JSONObject();
seckillItem.put("item_id", itemId); seckillItem.put("item_id", itemId);
seckillItem.put("price", item.getBigDecimal("price")); seckillItem.put("price", item.getInt("price"));
discountArray.put(seckillItem); discountArray.put(seckillItem);
existingIds.add(itemId); existingIds.add(itemId);
} }

View File

@ -117,6 +117,11 @@ public class SyncThirdDataController {
return readSxData(folders,appKey,sign,syncType); return readSxData(folders,appKey,sign,syncType);
} }
// @ApiOperation(value = "获取加密密钥", notes = "获取加密密钥")
// @RequestMapping(value = "/getAppSign", method = RequestMethod.POST)
// public Map<String,Object> getAppSign(@RequestParam String primaryKey) {
// return syncAppService.getAppSign(primaryKey);
// }
/** /**
* 客户端查询配置 * 客户端查询配置
@ -176,4 +181,6 @@ public class SyncThirdDataController {
return new ThirdApiRes().success("服务器已执行活动数据操作"); return new ThirdApiRes().success("服务器已执行活动数据操作");
} }
} }

View File

@ -1,13 +0,0 @@
package com.suisung.mall.shop.sync.dto;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class ActiveMaxDes {
private BigDecimal total;
private BigDecimal maxNum;
}

View File

@ -1,48 +0,0 @@
package com.suisung.mall.shop.sync.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
@Data
public class ActiveModel implements Serializable {
@ApiModelProperty(value = "活动名称")
private String activityName;
@ApiModelProperty(value = "活动类型 1秒杀2单件折扣3满减")
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;
@ApiModelProperty(value = "活动状态(ENUM):0-未开启;1-正常;2-已结束;3-管理员关闭;4-商家关闭")
private Integer activityState;
@ApiModelProperty(value = "发布时间")
private Date activityReleasetime;
@ApiModelProperty(value = "折扣")
private BigDecimal discount;
@ApiModelProperty(value = "满减规则")
private List<ActiveMaxDes> activeMaxDesList;
@ApiModelProperty(value = "活动id")
private String flowNo;
}

View File

@ -1,47 +0,0 @@
package com.suisung.mall.shop.sync.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.util.Date;
@Data
public class ActiveShopInfo {
@ApiModelProperty(value = "商品编号")
private String itemNo;
@ApiModelProperty(value = "活动名称")
private String activityName;
@ApiModelProperty(value = "活动类型 1秒杀2单件折扣3满减")
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;
@ApiModelProperty(value = "折扣")
private BigDecimal discount;
@ApiModelProperty(value = "活动状态(ENUM):0-未开启;1-正常;2-已结束;3-管理员关闭;4-商家关闭")
private Integer activityState;
@ApiModelProperty(value = "原价")
private BigDecimal oldPrice;//原价
@ApiModelProperty(value = "折后价")
private BigDecimal specPrice;//折后价
@ApiModelProperty(value = "活动id")
private String flowNo;
}

View File

@ -15,9 +15,9 @@ public class RedisKey {
public static final String STOREDATAPRODUCTSPECITEM="storedata:ProductSpecItem"; public static final String STOREDATAPRODUCTSPECITEM="storedata:ProductSpecItem";
public static final String STORESHOPPRODUCTKEY="storedata:shopProductkey";
public static final String STORESHOPPRODUCITEMTKEY="storedata:shopProductItemKey";
public static final String STOREDBDATAPRIORITYMODEKEY="storedbdata:priorityModeKey"; public static final String STOREDBDATAPRIORITYMODEKEY="storedbdata:priorityModeKey";
public static final String STOREDATACCOUNTBASEID="storedata:accountBaseId";
} }

View File

@ -204,12 +204,11 @@ public class StoreDbConfigServiceImpl extends BaseServiceImpl<StoreDbConfigMappe
return (Map)redisService.get(key); return (Map)redisService.get(key);
} }
QueryWrapper<StoreDbConfig> queryWrapper = new QueryWrapper<>(); QueryWrapper<StoreDbConfig> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("store_id", storeId);
queryWrapper.select("priority_mode"); queryWrapper.select("priority_mode");
queryWrapper.eq("store_id", String.valueOf(storeId)); StoreDbConfig dbConfig= this.getOne(queryWrapper);
StoreDbConfig dbConfig= this.findOne(queryWrapper);
Map map=new HashMap(); Map map=new HashMap();
map.put(String.valueOf(storeId),dbConfig.getPriorityMode()); map.put(String.valueOf(storeId),dbConfig.getPriorityMode());
redisService.hSetAll(key,map,60*10);
return map; return map;
} }

View File

@ -12,7 +12,6 @@ import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject; import cn.hutool.json.JSONObject;
import com.alibaba.excel.util.DateUtils; import com.alibaba.excel.util.DateUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.suisung.mall.common.api.ResultCode;
import com.suisung.mall.common.api.StateCode; import com.suisung.mall.common.api.StateCode;
import com.suisung.mall.common.constant.CommonConstant; import com.suisung.mall.common.constant.CommonConstant;
import com.suisung.mall.common.enums.DicEnum; import com.suisung.mall.common.enums.DicEnum;
@ -34,7 +33,6 @@ import com.suisung.mall.common.modules.store.ShopStoreActivityBase;
import com.suisung.mall.common.modules.store.ShopStoreBase; import com.suisung.mall.common.modules.store.ShopStoreBase;
import com.suisung.mall.common.pojo.dto.LibraryProductDTO; import com.suisung.mall.common.pojo.dto.LibraryProductDTO;
import com.suisung.mall.common.pojo.req.SyncThirdMemberReq; import com.suisung.mall.common.pojo.req.SyncThirdMemberReq;
import com.suisung.mall.common.pojo.res.ThirdApiRes;
import com.suisung.mall.common.utils.DateTimeUtils; import com.suisung.mall.common.utils.DateTimeUtils;
import com.suisung.mall.common.utils.I18nUtil; import com.suisung.mall.common.utils.I18nUtil;
import com.suisung.mall.common.utils.StringUtils; import com.suisung.mall.common.utils.StringUtils;
@ -186,6 +184,7 @@ public abstract class SyncBaseThirdSxAbstract{
if(CollectionUtil.isNotEmpty(libraryProductDTOS)){ if(CollectionUtil.isNotEmpty(libraryProductDTOS)){
secondCate.setCategory_image(libraryProductDTOS.get(0).getThumb()); secondCate.setCategory_image(libraryProductDTOS.get(0).getThumb());
} }
if (productCategoryService.saveOrUpdate(secondCate)) { if (productCategoryService.saveOrUpdate(secondCate)) {
// 当前子分类的第二级父类id // 当前子分类的第二级父类id
list.get(i).setCategory_parent_id(secondCate.getId()); list.get(i).setCategory_parent_id(secondCate.getId());
@ -449,112 +448,6 @@ public abstract class SyncBaseThirdSxAbstract{
return count; return count;
} }
/**
* 批量保存会员
* @param memberList
* @param storeId
* @return
*/
public int baseBatchSaveOrUpdateMemberBatch(List<SyncThirdMemberReq> memberList,String storeId){
int count = 0;
List<String> moblies=new ArrayList<>();
for (SyncThirdMemberReq member : memberList) {
String user_mobile = PhoneNumberUtils.convWithIDDCodePhoneNumber(member.getUser_mobile(), CommonConstant.IDD_ZH_CN);//+86
moblies.add(user_mobile);
}
Map<String, Integer> stringIntegerMap= accountService.getAccountsMapByMobile(moblies);
//Map<String, Integer> stringIntegerMap= new HashMap<>();
if(stringIntegerMap.keySet().size()==memberList.size()){//如果查到的数据全部匹配就是全部存在没有走下去的必要了
return count;
}
//去除已存在的手机号
List<SyncThirdMemberReq> addMemberList=new ArrayList<>();
for (SyncThirdMemberReq member : memberList) {
String user_mobile = PhoneNumberUtils.convWithIDDCodePhoneNumber(member.getUser_mobile(), CommonConstant.IDD_ZH_CN);//+86
if (!stringIntegerMap.containsKey(user_mobile)) {
addMemberList.add(member);
}
}
//计算userId
List<Integer> accountBaseIds=shopNumberSeqService.getBatchUserAccountBaseId(addMemberList.size());
List<AccountUserBase> addAccountUserBases=new ArrayList<>();
List<AccountUserInfo> addAcountUserInfo=new ArrayList<>();
List<PayUserResource> addPayUserResource=new ArrayList<>();
for (int i = 0; i < accountBaseIds.size(); i++) {
// account_user_base
SyncThirdMemberReq syncThirdMemberReq=addMemberList.get(i);
Integer userId=accountBaseIds.get(i);
AccountUserBase accountUserBase = new AccountUserBase();
String user_mobile = PhoneNumberUtils.convWithIDDCodePhoneNumber(syncThirdMemberReq.getUser_mobile(), CommonConstant.IDD_ZH_CN);//+86
accountUserBase.setUser_id(userId);
accountUserBase.setUser_account(user_mobile);
accountUserBase.setUser_nickname(syncThirdMemberReq.getUser_nickname());
accountUserBase.setUser_state(2);// 状态(ENUM):0-锁定;1-未激活;2-已激活;
accountUserBase.setUser_is_admin(CommonConstant.USER_TYPE_NORMAL);
accountUserBase.setStore_ids(storeId);
accountUserBase.setRights_group_id("0");// 普通用户不是商家
accountUserBase.setUser_type(CommonConstant.USER_TYPE_NORMAL);
// 默认给了随机密码和盐token
String user_key = IdUtil.simpleUUID();
String user_salt = IdUtil.simpleUUID();
String user_token = IdUtil.simpleUUID();
accountUserBase.setUser_salt(user_salt);
accountUserBase.setUser_token(user_token);
accountUserBase.setUser_key(user_key);
accountUserBase.setUser_password(SecureUtil.md5(user_salt + SecureUtil.md5(IdUtil.simpleUUID())));
addAccountUserBases.add(accountUserBase);
// account_user_info
AccountUserInfo accountUserInfo = new AccountUserInfo();
accountUserInfo.setUser_id(userId);
accountUserInfo.setUser_type_id(0);
accountUserInfo.setUser_mobile(user_mobile);
accountUserInfo.setUser_level_card(syncThirdMemberReq.getUser_level_card());
//user_level_id
accountUserInfo.setUser_level_id(1); // todo select id
accountUserInfo.setUser_gender(syncThirdMemberReq.getUser_gender());
accountUserInfo.setUser_mobile(syncThirdMemberReq.getUser_mobile());
accountUserInfo.setUser_intl(CommonConstant.IDD_ZH_CN);
if(null!=syncThirdMemberReq.getUser_birthday()){
accountUserInfo.setUser_birthday(DateTimeUtils.parseDate(syncThirdMemberReq.getUser_birthday(), "yyyy-MM-dd"));
}
addAcountUserInfo.add(accountUserInfo);
if (syncThirdMemberReq.getUser_money() != null || syncThirdMemberReq.getUser_points() != null) {
// pay_user_resource 用户支付资源积分余额
PayUserResource payUserResource = new PayUserResource();
payUserResource.setUser_id(userId);
payUserResource.setUser_money(BigDecimal.ZERO);
payUserResource.setUser_money_frozen(BigDecimal.ZERO);
payUserResource.setUser_points(BigDecimal.ZERO);
payUserResource.setUser_points_frozen(BigDecimal.ZERO);
addPayUserResource.add(payUserResource);
}
count += 1;
}
if(!addAccountUserBases.isEmpty()){
ThirdApiRes thirdApiRes=accountService.saveBatchAccountBase(addAccountUserBases);
if(thirdApiRes.getError_code()!=0){
throw new ApiException(ResultCode.FAILED);
}
}
if(!addAcountUserInfo.isEmpty()){
ThirdApiRes thirdApiRes= accountService.saveBatchAccountInfo(addAcountUserInfo);
if(thirdApiRes.getError_code()!=0){
throw new ApiException(ResultCode.FAILED,"addAcountUserInfo保存异常");
}
}
if(!addPayUserResource.isEmpty()){
ThirdApiRes thirdApiRes= payService.saveBatchPayUserResources(addPayUserResource);
if(thirdApiRes.getError_code()!=0){
throw new ApiException(ResultCode.FAILED);
}
}
return count;
}
/** /**
* List<SxSyncVip> 转换为 List<SyncThirdMemberReq> * List<SxSyncVip> 转换为 List<SyncThirdMemberReq>
* @param sxSyncVipList * @param sxSyncVipList
@ -655,7 +548,7 @@ public abstract class SyncBaseThirdSxAbstract{
* @param storeId * @param storeId
* @return * @return
*/ */
public int baseSaveOrUpdateGoodsBatch(JSONArray goodsListJSON,String storeId,String isNegativeAllowed,String priorityMode){ public int baseSaveOrUpdateGoodsBatch(JSONArray goodsListJSON,String storeId,String isNegativeAllowed){
AtomicInteger resultCount = new AtomicInteger(); AtomicInteger resultCount = new AtomicInteger();
Map categoryMap= productCategoryService.getCategoryListByStoreId(storeId);//热数据加载 Map categoryMap= productCategoryService.getCategoryListByStoreId(storeId);//热数据加载
List<ShopProductBase> shopProductBaseList=new ArrayList<>(); List<ShopProductBase> shopProductBaseList=new ArrayList<>();
@ -831,7 +724,7 @@ public abstract class SyncBaseThirdSxAbstract{
shopProductBaseService.saveProductBatch(shopProductBaseList,shopProductIndexList,shopProductDataList,shopProductDetailList,shopProductInfoList,shopProductItemLists, shopProductBaseService.saveProductBatch(shopProductBaseList,shopProductIndexList,shopProductDataList,shopProductDetailList,shopProductInfoList,shopProductItemLists,
shopProductImageList, shopProductImageList,
new ArrayList<ShopProductValidPeriod>(), new ArrayList<ShopProductValidPeriod>(),
new ArrayList<ShopProductAssistIndex>(),priorityMode); new ArrayList<ShopProductAssistIndex>());
return resultCount.get(); return resultCount.get();
} }
@ -970,27 +863,17 @@ public abstract class SyncBaseThirdSxAbstract{
shopStoreActivityBase.setActivity_name(jsonObj.getStr("activityName")); shopStoreActivityBase.setActivity_name(jsonObj.getStr("activityName"));
shopStoreActivityBase.setActivity_state(jsonObj.getInt("activityState")); shopStoreActivityBase.setActivity_state(jsonObj.getInt("activityState"));
shopStoreActivityBase.setActivity_starttime(jsonObj.getDate("activityStarttime")); shopStoreActivityBase.setActivity_starttime(jsonObj.getDate("activityStarttime"));
shopStoreActivityBase.setFlow_no(jsonObj.getStr("flowNo"));
return shopStoreActivityBase; return shopStoreActivityBase;
}) })
.distinct() .distinct()
.collect(Collectors.toList()); .collect(Collectors.toList());
List<ShopStoreActivityBase> existing = batchGetByAtiveShopBase(storeProductPairs,storeId); List<ShopStoreActivityBase> existing = batchGetByAtiveShopBase(storeProductPairs,storeId);
return existing.stream()
Map<String,String> resultMap=new HashMap<>(); .collect(Collectors.toMap(
shopStoreActivityBase -> shopStoreActivityBase.getActivity_title()+"_"+shopStoreActivityBase.getActivity_starttime().getTime()+"_"+shopStoreActivityBase.getActivity_state(),
existing.forEach(shopStoreActivityBase -> { shopStoreActivityBase->shopStoreActivityBase.getActivity_id()+"_"+shopStoreActivityBase.getActivity_rule()
resultMap.put(shopStoreActivityBase.getActivity_name()+"_"+shopStoreActivityBase.getActivity_starttime().getTime()+"_"+shopStoreActivityBase.getActivity_state()+"_"+shopStoreActivityBase.getFlow_no(),shopStoreActivityBase.getActivity_id()+"__"+(StringUtils.isEmpty(shopStoreActivityBase.getActivity_rule())?"0":shopStoreActivityBase.getActivity_rule())); ));
});
return resultMap;
// return existing.stream()
// .collect(Collectors.toMap(
// shopStoreActivityBase -> shopStoreActivityBase.getActivity_name()+"_"+shopStoreActivityBase.getActivity_starttime()+"_"+shopStoreActivityBase.getActivity_state(),
// shopStoreActivityBase->shopStoreActivityBase.getActivity_id()+"_"+(StringUtils.isEmpty(shopStoreActivityBase.getActivity_rule())?"0":shopStoreActivityBase.getActivity_rule())
// ));
} }
/** /**
@ -1001,11 +884,10 @@ public abstract class SyncBaseThirdSxAbstract{
return Collections.emptyList(); return Collections.emptyList();
} }
QueryWrapper<ShopStoreActivityBase> query = new QueryWrapper<>(); QueryWrapper<ShopStoreActivityBase> query = new QueryWrapper<>();
query.select("activity_name", "activity_state","activity_starttime","activity_rule","activity_endtime","activity_id","flow_no"); query.select("activity_name", "activity_state");
shopStoreActivityBases.forEach(shopStoreActivityBase -> { shopStoreActivityBases.forEach(shopStoreActivityBase -> {
query.or(q -> q.eq("activity_name", shopStoreActivityBase.getActivity_name()).eq("activity_state",shopStoreActivityBase.getActivity_state()) query.or(q -> q.eq("activity_name", shopStoreActivityBase.getActivity_name()).eq("activity_state",shopStoreActivityBase.getActivity_state())
.eq("activity_starttime",shopStoreActivityBase.getActivity_starttime()) .eq("activity_starttime",shopStoreActivityBase.getActivity_starttime())
.eq("flow_no",shopStoreActivityBase.getFlow_no())
.eq("store_id", storeId)); .eq("store_id", storeId));
}); });

View File

@ -23,15 +23,10 @@ import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.qcloud.cos.model.COSObjectSummary; import com.qcloud.cos.model.COSObjectSummary;
import com.suisung.mall.common.adapter.BigDecimalTypeAdapter;
import com.suisung.mall.common.api.CommonResult; import com.suisung.mall.common.api.CommonResult;
import com.suisung.mall.common.api.StateCode; import com.suisung.mall.common.api.StateCode;
import com.suisung.mall.common.enums.DicEnum; import com.suisung.mall.common.enums.DicEnum;
import com.suisung.mall.common.exception.ApiException;
import com.suisung.mall.common.feignService.AccountService;
import com.suisung.mall.common.modules.account.AccountUserBase;
import com.suisung.mall.common.modules.base.ShopBaseProductBrand; import com.suisung.mall.common.modules.base.ShopBaseProductBrand;
import com.suisung.mall.common.modules.base.ShopBaseProductCategory; import com.suisung.mall.common.modules.base.ShopBaseProductCategory;
import com.suisung.mall.common.modules.sixun.SxSyncGoods; import com.suisung.mall.common.modules.sixun.SxSyncGoods;
@ -66,12 +61,9 @@ import com.suisung.mall.shop.store.service.ShopStoreActivityBaseService;
import com.suisung.mall.shop.sync.Utils.ActiveShopJsonUtils; import com.suisung.mall.shop.sync.Utils.ActiveShopJsonUtils;
import com.suisung.mall.shop.sync.Utils.BigDecimalFormatter; import com.suisung.mall.shop.sync.Utils.BigDecimalFormatter;
import com.suisung.mall.shop.sync.Utils.ThreadFileUtils; import com.suisung.mall.shop.sync.Utils.ThreadFileUtils;
import com.suisung.mall.shop.sync.dto.ActiveModel;
import com.suisung.mall.shop.sync.dto.ActiveShopInfo;
import com.suisung.mall.shop.sync.dto.BrandModel; import com.suisung.mall.shop.sync.dto.BrandModel;
import com.suisung.mall.shop.sync.keymanage.RedisKey; import com.suisung.mall.shop.sync.keymanage.RedisKey;
import com.suisung.mall.shop.sync.service.*; import com.suisung.mall.shop.sync.service.*;
import io.seata.spring.annotation.GlobalTransactional;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -87,7 +79,6 @@ import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.File; import java.io.File;
@ -108,8 +99,6 @@ import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.suisung.mall.common.utils.I18nUtil._;
@Service @Service
public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements SyncThirdDataService { public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements SyncThirdDataService {
@ -168,8 +157,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
@Autowired @Autowired
private SyncShopImageService syncShopImageService; private SyncShopImageService syncShopImageService;
@Autowired
private AccountService accountService;
/** /**
* 批量保存商品的分类 * 批量保存商品的分类
@ -283,8 +270,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
* @return * @return
*/ */
@Override @Override
@GlobalTransactional
// @Transactional
public ThirdApiRes saveOrUpdateMemberBatch(String appKey, String sign, List<SyncThirdMemberReq> memberList) { public ThirdApiRes saveOrUpdateMemberBatch(String appKey, String sign, List<SyncThirdMemberReq> memberList) {
if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign) || CollUtil.isEmpty(memberList)) { if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign) || CollUtil.isEmpty(memberList)) {
return new ThirdApiRes().fail(1003, I18nUtil._("缺少必要参数!")); return new ThirdApiRes().fail(1003, I18nUtil._("缺少必要参数!"));
@ -302,15 +287,8 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
if (memberList.size() > limitCnt) { if (memberList.size() > limitCnt) {
return new ThirdApiRes().fail(1004, I18nUtil._("单次同步记录最多" + limitCnt + "条!")); return new ThirdApiRes().fail(1004, I18nUtil._("单次同步记录最多" + limitCnt + "条!"));
} }
shopNumberSeqService.clearKeyStoreAccountBaseId();
int count =0;
try {
count= baseBatchSaveOrUpdateMemberBatch(memberList, storeId);
}catch (RuntimeException e) {
throw new ApiException(_("保存失败"+e.getMessage()));
}
// shopNumberSeqService.clearKeyStoreAccountBaseId(); int count = baseSaveOrUpdateMemberBatch(memberList, storeId);
Map<String, Integer> resp = new HashMap<>(); Map<String, Integer> resp = new HashMap<>();
resp.put("count", count); resp.put("count", count);
@ -576,7 +554,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
for (int i = 0; i < newFolders.size(); i++) { for (int i = 0; i < newFolders.size(); i++) {
final int taskId = i; final int taskId = i;
final String isNegativeAllowed=storeDbConfig.getIsNegativeAllowed(); final String isNegativeAllowed=storeDbConfig.getIsNegativeAllowed();
String priorityMode=storeDbConfig.getPriorityMode();
threadNum.incrementAndGet(); threadNum.incrementAndGet();
futures.add(executor.submit(() -> { futures.add(executor.submit(() -> {
int count = 0;//失败重试机制当失败重试一次再次失败则记录到数据库中 int count = 0;//失败重试机制当失败重试一次再次失败则记录到数据库中
@ -586,7 +563,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
String fileName = "good_" + (taskId + 1) + ".txt"; String fileName = "good_" + (taskId + 1) + ".txt";
JSONArray jsonArray = new ThreadFileUtils().processFolder(taskName, newFolders.get(taskId)); JSONArray jsonArray = new ThreadFileUtils().processFolder(taskName, newFolders.get(taskId));
try { try {
baseSaveOrUpdateGoodsBatch(jsonArray, storeId,isNegativeAllowed,priorityMode); baseSaveOrUpdateGoodsBatch(jsonArray, storeId,isNegativeAllowed);
success.getAndIncrement(); success.getAndIncrement();
threadNum.decrementAndGet(); threadNum.decrementAndGet();
return "成功" + taskId; return "成功" + taskId;
@ -748,6 +725,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign)) { if (StrUtil.isBlank(appKey) || StrUtil.isBlank(sign)) {
return new ThirdApiRes().fail(1003, I18nUtil._("缺少必要参数!")); return new ThirdApiRes().fail(1003, I18nUtil._("缺少必要参数!"));
} }
// 验签appid必要参数判断 // 验签appid必要参数判断
SyncApp syncAppO = syncAppService.getOne(new LambdaQueryWrapper<SyncApp>() SyncApp syncAppO = syncAppService.getOne(new LambdaQueryWrapper<SyncApp>()
.select(SyncApp::getApp_key, SyncApp::getApp_secret, SyncApp::getStore_id) .select(SyncApp::getApp_key, SyncApp::getApp_secret, SyncApp::getStore_id)
@ -821,6 +799,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
if (StrUtil.isBlank(productKey) || delta == null) { if (StrUtil.isBlank(productKey) || delta == null) {
continue; continue;
} }
try { try {
// 使用 Redis HINCRBY 保证原子性和高性能 // 使用 Redis HINCRBY 保证原子性和高性能
redisTemplate.opsForHash().increment(RedisKey.STOREDATARELEASE, productKey, delta); redisTemplate.opsForHash().increment(RedisKey.STOREDATARELEASE, productKey, delta);
@ -940,12 +919,10 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
return; return;
} }
// 验签appid必要参数判断 // 验签appid必要参数判断
List<ActiveModel> activeModelList= activeJsonArray.toList(ActiveModel.class); SyncApp syncAppO = syncAppService.getOne(new LambdaQueryWrapper<SyncApp>()
Gson gson=new GsonBuilder() .select(SyncApp::getApp_key, SyncApp::getApp_secret,SyncApp::getStore_id)
.setDateFormat("yyyy-MM-dd HH:mm:ss") // 设置全局 Date 格式 .eq(SyncApp::getApp_key, appKey)
.create(); .eq(SyncApp::getApp_secret,sign));
String gsonStr= gson.toJson(activeModelList);
SyncApp syncAppO = syncAppService.checkAppSign(appKey,sign,gsonStr);
if (syncAppO == null) { if (syncAppO == null) {
logger.error("签名有误!"); logger.error("签名有误!");
return; return;
@ -963,11 +940,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
List<ShopStoreActivityBase> addshopStoreActivityBaseList=new ArrayList<>(); List<ShopStoreActivityBase> addshopStoreActivityBaseList=new ArrayList<>();
List<ShopStoreActivityBase> updateShopStoreActivityBaseList=new ArrayList<>(); List<ShopStoreActivityBase> updateShopStoreActivityBaseList=new ArrayList<>();
Map<String, String> stringIntegerMap= checkExistingActive(jsonArray,storeId); Map<String, String> stringIntegerMap= checkExistingActive(jsonArray,storeId);
AccountUserBase accountUserBase=new AccountUserBase();
accountUserBase.setUser_is_admin(1);
accountUserBase.setStore_ids("1");
AccountUserBase accountUserBases=accountService.findOneAccountUserBase(accountUserBase);
Integer userId= accountUserBases.getUser_id();
jsonArray.stream().parallel().forEach(object->{ jsonArray.stream().parallel().forEach(object->{
final JSONObject jsonObj= (JSONObject) object; final JSONObject jsonObj= (JSONObject) object;
String activityName=jsonObj.getStr("activityName"); String activityName=jsonObj.getStr("activityName");
@ -991,14 +963,13 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
Date activityStarttime=jsonObj.getDate("activityStarttime"); Date activityStarttime=jsonObj.getDate("activityStarttime");
Date activityEndtime=jsonObj.getDate("activityEndtime"); Date activityEndtime=jsonObj.getDate("activityEndtime");
Integer activityState=jsonObj.getInt("activityState"); Integer activityState=jsonObj.getInt("activityState");
String flowNo=jsonObj.getStr("flowNo"); Date activityReleasetime= jsonObj.getDate("activityReleasetime");
// Date activityReleasetime= jsonObj.getDate("activityReleasetime");
BigDecimal discount=jsonObj.getBigDecimal("discount"); BigDecimal discount=jsonObj.getBigDecimal("discount");
String key=activityName+"_"+activityStarttime.getTime()+"_"+activityState+"_"+flowNo; String key=activityName+"_"+activityStarttime.getTime()+"_"+activityState;
shopStoreActivityBase.setActivity_state(activityState); shopStoreActivityBase.setActivity_state(activityState);
shopStoreActivityBase.setActivity_name(activityName); shopStoreActivityBase.setActivity_name(activityName);
shopStoreActivityBase.setActivity_type(1);//免费参与 shopStoreActivityBase.setActivity_type(1);//免费参与
// shopStoreActivityBase.setActivity_releasetime(activityReleasetime); shopStoreActivityBase.setActivity_releasetime(activityReleasetime);
shopStoreActivityBase.setStore_id(storeId); shopStoreActivityBase.setStore_id(storeId);
shopStoreActivityBase.setActivity_on_is_off(0); shopStoreActivityBase.setActivity_on_is_off(0);
shopStoreActivityBase.setActivity_type_id(activityTypeId); shopStoreActivityBase.setActivity_type_id(activityTypeId);
@ -1006,19 +977,13 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
shopStoreActivityBase.setActivity_endtime(activityEndtime); shopStoreActivityBase.setActivity_endtime(activityEndtime);
shopStoreActivityBase.setActivity_state(activityState); shopStoreActivityBase.setActivity_state(activityState);
shopStoreActivityBase.setSubsite_id(0); shopStoreActivityBase.setSubsite_id(0);
shopStoreActivityBase.setUser_id(userId);
shopStoreActivityBase.setFlow_no(flowNo);
if(stringIntegerMap.containsKey(key)){//更新 if(stringIntegerMap.containsKey(key)){//更新
String keyVal= MapUtil.getStr(stringIntegerMap,key); String keyVal= MapUtil.getStr(stringIntegerMap,key);
shopStoreActivityBase.setActivity_id(MapUtil.getInt(stringIntegerMap,keyVal.split("_")[0])); shopStoreActivityBase.setActivity_id(MapUtil.getInt(stringIntegerMap,keyVal.split("_")[0]));
synchronized(updateShopStoreActivityBaseList){
updateShopStoreActivityBaseList.add(shopStoreActivityBase); updateShopStoreActivityBaseList.add(shopStoreActivityBase);
}
}else { }else {
synchronized(addshopStoreActivityBaseList) {
addshopStoreActivityBaseList.add(shopStoreActivityBase); addshopStoreActivityBaseList.add(shopStoreActivityBase);
} }
}
}); });
if(CollectionUtil.isNotEmpty(addshopStoreActivityBaseList)){ if(CollectionUtil.isNotEmpty(addshopStoreActivityBaseList)){
@ -1027,7 +992,7 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
if(CollectionUtil.isNotEmpty(updateShopStoreActivityBaseList)){ if(CollectionUtil.isNotEmpty(updateShopStoreActivityBaseList)){
shopStoreActivityBaseService.updateBatchById(updateShopStoreActivityBaseList); shopStoreActivityBaseService.updateBatchById(updateShopStoreActivityBaseList);
} }
logger.info("同步活动数据结束:共{}条数据更新,{}条数据新增",updateShopStoreActivityBaseList.size(),addshopStoreActivityBaseList.size());
} }
@ -1047,13 +1012,10 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
return; return;
} }
// 验签appid必要参数判断 // 验签appid必要参数判断
List<ActiveShopInfo> activeShopInfos= activeJsonArray.toList(ActiveShopInfo.class); SyncApp syncAppO = syncAppService.getOne(new LambdaQueryWrapper<SyncApp>()
Gson gson=new GsonBuilder() .select(SyncApp::getApp_key, SyncApp::getApp_secret,SyncApp::getStore_id)
.setDateFormat("yyyy-MM-dd HH:mm:ss") // 设置全局 Date 格式 .eq(SyncApp::getApp_key, appKey)
.registerTypeAdapter(BigDecimal.class,new BigDecimalTypeAdapter()) .eq(SyncApp::getApp_secret,sign));
.create();
String gsonStr= gson.toJson(activeShopInfos);
SyncApp syncAppO = syncAppService.checkAppSign(appKey,sign,gsonStr);
if (syncAppO == null) { if (syncAppO == null) {
logger.error("签名有误!"); logger.error("签名有误!");
return; return;
@ -1061,7 +1023,6 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
String storeId = syncAppO.getStore_id(); String storeId = syncAppO.getStore_id();
//把商品添加到活动的逻辑 //把商品添加到活动的逻辑
batchAddActiveShopBase(activeJsonArray, Integer.valueOf(storeId)); batchAddActiveShopBase(activeJsonArray, Integer.valueOf(storeId));
} }
/** /**
@ -1071,17 +1032,8 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
private void batchAddActiveShopBase(JSONArray jsonArray,Integer storeId) { private void batchAddActiveShopBase(JSONArray jsonArray,Integer storeId) {
List<ShopStoreActivityBase> updateShopStoreActivityBaseList=new ArrayList<>(); List<ShopStoreActivityBase> updateShopStoreActivityBaseList=new ArrayList<>();
Map<String, String> stringIntegerMap= checkExistingActive(jsonArray,storeId); Map<String, String> stringIntegerMap= checkExistingActive(jsonArray,storeId);
List<String> productNumbers=new ArrayList<>(); Map shopProduckKeyMap=shopProductBaseService.getProductBasicIdByStore(storeId);//获取货架号对应的商品id
jsonArray.stream().parallel().forEach(object->{ Map shopItemKeyMap=shopProductItemService.getProductItemIdByStore(storeId);//获取商品id对应的item的id
final JSONObject jsonObj= (JSONObject) object;
synchronized (productNumbers) {
String itemNo=jsonObj.getStr("itemNo");
productNumbers.add(itemNo);
}
});
Map<String,Long> shopProduckKeyMap=shopProductBaseService.getProductBasicIdByStore(storeId,productNumbers);//获取货架号对应的商品id
Map<String,String> shopItemKeyMap=shopProductItemService.getProductItemIdByStore(storeId,productNumbers);//获取商品id对应的item的id
Map<String,String> rulesChe=new HashMap();//存储rule格式activeId:rules,如果不存在则从数据库取存在则从缓存取数据 Map<String,String> rulesChe=new HashMap();//存储rule格式activeId:rules,如果不存在则从数据库取存在则从缓存取数据
jsonArray.forEach(object->{ jsonArray.forEach(object->{
final JSONObject jsonObj= (JSONObject) object; final JSONObject jsonObj= (JSONObject) object;
@ -1092,11 +1044,12 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
} }
String ruleType=""; String ruleType="";
List<org.json.JSONObject> newItems=new ArrayList<>(); List<org.json.JSONObject> newItems=new ArrayList<>();
Long productId=null; ShopStoreActivityBase shopStoreActivityBase=new ShopStoreActivityBase();
Integer productId=null;
String itemNo=jsonObj.getStr("itemNo"); String itemNo=jsonObj.getStr("itemNo");
BigDecimal discount=jsonObj.getBigDecimal("discount"); BigDecimal discount=jsonObj.getBigDecimal("discount");
if(shopProduckKeyMap.containsKey(itemNo)){ if(shopProduckKeyMap.containsKey(itemNo)){
productId= (Long) shopProduckKeyMap.get(itemNo); productId= (Integer) shopProduckKeyMap.get(itemNo);
} }
if(null==productId){ if(null==productId){
return; return;
@ -1104,9 +1057,8 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
Date activityStarttime=jsonObj.getDate("activityStarttime"); Date activityStarttime=jsonObj.getDate("activityStarttime");
Integer activityState=jsonObj.getInt("activityState"); Integer activityState=jsonObj.getInt("activityState");
String flowNo=jsonObj.getStr("flowNo");
String key=activityName+"_"+activityStarttime.getTime()+"_"+activityState+"_"+flowNo; String key=activityName+"_"+activityStarttime.getTime()+"_"+activityState;
if(stringIntegerMap.containsKey(key)){//更新 if(stringIntegerMap.containsKey(key)){//更新
String keyVal=MapUtil.getStr(stringIntegerMap,key); String keyVal=MapUtil.getStr(stringIntegerMap,key);
@ -1115,12 +1067,12 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
if(null!=rulesChe.get(activityId)){ if(null!=rulesChe.get(activityId)){
rules=rulesChe.get(activityId); rules=rulesChe.get(activityId);
}else { }else {
rules=keyVal.split("__")[1].equals("0")?null:keyVal.split("_")[1]; rules=keyVal.split("_")[1];
}
String itemIds= (String) shopItemKeyMap.get(productId);
if(null!=itemIds){
itemIds= (String) shopItemKeyMap.get(String.valueOf(productId));
} }
String itemIds= shopItemKeyMap.get(productId);
// if(null!=itemIds){
// itemIds= (String) shopItemKeyMap.get(String.valueOf(productId));
// }
assert itemIds != null; assert itemIds != null;
if (activityTypeId == 1) {//限时秒杀 if (activityTypeId == 1) {//限时秒杀
ruleType=ActiveShopJsonUtils.SECKILL; ruleType=ActiveShopJsonUtils.SECKILL;
@ -1143,27 +1095,18 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
ruleType=ActiveShopJsonUtils.FULLREDUCE; ruleType=ActiveShopJsonUtils.FULLREDUCE;
newItems.addAll(getFulReduItemList(itemIds,ruleType,null));//获取满减规则的itemid newItems.addAll(getFulReduItemList(itemIds,ruleType,null));//获取满减规则的itemid
} }
shopStoreActivityBase.setActivity_id(MapUtil.getInt(stringIntegerMap,activityId));
String newRules= ActiveShopJsonUtils.buildPromotionRule(ruleType,rules,newItems); String newRules= ActiveShopJsonUtils.buildPromotionRule(ruleType,rules,newItems);
rulesChe.put(activityId,newRules); rulesChe.put(activityId,newRules);
} shopStoreActivityBase.setActivity_rule(rules);
});
if(!rulesChe.isEmpty()){
rulesChe.forEach((k,v)->{
if(StringUtils.isNotEmpty(v)){
ShopStoreActivityBase shopStoreActivityBase=new ShopStoreActivityBase();
shopStoreActivityBase.setActivity_id(Integer.valueOf(k));
shopStoreActivityBase.setActivity_rule(v);
updateShopStoreActivityBaseList.add(shopStoreActivityBase); updateShopStoreActivityBaseList.add(shopStoreActivityBase);
} }
}); });
}
if(CollectionUtil.isNotEmpty(updateShopStoreActivityBaseList)){ if(CollectionUtil.isNotEmpty(updateShopStoreActivityBaseList)){
shopStoreActivityBaseService.updateBatchById(updateShopStoreActivityBaseList); shopStoreActivityBaseService.updateBatchById(updateShopStoreActivityBaseList);
} }
logger.info("同步活动商品数据结束:更新共{}条活动数据,商品数据为{}条",updateShopStoreActivityBaseList.size(),jsonArray.size());
} }
/** /**
@ -1216,14 +1159,13 @@ public class SyncThirdDataServiceImpl extends SyncBaseThirdSxAbstract implements
for (int i=0;i<itemIdsArray.length;i++) { for (int i=0;i<itemIdsArray.length;i++) {
org.json.JSONObject jsonObject = new org.json.JSONObject(); org.json.JSONObject jsonObject = new org.json.JSONObject();
jsonObject.put("item_id", itemIdsArray[i]); jsonObject.put("item_id", itemIdsArray[i]);
jsonObject.put("price", BigDecimalFormatter.formatWithoutTrailingZeros(discount.multiply(new BigDecimal(unitPricesArray[i]))));
jsonObject.put("price", BigDecimalFormatter.formatWithoutTrailingZeros(discount.multiply(new BigDecimal(unitPricesArray[i])).setScale(2,RoundingMode.HALF_UP)));
newItems.add(jsonObject); newItems.add(jsonObject);
} }
}else { }else {
org.json.JSONObject jsonObject=new org.json.JSONObject(); org.json.JSONObject jsonObject=new org.json.JSONObject();
jsonObject.put("item_id",itemIds); jsonObject.put("item_id",itemIds);
jsonObject.put("price", BigDecimalFormatter.formatWithoutTrailingZeros(discount.multiply(new BigDecimal(unitPrices)).setScale(2,RoundingMode.HALF_UP))); jsonObject.put("price", BigDecimalFormatter.formatWithoutTrailingZeros(discount.multiply(new BigDecimal(unitPrices))));
newItems.add(jsonObject); newItems.add(jsonObject);
} }
break; break;

View File

@ -1 +0,0 @@
alter table shop_store_activity_base add column flow_no varchar(255) DEFAULT NULL COMMENT '思迅活动id';