记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
董敬伟
liquidnet-bus-v1
Commits
4363a2c8
Commit
4363a2c8
authored
Nov 24, 2021
by
anjiabin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
支付处理openid为error问题-暂时前端处理
parent
a2cfdafa
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
344 additions
and
0 deletions
+344
-0
bi_db.sql
docu/bi_db.sql
+18
-0
KylinIpAreaVo.java
...m/liquidnet/service/kylin/dto/vo/mongo/KylinIpAreaVo.java
+62
-0
IPUtil.java
...src/main/java/com/liquidnet/commons/lang/util/IPUtil.java
+56
-0
TestMysqlToMongo.java
...st/java/com/liquidnet/service/kylin/TestMysqlToMongo.java
+208
-0
No files found.
docu/bi_db.sql
0 → 100644
View file @
4363a2c8
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
);
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/dto/vo/mongo/KylinIpAreaVo.java
0 → 100644
View file @
4363a2c8
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
();
}
}
}
liquidnet-bus-common/liquidnet-common-base/src/main/java/com/liquidnet/commons/lang/util/IPUtil.java
0 → 100644
View file @
4363a2c8
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
(
3689901706
l
));
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/test/java/com/liquidnet/service/kylin/TestMysqlToMongo.java
0 → 100644
View file @
4363a2c8
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
)
{
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment