记得上下班打卡 | git大法好,push需谨慎

Commit cfe5719d authored by jiangxiulong's avatar jiangxiulong

Merge remote-tracking branch 'origin/dev' into dev

parents 930b4820 f36883d9
......@@ -37,7 +37,7 @@ public class IDGenerator {
String number = orderTicketId;
int len = orderTicketId.length();
String time = System.currentTimeMillis() / 1000 + "";
String orderCode = "T" + number.substring(0, len - 4);
String orderCode = number.substring(0, len - 4);
orderCode += time.substring(7, 8);
orderCode += number.substring(len - 2);
orderCode += time.substring(8, 9);
......
......@@ -32,7 +32,7 @@ public class UserPathDto implements Serializable {
}
public static String setData(String interfaceName, Object params, Object result) {
instance.tag = "ANJIABIN";
instance.tag = "MDSKY.NOW.ELK";
instance.uid = CurrentUtil.getCurrentUid() == null ? "UID" : CurrentUtil.getCurrentUid();
instance.token = CurrentUtil.getToken() == null ? "TOKEN" : CurrentUtil.getToken();
instance.time = DateUtil.Formatter.yyyyMMddHHmmssSSSUnTrim.format(LocalDateTime.now());
......@@ -42,6 +42,5 @@ public class UserPathDto implements Serializable {
instance.ip = CurrentUtil.getCliIpAddr();
instance.userAgent = ServletUtils.getRequest().getHeader("User-Agent");
return JsonUtils.toJson(instance);
}
}
......@@ -18,7 +18,7 @@ public class AdamBaseController {
String alis = request.getHeader("alis");
LocalDateTime now = LocalDateTime.now();
int hour = now.get(ChronoField.HOUR_OF_DAY), minute = now.getMinute(), dom = now.get(ChronoField.DAY_OF_MONTH);;
String lns = "^(" + (dom % 10) + hour % (minute / 10) + "[A-Z]{2})" + minute / 10 + "[0-9]{1}$";
String lns = "^(" + (dom % 10) + hour % (minute / 10 + 1) + "[A-Z]{2})" + minute / 10 + "[0-9]{1}$";
log.info("lns:{},alis:{}", lns, alis);
if (StringUtils.isEmpty(alis) || !Pattern.matches(lns, alis)) {
throw new LiquidnetServiceException("44444", "非法操作");
......
......@@ -18,6 +18,7 @@ import java.util.Arrays;
import java.util.List;
public abstract class DataMigrationProcessorService {
public static final String DM_INCR_DT = "incrDt";
public static final String DM_LS = "lS";
public static final String DM_FLG = "flg";
public static final String DM_FLUSH = "flu";
......
......@@ -29,13 +29,14 @@ public class DMAddressesProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.addresses:{}", userMapper.executeForDM("adam_addresses"));
log.info("DM.flush.AdamAddressesVo:{}", mongoTemplate.remove(Query.query(Criteria.where("_id").exists(true)), AdamAddressesVo.class.getSimpleName()).getDeletedCount());
}
String sqlCount = "select count(1) from addresses where 1=1";
String sqlCount = "select count(1) from addresses where created_at" + (StringUtils.isBlank(incrDt) ? "<" : ">=") + "curdate()";
String field = "id,user_id,user_name,user_phone,province,city,county,user_address,defaultDelivery,created_at";
// 1-id,2-user_id,3-user_name,4-user_phone,5-province,6-city,7-county,8-user_address,9-defaultDelivery,10-created_at
String sql = sqlCount.replace("count(1)", field);
......@@ -43,13 +44,13 @@ public class DMAddressesProcessor extends DataMigrationProcessorService {
sqlCount += " and user_id in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
sql += " and user_id in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
}
sql += " limit ?,?";
sql += " order by id limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......
......@@ -29,14 +29,15 @@ public class DMCollectionProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.collection:{}", userMapper.executeForDM("adam_collection"));
log.info("DM.flush.AdamCollectVo:{}", mongoTemplate.remove(Query.query(Criteria.where("_id").exists(true)), AdamCollectVo.class.getSimpleName()).getDeletedCount());
}
String sqlCount = "select count(1) from user_collections where type='TICKET' and status=1 and content_id>=5722";
String sqlCount = "select count(1) from user_collections where type='TICKET' and status=1 and content_id>=5722 and created_at"+(StringUtils.isBlank(incrDt) ? "<" : ">=")+"curdate()";
String field = "uid,content_id,`type`,`status`,created_at,updated_at";
// 1-uid,2-content_id,3-`type`,4-`status`,5-created_at,6-updated_at
String sql = sqlCount.replace("count(1)", field);
......@@ -44,13 +45,13 @@ public class DMCollectionProcessor extends DataMigrationProcessorService {
sqlCount += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
sql += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
}
sql += " limit ?,?";
sql += " order by id limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......
......@@ -29,14 +29,15 @@ public class DMEntersProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.enters:{}", userMapper.executeForDM("adam_enters"));
log.info("DM.flush.AdamEntersVo:{}", mongoTemplate.remove(Query.query(Criteria.where("_id").exists(true)), AdamEntersVo.class.getSimpleName()).getDeletedCount());
}
String sqlCount = "select count(1) from enters where (type <> 1 or (type = 1 and is_certification = 'yes'))";
String sqlCount = "select count(1) from enters where (type <> 1 or (type = 1 and is_certification = 'yes')) and created_at" + (StringUtils.isBlank(incrDt) ? "<" : ">=") + "curdate()";
String field = "id,user_id,type,`name`,mobile,idcode,if(is_default='no', 0, 1),created_at";
// 1-id,2-user_id,3-type,4-`name`,5-mobile,6-idcode,7-if(is_default='no', 0, 1),8-created_at
String sql = sqlCount.replace("count(1)", field);
......@@ -44,13 +45,13 @@ public class DMEntersProcessor extends DataMigrationProcessorService {
sqlCount += " and user_id in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
sql += " and user_id in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
}
sql += " limit ?,?";
sql += " order by id limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......
......@@ -182,7 +182,8 @@ public class DMMemberCodeProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.member_code:{}", userMapper.executeForDM("adam_member_code"));
......@@ -194,13 +195,13 @@ public class DMMemberCodeProcessor extends DataMigrationProcessorService {
// 1-vip_card_code,2-`type`+1,3-card_number,4-`status`,5-created_at,6-updated_at,
// 7-buy_order_id,8-buy_uid,9-buy_time,10-use_order_id,11-use_uid,12-use_time
String sql = sqlCount.replace("count(1)", field);
sql += " limit ?,?";
sql += " order by id limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......
......@@ -30,6 +30,7 @@ public class DMMemberOrderProcessor extends DataMigrationProcessorService {
// APPWEPAY|APPALIPAY|WAPWEPAY|WAPALIPAY|JSWEPAY|GIFT_CODE|VIP_CODE|APPLETWEPAY
public static final Map<String, String> dfMap = new HashMap<>();
public static final Map<String, String> ptMap = new HashMap<>();
static {
dfMap.put("APPWEPAY", "app");
dfMap.put("APPALIPAY", "app");
......@@ -52,14 +53,15 @@ public class DMMemberOrderProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.member_order:{}", userMapper.executeForDM("adam_member_order"));
log.info("DM.flush.AdamMemberOrderVo:{}", mongoTemplate.remove(Query.query(Criteria.where("_id").exists(true)), AdamMemberOrderVo.class.getSimpleName()).getDeletedCount());
}
String sqlCount = "select count(1) from user_vip_card_orders where status in (1,5)";
String sqlCount = "select count(1) from user_vip_card_orders where status in (1,5) and created_at" + (StringUtils.isBlank(incrDt) ? "<" : ">=") + "curdate()";
String field = "order_code,uid,order_sub_type,vip_card_price,price,status,card_number,birthday,pay_type,pay_code,pay_at,created_at,updated_at,client_ip,source,version";
// 1-order_code,2-uid,3-order_sub_type,4-vip_card_price,5-price,6-status,7-card_number,8-birthday,
// 9-pay_type,10-pay_code,11-pay_at,12-created_at,13-updated_at,14-client_ip,15-source,16-version
......@@ -68,13 +70,13 @@ public class DMMemberOrderProcessor extends DataMigrationProcessorService {
sqlCount += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
sql += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
}
sql += " limit ?,?";
sql += " order by id limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......
......@@ -29,14 +29,15 @@ public class DMRealNameProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.real_name:{}", userMapper.executeForDM("adam_real_name"));
log.info("DM.flush.AdamRealInfoVo:{}", mongoTemplate.remove(Query.query(Criteria.where("_id").exists(true)), AdamRealInfoVo.class.getSimpleName()).getDeletedCount());
}
String sqlCount = "select count(1) from user_real_name where 1=1";
String sqlCount = "select count(1) from user_real_name where id not in (9145,7456,7448,7197,7194,4137,4138,4139,269,261,262,263,264,265,266,267,251) and created_at" + (StringUtils.isBlank(incrDt) ? "<" : ">=") + "curdate()";
String field = "id,uid,real_name,id_card,ifnull(created_at, '1970-01-01 00:00:00') created_at,updated_at";
// 1-id,2-uid,3-real_name,4-id_card,5-created_at,6-updated_at
String sql = sqlCount.replace("count(1)", field);
......@@ -44,13 +45,13 @@ public class DMRealNameProcessor extends DataMigrationProcessorService {
sqlCount += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
sql += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
}
sql += " limit ?,?";
sql += " order by id limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......
......@@ -29,7 +29,8 @@ public class DMThirdPartsProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.third_party:{}", userMapper.executeForDM("adam_third_party"));
......@@ -37,8 +38,8 @@ public class DMThirdPartsProcessor extends DataMigrationProcessorService {
}
String sqlCount = "select count(1) from (\n" +
" select row_number() over (partition by uid,type order by created_at desc) rn,uid,open_id,avatar,nickname,type,created_at,updated_at from user_third_parts where `status`=1 and delete_tag in (0,1) and open_id<>'' and uid>0\n" +
" ) t where t.rn = 1";
" select row_number() over (partition by uid,type order by created_at desc) rn,id,uid,open_id,avatar,nickname,type,created_at,updated_at from user_third_parts where `status`=1 and delete_tag in (0,1) and open_id<>'' and uid>0 and created_at"+(StringUtils.isBlank(incrDt) ? "<" : ">=")+"curdate()\n" +
" ) t where t.rn=1";
String field = "uid,open_id,avatar,nickname,type,created_at,updated_at";
// 1-uid,2-open_id,3-avatar,4-nickname,5-type,6-created_at,7-updated_at
String sql = sqlCount.replace("count(1)", field);
......@@ -46,13 +47,13 @@ public class DMThirdPartsProcessor extends DataMigrationProcessorService {
sqlCount += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
sql += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
}
sql += " limit ?,?";
sql += " order by id limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......
......@@ -40,6 +40,7 @@ public class DMUserInformationProcessor extends DataMigrationProcessorService {
public static final String DM_FAILED_USER = "dm:failed:uid";
public static final String DM_EXISTS_USER = "dm:exists:uid";
public static Map<String, AdamTagVo> sexMap = new HashMap<>();
static {
sexMap.put("SECRET", AdamTagVo.getNew().setVal("MS00").setDesc("保密"));
sexMap.put("MALE", AdamTagVo.getNew().setVal("MS01").setDesc("男性"));
......@@ -50,7 +51,8 @@ public class DMUserInformationProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.user:{}", userMapper.executeForDM("adam_user"));
log.info("DM.flush.user_info:{}", userMapper.executeForDM("adam_user_info"));
......@@ -58,7 +60,7 @@ public class DMUserInformationProcessor extends DataMigrationProcessorService {
log.info("DM.flush.AdamUserInfoVo:{}", mongoTemplate.remove(Query.query(Criteria.where("_id").exists(true)), AdamUserInfoVo.class.getSimpleName()).getDeletedCount());
}
String sqlCount = "select count(1) from users where delete_tag in (0,1) and length(mobile)=11 ";
String sqlCount = "select count(1) from users where delete_tag in (0,1) and length(mobile)=11 and created_at" + (StringUtils.isBlank(incrDt) ? "<" : ">=") + "curdate()";
String field = "uid,mobile,username,sex,birthday,area,sign,face_url,back_url,created_at,updated_at,is_complete,rong_cloud_token,rong_cloud_tag";
// 1-uid,2-mobile,3-username,4-sex,5-birthday,6-area,7-sign,8-face_url,9-back_url,10-created_at,11-updated_at,12-is_complete,13-rong_cloud_token,14-rong_cloud_tag
String sql = sqlCount.replace("count(1)", field);
......@@ -66,13 +68,13 @@ public class DMUserInformationProcessor extends DataMigrationProcessorService {
sqlCount += "and mobile in ('13753596360','17701223310','18518013286','18548596019','15901093014','17382319723','13631444097','13671737873')";
sql += " and mobile in ('13753596360','17701223310','18518013286','18548596019','15901093014','17382319723','13631444097','13671737873')";
}
sql += " limit ?,?";
sql += " order by uid limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......@@ -93,45 +95,45 @@ public class DMUserInformationProcessor extends DataMigrationProcessorService {
// if (userMapper.selectCount(Wrappers.lambdaQuery(AdamUser.class).eq(AdamUser::getUid, uid)) > 0) {
// redisUtil.lSet(DM_EXISTS_USER, uid);
// } else {
AdamUser user = new AdamUser();
user.setUid(uid);
user.setMobile(row.getString(2));
user.setCreatedAt(row.getLocalDateTime(10));
user.setUpdatedAt(row.getLocalDateTime(11));
user.setState(1);
AdamUser user = new AdamUser();
user.setUid(uid);
user.setMobile(row.getString(2));
user.setCreatedAt(row.getLocalDateTime(10));
user.setUpdatedAt(row.getLocalDateTime(11));
user.setState(1);
AdamUserInfo userInfo = new AdamUserInfo();
userInfo.setUid(user.getUid());
userInfo.setNickname(row.getString(3));
userInfo.setSex(JsonUtils.toJson(sex));
userInfo.setBirthday(row.getLocalDate(5));
userInfo.setArea(row.getString(6));
userInfo.setSignature(row.getString(7));
userInfo.setAvatar(row.getString(8));
userInfo.setBackground(row.getString(9));
userInfo.setQrCode("lN".concat(userInfo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase()));
userInfo.setRongCloudToken(row.getString(13));
userInfo.setRongCloudTag(row.getInt(14));
AdamUserInfo userInfo = new AdamUserInfo();
userInfo.setUid(user.getUid());
userInfo.setNickname(row.getString(3));
userInfo.setSex(JsonUtils.toJson(sex));
userInfo.setBirthday(row.getLocalDate(5));
userInfo.setArea(row.getString(6));
userInfo.setSignature(row.getString(7));
userInfo.setAvatar(row.getString(8));
userInfo.setBackground(row.getString(9));
userInfo.setQrCode("lN".concat(userInfo.getUid()).concat(RandomStringUtils.randomAlphanumeric(5).toUpperCase()));
userInfo.setRongCloudToken(row.getString(13));
userInfo.setRongCloudTag(row.getInt(14));
AdamUserInfoVo vo = AdamUserInfoVo.getNew();
vo.setUid(user.getUid());
vo.setMobile(user.getMobile());
vo.setNickname(userInfo.getNickname());
vo.setState(user.getState());
vo.setSex(sex);
vo.setBirthday(DateUtil.Formatter.yyyy_MM_dd.format(userInfo.getBirthday()));
vo.setArea(userInfo.getArea());
vo.setSignature(userInfo.getSignature());
vo.setAvatar(userInfo.getAvatar());
vo.setBackground(userInfo.getBackground());
vo.setCreateAt(user.getCreatedAt());
vo.setUpdatedAt(user.getUpdatedAt());
vo.setIsComplete(row.getInt(12));
vo.setQrCode(userInfo.getQrCode());
AdamUserInfoVo vo = AdamUserInfoVo.getNew();
vo.setUid(user.getUid());
vo.setMobile(user.getMobile());
vo.setNickname(userInfo.getNickname());
vo.setState(user.getState());
vo.setSex(sex);
vo.setBirthday(DateUtil.Formatter.yyyy_MM_dd.format(userInfo.getBirthday()));
vo.setArea(userInfo.getArea());
vo.setSignature(userInfo.getSignature());
vo.setAvatar(userInfo.getAvatar());
vo.setBackground(userInfo.getBackground());
vo.setCreateAt(user.getCreatedAt());
vo.setUpdatedAt(user.getUpdatedAt());
vo.setIsComplete(row.getInt(12));
vo.setQrCode(userInfo.getQrCode());
userList.add(user);
userInfoList.add(userInfo);
vos.add(vo);
userList.add(user);
userInfoList.add(userInfo);
vos.add(vo);
// }
}
} catch (SQLException throwables) {
......
......@@ -29,14 +29,15 @@ public class DMUserMemberProcessor extends DataMigrationProcessorService {
@Override
protected void dataProcessing() {
HttpServletRequest request = ServletUtils.getRequest();
String lS = request.getParameter(DM_LS), flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
String lS = request.getParameter(DM_LS), incrDt = request.getParameter(DM_INCR_DT),
flg = StringUtils.defaultIfBlank(request.getParameter(DM_FLG), "");
if (StringUtils.isNotEmpty(request.getParameter(DM_FLUSH))) {
log.info("DM.flush.user_member:{}", userMapper.executeForDM("adam_user_member"));
log.info("DM.flush.AdamUserMemberVo:{}", mongoTemplate.remove(Query.query(Criteria.where("_id").exists(true)), AdamUserMemberVo.class.getSimpleName()).getDeletedCount());
}
String sqlCount = "select count(1) from user_cards where 1=1";
String sqlCount = "select count(1) from user_cards where created_at" + (StringUtils.isBlank(incrDt) ? "<" : ">=") + "curdate()";
String field = "uid,card_id,card_number,`status`,expired_at,created_at,updated_at";
// 1-uid,2-card_id,3-card_number,4-status,5-expired_at,6-created_at,7-updated_at
String sql = sqlCount.replace("count(1)", field);
......@@ -44,13 +45,13 @@ public class DMUserMemberProcessor extends DataMigrationProcessorService {
sqlCount += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
sql += " and uid in ('2026628','544327','1997335','773650','809406','1167451','423063','677171')";
}
sql += " limit ?,?";
sql += " order by id limit ?,?";
statement = connection.prepareStatement(sqlCount);
row = (ResultSetImpl) statement.executeQuery();
row.first();
int ct = row.getInt(1), pSize = 1000, num = 0, tl = 0, pl = ct;
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start", pl, num, pSize, tl);
log.info("DM.execute.counts:{}/{},{} ~ {} ----------------------------> start.sql:{}", pl, num, pSize, tl, sql);
while (ct > 0) {
statement = connection.prepareStatement(sql);
......
package com.liquidnet.service.consumer.service.Utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.service.consumer.service.vo.*;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@Component
public class KylinUtils {
@Autowired
private RedisUtil redisUtil;
public static final String USERID_BUY_INFO = "kylin:buy:userId:";
public static final String IDCARD_BUY_INFO = "kylin:buy:idCard:";
public static final String PERFORMANCE_ID = "performanceId";
public static final String TICKET_ID = "ticketId";
public static final String USE_TIME = "useTime";
public static final String PERFORMANCES = "kylin:performances:id:";
/**
* @param userId 用户id
* @param type 1新增 2修改
* @param orderId 订单id [需要新增或者修改的订单id]
*/
public Boolean resetOrderListVo(String userId, Integer type, String orderId, KylinOrderTicketVo dataSingle) {
List<KylinOrderListVo> vo = new ArrayList<>();
List<KylinOrderListVo> redisVo = new ArrayList();
KylinOrderListVo voItem = new KylinOrderListVo();
KylinOrderTicketVo data;
if (dataSingle == null) {
data = (KylinOrderTicketVo)redisUtil.get("kylin:order:id:" + orderId);
} else {
data = dataSingle;
}
BeanUtils.copyProperties(data, voItem);
List<KylinOrderListVo> redisData = (List<KylinOrderListVo>) redisUtil.get("kylin:order:list:userId:" + userId);
if(type == 1) {
redisVo.add(voItem);
if (redisData.size() > 0) {
if (redisData.get(0).getOrderTicketsId().equals(orderId)) {
redisData.remove(0);
}
}
}
redisVo.addAll(redisData);
switch (type) {
case 1:
for (int i = 0; i < redisVo.size(); i++) {
if (i == 40) {
break;
}
if (i == 0) {
vo.add(voItem);
} else {
vo.add(redisVo.get(i));
}
}
if (redisVo.size() == 0) {
vo.add(voItem);
}
redisUtil.set("kylin:order:list:userId:" + userId,vo);
return true;
case 2:
for (int i = 0; i < redisVo.size(); i++) {
if (i == 40) {
break;
}
if (redisVo.get(i).getOrderTicketsId().equals(orderId)) {
vo.add(voItem);
} else {
vo.add(redisVo.get(i));
}
}
redisUtil.set("kylin:order:list:userId:" + userId,vo);
return true;
default:
return false;
}
}
public void changeBuyInfo(String userId, String idCard, String performanceId, String ticketId, int buyCount) {
String redisKey;
KylinPerformanceVo vo = (KylinPerformanceVo) redisUtil.get(PERFORMANCES + performanceId);
int isTrueName = vo.getIsTrueName();
int ticketType = 0;
String useTime = "";
HashMap<String, ArrayList<String>> allTicketId = new HashMap<>();
for (int x = 0; x < vo.getTicketTimeList().size(); x++) {
KylinTicketTimesVo timeItem = vo.getTicketTimeList().get(x);
ArrayList<String> ticketList = new ArrayList<>();
for (int y = 0; y < timeItem.getTicketList().size(); y++) {
KylinTicketVo ticketItem = timeItem.getTicketList().get(y);
if (ticketItem.getType() == 1) {
ticketList.add(ticketItem.getTicketsId());
}
if (ticketItem.getTicketsId().equals(ticketId)) {
useTime = ticketItem.getUseStart();
ticketType = ticketItem.getType();
}
}
allTicketId.put(timeItem.getUseStart(), ticketList);
}
if (0 == isTrueName) {
redisKey = USERID_BUY_INFO + userId;
} else {
redisKey = IDCARD_BUY_INFO + idCard;
}
String performanceIdKey = redisKey + ":" + PERFORMANCE_ID + ":" + performanceId;
String ticketIdKey = redisKey + ":" + TICKET_ID + ":" + ticketId;
String ticketUseTimeKey = ticketIdKey + ":" + USE_TIME;
redisUtil.set(ticketUseTimeKey, useTime);
if (buyCount > 0) {
redisUtil.incr(ticketIdKey, buyCount);
if (1 == ticketType) {
int count = 0;
for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
String item = allTicketId.get(useTime).get(i);
if (allTicketId.get(useTime).size() == 1) {
redisUtil.incr(performanceIdKey, buyCount);
break;
}
if (null == redisUtil.get(redisKey + ":" + TICKET_ID + ":" + item)) {
redisUtil.set(redisKey + ":" + TICKET_ID + ":" + item, 0);
}
if (i == 0) {
count = (int) redisUtil.get(redisKey + ":" + TICKET_ID + ":" + item);
} else {
if (count != (int) redisUtil.get(redisKey + ":" + TICKET_ID + ":" + item)) {
redisUtil.incr(performanceIdKey, buyCount);
break;
}
}
}
} else {
redisUtil.incr(performanceIdKey, buyCount);
}
} else {
redisUtil.decr(ticketIdKey, Math.abs(buyCount));
if (1 == ticketType) {
int count = 0;
for (int i = 0; i < allTicketId.get(useTime).size(); i++) {
String item = allTicketId.get(useTime).get(i);
if (allTicketId.get(useTime).size() == 1) {
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
break;
}
if (null == redisUtil.get(redisKey + ":" + TICKET_ID + ":" + item)) {
redisUtil.set(redisKey + ":" + TICKET_ID + ":" + item, 0);
}
if (i == 0) {
count = (int) redisUtil.get(redisKey + ":" + TICKET_ID + ":" + item);
} else {
if (count != (int) redisUtil.get(redisKey + ":" + TICKET_ID + ":" + item)) {
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
break;
}
}
}
} else {
redisUtil.decr(performanceIdKey, Math.abs(buyCount));
}
}
}
}
......@@ -5,6 +5,9 @@ import com.liquidnet.common.mq.constant.MQConst;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.consumer.service.IBaseDao;
import com.liquidnet.service.consumer.service.Utils.KylinUtils;
import com.liquidnet.service.consumer.service.vo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.consumer.service.vo.KylinOrderTicketVo;
import com.rabbitmq.client.Channel;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.Exchange;
......@@ -17,7 +20,9 @@ import org.springframework.amqp.core.Message;
import javax.annotation.Resource;
import java.io.IOException;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
/**
......@@ -33,6 +38,8 @@ public class ConsumerProcessor {
IBaseDao baseDao;
@Autowired
private RedisUtil redisUtil;
@Autowired
private KylinUtils kylinUtils;
// @RabbitListener(bindings = @QueueBinding(
// exchange = @Exchange(MQConst.EXCHANGES_LIQUIDNET_SQL), key = MQConst.ROUTING_KEY_SQL,
......@@ -80,19 +87,25 @@ public class ConsumerProcessor {
}
// 处理长sql语句
private void consumerSqlDaoHandlerLongSql(Message msg, Channel channel) {
String redisKey = new String(msg.getBody()).replaceAll("\"","");
log.debug("consumer ==> redisKey:{}", redisKey);
private void consumerOperationOrderClose(Message msg, Channel channel) {
ArrayList<String> mqMessage = JsonUtils.fromJson(new String(msg.getBody()), ArrayList.class);
log.debug("consumer ==> mqMessage:{}", mqMessage);
try {
LinkedList<String> sqlList = (LinkedList<String>) redisUtil.get(redisKey);
Boolean rstBatchSqls = baseDao.batchSqlNoArgs(sqlList);
log.debug("consumer sql result of execution:{}", rstBatchSqls);
if (rstBatchSqls) {
channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
} else {
channel.basicReject(msg.getMessageProperties().getDeliveryTag(), true);
}
mqMessage.forEach(t -> {
String orderTicketId = t.split(",")[0];
String uid = t.split(",")[1];
KylinOrderTicketVo vo = (KylinOrderTicketVo) redisUtil.get("kylin:order:id:" + orderTicketId);
vo.setStatus(2);
redisUtil.set("kylin:order:id:" + orderTicketId, vo);
kylinUtils.resetOrderListVo(uid, 2, orderTicketId, vo);
// redis 限购
for (int i = 0; i < vo.getEntitiesVoList().size(); i++) {
KylinOrderTicketEntitiesVo items = vo.getEntitiesVoList().get(i);
kylinUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
}
});
channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
} catch (IOException e) {
log.error("error:consumer sql:Channel.msg.tag:{}", msg.getMessageProperties().getDeliveryTag(), e);
}
......@@ -242,7 +255,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -251,7 +264,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose1(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -260,7 +273,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose2(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -269,7 +282,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose3(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -278,7 +291,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose4(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -287,7 +300,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose5(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -296,7 +309,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose6(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -305,7 +318,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose7(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -314,7 +327,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose8(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
@RabbitListener(bindings = @QueueBinding(
......@@ -323,7 +336,7 @@ public class ConsumerProcessor {
))
public void consumerOrderClose9(Message msg, Channel channel) {
log.info("=== CONSUMER_ORDER_CLOSE ===");
this.consumerSqlDaoHandlerLongSql(msg, channel);
this.consumerOperationOrderClose(msg, channel);
}
......
package com.liquidnet.service.consumer.service.vo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
@Data
public class KylinOrderListVo implements Serializable {
private static final long serialVersionUID = 6554829077875538374L;
private String orderTicketsId;
private String performanceId;
private String ticketId;
private String performanceTitle;
private String performanceImg;
private String orderCode;
private String timeStart;
private String ticketTitle;
private String useStart;
private String overdueAt;
private Long restTime;
private BigDecimal priceActual;
private Integer number;
private Integer status;
private String express_number;
private String express_company;
private Integer kuaidi_status;
private String getTicketType;
private String createdAt;
}
package com.liquidnet.service.consumer.service.vo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class KylinOrderTicketEntitiesVo implements Serializable, Cloneable {
private static final long serialVersionUID = 1207664465164005975L;
private Integer mid;
private String orderTicketEntitiesId;
private String orderId;
private String ticketId;
private String userId;
private String performanceId;
private String timeId;
private Integer enterType;
private String enterName;
private String enterMobile;
private String enterIdCode;
private Integer status;
private Integer sysDamai;
private String checkClient;
private Integer isPayment;
private String performanceTitle;
private String ticketTitle;
private String useStart;
private String useEnd;
private String createdAt;
private String updatedAt;
private Integer ticketsmId;
private Integer timemId;
private BigDecimal refundPrice;
private String checkType;
private String checkedAt;
private String checkUserId;
private LocalDateTime changeDate;
private static final KylinOrderTicketEntitiesVo obj = new KylinOrderTicketEntitiesVo();
public static KylinOrderTicketEntitiesVo getNew() {
try {
return (KylinOrderTicketEntitiesVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinOrderTicketEntitiesVo();
}
}
}
package com.liquidnet.service.consumer.service.vo;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Data
public class KylinOrderTicketVo implements Serializable {
private Integer mid;
private static final long serialVersionUID = 5325511589667456213L;
private String orderTicketsId;
private String userId;
private String userName;
private String userMobile;
private String performanceTitle;
private String ticketTitle;
private String timeStart;
private String useStart;
private String performanceImg;
private String orderCode;
private String payCode;
private String qrCode;
private String orderType;
private String orderVersion;
private Integer number;
private BigDecimal price;
private BigDecimal priceMember;
private BigDecimal priceTotal;
private BigDecimal priceVoucher;
private BigDecimal priceActual;
private BigDecimal priceExpress;
private BigDecimal priceRefund;
private Integer refundNumber;
private String payType;
private String paymentType;
private String timePay;
private String expressContacts;
private String expressAddress;
private String expressPhone;
private String couponType;
private String getTicketType;
private String getTicketDescribe;
private Integer payCountdownMinute;
private Integer expressType;
private Integer isStudent;
private Integer transferStatus;
private Integer status;
private Integer payStatus;
private String transferId;
private String liveId;
private String performanceId;
private String timeId;
private String ticketId;
private String agentId;
private Integer isMember;
private String overdueAt;
private String createdAt;
private String updatedAt;
private LocalDateTime changeDate;
private Integer isTrueName;
private String noticeImage;
private String notice;
private Integer ticketType;
private String fieldName;
private List<KylinOrderTicketEntitiesVo> entitiesVoList;
}
package com.liquidnet.service.consumer.service.vo;
import lombok.Data;
import java.util.List;
@Data
public class KylinPerformanceVo {
private Integer mid;
private String performancesId;
private String title;
private String imgPoster;
private Integer payCountdownMinute;
private String approvalUrl;
private int type;
private String timeStart;
private String timeEnd;
private String stopSellTime;
private String price;
private String sellTime;
private String sellMemberTime;
private Integer cityId;
private String cityName;
private String fieldId;
private String fieldName;
private String longitude;
private String latitude;
private String diffDistance;
private String projectId;
private String roadShowId;
private String details;
private String noticeImage;
private Integer isRecommend;
private Integer appStatus;
private Integer statusSell;
private Integer isMember;
private Integer isLackRegister;
private Integer isTrueName;
private Integer limitCount;
private Integer limitCountMember;
private Integer isExclusive;
private Integer isDiscount;
private Integer isAdvance;
private Integer sysDamai;
private String message;
private String notice;
private Integer isShow;
private List<KylinTicketTimesVo> ticketTimeList;
}
package com.liquidnet.service.consumer.service.vo;
import lombok.Data;
import java.util.List;
@Data
public class KylinTicketTimesVo {
private Integer mid;
private String ticketTimesId;
private String title;
private Integer type;
private String performanceId;
private String timeId;
private String useStart;
private String useEnd;
private List<KylinTicketVo> ticketList;
}
package com.liquidnet.service.consumer.service.vo;
import com.liquidnet.commons.lang.util.DateUtil;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class KylinTicketVo {
private Integer mid;
private String ticketsId;
private String timeId;
private String title;
private Integer type;
private BigDecimal price;
private BigDecimal priceExpress;
private BigDecimal memberPrice;
private BigDecimal discountPrice;
private String describes;
private String describeExpress;
private String describeElectronic;
private String timeStart;
private String timeEnd;
private String memberTimeStart;
private String timeEndExpress;
private String useStart;
private String useEnd;
private Integer saleRemindMinute;
private Integer isStudent;
private Integer isElectronic;
private Integer isExpress;
private Integer sysDamai;
private Integer counts;
private Integer status;
private Integer statusExchange;
private Integer isLackRegister;
private Integer expressType;
private Integer isTrueName;
private Integer limitCount;
private Integer limitCountMember;
private Integer isExclusive;
private Integer isMember;
private Integer isMemberStatus;
private Integer isAgent;
private Integer isShowCode;
private String qrCodeShowTime;
private Integer advanceMinuteMember;
}
package com.liquidnet.service.kylin.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.github.pagehelper.PageInfo;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.common.cache.redisson.util.RedisLockUtil;
......@@ -26,6 +27,8 @@ import com.liquidnet.service.kylin.dto.vo.returns.KylinOrderListVo;
import com.liquidnet.service.kylin.dto.vo.returns.OrderDetailsVo;
import com.liquidnet.service.kylin.dto.vo.returns.PayResultVo;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketRelationsMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketStatusMapper;
import com.liquidnet.service.kylin.mapper.KylinOrderTicketsMapper;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
......@@ -102,8 +105,13 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
@Autowired
private KylinOrderTicketsMapper orderTicketsMapper;
@Autowired
private KylinOrderTicketStatusMapper orderTicketStatusMapper;
@Autowired
private KylinOrderTicketRelationsMapper orderTicketRelationsMapper;
@Autowired
private OrderRefundsCallbackServiceImpl orderRefundsCallbackService;
ArrayList<Integer> canBuyStatus = new ArrayList() {{
add(6);
add(8);
......@@ -621,7 +629,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
sqlData);
currentTime = System.currentTimeMillis() - currentTime;
log.debug("MQ 发送 -> time:" + (currentTime) + "毫秒");
log.info(UserPathDto.setData("下单(唤起支付)",payOrderParam,payResultVo));
log.info(UserPathDto.setData("下单(唤起支付)", payOrderParam, payResultVo));
return ResponseDto.success(payResultVo);
}
......@@ -629,7 +637,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
public ResponseDto<PayResultVo> payAgain(PayAgainParam payAgainParam) {
try {
String uid = CurrentUtil.getCurrentUid();
checkOrderTime(uid);
// checkOrderTime(uid);
//检查订单时间 是否关闭
KylinOrderTicketVo orderTicketData = dataUtils.getOrderTicketVo(payAgainParam.getOrderId());
if (!orderTicketData.getUserId().equals(uid)) {
......@@ -723,7 +731,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
String sqlData = SqlMapping.gets(sqls, sqlsDataA, sqlsDataB, sqlsDataC);
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_AGAIN, MQConst.ROUTING_KEY_SQL_ORDER_AGAIN, sqlData);
log.info(UserPathDto.setData("再次支付",payAgainParam,payResultVo));
log.info(UserPathDto.setData("再次支付", payAgainParam, payResultVo));
return ResponseDto.success(payResultVo);
}
return ResponseDto.failure("未选择支付方式");
......@@ -879,7 +887,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
sycDamaiOrder(orderTickets.getOrderTicketsId());
}
redisLockUtil.unlock(lock);
log.info(UserPathDto.setData("订单支付成功回调",syncOrderParam,""));
log.info(UserPathDto.setData("订单支付成功回调", syncOrderParam, ""));
return "success";
}
......@@ -888,7 +896,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
//TODO 缺快递
PageInfo<List<KylinOrderListVo>> mPageInfo = null;
String uid = CurrentUtil.getCurrentUid();
checkOrderTime(uid);
// checkOrderTime(uid);
try {
List<KylinOrderListVo> voList = dataUtils.getOrderList(uid);
for (int i = 0; i < voList.size(); i++) {
......@@ -921,7 +929,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
mPageInfo = new PageInfo(voList);
mPageInfo.setTotal(voList.size());
log.info(UserPathDto.setData("订单列表","",voList));
log.info(UserPathDto.setData("订单列表", "", voList));
return mPageInfo;
} catch (Exception e) {
e.printStackTrace();
......@@ -934,11 +942,11 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
OrderDetailsVo vo = new OrderDetailsVo();
try {
String uid = CurrentUtil.getCurrentUid();
checkOrderTime(uid);
// checkOrderTime(uid);
KylinOrderTicketVo orderTicketVo = dataUtils.getOrderTicketVo(orderId);
if (!orderTicketVo.getUserId().equals(uid)) {
log.error("ORDER_TICKET_USER_ID : {}",orderTicketVo.getUserId());
log.error("TOKEN UID : {}",uid);
log.error("ORDER_TICKET_USER_ID : {}", orderTicketVo.getUserId());
log.error("TOKEN UID : {}", uid);
return null;
}
if (null != orderTicketVo) {
......@@ -970,7 +978,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
Date date = DateUtil.parse(ticketVo.getQrCodeShowTime(), DateUtil.Formatter.yyyyMMddHHmm.toString());
if (DateUtil.compareDay(date, DateUtil.now()) <= 0) {
orderTicketVo.setQrCode("");
}else{
} else {
orderTicketVo.setQrCode(orderTicketVo.getQrCode());
}
} else {
......@@ -1009,7 +1017,7 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
vo.setOrderTicketVo(orderTicketVo);
vo.setEnterDescribe(dataUtils.getEnterInfo("1"));
}
log.info(UserPathDto.setData("订单列表",orderId,vo));
log.info(UserPathDto.setData("订单列表", orderId, vo));
return vo;
} catch (Exception e) {
return vo;
......@@ -1020,62 +1028,74 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
public boolean checkOrderTime(String userId) {
String lock = "order_lock:checkOrderTime:" + userId;
if (redisLockUtil.tryLock(lock, 1, 3600)) {
try {
List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId);
LocalDateTime now = LocalDateTime.now();
Long currentTime = System.currentTimeMillis();
HashMap<String, Integer> mapSurplusGeneral = new HashMap<>();
ArrayList<String> orderDataList = new ArrayList<>();
ArrayList<String> orderIdList = new ArrayList<>();
HashMap<String, Object> mapMongo = new HashMap<>();
for (OrderScriptDto item : dtoData) {
if (item.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) {
try {
//vo
mapMongo.put("status", KylinTableStatusConst.ORDER_STATUS2);
mapMongo.put("updatedAt", DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now));
mapMongo.put("changeDate", now);
orderDataList.add(item.getOrderTicketsId() + "," + item.getUserId());
orderIdList.add(item.getOrderTicketsId());
mapSurplusGeneral.put(item.getTicketId(), mapSurplusGeneral.get(item.getTicketId()) == null ? item.getNumber() : mapSurplusGeneral.get(item.getTicketId()) + item.getNumber());
} catch (Exception e) {
log.debug("CHECK TIME SYNC = " + e.getMessage());
e.printStackTrace();
return false;
}
} else {
List<OrderScriptDto> dtoData = orderTicketsMapper.orderScriptDto(userId);
LocalDateTime now = LocalDateTime.now();
Long currentTime = System.currentTimeMillis();
HashMap<String, Integer> mapSurplusGeneral = new HashMap<>();
ArrayList<String> orderDataList = new ArrayList<>();
ArrayList<String> orderIdList = new ArrayList<>();
HashMap<String, Object> mapMongo = new HashMap<>();
for (OrderScriptDto item : dtoData) {
if (item.getStatus().equals(KylinTableStatusConst.ORDER_STATUS0)) {
try {
//vo
mapMongo.put("status", KylinTableStatusConst.ORDER_STATUS2);
mapMongo.put("updatedAt", DateUtil.Formatter.yyyyMMddHHmmssSSS.format(now));
mapMongo.put("changeDate", now);
orderDataList.add(item.getOrderTicketsId() + "," + item.getUserId());
orderIdList.add(item.getOrderTicketsId());
mapSurplusGeneral.put(item.getTicketId(), mapSurplusGeneral.get(item.getTicketId()) == null ? item.getNumber() : mapSurplusGeneral.get(item.getTicketId()) + item.getNumber());
} catch (Exception e) {
log.debug("CHECK TIME SYNC = " + e.getMessage());
e.printStackTrace();
return false;
}
} else {
}
currentTime = System.currentTimeMillis() - currentTime;
log.debug("FOR 循环 -> time:" + (currentTime) + "毫秒");
if (orderDataList.size() > 0) {
//库存
for (Map.Entry<String, Integer> entry : mapSurplusGeneral.entrySet()) {
dataUtils.changeSurplusGeneral(entry.getKey(), entry.getValue());
}
currentTime = System.currentTimeMillis() - currentTime;
log.debug("redis 库存 -> time:" + (currentTime) + "毫秒");
//mysql
String orderStr = "";
for (int i = 0; i < orderIdList.size(); i++) {
String orderTicketId = orderIdList.get(i);
orderStr += "'" + orderTicketId + "',";
}
}
currentTime = System.currentTimeMillis() - currentTime;
log.debug("FOR 循环 -> time:" + (currentTime) + "毫秒");
if (orderDataList.size() > 0) {
//mysql
String orderStr = "";
for (int i = 0; i < orderIdList.size(); i++) {
String orderTicketId = orderIdList.get(i);
orderStr += "'" + orderTicketId + "',";
}
orderStr = orderStr.substring(0, orderStr.length() - 1);
orderStr = orderStr.substring(0, orderStr.length() - 1);
LinkedList<String> sqls = new LinkedList();
sqls.add("UPDATE kylin_order_tickets SET updated_at = '" + now + "' WHERE order_tickets_id in (" + orderStr + ") ");
sqls.add("UPDATE kylin_order_ticket_status SET `status` = 2,updated_at = '" + now + "' WHERE order_id in (" + orderStr + ") ");
sqls.add("UPDATE kylin_order_ticket_relations SET updated_at = '" + now + "' WHERE order_id in (" + orderStr + ")");
String redisKey = "kylin:ORDER_CLOSE:" + IDGenerator.nextMilliId();
redisUtil.set(redisKey, sqls);
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE, MQConst.ROUTING_KEY_SQL_ORDER_CLOSE, redisKey);
KylinOrderTickets orderTickets = new KylinOrderTickets();
orderTickets.setUpdatedAt(now);
orderTicketsMapper.update(orderTickets, new UpdateWrapper<KylinOrderTickets>().in("order_tickets_id", orderStr));
KylinOrderTicketStatus orderTicketStatus = new KylinOrderTicketStatus();
orderTicketStatus.setStatus(2);
orderTicketStatus.setUpdatedAt(now);
orderTicketStatusMapper.update(orderTicketStatus, new UpdateWrapper<KylinOrderTicketStatus>().in("order_id", orderStr));
;
KylinOrderTicketRelations orderTicketRelations = new KylinOrderTicketRelations();
orderTicketRelations.setUpdatedAt(now);
orderTicketRelationsMapper.update(orderTicketRelations, new UpdateWrapper<KylinOrderTicketRelations>().in("order_id", orderStr));
;
// LinkedList<String> sqls = new LinkedList();
// sqls.add("UPDATE kylin_order_tickets SET updated_at = '" + now + "' WHERE order_tickets_id in (" + orderStr + ") ");
// sqls.add("UPDATE kylin_order_ticket_status SET `status` = 2,updated_at = '" + now + "' WHERE order_id in (" + orderStr + ") ");
// sqls.add("UPDATE kylin_order_ticket_relations SET updated_at = '" + now + "' WHERE order_id in (" + orderStr + ")");
// String redisKey = "kylin:ORDER_CLOSE:" + IDGenerator.nextMilliId();
// redisUtil.set(redisKey, sqls);
// rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE, MQConst.ROUTING_KEY_SQL_ORDER_CLOSE, redisKey);
currentTime = System.currentTimeMillis() - currentTime;
log.debug("mysql -> time:" + (currentTime) + "毫秒");
currentTime = System.currentTimeMillis() - currentTime;
log.debug("mysql -> time:" + (currentTime) + "毫秒");
//库存
for (Map.Entry<String, Integer> entry : mapSurplusGeneral.entrySet()) {
dataUtils.changeSurplusGeneral(entry.getKey(), entry.getValue());
}
currentTime = System.currentTimeMillis() - currentTime;
log.debug("redis 库存 -> time:" + (currentTime) + "毫秒");
try {
//mongo
mongoTemplate.getCollection(KylinOrderTicketVo.class.getSimpleName()).updateMany(
Query.query(Criteria.where("orderTicketsId").in(orderIdList)).getQueryObject(),
......@@ -1083,9 +1103,28 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
);
currentTime = System.currentTimeMillis() - currentTime;
log.debug("mongo -> time:" + (currentTime) + "毫秒");
} catch (Exception e) {
}
Thread thread = new Thread(() -> {
//redis 列表
int forSize = 500;
int forCount = orderDataList.size() % forSize == 0 ? orderDataList.size() % forSize : (orderDataList.size() % forSize) + 1;
for (int i = 0; i < forCount; i++) {
ArrayList<String> mqList = new ArrayList<>();
for (int y = 0; y < forSize; y++) {
try {
String t = orderDataList.get(i * 500 + y);
mqList.add(t);
} catch (Exception e) {
break;
}
}
rabbitTemplate.convertAndSend(MQConst.EXCHANGES_LIQUIDNET_SQL_ORDER_CLOSE, MQConst.ROUTING_KEY_SQL_ORDER_CLOSE, JsonUtils.toJson(mqList));
}
// 线程循环更改限购
// kylinThreadService.checkOrderTimeThread(orderDataList);
// Thread thread = new Thread(() -> {
// //redis 列表
orderDataList.forEach(t -> {
String orderTicketId = t.split(",")[0];
String uid = t.split(",")[1];
......@@ -1099,13 +1138,10 @@ public class KylinOrderTicketsServiceImpl extends ServiceImpl<KylinOrderTicketsM
dataUtils.changeBuyInfo(items.getUserId(), items.getEnterIdCode(), items.getPerformanceId(), items.getTicketId(), -1);
}
});
});
thread.start();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
// });
// thread.start();
}
redisLockUtil.unlock(lock);
} else {
log.debug("WARNING LOCKING");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment