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

Commit cd72a833 authored by 张国柄's avatar 张国柄

Merge remote-tracking branch 'origin/dev_pvuv' into pre

parents ffa00062 5d4fad58
drop table if exists bi_ticket_access_records;
create table dev_ln_scene.bi_ticket_access_records
(
mid bigint unsigned auto_increment
primary key,
user_id varchar(64) not null comment '用户id',
access_type varchar(30) null comment '访问类型: 详情页now_tk_detail,票种页now_tk_ticket,下单页now_tk_order,支付操作now_tk_pay',
performance_id varchar(100) null comment '演出id',
order_id varchar(100) null comment '订单id',
order_code varchar(64) null comment '订单编号',
ip_address varchar(100) null comment '操作ip',
area varchar(200) null comment 'ip全名称',
area_province varchar(100) null comment 'ip名称省',
area_city varchar(100) null comment 'ip名称市',
area_county varchar(100) null comment 'ip名称县',
created_at timestamp default CURRENT_TIMESTAMP not null
);
alter table kylin_order_tickets add area varchar(200) null comment 'ip地域全名称';
alter table kylin_order_tickets add area_province varchar(100) null comment 'ip地域省';
alter table kylin_order_tickets add area_city varchar(100) null comment 'ip地域市';
alter table kylin_order_tickets add area_county varchar(100) null comment 'ip地域县';
......@@ -85,4 +85,28 @@ public class KylinTableStatusConst {
public static final Integer ORDER_EXPRESS_STATUS8000 = 8000; // 签收结单
public static final Integer ORDER_EXPRESS_SEND_TYPE1 = 1; // 发货
public static final Integer ORDER_EXPRESS_SEND_TYPE2 = 2; // 退款
public enum PvUv {
TK_DETAILS("now_tk_detail", "详情页"),
TK_TICKET("now_tk_ticket", "票种页"),
TK_ORDER("now_tk_order", "预下单页"),
TK_PAY("now_tk_pay", "支付操作");
private final String key;
private final String desc;
PvUv(String key, String desc) {
this.key = key;
this.desc = desc;
}
public String getKey() {
return key;
}
public String getDesc() {
return desc;
}
}
}
package com.liquidnet.service.kylin.dto.vo.mongo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: KylinIpArea
* @Package com.liquidnet.service.kylin.dto.vo.mongo
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/11/24 11:57
*/
@Data
@ApiModel
public class KylinIpAreaVo implements Serializable,Cloneable{
@ApiModelProperty(value = "mid")
private String mid;
@ApiModelProperty(value = "ipBegin")
private String ipBegin;
@ApiModelProperty(value = "ipBegin")
private long ipBeginLong;
@ApiModelProperty(value = "ipEnd")
private String ipEnd;
@ApiModelProperty(value = "ipEnd")
private long ipEndLong;
@ApiModelProperty(value = "area")
private String area;
@ApiModelProperty(value = "province")
private String province;
@ApiModelProperty(value = "city")
private String city;
@ApiModelProperty(value = "county")
private String county;
@ApiModelProperty(value = "address")
private String address;
@ApiModelProperty(value = "createdAt")
private String createdAt;
private static final KylinIpAreaVo obj = new KylinIpAreaVo();
public static KylinIpAreaVo getNew() {
try {
return (KylinIpAreaVo) obj.clone();
} catch (CloneNotSupportedException e) {
return new KylinIpAreaVo();
}
}
}
package com.liquidnet.commons.lang.util;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: IPUtil
* @Package com.liquidnet.commons.lang.util
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/11/24 13:29
*/
public class IPUtil {
/**
* ip地址转成long型数字
* 将IP地址转化成整数的方法如下:
* 1、通过String的split方法按.分隔得到4个长度的数组
* 2、通过左移位操作(<<)给每一段的数字加权,第一段的权为2的24次方,第二段的权为2的16次方,第三段的权为2的8次方,最后一段的权为1
* @param strIp
* @return
*/
public static long ipToLong(String strIp) {
String[]ip = strIp.split("\\.");
return (Long.parseLong(ip[0]) << 24) + (Long.parseLong(ip[1]) << 16) + (Long.parseLong(ip[2]) << 8) + Long.parseLong(ip[3]);
}
/**
* 将十进制整数形式转换成127.0.0.1形式的ip地址
* 将整数形式的IP地址转化成字符串的方法如下:
* 1、将整数值进行右移位操作(>>>),右移24位,右移时高位补0,得到的数字即为第一段IP。
* 2、通过与操作符(&)将整数值的高8位设为0,再右移16位,得到的数字即为第二段IP。
* 3、通过与操作符吧整数值的高16位设为0,再右移8位,得到的数字即为第三段IP。
* 4、通过与操作符吧整数值的高24位设为0,得到的数字即为第四段IP。
* @param longIp
* @return
*/
public static String longToIP(long longIp) {
StringBuffer sb = new StringBuffer("");
// 直接右移24位
sb.append(String.valueOf((longIp >>> 24)));
sb.append(".");
// 将高8位置0,然后右移16位
sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16));
sb.append(".");
// 将高16位置0,然后右移8位
sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8));
sb.append(".");
// 将高24位置0
sb.append(String.valueOf((longIp & 0x000000FF)));
return sb.toString();
}
public static void main(String[] args) {
System.out.println(ipToLong("219.239.110.138"));
System.out.println(longToIP(3689901706l));
}
}
......@@ -213,6 +213,26 @@ public class KylinOrderTickets implements Serializable, Cloneable {
*/
private String comment;
/**
* comment
*/
private String area;
/**
* Province
*/
private String areaProvince;
/**
* City
*/
private String areaCity;
/**
* County
*/
private String areaCounty;
/**
* 创建时间
*/
......@@ -228,12 +248,12 @@ public class KylinOrderTickets implements Serializable, Cloneable {
*
* @return
*/
public Object[] getAddObject(String ipAddress) {
public Object[] getAddObject(String ipAddress,String area,String areaProvince,String areaCity,String areaCounty) {
return new Object[]{
orderTicketsId, userId, userName, userMobile, performanceTitle, orderCode, qrCode, orderType, orderVersion,
number, price, priceMember, priceTotal, priceVoucher, priceActual, priceExpress, priceRefund, refundNumber,
payType, paymentType, timePay, expressContacts, expressAddress, expressPhone, couponType, getTicketType,
getTicketDescribe, payCountdownMinute, comment, createdAt, updatedAt, payCode,ipAddress
getTicketDescribe, payCountdownMinute, comment, createdAt, updatedAt, payCode,ipAddress,area,areaProvince,areaCity,areaCounty
};
}
......
......@@ -14,6 +14,8 @@ db.createCollection("KylinTicketPartnerVo");
db.createCollection("KylinTicketTimesPartnerVo");
db.createCollection("PerformanceMemberAuditParam");
db.createCollection("AdminUpushVo");
db.createCollection("KylinIpAreaVo");
#创建索引
db.KylinCheckUserPerformanceVo.createIndex({checkUserId:"hashed"});
......@@ -37,6 +39,7 @@ db.KylinTicketTimesPartnerVo.createIndex({performancesId:"hashed"});
db.KylinTicketTimesPartnerVo.createIndex({ticketTimesId:"hashed"});
db.PerformanceMemberAuditParam.createIndex({performancesId:"hashed"});
db.AdminUpushVo.createIndex({upushId:"hashed"});
db.KylinIpAreaVo.createIndex({mid:"hashed"});
#创建分片
sh.enableSharding("prod_ln_scene");
......@@ -54,4 +57,5 @@ sh.shardCollection("prod_ln_scene.KylinTicketPartnerVo",{"ticketsId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinTicketTimesPartnerVo",{"ticketTimesId":"hashed"});
sh.shardCollection("prod_ln_scene.PerformanceMemberAuditParam",{"performancesId":"hashed"});
sh.shardCollection("prod_ln_scene.AdminUpushVo",{"upushId":"hashed"});
sh.shardCollection("prod_ln_scene.KylinIpAreaVo",{"mid":"hashed"});
......@@ -14,10 +14,7 @@ import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.vo.KylinFieldsVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderRefundEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.dto.vo.mongo.*;
import com.liquidnet.service.kylin.dto.vo.returns.*;
import com.liquidnet.service.kylin.entity.*;
import com.liquidnet.service.kylin.service.IKylinOrderTicketsService;
......@@ -833,9 +830,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsService {
orderTickets.setPayType(orderTicketVo.getPayType());
orderTickets.setPayCode(orderTicketVo.getPayCode());
KylinIpAreaVo vo = dataUtils.getKylinIpAreaVo(CurrentUtil.getCliIpAddr());
sqls.add(SqlMapping.get("kylin_order_ticket.add"));
LinkedList<Object[]> sqlsDataA = CollectionUtil.linkedListObjectArr();
sqlsDataA.add(orderTickets.getAddObject(CurrentUtil.getCliIpAddr()));
sqlsDataA.add(orderTickets.getAddObject(CurrentUtil.getCliIpAddr(), vo.getArea(), vo.getProvince(), vo.getCity(), vo.getCounty()));
//删除被转赠订单独立redis
dataUtils.delTransferOrder(uid);
// 生成vo
......
......@@ -8,6 +8,7 @@ import com.liquidnet.commons.lang.util.DistanceUtil;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.UserPathDto;
import com.liquidnet.service.kylin.constant.KylinPerformanceStatusEnum;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
import com.liquidnet.service.kylin.dto.param.PerformanceMemberAuditParam;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
......@@ -20,6 +21,7 @@ import com.liquidnet.service.kylin.dto.vo.returns.PayDetailVo;
import com.liquidnet.service.kylin.service.IKylinPerformancesService;
import com.liquidnet.service.kylin.utils.DataUtils;
import com.liquidnet.service.kylin.utils.ObjectUtil;
import com.liquidnet.service.kylin.utils.QueueUtils;
import lombok.extern.slf4j.Slf4j;
import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -54,6 +56,8 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
@Autowired
private DataUtils dataUtils;
@Autowired
private QueueUtils queueUtils;
public HashMap<String, Object> localList(
int days, String cityName, int type,
......@@ -222,7 +226,7 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
public HashMap<String, Object> ticketTimesPartner(String performancesId, Integer isAgent) {
KylinPerformanceVo vo = dataUtils.getPerformanceVo(performancesId);
vo = checkAppStatusInfo(vo);
// queueUtils.pushPvUv(CurrentUtil.getCurrentUid(), KylinTableStatusConst.PvUv.TK_TICKET.getKey(), performancesId, null, null, CurrentUtil.getCliIpAddr());
List<KylinTicketTimesVo> ticketTimesList = vo.getTicketTimeList();
if (null != ticketTimesList) {
......@@ -392,7 +396,7 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
KylinTicketVo ticketVo = null;
KylinPerformanceVo performancesInfo = dataUtils.getPerformanceVo(performancesId);
performancesInfo = checkAppStatusInfo(performancesInfo);
// queueUtils.pushPvUv(CurrentUtil.getCurrentUid(), KylinTableStatusConst.PvUv.TK_ORDER.getKey(), performancesId, null, null, CurrentUtil.getCliIpAddr());
for (int i = 0; i < performancesInfo.getTicketTimeList().size(); i++) {
for (int x = 0; x < performancesInfo.getTicketTimeList().get(i).getTicketList().size(); x++) {
KylinTicketVo ticketItem = performancesInfo.getTicketTimeList().get(i).getTicketList().get(x);
......
......@@ -3,6 +3,7 @@ package com.liquidnet.service.kylin.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IPUtil;
import com.liquidnet.service.adam.constant.AdamRedisConst;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.constant.KylinTableStatusConst;
......@@ -788,4 +789,19 @@ public class DataUtils {
String redisKey = KylinRedisConst.ORDER_REFUND_EXPRESS_INFO.concat(orderId);
return (KylinOrderExpressVo) redisUtil.get(redisKey);
}
public KylinIpAreaVo getKylinIpAreaVo(String ipAddress) {
List<KylinIpAreaVo> data = mongoTemplate.find(Query.query(Criteria.where("ipBeginLong").lte(IPUtil.ipToLong(ipAddress))
.and("ipEndLong").gte(IPUtil.ipToLong(ipAddress))), KylinIpAreaVo.class, KylinIpAreaVo.class.getSimpleName());
if(data==null || data.size()==0){
KylinIpAreaVo data0 = KylinIpAreaVo.getNew();
data0.setArea("未知");
data0.setCity("未知");
data0.setCounty("未知");
data0.setProvince("未知");
return data0;
}else{
return data.get(0);
}
}
}
package com.liquidnet.service.kylin.utils;
import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinIpAreaVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.HashMap;
@Component
......@@ -15,6 +19,8 @@ public class QueueUtils {
// private RabbitTemplate rabbitTemplate;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
DataUtils dataUtils;
/**
* 发送消息 - RABBIT
......@@ -38,4 +44,22 @@ public class QueueUtils {
map.put("message", jsonMsg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
}
// public void pushPvUv(String uid, String accessType, String performanceId, String orderId, String orderCode, String ipAddress) {
// try {
// KylinIpAreaVo vo = dataUtils.getKylinIpAreaVo(ipAddress);
// String area = vo.getArea();
// String areaProvince = vo.getProvince();
// String areaCity = vo.getCity();
// String areaCounty = vo.getCounty();
// sendMsgByRedis(MQConst.KylinQueue.SQL_PERFORMANCE_LACK.getKey(),
// SqlMapping.get("bi_ticket_access_records.insert", new Object[]{
// uid, accessType, performanceId, orderId, orderCode,
// ipAddress, area, areaProvince, areaCity, areaCounty,
// LocalDateTime.now(),
// }));
// } catch (Exception e) {
//
// }
// }
}
kylin_order_ticket_entities.updateStatusByStation=UPDATE kylin_order_ticket_entities SET `status`=?,check_client=?,updated_at=? WHERE order_ticket_entities_id=?
# ------------------------缺票登记(不用考虑并发)----------------------------
kylin_lack_register.insert=INSERT INTO `kylin_lack_registers`(`lack_registers_id` ,`performance_id` ,`ticket_id` ,`user_id` ,`user_name` ,`user_mobile` ,`send_status` ,`ip_address` ,`created_at`)VALUES(? ,? ,? ,? ,? ,? ,? ,? ,?);
# ------------------------PV/UV----------------------------
bi_ticket_access_records.insert=INSERT INTO `bi_ticket_access_records` ( `user_id`, `access_type`, `performance_id`, `order_id`, `order_code`,`ip_address`, `area`, `area_province`, `area_city`, `area_county`,`created_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?);
# ------------------------创建订单----------------------------
kylin_order_ticket.add=INSERT INTO kylin_order_tickets(order_tickets_id,user_id,user_name,user_mobile,performance_title,order_code,qr_code,order_type,order_version,`number`,price,price_member,price_total,price_voucher,price_actual,price_express,price_refund,refund_number,pay_type,payment_type,time_pay,express_contacts,express_address,express_phone,coupon_type,get_ticket_type,get_ticket_describe,pay_countdown_minute,`comment`,created_at,updated_at,pay_code)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
kylin_order_ticket_relation.add=INSERT INTO kylin_order_ticket_relations(order_ticket_relations_id ,order_id ,transfer_id ,live_id ,agent_id ,is_member ,performance_id ,time_id ,ticket_id ,created_at ,updated_at)VALUES(?,?,?,?,?,?,?,?,?,?,?)
kylin_order_ticket_status.add=INSERT INTO kylin_order_ticket_status(order_ticket_status_id ,order_id ,express_type ,is_student ,transfer_status ,`status` ,pay_status ,created_at ,updated_at)VALUES(?,?,?,?,?,?,?,?,?)
kylin_order_ticket_entities.add=INSERT INTO kylin_order_ticket_entities(order_ticket_entities_id ,order_id ,ticket_id ,user_id ,time_id ,performance_id ,enter_type ,enter_name ,enter_mobile,enter_id_code,`status`,sys_damai,check_client,is_payment,`comment`,created_at,updated_at)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
# ------------------------支付回调----------------------------
kylin_order_ticket.synPay=UPDATE kylin_order_tickets SET payment_type = ? ,pay_code = ? , time_pay = ?, qr_code = ? , updated_at = ? WHERE order_tickets_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_status.synPay=UPDATE kylin_order_ticket_status SET `status` = ?,pay_status = ?,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_relation.synPay=UPDATE kylin_order_ticket_relations SET updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_entities.synPay=UPDATE kylin_order_ticket_entities SET is_payment = ?,updated_at = ?,sys_damai = 1 WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
# ------------------------用户发起订单退款----------------------------
kylin_order_ticket_status.refund=UPDATE kylin_order_ticket_status SET status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_entities.refund=UPDATE kylin_order_ticket_entities SET is_payment = ? ,updated_at = ? WHERE order_ticket_entities_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
......@@ -26,17 +20,14 @@ kylin_order_refund.refund=INSERT INTO kylin_order_refunds (order_refunds_id,orde
kylin_order_refund_entities.refund=INSERT INTO kylin_order_refund_entities (order_refunds_entities_id,order_refunds_id,refund_price,order_ticket_entities_id,created_at) VALUES(?,?,?,?,?)
kylin_order_refund_pic.refund=INSERT INTO kylin_order_refund_pic (refund_pic_id,order_refunds_id,pic_url,created_at) VALUES (?,?,?,?)
kylin_order_refund.refundOrderExpress=INSERT INTO kylin_order_express (order_express_id,performances_id,order_tickets_id,order_refunds_id,order_express_code,mailno,express_type,filter_result,remark,express_status,send_type,send_express_type,express_contacts,express_phone,send_express_address,appointment_time,pro_name,cargo_type_code,limit_type_code,express_type_code,goods_value_total,goods_number,created_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
# ------------------------用户发起订单退款撤回----------------------------
kylin_order_ticket_status.withDraw=UPDATE kylin_order_ticket_status SET status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_entities.withDraw=UPDATE kylin_order_ticket_entities SET is_payment = ?,updated_at = ?,sys_damai = 1 WHERE order_ticket_entities_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_refund.withDraw=UPDATE kylin_order_refunds SET status = ? ,updated_at = ? WHERE order_refunds_id = ?
# ------------------------用户转赠相关接口----------------------------
kylin_order_task.insert = INSERT INTO `kylin_order_task`(`order_id` , `status` , `created_at`) VALUES (? ,? ,?);
kylin_order_task.delete = DELETE FROM kylin_order_task WHERE order_id = ?;
kylin_order_ticket_status.transfer.update = UPDATE kylin_order_ticket_status SET transfer_status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_relation.transfer.update = UPDATE kylin_order_ticket_relations SET transfer_uid = ?, transfer_id = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_task.insert=INSERT INTO `kylin_order_task`(`order_id` , `status` , `created_at`) VALUES (? ,? ,?);
kylin_order_task.delete=DELETE FROM kylin_order_task WHERE order_id = ?;
kylin_order_ticket_status.transfer.update=UPDATE kylin_order_ticket_status SET transfer_status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_relation.transfer.update=UPDATE kylin_order_ticket_relations SET transfer_uid = ?, transfer_id = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
# ------------------------ 订单补充入场人 ----------------------------
kylin_order_refund_entities.supplementEnter = UPDATE kylin_order_ticket_entities SET enter_type = ?,enter_name = ?,enter_mobile = ?,enter_id_code = ?,updated_at = ? WHERE order_ticket_entities_id = ?
kylin_order_refund_entities.supplementEnter=UPDATE kylin_order_ticket_entities SET enter_type = ?,enter_name = ?,enter_mobile = ?,enter_id_code = ?,updated_at = ? WHERE order_ticket_entities_id = ?
package com.liquidnet.service.kylin;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinIpAreaVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
import com.liquidnet.service.kylin.utils.DataUtils;
import lombok.extern.slf4j.Slf4j;
......@@ -36,4 +38,11 @@ public class TestDataUtil {
log.info("title:{}",vo.getTitle());
}
}
@Test
public void getIpAreaByIp(){
// KylinIpAreaVo kylinIpAreaVo = dataUtils.getKylinIpAreaVo("1.58.222.0");
KylinIpAreaVo kylinIpAreaVo = dataUtils.getKylinIpAreaVo("1.58.227.0");
System.out.println(JsonUtils.toJson(kylinIpAreaVo));
}
}
package com.liquidnet.service.kylin;
import com.liquidnet.commons.lang.util.IPUtil;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinIpAreaVo;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestMysqlToMongo
* @Package com.liquidnet.service.kylin
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/11/24 13:33
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMysqlToMongo {
@Autowired
private MongoTemplate mongoTemplate;
// public void mysqlIpDataToMongo(){
// String driverClassName = "com.mysql.cj.jdbc.Driver"; //启动驱动
//// String url = "jdbc:mysql://pc-2ze6z2hxkug559q79.mysql.polardb.rds.aliyuncs.com:3306/mall"; //设置连接路径
//// String url = "jdbc:mysql://zhengzai.mysql.polardb.rds.aliyuncs.com:3306/mall";
//// String username = "readonly"; //数据库用户名
//// String password = "ZWDsf8Fy"; //数据库连接密码
//
// String url = "jdbc:mysql://localhost:3306/dev_ln_scene"; //设置连接路径
// String username = "root"; //数据库用户名
// String password = "root123456"; //数据库连接密码
//
//
// Connection conn = null; //连接
// PreparedStatement pstmt = null; //使用预编译语句
// ResultSet rs = null; //获取的结果集
// String sqlStr = "insert into bi_ip_area (ip_begin, ip_end, area, province, city, county, address) values(?,?,?,?,?,?,?)";
//
// int totalNum = recordArrayList.size();
// int pageSize = 1000;
// int pageNum = 0;
// int totalPage = totalNum % pageSize == 0 ? totalNum / pageSize : (totalNum / pageSize) + 1;;
// try {
// try {
// Class.forName(driverClassName); //执行驱动
// } catch (ClassNotFoundException e) {
// e.printStackTrace();
// }
// conn = DriverManager.getConnection(url, username, password); //获取连接
// pstmt = conn.prepareStatement(sqlStr);
//
// conn.setAutoCommit(false);//自动提交记得关了....
//
// int count = 0;
//
// long timeStart = System.currentTimeMillis();
// for(String[] recordArray: recordArrayList){
// pstmt.setString(1,recordArray[0]);
// pstmt.setString(2,recordArray[1]);
// pstmt.setString(3,recordArray[2]);
// pstmt.setString(4,recordArray[4]);
// pstmt.setString(5,recordArray[5]);
// pstmt.setString(6,recordArray[6]);
// pstmt.setString(7,recordArray[3]);
//
// pstmt.addBatch();
//
// count ++;
//
// if(count % pageSize == 0){
// pageNum++;
// pstmt.executeBatch();
//
// conn.commit();
//
// pstmt.clearBatch();
// System.out.println("执行第"+pageNum+"页提交--->>>"+"执行第"+((pageNum-1)*pageSize+1)+"行-第"+pageNum*pageSize+"行 耗时"+(System.currentTimeMillis()-timeStart)/1000+"秒");
// timeStart = System.currentTimeMillis();
// }
// }
// if(totalNum % pageSize > 0){
// pageNum++;
// System.out.println("执行第"+pageNum+"页提交--->>>"+"执行第"+((pageNum-1)*pageSize+1)+"行-第"+((pageNum-1)*pageSize+totalNum % pageSize)+"行 耗时"+(System.currentTimeMillis()-timeStart)/1000+"秒");
// pstmt.executeBatch();
//
// conn.commit();
// }
//
// pstmt.close();
//
// System.out.println("共执行插入"+count);
//
// } catch (SQLException e) {
// e.printStackTrace();
// } finally {
// //关闭资源,倒关
// try {
// if (rs != null) rs.close();
// if (pstmt != null) pstmt.close();
// if (conn != null) conn.close(); //必须要关
// } catch (Exception e) {
// e.printStackTrace();
// System.out.println("关闭连接异常");
// }
// }
//
// }
@Test
public void excuteBatchMysqlToMongo(){
String driverClassName = "com.mysql.cj.jdbc.Driver"; //启动驱动
// String url = "jdbc:mysql://localhost:3306/dev_ln_scene"; //设置连接路径
// String username = "root"; //数据库用户名
// String password = "root123456"; //数据库连接密码
String url = "jdbc:mysql://39.107.71.112:3308/dev_ln_scene"; //设置连接路径
String username = "root"; //数据库用户名
String password = "Zhengzai@rd2U#"; //数据库连接密码
Connection con = null; //连接
PreparedStatement pstmt = null; //使用预编译语句
ResultSet rs = null; //获取的结果集
long timeStart = System.currentTimeMillis();
try {
Class.forName(driverClassName); //执行驱动
con = DriverManager.getConnection(url, username, password); //获取连接
String sqlAllCount = "select count(0) as 'allCount' from bi_ip_area t"; //设置的预编译语句格式
pstmt = con.prepareStatement(sqlAllCount);
ResultSet allCount = pstmt.executeQuery();
int allCountResult = 0;//共多少条
int rowCount = 0;//当前多少条
boolean isBreak = false;//是否终端循环
while (allCount.next()) {
allCountResult = allCount.getInt("allCount");
}
allCount.close();
pstmt.close();
int count = 5000;
int page = 0;
do {
long timeStart1 = System.currentTimeMillis();
ArrayList<KylinIpAreaVo> kylinIpAreaVoArrayList = new ArrayList();
KylinIpAreaVo kylinIpAreaVo = null;
//获取ip
String sql = "select * from bi_ip_area t limit " + count * page + " ," + count; //设置的预编译语句格式
pstmt = con.prepareStatement(sql);
ResultSet ipData = pstmt.executeQuery();
while (ipData.next()) {
kylinIpAreaVo = KylinIpAreaVo.getNew();
kylinIpAreaVo.setMid(ipData.getObject("mid").toString());
kylinIpAreaVo.setIpBegin(ipData.getObject("ip_begin").toString());
kylinIpAreaVo.setIpBeginLong(IPUtil.ipToLong(ipData.getObject("ip_begin").toString()));
kylinIpAreaVo.setIpEnd(ipData.getObject("ip_end").toString());
kylinIpAreaVo.setIpEndLong(IPUtil.ipToLong(ipData.getObject("ip_end").toString()));
kylinIpAreaVo.setArea(ipData.getObject("area").toString());
kylinIpAreaVo.setProvince(ipData.getObject("province").toString());
kylinIpAreaVo.setCity(ipData.getObject("city").toString());
kylinIpAreaVo.setCounty(ipData.getObject("county").toString());
kylinIpAreaVo.setAddress(ipData.getObject("address").toString());
kylinIpAreaVo.setCreatedAt(ipData.getObject("created_at").toString());
kylinIpAreaVoArrayList.add(kylinIpAreaVo);
}
mongoTemplate.insert(kylinIpAreaVoArrayList, KylinIpAreaVo.class.getSimpleName());
System.out.println("执行insert 第 "+(page+1)+"页 总耗时==="+(System.currentTimeMillis()-timeStart1)/1000+"秒");
ipData.last();
rowCount += ipData.getRow();
if (allCountResult > rowCount) {
isBreak = true;
page += 1;
} else {
isBreak = false;
}
} while (isBreak);
System.out.println("执行insert总耗时==="+(System.currentTimeMillis()-timeStart)/1000+"秒");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally {
//关闭资源,倒关
try {
if (rs != null) rs.close();
if (pstmt != null) pstmt.close();
if (con != null) con.close(); //必须要关
} catch (Exception e) {
}
}
}
}
......@@ -18,6 +18,7 @@ import com.liquidnet.service.kylin.dto.param.SyncOrderDtoParam;
import com.liquidnet.service.kylin.dto.param.SyncOrderParam;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinIpAreaVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketEntitiesVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo;
......@@ -100,6 +101,9 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
String uid = CurrentUtil.getCurrentUid();
HashMap<String, Object> advanceMap = null;
try {
String orderTicketId = IDGenerator.nextSnowId();
String orderCode = IDGenerator.ticketOrderCode(orderTicketId);
// queueUtils.pushPvUv(uid, KylinTableStatusConst.PvUv.TK_PAY.getKey(), payOrderParam.getPerformanceId(), orderTicketId, orderCode, CurrentUtil.getCliIpAddr());
if (payOrderParam.getVoucherType() != null && payOrderParam.getVoucherType().equals(3)) {
isPay = false;
if (payOrderParam.getNumber() > 1) {
......@@ -342,7 +346,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
}
}
ResponseDto<PayInnerResultVo> resultData = order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList, isStudent, content, useTime, advanceMap, addressesVo);
ResponseDto<PayInnerResultVo> resultData = order(payOrderParam, uid, isMember, isTrueName, performanceData, ticketData, entersVoList, isStudent, content, useTime, advanceMap, addressesVo, orderTicketId, orderCode);
isDownGeneral = false;
return resultData;
}
......@@ -371,7 +375,7 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
}
}
private ResponseDto<PayInnerResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData, List<AdamEntersVo> entersVoList, Integer isStudent, String content, String useTime, HashMap<String, Object> advanceMap, AdamAddressesVo addressesVo) throws Exception {
private ResponseDto<PayInnerResultVo> order(PayOrderParam payOrderParam, String uid, boolean isMember, int isTrueName, KylinPerformanceVo performanceData, KylinTicketVo ticketData, List<AdamEntersVo> entersVoList, Integer isStudent, String content, String useTime, HashMap<String, Object> advanceMap, AdamAddressesVo addressesVo, String orderTicketId, String orderCode) throws Exception {
LinkedList<String> sqls = ObjectUtil.cloneLinkedListStr();
String headerCliSource = CurrentUtil.getHeaderCliSource(), headerCliVersion = CurrentUtil.getHeaderCliVersion();
String source = headerCliSource == null ? "" : headerCliSource;
......@@ -379,14 +383,13 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
LocalDateTime now = LocalDateTime.now();
//生成订单 order_ticket
KylinOrderTickets orderTickets = KylinOrderTickets.getNew();
String orderTicketId = IDGenerator.nextSnowId();
orderTickets.setOrderTicketsId(orderTicketId);
orderTickets.setUserId(uid);
Map token = CurrentUtil.getTokenClaims();
orderTickets.setUserName(StringUtils.defaultString(((String) token.get("nickname")), ""));
orderTickets.setUserMobile(StringUtils.defaultString(((String) token.get("mobile")), ""));
orderTickets.setPerformanceTitle(performanceData.getTitle());
orderTickets.setOrderCode(IDGenerator.ticketOrderCode(orderTicketId));
orderTickets.setOrderCode(orderCode);
orderTickets.setPayCode("");
orderTickets.setQrCode("");
orderTickets.setOrderType(source);
......@@ -640,9 +643,10 @@ public class KylinOrderTicketsServiceImpl implements IKylinOrderTicketsOrderServ
payResultVo.setData(payInnerResultVo);
}
KylinIpAreaVo vo = dataUtils.getKylinIpAreaVo(CurrentUtil.getCliIpAddr());
sqls.add(SqlMapping.get("kylin_order_ticket.add"));
LinkedList<Object[]> sqlsDataA = ObjectUtil.cloneLinkedListObj();
sqlsDataA.add(orderTickets.getAddObject(CurrentUtil.getCliIpAddr()));
sqlsDataA.add(orderTickets.getAddObject(CurrentUtil.getCliIpAddr(), vo.getArea(), vo.getProvince(), vo.getCity(), vo.getCounty()));
// 生成vo
KylinOrderTicketVo orderTicketVo = KylinOrderTicketVo.getNew();
orderTicketVo.setOrderTicket(orderTickets);
......
......@@ -2,6 +2,7 @@ package com.liquidnet.service.order.utils;
import com.liquidnet.common.cache.redis.util.RedisUtil;
import com.liquidnet.commons.lang.util.DateUtil;
import com.liquidnet.commons.lang.util.IPUtil;
import com.liquidnet.service.kylin.constant.KylinRedisConst;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketTimesVo;
import com.liquidnet.service.kylin.dto.vo.middle.KylinTicketVo;
......@@ -70,13 +71,13 @@ public class DataUtils {
public List<KylinOrderListVo> getOrderList(String userId) {
Object obj = redisUtil.get(KylinRedisConst.ORDER_LIST + userId);
if (obj!=null) {
return (List<KylinOrderListVo>)obj;
if (obj != null) {
return (List<KylinOrderListVo>) obj;
} else {
List<KylinOrderListVo> voList = mongoTemplate.find(Query.query(Criteria.where("userId").is(userId))
.with(Sort.by(Sort.Direction.DESC, "createdAt")).limit(40),
KylinOrderListVo.class, KylinOrderTicketVo.class.getSimpleName());
for (KylinOrderListVo item : voList){
for (KylinOrderListVo item : voList) {
item.setStatus(item.getStatus());
}
redisUtil.set(KylinRedisConst.ORDER_LIST + userId, voList);
......@@ -92,7 +93,7 @@ public class DataUtils {
*/
public KylinOrderTicketVo getOrderTicketVo(String orderId) {
Object obj = redisUtil.get(KylinRedisConst.ORDER + orderId);
if (obj!=null) {
if (obj != null) {
return (KylinOrderTicketVo) obj;
} else {
KylinOrderTicketVo ticketData = mongoTemplate.findOne(Query.query(Criteria.where("orderTicketsId").is(orderId)), KylinOrderTicketVo.class, KylinOrderTicketVo.class.getSimpleName());
......@@ -213,8 +214,8 @@ public class DataUtils {
*/
public KylinPerformanceVo getPerformanceVo(String performanceId) {
Object obj = redisUtil.get(KylinRedisConst.PERFORMANCES + performanceId);
if (obj!=null) {
return (KylinPerformanceVo)obj;
if (obj != null) {
return (KylinPerformanceVo) obj;
} else {
KylinPerformanceVo performanceData = mongoTemplate.findOne(Query.query(Criteria.where("performancesId").is(performanceId)), KylinPerformanceVo.class, KylinPerformanceVo.class.getSimpleName());
redisUtil.set(KylinRedisConst.PERFORMANCES + performanceId, performanceData);
......@@ -229,22 +230,22 @@ public class DataUtils {
*/
public int getPerformanceIsTrueName(String performanceId) {
Object obj = redisUtil.get(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId);
if (obj!=null) {
return (int)obj;
}else{
if (obj != null) {
return (int) obj;
} else {
int isTrueName = getPerformanceVo(performanceId).getIsTrueName();
redisUtil.set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId,isTrueName);
redisUtil.set(KylinRedisConst.PERFORMANCES_TRUE_NAME + performanceId, isTrueName);
return isTrueName;
}
}
public void setOrderCoupon(String orderId, List<KylinOrderCoupons> bean){
public void setOrderCoupon(String orderId, List<KylinOrderCoupons> bean) {
String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId);
redisUtil.set(redisKey,bean);
redisUtil.set(redisKey, bean);
}
// 获取订单券的使用情况
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId){
public ArrayList<KylinOrderCoupons> getOrderCoupon(String orderId) {
String redisKey = KylinRedisConst.ORDER_COUPON.concat(orderId);
Object obj = redisUtil.get(redisKey);
if (obj == null) {
......@@ -254,4 +255,19 @@ public class DataUtils {
}
}
public KylinIpAreaVo getKylinIpAreaVo(String ipAddress) {
List<KylinIpAreaVo> data = mongoTemplate.find(Query.query(Criteria.where("ipBeginLong").lte(IPUtil.ipToLong(ipAddress))
.and("ipEndLong").gte(IPUtil.ipToLong(ipAddress))), KylinIpAreaVo.class, KylinIpAreaVo.class.getSimpleName());
if(data==null || data.size()==0){
KylinIpAreaVo data0 = KylinIpAreaVo.getNew();
data0.setArea("未知");
data0.setCity("未知");
data0.setCounty("未知");
data0.setProvince("未知");
return data0;
}else{
return data.get(0);
}
}
}
......@@ -8,6 +8,8 @@ import com.liquidnet.commons.lang.util.HttpUtil;
import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.adam.dto.vo.*;
import com.liquidnet.service.base.ResponseDto;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.candy.param.BackCouponParam;
import com.liquidnet.service.candy.vo.CandyUseResultVo;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinOrderTicketVo;
......@@ -21,6 +23,7 @@ import org.springframework.stereotype.Component;
import org.springframework.util.MultiValueMap;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -138,13 +141,13 @@ public class OrderUtils {
return surplusGeneral;
}
public void doTask(String uid,String title,BigDecimal price) {
public void doTask(String uid, String title, BigDecimal price) {
try {
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Accept", "application/json;charset=UTF-8");
MultiValueMap<String, String> params = CollectionUtil.linkedMultiValueMapStringString();
params.add("score", price.intValue()+"");
params.add("content", "购买演出:"+title);
params.add("score", price.intValue() + "");
params.add("content", "购买演出:" + title);
params.add("uid", uid);
String resultData = HttpUtil.post(stoneUrl + "/user/logs/in2111", params, header);
} catch (Exception e) {
......@@ -153,7 +156,7 @@ public class OrderUtils {
}
}
public AdamRscPolymer01Vo adamAddressEnterMember(String uid,String enterIds,String addressId) {
public AdamRscPolymer01Vo adamAddressEnterMember(String uid, String enterIds, String addressId) {
try {
MultiValueMap<String, String> header = CollectionUtil.linkedMultiValueMapStringString();
header.add("Accept", "application/json;charset=UTF-8");
......@@ -267,8 +270,8 @@ public class OrderUtils {
hashMap.put("type", type);
hashMap.put("voucher", voucher.setScale(2, BigDecimal.ROUND_HALF_UP));
return hashMap;
}catch (Exception e){
log.error("用券ERROR:{}",e);
} catch (Exception e) {
log.error("用券ERROR:{}", e);
hashMap.put("type", -1);
hashMap.put("voucher", -1);
return hashMap;
......@@ -294,8 +297,8 @@ public class OrderUtils {
params.add(param);
String jsonString = JSON.toJSONString(params);
String returnData = HttpUtil.postRaw(candyUrl + "/candy-coupon/useBack", jsonString, header);
}catch (Exception e){
log.error("回退券ERROR:{}",e);
} catch (Exception e) {
log.error("回退券ERROR:{}", e);
}
}
......
package com.liquidnet.service.order.utils;
import com.liquidnet.service.base.SqlMapping;
import com.liquidnet.service.base.constant.MQConst;
import com.liquidnet.service.kylin.dto.vo.mongo.KylinIpAreaVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.HashMap;
@Component
......@@ -14,6 +18,8 @@ public class QueueUtils {
// private RabbitTemplate rabbitTemplate;
@Autowired
StringRedisTemplate stringRedisTemplate;
@Autowired
DataUtils dataUtils;
/**
* 发送 SqlMapping Json 字符串
......@@ -37,4 +43,22 @@ public class QueueUtils {
map.put("message", jsonMsg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
}
// public void pushPvUv(String uid, String accessType, String performanceId, String orderId, String orderCode, String ipAddress) {
// try {
// KylinIpAreaVo vo = dataUtils.getKylinIpAreaVo(ipAddress);
// String area = vo.getArea();
// String areaProvince = vo.getProvince();
// String areaCity = vo.getCity();
// String areaCounty = vo.getCounty();
// sendMsgByRedis(MQConst.KylinQueue.SQL_PERFORMANCE_LACK.getKey(),
// SqlMapping.get("bi_ticket_access_records.insert", new Object[]{
// uid, accessType, performanceId, orderId, orderCode,
// ipAddress, area, areaProvince, areaCity, areaCounty,
// LocalDateTime.now(),
// }));
// } catch (Exception e) {
//
// }
// }
}
kylin_order_ticket_entities.updateStatusByStation=UPDATE kylin_order_ticket_entities SET `status`=?,check_client=?,updated_at=? WHERE order_ticket_entities_id=?
# ------------------------缺票登记(不用考虑并发)----------------------------
kylin_lack_register.insert=INSERT INTO `kylin_lack_registers`(`lack_registers_id` ,`performance_id` ,`ticket_id` ,`user_id` ,`user_name` ,`user_mobile` ,`send_status` ,`ip_address` ,`created_at`)VALUES(? ,? ,? ,? ,? ,? ,? ,? ,?);
# ------------------------PV/UV----------------------------
bi_ticket_access_records.insert=INSERT INTO `bi_ticket_access_records` ( `user_id`, `access_type`, `performance_id`, `order_id`, `order_code`,`ip_address`, `area`, `area_province`, `area_city`, `area_county`,`created_at`) VALUES (?,?,?,?,?,?,?,?,?,?,?);
# ------------------------创建订单----------------------------
kylin_order_ticket.add=INSERT INTO kylin_order_tickets(order_tickets_id,user_id,user_name,user_mobile,performance_title,order_code,qr_code,order_type,order_version,`number`,price,price_member,price_total,price_voucher,price_actual,price_express,price_refund,refund_number,pay_type,payment_type,time_pay,express_contacts,express_address,express_phone,coupon_type,get_ticket_type,get_ticket_describe,pay_countdown_minute,`comment`,created_at,updated_at,pay_code,ip_address)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
kylin_order_ticket.add=INSERT INTO kylin_order_tickets(order_tickets_id,user_id,user_name,user_mobile,performance_title,order_code,qr_code,order_type,order_version,`number`,price,price_member,price_total,price_voucher,price_actual,price_express,price_refund,refund_number,pay_type,payment_type,time_pay,express_contacts,express_address,express_phone,coupon_type,get_ticket_type,get_ticket_describe,pay_countdown_minute,`comment`,created_at,updated_at,pay_code,ip_address,area,area_province,area_city,area_county)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
kylin_order_ticket_relation.add=INSERT INTO kylin_order_ticket_relations(order_ticket_relations_id ,order_id ,transfer_id ,live_id ,agent_id ,is_member ,performance_id ,time_id ,ticket_id ,created_at ,updated_at)VALUES(?,?,?,?,?,?,?,?,?,?,?)
kylin_order_ticket_status.add=INSERT INTO kylin_order_ticket_status(order_ticket_status_id ,order_id ,express_type ,is_student ,transfer_status ,`status` ,pay_status ,created_at ,updated_at)VALUES(?,?,?,?,?,?,?,?,?)
kylin_order_ticket_entities.add=INSERT INTO kylin_order_ticket_entities(order_ticket_entities_id ,order_id ,ticket_id ,user_id ,time_id ,performance_id ,enter_type ,enter_name ,enter_mobile,enter_id_code,`status`,sys_damai,check_client,is_payment,`comment`,created_at,updated_at)VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
kylin_order_coupon.add=INSERT INTO kylin_order_coupons(order_id ,coupon_code ,coupon_type ,coupon_price,created_at,updated_at)VALUES(?,?,?,?,?,?)
# ------------------------再次支付----------------------------
kylin_order_ticket.payAgain=UPDATE kylin_order_tickets SET updated_at = ? , pay_code = ?, pay_type = ? WHERE order_tickets_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_status.payAgain=UPDATE kylin_order_ticket_status SET updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_relation.payAgain=UPDATE kylin_order_ticket_relations SET updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_entities.payAgain=UPDATE kylin_order_ticket_entities SET updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
# ------------------------支付回调----------------------------
kylin_order_ticket.synPay=UPDATE kylin_order_tickets SET payment_id =? ,payment_type = ? ,pay_code = ? , time_pay = ?, qr_code = ? , updated_at = ? WHERE order_tickets_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_status.synPay=UPDATE kylin_order_ticket_status SET `status` = ?,pay_status = ?,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_relation.synPay=UPDATE kylin_order_ticket_relations SET updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_ticket_entities.synPay=UPDATE kylin_order_ticket_entities SET is_payment = ?,updated_at = ?,sys_damai = 1 WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
# ------------------------超时支付申请退款----------------------------
kylin_order_ticket_status.overtimeRefund=UPDATE kylin_order_ticket_status SET status = ? ,updated_at = ? WHERE order_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
kylin_order_tickets.overtimeRefund=UPDATE kylin_order_tickets SET payment_id = ? , payment_type = ? ,updated_at = ? WHERE order_tickets_id = ? and (updated_at <= ? or created_at = ? or updated_at is null)
......
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