Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
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
youjj
cloud-platform
Commits
278e352a
Commit
278e352a
authored
Dec 27, 2019
by
libin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
用户ip解析job
parent
51d86f6c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
103 additions
and
51 deletions
+103
-51
AppUserDetailBiz.java
...m/github/wxiaoqi/security/admin/biz/AppUserDetailBiz.java
+6
-1
IPJobHandler.java
...ithub/wxiaoqi/security/admin/jobhandler/IPJobHandler.java
+89
-0
AppUserDetailMapper.java
...ub/wxiaoqi/security/admin/mapper/AppUserDetailMapper.java
+3
-0
AppPermissionService.java
...aoqi/security/admin/rpc/service/AppPermissionService.java
+0
-50
AppUserDetailMapper.xml
...e-admin/src/main/resources/mapper/AppUserDetailMapper.xml
+5
-0
No files found.
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserDetailBiz.java
View file @
278e352a
...
...
@@ -229,4 +229,9 @@ public class AppUserDetailBiz extends BaseBiz<AppUserDetailMapper, AppUserDetail
List
<
AppUserDetail
>
userDetails
=
mapper
.
selectByExample
(
example
);
return
CollectionUtils
.
isEmpty
(
userDetails
)?
Collections
.
emptyList
():
userDetails
;
}
}
public
List
<
AppUserDetail
>
findAllUserDetailWithNoProinceCode
()
{
List
<
AppUserDetail
>
appUserDetails
=
mapper
.
selectAllWithNoProviinceCode
();
return
CollectionUtils
.
isEmpty
(
appUserDetails
)?
Collections
.
EMPTY_LIST
:
appUserDetails
;
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/jobhandler/IPJobHandler.java
0 → 100644
View file @
278e352a
package
com
.
github
.
wxiaoqi
.
security
.
admin
.
jobhandler
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.wxiaoqi.security.admin.biz.AppUserDetailBiz
;
import
com.github.wxiaoqi.security.admin.entity.AppUserDetail
;
import
com.xxfc.platform.universal.dto.RegionDTO
;
import
com.xxfc.platform.universal.feign.RegionFeign
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.IJobHandler
;
import
com.xxl.job.core.handler.annotation.JobHandler
;
import
lombok.RequiredArgsConstructor
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.client.RestTemplate
;
import
java.util.List
;
/**
* @author libin
* @version 1.0
* @description
* @data 2019/12/27 11:14
*/
@JobHandler
(
value
=
"ipAnalyticalJobHandler"
)
@Component
@RequiredArgsConstructor
(
onConstructor
=
@__
(
@Autowired
))
@Slf4j
//@RefreshScope
public
class
IPJobHandler
extends
IJobHandler
{
private
final
RestTemplate
restTemplate
;
private
final
RegionFeign
regionFeign
;
private
final
AppUserDetailBiz
appUserDetailBiz
;
private
static
final
Integer
PROVINCECODE
=
440000
;
@Value
(
"${ip.analytical.appId:xcjtqjromfuvjjtt}"
)
private
String
appId
;
@Value
(
"${ip.analytical.secret:bzNRK3FUR2d3WGc0MmhKWGZINm5MQT09}"
)
private
String
secret
;
@Override
public
ReturnT
<
String
>
execute
(
String
s
)
throws
Exception
{
List
<
AppUserDetail
>
appUserDetails
=
appUserDetailBiz
.
findAllUserDetailWithNoProinceCode
();
for
(
AppUserDetail
appUserDetail
:
appUserDetails
)
{
String
crtHost
=
appUserDetail
.
getCrtHost
();
if
(
log
.
isDebugEnabled
())
{
log
.
debug
(
"解析的地址:【{}】"
,
crtHost
+
"---time==="
+
System
.
currentTimeMillis
()
/
1000L
);
}
try
{
analyticalIPByWebSiteAndIPAddress
(
IPAddress
.
BASE_IP_PARSING_URL2
,
crtHost
,
appUserDetail
);
}
catch
(
Exception
e
)
{
try
{
analyticalIPByWebSiteAndIPAddress
(
IPAddress
.
BASE_IP_PARSING_URL1
,
crtHost
,
appUserDetail
);
}
catch
(
Exception
ex
)
{
appUserDetail
.
setProvinceCode
(
PROVINCECODE
);
log
.
error
(
"解析地址失败:【{}】"
,
ex
.
getMessage
());
}
}
appUserDetailBiz
.
updateSelectiveByIdRe
(
appUserDetail
);
}
return
ReturnT
.
SUCCESS
;
}
private
void
analyticalIPByWebSiteAndIPAddress
(
String
url
,
String
crtHost
,
AppUserDetail
appUserDetail
)
{
String
ipAddress
=
restTemplate
.
getForObject
(
String
.
format
(
"%s%s&app_id=%s&app_secret=%s"
,
url
,
crtHost
,
appId
,
secret
),
String
.
class
);
String
data
=
JSONObject
.
parseObject
(
ipAddress
).
getString
(
IPAddress
.
BASE_DATA
);
JSONObject
ipJsonObject
=
JSONObject
.
parseObject
(
data
);
String
cityName
=
ipJsonObject
.
getString
(
IPAddress
.
CITY_NAME
);
RegionDTO
regionDTO
=
regionFeign
.
getRegionByCityName
(
StringUtils
.
isEmpty
(
cityName
)
?
"东莞"
:
cityName
);
if
(
null
!=
regionDTO
)
{
appUserDetail
.
setProvinceCode
(
Integer
.
valueOf
(
String
.
valueOf
(
regionDTO
.
getParentId
())));
appUserDetail
.
setCityCode
(
Integer
.
valueOf
(
String
.
valueOf
(
regionDTO
.
getId
())));
}
}
/**
* @author libin
* @version 1.0.0
* @dec ip 解析返回的地址信息
*/
private
static
class
IPAddress
{
public
static
final
String
BASE_IP_PARSING_URL1
=
"http://ip.taobao.com/service/getIpInfo.php?ip="
;
public
static
final
String
BASE_IP_PARSING_URL2
=
"https://www.mxnzp.com/api/ip/aim_ip?ip="
;
public
static
final
String
BASE_DATA
=
"data"
;
public
static
final
String
CITY_NAME
=
"city"
;
}
}
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/mapper/AppUserDetailMapper.java
View file @
278e352a
...
...
@@ -35,4 +35,7 @@ public interface AppUserDetailMapper extends Mapper<AppUserDetail> {
List
<
UserStaffBo
>
findAllStaffsByCompanyIdAndPostionId
(
StaffStatisticsFindDTO
staffStatisticsFindDTO
);
AppUserVo
getUser
(
Integer
userId
);
List
<
AppUserDetail
>
selectAllWithNoProviinceCode
();
}
\ No newline at end of file
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/rpc/service/AppPermissionService.java
View file @
278e352a
...
...
@@ -26,7 +26,6 @@ import com.github.wxiaoqi.security.common.util.process.SystemConfig;
import
com.github.wxiaoqi.security.common.util.result.JsonResultUtil
;
import
com.xxfc.platform.activity.feign.ActivityFeign
;
import
com.xxfc.platform.im.feign.ImFeign
;
import
com.xxfc.platform.universal.dto.RegionDTO
;
import
com.xxfc.platform.universal.dto.SmsTemplateDTO
;
import
com.xxfc.platform.universal.feign.MQSenderFeign
;
import
com.xxfc.platform.universal.feign.RegionFeign
;
...
...
@@ -1208,55 +1207,6 @@ public class AppPermissionService {
}
}
/**
* ip地址 信息解析
*
* @param appUserDetail
*/
public
void
setCreateIPInfo
(
AppUserDetail
appUserDetail
)
{
String
crtHost
=
appUserDetail
.
getCrtHost
();
if
(
log
.
isDebugEnabled
())
{
log
.
debug
(
"解析的地址:【{}】"
,
crtHost
+
"---time==="
+
System
.
currentTimeMillis
()/
1000L
);
}
try
{
analyticalIPByWebSiteAndIPAddress
(
IPAddress
.
BASE_IP_PARSING_URL2
,
crtHost
,
appUserDetail
);
}
catch
(
Exception
e
)
{
try
{
analyticalIPByWebSiteAndIPAddress
(
IPAddress
.
BASE_IP_PARSING_URL1
,
crtHost
,
appUserDetail
);
}
catch
(
Exception
ex
)
{
log
.
error
(
"解析地址失败:【{}】"
,
ex
.
getMessage
());
}
}
}
private
void
analyticalIPByWebSiteAndIPAddress
(
String
url
,
String
crtHost
,
AppUserDetail
appUserDetail
)
{
String
ipAddress
=
restTemplate
.
getForObject
(
String
.
format
(
"%s%s"
,
url
,
crtHost
),
String
.
class
);
log
.
debug
(
"解析的调用网站后:【{}】"
,
crtHost
+
"---time==="
+
System
.
currentTimeMillis
()/
1000L
);
String
data
=
JSONObject
.
parseObject
(
ipAddress
).
getString
(
IPAddress
.
BASE_DATA
);
JSONObject
ipJsonObject
=
JSONObject
.
parseObject
(
data
);
String
cityName
=
ipJsonObject
.
getString
(
IPAddress
.
CITY_NAME
);
RegionDTO
regionDTO
=
regionFeign
.
getRegionByCityName
(
StringUtils
.
isEmpty
(
cityName
)
?
"东莞"
:
cityName
);
log
.
debug
(
"解析的调用服务后:【{}】"
,
crtHost
+
"---time==="
+
System
.
currentTimeMillis
()/
1000L
);
if
(
null
!=
regionDTO
)
{
appUserDetail
.
setProvinceCode
(
Integer
.
valueOf
(
String
.
valueOf
(
regionDTO
.
getParentId
())));
appUserDetail
.
setCityCode
(
Integer
.
valueOf
(
String
.
valueOf
(
regionDTO
.
getId
())));
}
}
/**
* @author libin
* @version 1.0.0
* @dec ip 解析返回的地址信息
*/
private
static
class
IPAddress
{
public
static
final
String
BASE_IP_PARSING_URL1
=
"http://ip.taobao.com/service/getIpInfo.php?ip="
;
public
static
final
String
BASE_IP_PARSING_URL2
=
"https://www.mxnzp.com/api/ip/aim_ip?ip="
;
public
static
final
String
BASE_DATA
=
"data"
;
public
static
final
String
CITY_NAME
=
"city"
;
}
//修改手机号码
public
ObjectRestResponse
updUsername
(
Integer
userId
,
String
username
,
String
mobileCode
){
if
(
StringUtils
.
isBlank
(
username
)||
StringUtils
.
isBlank
(
mobileCode
)||
userId
==
0
||
userId
==
null
){
...
...
ace-modules/ace-admin/src/main/resources/mapper/AppUserDetailMapper.xml
View file @
278e352a
...
...
@@ -328,4 +328,9 @@ from `app_user_detail` as `aud` left join `app_user_login` as `aul` on aul.id=
on d.userid = l.id
where l.id = #{userId} limit 1
</select>
<select
id=
"selectAllWithNoProviinceCode"
resultType=
"com.github.wxiaoqi.security.admin.entity.AppUserDetail"
>
select `id`,`crt_host` from `app_user_detail` where crt_host is not null and ( province_code = 0 or province_code is null)
</select>
</mapper>
\ No newline at end of file
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