Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
AppTag
Project
Overview
Details
Activity
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
dataplatform
AppTag
Commits
aa2c5c6c
Commit
aa2c5c6c
authored
Sep 04, 2019
by
jinfeng.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix
parent
3d6c273b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
2169 additions
and
3 deletions
+2169
-3
ec_tag_pull.job
azkaban/ec_tag_pull.job
+4
-0
ec_tag_pull.sh
azkaban/ec_tag_pull.sh
+4
-0
ECResultController.java
...va/com/mobvista/apptag/controller/ECResultController.java
+116
-0
ECStorageController.java
...a/com/mobvista/apptag/controller/ECStorageController.java
+121
-0
ECTagController.java
.../java/com/mobvista/apptag/controller/ECTagController.java
+115
-0
ECStorage.java
src/main/java/com/mobvista/apptag/entity/ECStorage.java
+71
-0
ECTag.java
src/main/java/com/mobvista/apptag/entity/ECTag.java
+109
-0
ECTagResult.java
src/main/java/com/mobvista/apptag/entity/ECTagResult.java
+128
-0
ECResultDao.java
src/main/java/com/mobvista/apptag/mapper/ECResultDao.java
+89
-0
ECStorageDao.java
src/main/java/com/mobvista/apptag/mapper/ECStorageDao.java
+53
-0
ECTagDao.java
src/main/java/com/mobvista/apptag/mapper/ECTagDao.java
+82
-0
ECResultService.java
...ain/java/com/mobvista/apptag/service/ECResultService.java
+23
-0
ECStorageService.java
...in/java/com/mobvista/apptag/service/ECStorageService.java
+21
-0
ECTagService.java
src/main/java/com/mobvista/apptag/service/ECTagService.java
+22
-0
ECResultServiceImpl.java
...com/mobvista/apptag/service/impl/ECResultServiceImpl.java
+85
-0
ECStorageServiceImpl.java
...om/mobvista/apptag/service/impl/ECStorageServiceImpl.java
+75
-0
ECTagServiceImpl.java
...va/com/mobvista/apptag/service/impl/ECTagServiceImpl.java
+70
-0
ECStorageTag.java
src/main/java/com/mobvista/apptag/utils/ECStorageTag.java
+0
-0
GetPreviewUrl.java
src/main/java/com/mobvista/apptag/utils/GetPreviewUrl.java
+57
-0
application.properties
src/main/resources/application.properties
+1
-1
edit.js
src/main/resources/static/js/appjs/ec_result/edit.js
+117
-0
list.js
src/main/resources/static/js/appjs/ec_result/list.js
+98
-0
edit.js
src/main/resources/static/js/appjs/ec_storage/edit.js
+117
-0
list.js
src/main/resources/static/js/appjs/ec_storage/list.js
+101
-0
edit.js
src/main/resources/static/js/appjs/ec_tag/edit.js
+92
-0
list.js
src/main/resources/static/js/appjs/ec_tag/list.js
+93
-0
edit.html
src/main/resources/templates/ec_result/edit.html
+54
-0
list.html
src/main/resources/templates/ec_result/list.html
+40
-0
edit.html
src/main/resources/templates/ec_storage/edit.html
+54
-0
list.html
src/main/resources/templates/ec_storage/list.html
+43
-0
edit.html
src/main/resources/templates/ec_tag/edit.html
+52
-0
list.html
src/main/resources/templates/ec_tag/list.html
+40
-0
index.html
src/main/resources/templates/index.html
+17
-1
MD5Test.java
src/test/java/com/mobvista/MD5Test.java
+5
-1
No files found.
azkaban/ec_tag_pull.job
0 → 100644
View file @
aa2c5c6c
type=command
retries=3
command=sh -x ec_tag_pull.sh
\ No newline at end of file
azkaban/ec_tag_pull.sh
0 → 100644
View file @
aa2c5c6c
#!/usr/sh
java
-jar
-Dloader
.main
=
com.mobvista.apptag.utils.GetPreviewUrl apptag.jar
\ No newline at end of file
src/main/java/com/mobvista/apptag/controller/ECResultController.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
controller
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.mobvista.apptag.config.WebSecurityConfig
;
import
com.mobvista.apptag.entity.ECTag
;
import
com.mobvista.apptag.entity.ECTagResult
;
import
com.mobvista.apptag.entity.Feat
;
import
com.mobvista.apptag.entity.User
;
import
com.mobvista.apptag.mapper.FeatDao
;
import
com.mobvista.apptag.mapper.UserDao
;
import
com.mobvista.apptag.service.ECResultService
;
import
com.mobvista.apptag.service.ECTagService
;
import
com.mobvista.apptag.service.FeatService
;
import
com.mobvista.apptag.utils.PageUtil
;
import
com.mobvista.apptag.utils.Query
;
import
com.mobvista.apptag.utils.R
;
import
net.sf.json.JSONArray
;
import
net.sf.json.JSONObject
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author wangjf
*/
@Controller
@RequestMapping
(
"/ec_result"
)
public
class
ECResultController
{
@Autowired
private
ECResultService
ecResultService
;
@Autowired
private
UserDao
userDao
;
@Autowired
private
ECTagService
ecTagService
;
@Autowired
private
FeatDao
featDao
;
@Autowired
private
FeatService
featService
;
public
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ECResultController
.
class
);
@GetMapping
(
"/edit"
)
String
edit
(
@SessionAttribute
(
WebSecurityConfig
.
SESSION_KEY
)
String
userName
,
@RequestParam
(
name
=
"urlMd5"
)
String
urlMd5
,
Model
model
)
{
User
user
=
userDao
.
find
(
userName
);
ECTag
tag
=
ecTagService
.
find
(
urlMd5
);
model
.
addAttribute
(
"ecTag"
,
tag
);
ECTagResult
result
=
ecResultService
.
find
(
urlMd5
,
user
.
getUserId
());
model
.
addAttribute
(
"resultECTag"
,
JSONObject
.
fromObject
(
result
.
getFeatId
()));
List
<
Feat
>
categoryFeat
=
featDao
.
firstList
(
"05"
);
JSONArray
jsonArray
=
JSONArray
.
fromObject
(
categoryFeat
);
model
.
addAttribute
(
"firstECTag"
,
jsonArray
);
List
<
Feat
>
secondCategoryFeat
=
featDao
.
list
(
"05"
);
JSONArray
secondJsonArray
=
JSONArray
.
fromObject
(
secondCategoryFeat
);
model
.
addAttribute
(
"secondECTag"
,
secondJsonArray
);
return
"ec_result/edit"
;
}
@PostMapping
(
"/save"
)
@ResponseBody
R
save
(
@SessionAttribute
(
WebSecurityConfig
.
SESSION_KEY
)
String
userName
,
@RequestParam
(
name
=
"urlMd5"
)
String
urlMd5
,
@RequestParam
(
name
=
"ecCode"
,
required
=
false
)
String
ecCode
)
{
Map
<
String
,
String
>
codeMap
=
new
HashMap
<
String
,
String
>();
Map
<
String
,
String
>
featMap
=
featService
.
getMap
();
// 类型标签
if
(
StringUtils
.
isNotBlank
(
ecCode
))
{
String
[]
codes
=
ecCode
.
split
(
","
);
for
(
String
code
:
codes
)
{
codeMap
.
put
(
code
,
featMap
.
get
(
code
));
}
}
ObjectMapper
mapper
=
new
ObjectMapper
();
String
json
=
""
;
try
{
json
=
mapper
.
writeValueAsString
(
codeMap
);
}
catch
(
JsonProcessingException
e
)
{
e
.
printStackTrace
();
}
if
(
ecResultService
.
save
(
urlMd5
,
userName
,
json
))
{
return
R
.
ok
();
}
else
{
return
R
.
error
(
1
,
"保存失败!"
);
}
}
@PostMapping
(
"/list"
)
@ResponseBody
public
PageUtil
list
(
@SessionAttribute
(
WebSecurityConfig
.
SESSION_KEY
)
String
username
,
@RequestBody
Query
query
)
{
List
<
ECTagResult
>
results
=
ecResultService
.
list
(
username
,
query
);
String
search
=
query
.
getSearch
();
int
total
=
ecResultService
.
count
(
username
,
search
);
PageUtil
pageUtil
=
new
PageUtil
(
results
,
total
);
return
pageUtil
;
}
@GetMapping
(
""
)
String
trueTag
(
Model
model
)
{
return
"ec_result/list"
;
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/controller/ECStorageController.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
controller
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.mobvista.apptag.config.WebSecurityConfig
;
import
com.mobvista.apptag.entity.ECStorage
;
import
com.mobvista.apptag.entity.ECTag
;
import
com.mobvista.apptag.entity.Feat
;
import
com.mobvista.apptag.entity.User
;
import
com.mobvista.apptag.mapper.FeatDao
;
import
com.mobvista.apptag.mapper.UserDao
;
import
com.mobvista.apptag.service.ECResultService
;
import
com.mobvista.apptag.service.ECStorageService
;
import
com.mobvista.apptag.service.ECTagService
;
import
com.mobvista.apptag.service.FeatService
;
import
com.mobvista.apptag.utils.PageUtil
;
import
com.mobvista.apptag.utils.Query
;
import
com.mobvista.apptag.utils.R
;
import
net.sf.json.JSONArray
;
import
net.sf.json.JSONObject
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author wangjf
*/
@Controller
@RequestMapping
(
"/ec_storage"
)
public
class
ECStorageController
{
@Autowired
private
ECResultService
ecResultService
;
@Autowired
private
UserDao
userDao
;
@Autowired
private
ECTagService
ecTagService
;
@Autowired
private
FeatDao
featDao
;
@Autowired
private
FeatService
featService
;
@Autowired
private
ECStorageService
ecStorageService
;
public
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ECStorageController
.
class
);
@GetMapping
(
"/edit"
)
String
edit
(
@RequestParam
(
name
=
"urlMd5"
)
String
urlMd5
,
Model
model
)
{
ECTag
tag
=
ecTagService
.
find
(
urlMd5
);
model
.
addAttribute
(
"ecTag"
,
tag
);
ECStorage
result
=
ecStorageService
.
find
(
urlMd5
);
model
.
addAttribute
(
"resultECTag"
,
JSONObject
.
fromObject
(
result
.
getTag
()));
List
<
Feat
>
categoryFeat
=
featDao
.
firstList
(
"05"
);
JSONArray
jsonArray
=
JSONArray
.
fromObject
(
categoryFeat
);
model
.
addAttribute
(
"firstECTag"
,
jsonArray
);
List
<
Feat
>
secondCategoryFeat
=
featDao
.
list
(
"05"
);
JSONArray
secondJsonArray
=
JSONArray
.
fromObject
(
secondCategoryFeat
);
model
.
addAttribute
(
"secondECTag"
,
secondJsonArray
);
return
"ec_storage/edit"
;
}
@PostMapping
(
"/save"
)
@ResponseBody
R
save
(
@SessionAttribute
(
WebSecurityConfig
.
SESSION_KEY
)
String
userName
,
@RequestParam
(
name
=
"urlMd5"
)
String
urlMd5
,
@RequestParam
(
name
=
"ecCode"
,
required
=
false
)
String
ecCode
)
{
Map
<
String
,
String
>
codeMap
=
new
HashMap
<
String
,
String
>();
Map
<
String
,
String
>
featMap
=
featService
.
getMap
();
if
(
StringUtils
.
isNotBlank
(
ecCode
))
{
String
[]
codes
=
ecCode
.
split
(
","
);
for
(
String
code
:
codes
)
{
codeMap
.
put
(
code
,
featMap
.
get
(
code
));
}
}
ObjectMapper
mapper
=
new
ObjectMapper
();
String
json
=
""
;
try
{
json
=
mapper
.
writeValueAsString
(
codeMap
);
}
catch
(
JsonProcessingException
e
)
{
e
.
printStackTrace
();
}
if
(
ecStorageService
.
update
(
urlMd5
,
userName
,
json
))
{
return
R
.
ok
();
}
else
{
return
R
.
error
(
1
,
"保存失败!"
);
}
}
@PostMapping
(
"/list"
)
@ResponseBody
public
PageUtil
list
(
@RequestBody
Query
query
,
Model
model
)
{
// PageHelper.startPage(query.getOffset() / query.getLimit() + 1, query.getLimit());
List
<
ECStorage
>
results
=
ecStorageService
.
list
(
query
);
String
search
=
query
.
getSearch
();
int
total
=
ecStorageService
.
count
(
search
);
PageUtil
pageUtil
=
new
PageUtil
(
results
,
total
);
return
pageUtil
;
}
@GetMapping
(
""
)
String
storageTag
(
@SessionAttribute
(
WebSecurityConfig
.
SESSION_KEY
)
String
username
,
Model
model
)
{
User
user
=
userDao
.
find
(
username
);
model
.
addAttribute
(
"userRole"
,
user
.
getRole
());
return
"ec_storage/list"
;
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/controller/ECTagController.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
controller
;
import
com.fasterxml.jackson.core.JsonProcessingException
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.mobvista.apptag.config.WebSecurityConfig
;
import
com.mobvista.apptag.entity.ECTag
;
import
com.mobvista.apptag.entity.Feat
;
import
com.mobvista.apptag.entity.Tag
;
import
com.mobvista.apptag.mapper.FeatDao
;
import
com.mobvista.apptag.mapper.TagDao
;
import
com.mobvista.apptag.mapper.UserDao
;
import
com.mobvista.apptag.service.*
;
import
com.mobvista.apptag.utils.PageUtil
;
import
com.mobvista.apptag.utils.Query
;
import
com.mobvista.apptag.utils.R
;
import
net.sf.json.JSONArray
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* @author wangjf
*/
@Controller
@RequestMapping
(
"/ec_tag"
)
public
class
ECTagController
{
@Autowired
private
ECTagService
ecTagService
;
@Autowired
private
ECResultService
ecResultService
;
@Autowired
private
FeatService
featService
;
@Autowired
private
TagDao
tagDao
;
@Autowired
private
FeatDao
featDao
;
@Autowired
private
UserDao
userDao
;
public
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ECTagController
.
class
);
@GetMapping
(
"/edit"
)
String
edit
(
@RequestParam
(
name
=
"urlMd5"
)
String
urlMd5
,
Model
model
)
{
ECTag
ecTag
=
ecTagService
.
find
(
urlMd5
);
model
.
addAttribute
(
"ecTag"
,
ecTag
);
List
<
Feat
>
categoryFeat
=
featDao
.
firstList
(
"05"
);
JSONArray
jsonArray
=
JSONArray
.
fromObject
(
categoryFeat
);
model
.
addAttribute
(
"firstECTag"
,
jsonArray
);
List
<
Feat
>
secondCategoryFeat
=
featDao
.
list
(
"05"
);
JSONArray
secondJsonArray
=
JSONArray
.
fromObject
(
secondCategoryFeat
);
model
.
addAttribute
(
"secondECTag"
,
secondJsonArray
);
return
"ec_tag/edit"
;
}
@PostMapping
(
"/save"
)
@ResponseBody
R
save
(
@SessionAttribute
(
WebSecurityConfig
.
SESSION_KEY
)
String
userName
,
@RequestParam
(
name
=
"urlMd5"
)
String
urlMd5
,
@RequestParam
(
name
=
"ecCode"
,
required
=
false
)
String
ecCode
)
{
Map
<
String
,
String
>
codeMap
=
new
HashMap
<
String
,
String
>();
Map
<
String
,
String
>
featMap
=
featService
.
getMap
();
// 类型标签
if
(
StringUtils
.
isNotBlank
(
ecCode
))
{
String
[]
codes
=
ecCode
.
split
(
","
);
for
(
String
code
:
codes
)
{
codeMap
.
put
(
code
,
featMap
.
get
(
code
));
}
}
ObjectMapper
mapper
=
new
ObjectMapper
();
String
json
=
""
;
try
{
json
=
mapper
.
writeValueAsString
(
codeMap
);
}
catch
(
JsonProcessingException
e
)
{
e
.
printStackTrace
();
}
if
(
ecTagService
.
update
(
urlMd5
,
userName
)
&&
ecResultService
.
save
(
urlMd5
,
userName
,
json
))
{
return
R
.
ok
();
}
else
{
return
R
.
error
(
1
,
"保存失败!"
);
}
}
@PostMapping
(
"/list"
)
@ResponseBody
public
PageUtil
list
(
@SessionAttribute
(
WebSecurityConfig
.
SESSION_KEY
)
String
userName
,
@RequestBody
Query
query
,
@RequestParam
(
name
=
"tag"
,
required
=
false
,
defaultValue
=
"0"
)
int
tag
)
{
List
<
ECTag
>
tags
=
ecTagService
.
list
(
userName
,
query
);
int
total
=
ecTagService
.
count
(
userName
,
query
);
PageUtil
pageUtil
=
new
PageUtil
(
tags
,
total
);
return
pageUtil
;
}
@GetMapping
(
""
)
String
falseTag
(
Model
model
)
{
return
"ec_tag/list"
;
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/entity/ECStorage.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
entity
;
import
com.gitee.sunchenbin.mybatis.actable.annotation.Column
;
import
com.gitee.sunchenbin.mybatis.actable.annotation.Table
;
import
com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @author wangjf
*/
@Table
(
name
=
"ec_storage"
)
public
class
ECStorage
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@Column
(
name
=
"url_md5"
,
type
=
MySqlTypeConstant
.
VARCHAR
,
isKey
=
true
,
isNull
=
false
)
private
String
urlMd5
;
@Column
(
name
=
"preview_url"
,
type
=
MySqlTypeConstant
.
TEXT
,
isNull
=
false
)
private
String
previewUrl
;
// 标签
@Column
(
name
=
"tag"
,
type
=
MySqlTypeConstant
.
TEXT
)
private
String
tag
;
// 入库时间
@Column
(
name
=
"update_time"
,
type
=
MySqlTypeConstant
.
DATETIME
,
isNull
=
false
)
private
Date
updateTime
;
// 标注人员(仅超管用户可以修改已入库的标签)
@Column
(
name
=
"user_id"
,
type
=
MySqlTypeConstant
.
VARCHAR
,
length
=
100
)
private
String
userId
;
public
String
getUrlMd5
()
{
return
urlMd5
;
}
public
void
setUrlMd5
(
String
urlMd5
)
{
this
.
urlMd5
=
urlMd5
;
}
public
String
getPreviewUrl
()
{
return
previewUrl
;
}
public
void
setPreviewUrl
(
String
previewUrl
)
{
this
.
previewUrl
=
previewUrl
;
}
public
String
getTag
()
{
return
tag
;
}
public
void
setTag
(
String
tag
)
{
this
.
tag
=
tag
;
}
public
Date
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
public
String
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/entity/ECTag.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
entity
;
import
com.gitee.sunchenbin.mybatis.actable.annotation.Column
;
import
com.gitee.sunchenbin.mybatis.actable.annotation.Table
;
import
com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @author wangjf
*/
@Table
(
name
=
"ec_tag_list"
)
public
class
ECTag
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1507448849738387249L
;
// 电商单子中的 URL
@Column
(
name
=
"url_md5"
,
type
=
MySqlTypeConstant
.
VARCHAR
,
isKey
=
true
,
isNull
=
false
)
private
String
urlMd5
;
// 电商单子中的 URL
@Column
(
name
=
"preview_url"
,
type
=
MySqlTypeConstant
.
TEXT
,
isNull
=
false
)
private
String
previewUrl
;
// 标注者
@Column
(
name
=
"user_id"
,
type
=
MySqlTypeConstant
.
VARCHAR
)
private
String
userId
;
// 标注状态:0.未标注,1.已标注
@Column
(
name
=
"tag"
,
type
=
MySqlTypeConstant
.
INT
,
length
=
10
,
defaultValue
=
"0"
)
private
Integer
tag
;
// 入库状态:0.未入库,1.已入库
@Column
(
name
=
"flag"
,
type
=
MySqlTypeConstant
.
INT
,
length
=
10
,
defaultValue
=
"0"
)
private
Integer
flag
;
// 标注时间
@Column
(
name
=
"update_time"
,
type
=
MySqlTypeConstant
.
DATETIME
)
private
Date
updateTime
;
public
String
getUrlMd5
()
{
return
urlMd5
;
}
public
void
setUrlMd5
(
String
urlMd5
)
{
this
.
urlMd5
=
urlMd5
;
}
public
String
getPreviewUrl
()
{
return
previewUrl
;
}
public
void
setPreviewUrl
(
String
previewUrl
)
{
this
.
previewUrl
=
previewUrl
;
}
/**
* @return the user_id
*/
public
String
getUserId
()
{
return
userId
;
}
/**
* @param userId the userId to set
*/
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
/**
* @return the tag
*/
public
Integer
getTag
()
{
return
tag
;
}
/**
* @param tag the tag to set
*/
public
void
setTag
(
Integer
tag
)
{
this
.
tag
=
tag
;
}
/**
* @return the flag
*/
public
Integer
getFlag
()
{
return
flag
;
}
/**
* @param flag the flag to set
*/
public
void
setFlag
(
Integer
flag
)
{
this
.
flag
=
flag
;
}
/**
* @return the updateTime
*/
public
Date
getUpdateTime
()
{
return
updateTime
;
}
/**
* @param updateTime the updateTime to set
*/
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/entity/ECTagResult.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
entity
;
import
com.gitee.sunchenbin.mybatis.actable.annotation.Column
;
import
com.gitee.sunchenbin.mybatis.actable.annotation.Table
;
import
com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant
;
import
java.io.Serializable
;
import
java.util.Date
;
/**
* @author wangjf
*/
@Table
(
name
=
"ec_tag_result"
)
public
class
ECTagResult
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
// URL MD5
@Column
(
name
=
"url_md5"
,
type
=
MySqlTypeConstant
.
VARCHAR
,
isNull
=
false
)
private
String
urlMd5
;
@Column
(
name
=
"preview_url"
,
type
=
MySqlTypeConstant
.
VARCHAR
)
private
String
previewUrl
;
// 标注的标签ID
@Column
(
name
=
"feat_id"
,
type
=
MySqlTypeConstant
.
VARCHAR
)
private
String
featId
;
// 标注的中文全名
@Column
(
name
=
"comment"
,
type
=
MySqlTypeConstant
.
VARCHAR
)
private
String
comment
;
// 是否入库
@Column
(
name
=
"flag"
,
type
=
MySqlTypeConstant
.
INT
,
defaultValue
=
"0"
)
private
Integer
flag
;
// 用户ID
@Column
(
name
=
"user_id"
,
type
=
MySqlTypeConstant
.
VARCHAR
,
isNull
=
false
)
private
String
userId
;
// 入库时间
@Column
(
name
=
"update_time"
,
type
=
MySqlTypeConstant
.
DATETIME
,
isNull
=
false
)
private
Date
updateTime
;
public
String
getUrlMd5
()
{
return
urlMd5
;
}
public
void
setUrlMd5
(
String
urlMd5
)
{
this
.
urlMd5
=
urlMd5
;
}
public
String
getPreviewUrl
()
{
return
previewUrl
;
}
public
void
setPreviewUrl
(
String
previewUrl
)
{
this
.
previewUrl
=
previewUrl
;
}
/**
* @param featId the featId to set
*/
public
void
setFeatId
(
String
featId
)
{
this
.
featId
=
featId
;
}
/**
* @return the featId
*/
public
String
getFeatId
()
{
return
featId
;
}
/**
* @return the comment
*/
public
String
getComment
()
{
return
comment
;
}
/**
* @param comment the comment to set
*/
public
void
setComment
(
String
comment
)
{
this
.
comment
=
comment
;
}
/**
*
* @return the flag
*/
public
Integer
getFlag
()
{
return
flag
;
}
/**
*
* @param flag the flag to set
*/
public
void
setFlag
(
Integer
flag
)
{
this
.
flag
=
flag
;
}
/**
* @return the userId
*/
// @Id
public
String
getUserId
()
{
return
userId
;
}
/**
* @param userId the userId to set
*/
public
void
setUserId
(
String
userId
)
{
this
.
userId
=
userId
;
}
/**
* @return the updateTime
*/
public
Date
getUpdateTime
()
{
return
updateTime
;
}
/**
* @param updateTime the updateTime to set
*/
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/mapper/ECResultDao.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
mapper
;
import
com.mobvista.apptag.entity.ECTagResult
;
import
com.mobvista.apptag.entity.TagResult
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.annotations.*
;
import
java.util.List
;
/**
* @author wangjf
*/
public
interface
ECResultDao
{
@Insert
(
"REPLACE INTO ec_tag_result(url_md5,preview_url,feat_id,comment,user_id,update_time) VALUES(#{urlMd5}, #{previewUrl}, #{featId}, #{comment}, #{userId}, #{updateTime})"
)
boolean
save
(
ECTagResult
ecTagResult
);
@Delete
(
"DELETE FROM ec_tag_result WHERE url_md5 = #{urlMd5}"
)
boolean
delete
(
String
urlMd5
);
@Select
(
"SELECT * FROM ec_tag_result WHERE url_md5 = #{urlMd5} AND user_id = #{userId}"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"featId"
,
column
=
"feat_id"
),
@Result
(
property
=
"comments"
,
column
=
"comments"
),
@Result
(
property
=
"userId"
,
column
=
"user_id"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
ECTagResult
find
(
String
urlMd5
,
String
userId
);
@SelectProvider
(
type
=
MapperProvider
.
class
,
method
=
"list"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"featId"
,
column
=
"feat_id"
),
@Result
(
property
=
"comments"
,
column
=
"comments"
),
@Result
(
property
=
"userId"
,
column
=
"user_id"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
List
<
ECTagResult
>
list
(
String
userId
,
String
search
);
@SelectProvider
(
type
=
MapperProvider
.
class
,
method
=
"count"
)
int
count
(
String
userId
,
String
search
);
@SelectProvider
(
type
=
MapperProvider
.
class
,
method
=
"listAll"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"featId"
,
column
=
"feat_id"
),
@Result
(
property
=
"comments"
,
column
=
"comments"
),
@Result
(
property
=
"userId"
,
column
=
"user_id"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
List
<
ECTagResult
>
listAll
(
String
search
);
@SelectProvider
(
type
=
MapperProvider
.
class
,
method
=
"countAll"
)
int
countAll
(
String
search
);
class
MapperProvider
{
public
String
list
(
String
userId
,
String
search
)
{
String
sql
=
"SELECT * FROM ec_tag_result WHERE user_id = #{userId} AND flag != 1"
;
if
(
StringUtils
.
isNotBlank
(
search
))
{
sql
+=
" AND LOWER(preview_url) LIKE '%"
+
search
+
"%'"
;
}
return
sql
;
}
public
String
count
(
String
userId
,
String
search
)
{
String
sql
=
"SELECT COUNT(1) FROM ec_tag_result WHERE user_id = #{userId} AND flag != 1"
;
if
(
StringUtils
.
isNotBlank
(
search
))
{
sql
+=
" AND LOWER(preview_url) LIKE '%"
+
search
+
"%'"
;
}
return
sql
;
}
public
String
listAll
(
String
search
)
{
String
sql
=
"SELECT * FROM ec_tag_result WHERE flag != 1"
;
if
(
StringUtils
.
isNotBlank
(
search
))
{
sql
+=
" AND LOWER(preview_url) LIKE '%"
+
search
+
"%'"
;
}
return
sql
;
}
public
String
countAll
(
String
search
)
{
String
sql
=
"SELECT COUNT(1) FROM ec_tag_result WHERE flag != 1"
;
if
(
StringUtils
.
isNotBlank
(
search
))
{
sql
+=
" AND LOWER(preview_url) LIKE '%"
+
search
+
"%'"
;
}
return
sql
;
}
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/mapper/ECStorageDao.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
mapper
;
import
com.mobvista.apptag.entity.ECStorage
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.annotations.*
;
import
java.util.List
;
/**
* @author wangjf
*/
public
interface
ECStorageDao
{
@Insert
(
"REPLACE INTO ec_storage(url_md5,preview_url,tag,update_time,user_id) VALUES(#{urlMd5}, #{previewUrl}, #{tag}, #{updateTime}, #{userId})"
)
boolean
save
(
ECStorage
ecStorage
);
@Select
(
"SELECT * FROM ec_storage WHERE url_md5 = #{urlMd5}"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"tag"
,
column
=
"tag"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
ECStorage
find
(
String
urlMd5
);
@SelectProvider
(
type
=
MapperProvider
.
class
,
method
=
"list"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"tag"
,
column
=
"tag"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
List
<
ECStorage
>
list
(
String
search
);
@SelectProvider
(
type
=
MapperProvider
.
class
,
method
=
"count"
)
int
count
(
String
search
);
class
MapperProvider
{
public
String
list
(
String
search
)
{
String
sql
=
"SELECT * FROM ec_storage"
;
if
(
StringUtils
.
isNotBlank
(
search
))
{
sql
+=
" WHERE LOWER(preview_url) LIKE '%"
+
search
+
"%'"
;
}
return
sql
;
}
public
String
count
(
String
search
)
{
String
sql
=
"SELECT COUNT(1) FROM ec_storage"
;
if
(
StringUtils
.
isNotBlank
(
search
))
{
sql
+=
" WHERE LOWER(preview_url) LIKE '%"
+
search
+
"%'"
;
}
return
sql
;
}
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/mapper/ECTagDao.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
mapper
;
import
com.mobvista.apptag.entity.ECTag
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.annotations.*
;
import
java.util.List
;
/**
* @author wangjf
*/
public
interface
ECTagDao
{
@Update
(
"UPDATE ec_tag_list SET user_id = #{userId}, tag = #{tag}, update_time = #{updateTime} WHERE preview_url = #{previewUrl}"
)
boolean
update
(
ECTag
tag
);
@SelectProvider
(
type
=
MapperProvider
.
class
,
method
=
"list"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"tag"
,
column
=
"tag"
),
@Result
(
property
=
"flag"
,
column
=
"flag"
),
@Result
(
property
=
"userId"
,
column
=
"user_id"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
List
<
ECTag
>
list
(
String
search
,
int
tag
,
String
userId
);
@SelectProvider
(
type
=
MapperProvider
.
class
,
method
=
"count"
)
int
count
(
String
search
,
int
tag
,
String
userId
);
class
MapperProvider
{
public
String
list
(
String
search
,
int
tag
,
String
userId
)
{
String
sql
=
"SELECT * FROM ec_tag_list WHERE tag < "
+
tag
;
if
(
StringUtils
.
isNotBlank
(
userId
))
{
sql
+=
" AND (user_id NOT LIKE '%"
+
userId
+
"%' OR user_id IS NULL) AND flag = 0"
;
}
if
(
StringUtils
.
isNotBlank
(
search
))
{
sql
+=
" AND LOWER(preview_url) LIKE '%"
+
search
+
"%'"
;
}
return
sql
;
}
public
String
count
(
String
search
,
int
tag
,
String
userId
)
{
String
sql
=
"SELECT COUNT(1) FROM ec_tag_list WHERE tag < "
+
tag
;
if
(
StringUtils
.
isNotBlank
(
userId
))
{
sql
+=
" AND (user_id NOT LIKE '%"
+
userId
+
"%' OR user_id IS NULL) AND flag = 0"
;
}
if
(
StringUtils
.
isNotBlank
(
search
))
{
sql
+=
" AND LOWER(preview_url) LIKE '%"
+
search
+
"%'"
;
}
return
sql
;
}
}
@Select
(
"SELECT * FROM ec_tag_list WHERE tag = #{tag} ORDER BY install DESC"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"tag"
,
column
=
"tag"
),
@Result
(
property
=
"flag"
,
column
=
"flag"
),
@Result
(
property
=
"userId"
,
column
=
"user_id"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
List
<
ECTag
>
listAll
(
int
tag
);
@Select
(
"SELECT * FROM ec_tag_list LIMIT 1"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"tag"
,
column
=
"tag"
),
@Result
(
property
=
"flag"
,
column
=
"flag"
),
@Result
(
property
=
"userId"
,
column
=
"user_id"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
ECTag
one
();
@Select
(
"SELECT * FROM ec_tag_list WHERE url_md5 = #{urlMd5}"
)
@Results
({
@Result
(
property
=
"urlMd5"
,
column
=
"url_md5"
),
@Result
(
property
=
"previewUrl"
,
column
=
"preview_url"
),
@Result
(
property
=
"tag"
,
column
=
"tag"
),
@Result
(
property
=
"flag"
,
column
=
"flag"
),
@Result
(
property
=
"userId"
,
column
=
"user_id"
),
@Result
(
property
=
"updateTime"
,
column
=
"update_time"
)})
ECTag
find
(
String
urlMd5
);
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/service/ECResultService.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
service
;
import
com.mobvista.apptag.entity.ECTagResult
;
import
com.mobvista.apptag.entity.TagResult
;
import
com.mobvista.apptag.utils.Query
;
import
java.util.List
;
/**
* @author wangjf
*/
public
interface
ECResultService
{
boolean
save
(
String
urlMd5
,
String
userName
,
String
json
);
ECTagResult
find
(
String
urlMd5
,
String
userId
);
List
<
ECTagResult
>
list
(
String
userId
,
Query
query
);
int
count
(
String
userId
,
String
search
);
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/service/ECStorageService.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
service
;
import
com.mobvista.apptag.entity.ECStorage
;
import
com.mobvista.apptag.utils.Query
;
import
java.util.List
;
/**
* @author wangjf
*/
public
interface
ECStorageService
{
boolean
update
(
String
urlMd5
,
String
userName
,
String
json
);
ECStorage
find
(
String
urlMd5
);
List
<
ECStorage
>
list
(
Query
query
);
int
count
(
String
search
);
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/service/ECTagService.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
service
;
import
com.mobvista.apptag.entity.ECTag
;
import
com.mobvista.apptag.entity.Tag
;
import
com.mobvista.apptag.utils.Query
;
import
java.util.List
;
/**
* @author wangjf
*/
public
interface
ECTagService
{
boolean
update
(
String
urlMd5
,
String
userName
);
ECTag
find
(
String
urlMd5
);
List
<
ECTag
>
list
(
String
userId
,
Query
query
);
int
count
(
String
userId
,
Query
query
);
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/service/impl/ECResultServiceImpl.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.pagehelper.PageHelper
;
import
com.mobvista.apptag.entity.ECTag
;
import
com.mobvista.apptag.entity.ECTagResult
;
import
com.mobvista.apptag.entity.User
;
import
com.mobvista.apptag.mapper.ECResultDao
;
import
com.mobvista.apptag.mapper.ECTagDao
;
import
com.mobvista.apptag.mapper.UserDao
;
import
com.mobvista.apptag.service.ECResultService
;
import
com.mobvista.apptag.utils.Query
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/**
* @author wangjf
*/
@Service
(
"ecResultService"
)
public
class
ECResultServiceImpl
implements
ECResultService
{
@Autowired
private
UserDao
userDao
;
@Autowired
private
ECTagDao
ecTagDao
;
@Autowired
private
ECResultDao
ecResultDao
;
@Override
public
boolean
save
(
String
urlMd5
,
String
userName
,
String
json
)
{
ECTag
tag
=
ecTagDao
.
find
(
urlMd5
);
User
user
=
userDao
.
find
(
userName
);
ECTagResult
tagResult
=
new
ECTagResult
();
tagResult
.
setPreviewUrl
(
tag
.
getPreviewUrl
());
tagResult
.
setUrlMd5
(
urlMd5
);
tagResult
.
setFeatId
(
json
);
tagResult
.
setComment
(
"comment"
);
tagResult
.
setUserId
(
user
.
getUserId
());
tagResult
.
setUpdateTime
(
new
Date
());
if
(
user
.
getRole
()
==
1
)
{
ecResultDao
.
delete
(
urlMd5
);
}
return
this
.
ecResultDao
.
save
(
tagResult
);
}
@Override
public
ECTagResult
find
(
String
urlMd5
,
String
userId
)
{
return
ecResultDao
.
find
(
urlMd5
,
userId
);
}
@Override
public
List
<
ECTagResult
>
list
(
String
userId
,
Query
query
)
{
User
user
=
userDao
.
find
(
userId
);
List
<
ECTagResult
>
results
;
PageHelper
.
startPage
(
query
.
getOffset
()
/
query
.
getLimit
()
+
1
,
query
.
getLimit
());
if
(
user
.
getRole
()
==
0
)
{
results
=
ecResultDao
.
list
(
userId
,
query
.
getSearch
().
toLowerCase
());
}
else
{
results
=
ecResultDao
.
listAll
(
query
.
getSearch
().
toLowerCase
());
}
List
<
ECTagResult
>
results2
=
new
ArrayList
<>();
for
(
ECTagResult
result
:
results
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
.
getFeatId
());
result
.
setFeatId
(
jsonObject
.
values
().
toString
());
results2
.
add
(
result
);
}
return
results2
;
}
@Override
public
int
count
(
String
userId
,
String
search
)
{
User
user
=
userDao
.
find
(
userId
);
if
(
user
.
getRole
()
==
0
)
{
return
ecResultDao
.
count
(
userId
,
search
);
}
else
{
return
ecResultDao
.
countAll
(
search
);
}
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/service/impl/ECStorageServiceImpl.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
service
.
impl
;
import
com.alibaba.fastjson.JSONObject
;
import
com.github.pagehelper.PageHelper
;
import
com.mobvista.apptag.entity.ECStorage
;
import
com.mobvista.apptag.entity.ECTag
;
import
com.mobvista.apptag.entity.User
;
import
com.mobvista.apptag.mapper.ECStorageDao
;
import
com.mobvista.apptag.mapper.ECTagDao
;
import
com.mobvista.apptag.mapper.UserDao
;
import
com.mobvista.apptag.service.ECStorageService
;
import
com.mobvista.apptag.utils.Query
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
/**
* @package: com.mobvista.apptag.service.impl
* @author: wangjf
* @date: 2019-08-13
* @time: 11:05
* @email: jinfeng.wang@mobvista.com
* @phone: 152-1062-7698
*/
@Service
(
"ecStorageService"
)
public
class
ECStorageServiceImpl
implements
ECStorageService
{
@Autowired
private
UserDao
userDao
;
@Autowired
private
ECTagDao
ecTagDao
;
@Autowired
private
ECStorageDao
ecStorageDao
;
@Override
public
boolean
update
(
String
urlMd5
,
String
userName
,
String
json
)
{
ECTag
tag
=
ecTagDao
.
find
(
urlMd5
);
User
user
=
userDao
.
find
(
userName
);
ECStorage
storage
=
new
ECStorage
();
storage
.
setUrlMd5
(
urlMd5
);
storage
.
setPreviewUrl
(
tag
.
getPreviewUrl
());
storage
.
setTag
(
json
);
storage
.
setUpdateTime
(
new
Date
());
storage
.
setUserId
(
user
.
getUserId
());
return
this
.
ecStorageDao
.
save
(
storage
);
}
@Override
public
ECStorage
find
(
String
urlMd5
)
{
return
ecStorageDao
.
find
(
urlMd5
);
}
@Override
public
List
<
ECStorage
>
list
(
Query
query
)
{
List
<
ECStorage
>
results
;
PageHelper
.
startPage
(
query
.
getOffset
()
/
query
.
getLimit
()
+
1
,
query
.
getLimit
());
results
=
ecStorageDao
.
list
(
query
.
getSearch
().
toLowerCase
());
List
<
ECStorage
>
results2
=
new
ArrayList
<>();
for
(
ECStorage
result
:
results
)
{
JSONObject
jsonObject
=
JSONObject
.
parseObject
(
result
.
getTag
());
result
.
setTag
(
jsonObject
.
values
().
toString
());
results2
.
add
(
result
);
}
return
results2
;
}
@Override
public
int
count
(
String
search
)
{
return
ecStorageDao
.
count
(
search
);
}
}
src/main/java/com/mobvista/apptag/service/impl/ECTagServiceImpl.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
service
.
impl
;
import
com.github.pagehelper.PageHelper
;
import
com.mobvista.apptag.entity.ECTag
;
import
com.mobvista.apptag.entity.User
;
import
com.mobvista.apptag.mapper.ECTagDao
;
import
com.mobvista.apptag.mapper.UserDao
;
import
com.mobvista.apptag.service.ECTagService
;
import
com.mobvista.apptag.utils.Query
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
@Service
(
"ecTagService"
)
public
class
ECTagServiceImpl
implements
ECTagService
{
@Autowired
private
ECTagDao
ecTagDao
;
@Autowired
private
UserDao
userDao
;
@Override
public
boolean
update
(
String
urlMd5
,
String
userName
)
{
ECTag
tag
=
ecTagDao
.
find
(
urlMd5
);
tag
.
setUpdateTime
(
new
Date
());
User
user
=
userDao
.
find
(
userName
);
if
(
StringUtils
.
isNotBlank
(
tag
.
getUserId
()))
{
String
[]
userIds
=
tag
.
getUserId
().
split
(
","
);
Set
set
=
new
HashSet
<>(
Arrays
.
asList
(
userIds
));
if
(!
set
.
contains
(
user
.
getUserId
()))
{
tag
.
setTag
(
tag
.
getTag
()
+
1
);
tag
.
setUserId
(
tag
.
getUserId
()
+
","
+
user
.
getUserId
());
user
.
setCount
(
user
.
getCount
()
+
1
);
}
}
else
{
tag
.
setTag
(
1
);
tag
.
setUserId
(
user
.
getUserId
());
user
.
setCount
(
user
.
getCount
()
+
1
);
}
this
.
userDao
.
update
(
user
);
return
this
.
ecTagDao
.
update
(
tag
);
}
@Override
public
ECTag
find
(
String
urlMd5
)
{
return
ecTagDao
.
find
(
urlMd5
);
}
@Override
public
List
<
ECTag
>
list
(
String
userId
,
Query
query
)
{
User
user
=
userDao
.
find
(
userId
);
List
<
ECTag
>
results
;
PageHelper
.
startPage
(
query
.
getOffset
()
/
query
.
getLimit
()
+
1
,
query
.
getLimit
());
results
=
ecTagDao
.
list
(
query
.
getSearch
().
toLowerCase
(),
3
,
user
.
getUserId
());
return
results
;
}
@Override
public
int
count
(
String
userId
,
Query
query
)
{
User
user
=
userDao
.
find
(
userId
);
return
ecTagDao
.
count
(
query
.
getSearch
().
toLowerCase
(),
3
,
user
.
getUserId
());
}
}
\ No newline at end of file
src/main/java/com/mobvista/apptag/utils/ECStorageTag.java
0 → 100644
View file @
aa2c5c6c
This diff is collapsed.
Click to expand it.
src/main/java/com/mobvista/apptag/utils/GetPreviewUrl.java
0 → 100644
View file @
aa2c5c6c
package
com
.
mobvista
.
apptag
.
utils
;
import
java.sql.*
;
/**
* @package: com.mobvista.apptag.utils
* @author: wangjf
* @date: 2019-09-04
* @time: 16:19
* @email: jinfeng.wang@mobvista.com
* @phone: 152-1062-7698
*/
public
class
GetPreviewUrl
{
void
get
()
throws
SQLException
{
Connection
connection
=
DriverManager
.
getConnection
(
"jdbc:mysql://adn-data-foronlinetest.c5yzcdreb1xr.us-east-1.rds.amazonaws.com:3306/mob_adn?useUnicode=true&characterEncoding=utf8&useSSL=false"
,
"adnro"
,
"YcM123glh"
);
String
querySql
=
"select md5(preview_url) url_md5,b.preview_url preview_url from campaign_list_cpi a join campaign_list b on a.campaign_id = b.id where is_ec_adv = 1 group by b.preview_url"
;
PreparedStatement
preparedStatement
=
null
;
try
{
preparedStatement
=
connection
.
prepareStatement
(
querySql
);
ResultSet
resultSet
=
preparedStatement
.
executeQuery
();
insert
(
resultSet
);
}
catch
(
SQLException
e
)
{
e
.
printStackTrace
();
}
finally
{
if
(
connection
!=
null
)
{
connection
.
close
();
}
if
(
preparedStatement
!=
null
)
{
preparedStatement
.
close
();
}
}
}
void
insert
(
ResultSet
resultSet
)
throws
SQLException
{
Connection
con
=
DriverManager
.
getConnection
(
"jdbc:mysql://dataplatform-app-tag.c5yzcdreb1xr.us-east-1.rds.amazonaws.com:3306/app_tag?useUnicode=true&characterEncoding=utf8&useSSL=false"
,
"apptag_rw"
,
"7gyLEVtkER3u8c9"
);
String
insertSql
=
"INSERT INTO ec_tag_list(url_md5, preview_url) VALUES @VALUES ON DUPLICATE KEY UPDATE tag = tag"
;
StringBuilder
stringBuilder
=
new
StringBuilder
();
while
(
resultSet
.
next
())
{
String
urlMd5
=
resultSet
.
getString
(
"url_md5"
);
String
previewUrl
=
resultSet
.
getString
(
"preview_url"
);
stringBuilder
.
append
(
"('"
).
append
(
urlMd5
).
append
(
"','"
).
append
(
previewUrl
).
append
(
"'),"
);
}
PreparedStatement
stmt
=
con
.
prepareStatement
(
insertSql
.
replace
(
"@VALUES"
,
stringBuilder
.
substring
(
0
,
stringBuilder
.
length
()
-
1
)));
stmt
.
execute
();
con
.
close
();
}
public
static
void
main
(
String
[]
args
)
throws
ClassNotFoundException
,
SQLException
{
Class
.
forName
(
"com.mysql.jdbc.Driver"
);
GetPreviewUrl
getPreviewUrl
=
new
GetPreviewUrl
();
getPreviewUrl
.
get
();
}
}
src/main/resources/application.properties
View file @
aa2c5c6c
...
...
@@ -3,7 +3,7 @@ logging.level.root=INFO
logging.path
=
applog
mybatis.table.auto
=
non
e
mybatis.table.auto
=
updat
e
mybatis.model.pack
=
com.mobvista.apptag.entity
...
...
src/main/resources/static/js/appjs/ec_result/edit.js
0 → 100644
View file @
aa2c5c6c
// 以下为官方示例
// 以下为官方示例
$
().
ready
(
function
()
{
validateRule
();
var
data
=
document
.
getElementById
(
"firstECTag"
).
value
;
var
secondData
=
document
.
getElementById
(
"secondECTag"
).
value
;
var
resultData
=
document
.
getElementById
(
"resultECTag"
).
value
;
refreshMultiSelect
(
JSON
.
parse
(
data
),
JSON
.
parse
(
secondData
),
JSON
.
parse
(
resultData
));
});
$
.
validator
.
setDefaults
({
submitHandler
:
function
()
{
update
();
}
});
function
update
()
{
$
.
ajax
({
cache
:
true
,
type
:
"POST"
,
url
:
"/ec_result/save"
,
data
:
$
(
'#signupForm'
).
serialize
(),
// 你的formid
async
:
false
,
error
:
function
(
request
)
{
alert
(
"Connection error"
);
},
success
:
function
(
data
)
{
if
(
data
.
code
==
0
)
{
parent
.
layer
.
msg
(
data
.
msg
);
parent
.
reLoad
();
var
index
=
parent
.
layer
.
getFrameIndex
(
window
.
name
);
// 获取窗口索引
parent
.
layer
.
close
(
index
);
}
else
{
parent
.
layer
.
msg
(
data
.
msg
);
}
}
});
}
function
validateRule
()
{
var
icon
=
"<i class='fa fa-times-circle'></i> "
;
$
(
"#signupForm"
).
validate
({
rules
:
{
previewUrl
:
{
required
:
false
}
}
})
}
function
refreshMultiSelect
(
json
,
secondJson
,
resultData
)
{
// $('#categoryCode').html("");
var
data
=
""
for
(
var
i
=
0
;
i
<
json
.
length
;
i
++
)
{
data
+=
"<optgroup label='"
+
json
[
i
].
firstTag
+
"'>"
;
for
(
var
j
=
0
;
j
<
secondJson
.
length
;
j
++
)
{
if
(
json
[
i
].
firstId
==
secondJson
[
j
].
firstId
)
{
if
(
secondJson
[
j
].
secondId
in
resultData
)
{
data
+=
"<option value=
\"
"
+
secondJson
[
j
].
secondId
+
"
\"
selected=
\"
true
\"
>"
+
secondJson
[
j
].
secondTag
+
"</option>"
;
}
else
{
data
+=
"<option value=
\"
"
+
secondJson
[
j
].
secondId
+
"
\"
>"
+
secondJson
[
j
].
secondTag
+
"</option>"
;
}
}
}
data
+=
"</optgroup>"
;
}
console
.
log
(
data
);
$
(
'#ecCode'
).
append
(
data
);
$
(
'#ecCode'
).
multiselect
(
"destroy"
).
multiselect
({
nonSelectedText
:
'请选择标签!'
,
maxHeight
:
350
,
enableCollapsibleOptGroups
:
true
,
enableFiltering
:
true
,
numberDisplayed
:
3
});
}
function
refreshSelect
(
name
,
json
,
resultData
)
{
var
data
=
""
for
(
var
j
=
0
;
j
<
json
.
length
;
j
++
)
{
if
(
json
[
j
].
firstId
in
resultData
)
{
data
+=
"<option value=
\"
"
+
json
[
j
].
firstId
+
"
\"
selected=
\"
true
\"
>"
+
json
[
j
].
firstTag
+
"</option>"
;
}
else
{
data
+=
"<option value=
\"
"
+
json
[
j
].
firstId
+
"
\"
>"
+
json
[
j
].
firstTag
+
"</option>"
;
}
}
console
.
log
(
data
);
$
(
'#'
+
name
+
'Code'
).
append
(
data
);
$
(
'#'
+
name
+
'Code'
).
multiselect
(
"destroy"
).
multiselect
({
nonSelectedText
:
'请选择标签!'
,
maxHeight
:
350
,
enableCollapsibleOptGroups
:
true
,
enableFiltering
:
true
,
numberDisplayed
:
3
});
}
/*
var openDept = function () {
layer.open({
type: 2,
title: "选择部门",
area: ['300px', '450px'],
content: "/system/sysDept/treeView"
})
}
function loadDept(deptId, deptName) {
$("#deptId").val(deptId);
$("#deptName").val(deptName);
}
*/
\ No newline at end of file
src/main/resources/static/js/appjs/ec_result/list.js
0 → 100644
View file @
aa2c5c6c
var
prefix
=
"ec_result"
;
$
(
function
()
{
load
();
});
function
load
()
{
$
(
"#exampleTable"
).
bootstrapTable
({
method
:
"post"
,
// 服务器数据的请求方式 get or post
url
:
prefix
+
"/list"
,
// 服务器数据的加载地址
striped
:
true
,
// 设置为true会有隔行变色效果
dataType
:
"json"
,
// 服务器返回的数据类型
pagination
:
true
,
// 设置为true会在底部显示分页条
// queryParamsType : "limit",
// //设置为limit则会发送符合RESTFull格式的参数
singleSelect
:
false
,
// 设置为true将禁止多选
iconSize
:
"outline"
,
toolbar
:
"#exampleToolbar"
,
// contentType : "application/x-www-form-urlencoded",
// //发送到服务器的数据编码类型
pageSize
:
10
,
// 如果设置了分页,每页数据条数
pageNumber
:
1
,
// 如果设置了分布,首页页码
// search: true, // 是否显示搜索框
showColumns
:
true
,
// 是否显示内容下拉框(选择显示的列)
sidePagination
:
"server"
,
// 设置在哪里进行分页,可选值为"client" 或者 "server"
// queryParams : queryParams,
queryParams
:
function
(
params
)
{
return
{
// 说明:传入后台的参数包括offset开始索引,limit步长,sort排序列,order:desc或者,以及所有列的键值对
limit
:
params
.
limit
,
offset
:
params
.
offset
,
search
:
$
(
'#searchName'
).
val
()
};
},
// //请求服务器数据时,你可以通过重写参数的方式添加一些额外的参数,例如 toolbar 中的参数 如果
// queryParamsType = 'limit' ,返回参数必须包含
// limit, offset, search, sort, order 否则, 需要包含:
// pageSize, pageNumber, searchText, sortName,
// sortOrder.
// 返回false将会终止请求
columns
:
[{
// 列配置项
// 数据类型,详细参数配置参见文档http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/
checkbox
:
true
// 列表中显示复选框
},
{
field
:
"previewUrl"
,
// 列字段名
title
:
"URL"
,
// 列标题
align
:
"center"
},
{
field
:
"featId"
,
title
:
"已标标签"
,
align
:
"center"
},
{
title
:
"操作"
,
field
:
"previewUrl"
,
align
:
"center"
,
formatter
:
function
(
value
,
row
,
index
)
{
var
e
=
'<a class="btn btn-primary btn-sm '
+
s_edit_h
+
'" href="#" mce_href="#" title="编辑" onclick="edit(
\'
'
+
row
.
urlMd5
+
'
\'
)"><i class="fa fa-edit"></i></a> '
;
return
e
;
}
}
]
});
}
function
reLoad
(
type
)
{
if
(
type
==
1
)
{
var
opt
=
{
query
:
{
offset
:
0
}
};
$
(
"#exampleTable"
).
bootstrapTable
(
"refresh"
,
opt
);
}
else
{
$
(
"#exampleTable"
).
bootstrapTable
(
"refresh"
);
}
}
function
edit
(
urlMd5
,
user_id
)
{
layer
.
open
({
type
:
2
,
title
:
"电商标签标注"
,
maxmin
:
true
,
shadeClose
:
true
,
// 点击遮罩关闭层
area
:
[
"800px"
,
"580px"
],
content
:
prefix
+
"/edit?urlMd5="
+
urlMd5
+
"&userId="
+
user_id
// iframe的url
});
}
\ No newline at end of file
src/main/resources/static/js/appjs/ec_storage/edit.js
0 → 100644
View file @
aa2c5c6c
// 以下为官方示例
// 以下为官方示例
$
().
ready
(
function
()
{
validateRule
();
var
data
=
document
.
getElementById
(
"firstECTag"
).
value
;
var
secondData
=
document
.
getElementById
(
"secondECTag"
).
value
;
var
resultData
=
document
.
getElementById
(
"resultECTag"
).
value
;
refreshMultiSelect
(
JSON
.
parse
(
data
),
JSON
.
parse
(
secondData
),
JSON
.
parse
(
resultData
));
});
$
.
validator
.
setDefaults
({
submitHandler
:
function
()
{
update
();
}
});
function
update
()
{
$
.
ajax
({
cache
:
true
,
type
:
"POST"
,
url
:
"/ec_storage/save"
,
data
:
$
(
'#signupForm'
).
serialize
(),
// 你的formid
async
:
false
,
error
:
function
(
request
)
{
alert
(
"Connection error"
);
},
success
:
function
(
data
)
{
if
(
data
.
code
==
0
)
{
parent
.
layer
.
msg
(
data
.
msg
);
parent
.
reLoad
();
var
index
=
parent
.
layer
.
getFrameIndex
(
window
.
name
);
// 获取窗口索引
parent
.
layer
.
close
(
index
);
}
else
{
parent
.
layer
.
msg
(
data
.
msg
);
}
}
});
}
function
validateRule
()
{
var
icon
=
"<i class='fa fa-times-circle'></i> "
;
$
(
"#signupForm"
).
validate
({
rules
:
{
previewUrl
:
{
required
:
false
}
}
})
}
function
refreshMultiSelect
(
json
,
secondJson
,
resultData
)
{
// $('#categoryCode').html("");
var
data
=
""
for
(
var
i
=
0
;
i
<
json
.
length
;
i
++
)
{
data
+=
"<optgroup label='"
+
json
[
i
].
firstTag
+
"'>"
;
for
(
var
j
=
0
;
j
<
secondJson
.
length
;
j
++
)
{
if
(
json
[
i
].
firstId
==
secondJson
[
j
].
firstId
)
{
if
(
secondJson
[
j
].
secondId
in
resultData
)
{
data
+=
"<option value=
\"
"
+
secondJson
[
j
].
secondId
+
"
\"
selected=
\"
true
\"
>"
+
secondJson
[
j
].
secondTag
+
"</option>"
;
}
else
{
data
+=
"<option value=
\"
"
+
secondJson
[
j
].
secondId
+
"
\"
>"
+
secondJson
[
j
].
secondTag
+
"</option>"
;
}
}
}
data
+=
"</optgroup>"
;
}
console
.
log
(
data
);
$
(
'#ecCode'
).
append
(
data
);
$
(
'#ecCode'
).
multiselect
(
"destroy"
).
multiselect
({
nonSelectedText
:
'请选择标签!'
,
maxHeight
:
350
,
enableCollapsibleOptGroups
:
true
,
enableFiltering
:
true
,
numberDisplayed
:
3
});
}
function
refreshSelect
(
name
,
json
,
resultData
)
{
var
data
=
""
for
(
var
j
=
0
;
j
<
json
.
length
;
j
++
)
{
if
(
json
[
j
].
firstId
in
resultData
)
{
data
+=
"<option value=
\"
"
+
json
[
j
].
firstId
+
"
\"
selected=
\"
true
\"
>"
+
json
[
j
].
firstTag
+
"</option>"
;
}
else
{
data
+=
"<option value=
\"
"
+
json
[
j
].
firstId
+
"
\"
>"
+
json
[
j
].
firstTag
+
"</option>"
;
}
}
console
.
log
(
data
);
$
(
'#'
+
name
+
'Code'
).
append
(
data
);
$
(
'#'
+
name
+
'Code'
).
multiselect
(
"destroy"
).
multiselect
({
nonSelectedText
:
'请选择标签!'
,
maxHeight
:
350
,
enableCollapsibleOptGroups
:
true
,
enableFiltering
:
true
,
numberDisplayed
:
3
});
}
/*
var openDept = function () {
layer.open({
type: 2,
title: "选择部门",
area: ['300px', '450px'],
content: "/system/sysDept/treeView"
})
}
function loadDept(deptId, deptName) {
$("#deptId").val(deptId);
$("#deptName").val(deptName);
}
*/
\ No newline at end of file
src/main/resources/static/js/appjs/ec_storage/list.js
0 → 100644
View file @
aa2c5c6c
var
prefix
=
"ec_storage"
;
$
(
function
()
{
load
();
});
function
load
()
{
var
role
=
$
(
"input[id='role']"
).
attr
(
"value"
);
console
.
log
(
role
);
$
(
"#exampleTable"
).
bootstrapTable
({
method
:
"post"
,
// 服务器数据的请求方式 get or post
url
:
prefix
+
"/list"
,
// 服务器数据的加载地址
striped
:
true
,
// 设置为true会有隔行变色效果
dataType
:
"json"
,
// 服务器返回的数据类型
pagination
:
true
,
// 设置为true会在底部显示分页条
// queryParamsType : "limit",
// 设置为limit则会发送符合RESTFull格式的参数
singleSelect
:
false
,
// 设置为true将禁止多选
iconSize
:
"outline"
,
toolbar
:
"#exampleToolbar"
,
// contentType : "application/x-www-form-urlencoded",
// //发送到服务器的数据编码类型
pageSize
:
10
,
// 如果设置了分页,每页数据条数
pageNumber
:
1
,
// 如果设置了分布,首页页码
// search: true, // 是否显示搜索框
showColumns
:
true
,
// 是否显示内容下拉框(选择显示的列)
sidePagination
:
"server"
,
// 设置在哪里进行分页,可选值为"client" 或者 "server"
// queryParams : queryParams,
queryParams
:
function
(
params
)
{
return
{
// 说明:传入后台的参数包括offset开始索引,limit步长,sort排序列,order:desc或者,以及所有列的键值对
limit
:
params
.
limit
,
offset
:
params
.
offset
,
search
:
$
(
'#searchName'
).
val
()
};
},
// role: document.getElementById('role').valueOf(),
// //请求服务器数据时,你可以通过重写参数的方式添加一些额外的参数,例如 toolbar 中的参数 如果
// queryParamsType = 'limit' ,返回参数必须包含
// limit, offset, search, sort, order 否则, 需要包含:
// pageSize, pageNumber, searchText, sortName,
// sortOrder.
// 返回false将会终止请求
columns
:
[{
// 列配置项
// 数据类型,详细参数配置参见文档http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/
checkbox
:
true
// 列表中显示复选框
},
{
field
:
"previewUrl"
,
// 列字段名
title
:
"URL"
,
// 列标题
align
:
"center"
},
{
field
:
"tag"
,
title
:
"已标标签"
,
align
:
"center"
},
{
title
:
"操作"
,
field
:
"previewUrl"
,
align
:
"center"
,
formatter
:
function
(
value
,
row
,
index
)
{
var
e
=
'<a class="btn btn-primary btn-sm '
+
s_edit_h
+
'" href="#" mce_href="#" title="编辑" onclick="edit(
\'
'
+
row
.
urlMd5
+
'
\'
)"><i class="fa fa-edit"></i></a> '
;
return
e
;
}
}
]
});
}
function
reLoad
(
type
)
{
if
(
type
==
1
)
{
var
opt
=
{
query
:
{
offset
:
0
}
};
$
(
"#exampleTable"
).
bootstrapTable
(
"refresh"
,
opt
);
}
else
{
$
(
"#exampleTable"
).
bootstrapTable
(
"refresh"
);
}
}
function
edit
(
urlMd5
)
{
layer
.
open
({
type
:
2
,
title
:
"标签标注"
,
maxmin
:
true
,
shadeClose
:
true
,
// 点击遮罩关闭层
area
:
[
"800px"
,
"580px"
],
content
:
prefix
+
"/edit?urlMd5="
+
urlMd5
// iframe的url
});
}
\ No newline at end of file
src/main/resources/static/js/appjs/ec_tag/edit.js
0 → 100644
View file @
aa2c5c6c
// 以下为官方示例
// 以下为官方示例
$
().
ready
(
function
()
{
validateRule
();
var
data
=
document
.
getElementById
(
"firstECTag"
).
value
;
var
secondData
=
document
.
getElementById
(
"secondECTag"
).
value
;
// $("#signupForm").validate()
refreshMultiSelect
(
JSON
.
parse
(
data
),
JSON
.
parse
(
secondData
));
});
$
.
validator
.
setDefaults
({
submitHandler
:
function
()
{
update
();
}
});
function
update
()
{
$
.
ajax
({
cache
:
true
,
type
:
"POST"
,
url
:
"/ec_tag/save"
,
data
:
$
(
'#signupForm'
).
serialize
(),
// 你的formid
async
:
false
,
error
:
function
(
request
)
{
alert
(
"Connection error"
);
},
success
:
function
(
data
)
{
if
(
data
.
code
==
0
)
{
parent
.
layer
.
msg
(
data
.
msg
);
parent
.
reLoad
();
var
index
=
parent
.
layer
.
getFrameIndex
(
window
.
name
);
// 获取窗口索引
parent
.
layer
.
close
(
index
);
}
else
{
parent
.
layer
.
msg
(
data
.
msg
);
}
}
});
}
function
validateRule
()
{
var
icon
=
"<i class='fa fa-times-circle'></i> "
;
$
(
"#signupForm"
).
validate
({
rules
:
{
previewUrl
:
{
required
:
false
}
}
})
}
function
refreshMultiSelect
(
json
,
secondJson
)
{
var
data
=
""
for
(
var
i
=
0
;
i
<
json
.
length
;
i
++
)
{
data
+=
"<optgroup label='"
+
json
[
i
].
firstTag
+
"'>"
;
for
(
var
j
=
0
;
j
<
secondJson
.
length
;
j
++
)
{
if
(
json
[
i
].
firstId
==
secondJson
[
j
].
firstId
)
{
data
+=
"<option value=
\"
"
+
secondJson
[
j
].
secondId
+
"
\"
>"
+
secondJson
[
j
].
secondTag
+
"</option>"
;
}
}
data
+=
"</optgroup>"
;
}
console
.
log
(
data
);
$
(
'#ecCode'
).
append
(
data
);
$
(
'#ecCode'
).
multiselect
(
"destroy"
).
multiselect
({
nonSelectedText
:
'请选择标签!'
,
maxHeight
:
350
,
enableCollapsibleOptGroups
:
true
,
enableFiltering
:
true
,
numberDisplayed
:
3
});
}
/*
var openDept = function () {
layer.open({
type: 2,
title: "选择部门",
area: ['300px', '450px'],
content: "/system/sysDept/treeView"
})
}
function loadDept(deptId, deptName) {
$("#deptId").val(deptId);
$("#deptName").val(deptName);
}
*/
\ No newline at end of file
src/main/resources/static/js/appjs/ec_tag/list.js
0 → 100644
View file @
aa2c5c6c
var
prefix
=
"ec_tag"
;
$
(
function
()
{
load
();
});
function
load
()
{
$
(
"#exampleTable"
).
bootstrapTable
({
method
:
"post"
,
// 服务器数据的请求方式 get or post
url
:
prefix
+
"/list"
,
// 服务器数据的加载地址
striped
:
true
,
// 设置为true会有隔行变色效果
dataType
:
"json"
,
// 服务器返回的数据类型
pagination
:
true
,
// 设置为true会在底部显示分页条
// queryParamsType : "limit",
// //设置为limit则会发送符合RESTFull格式的参数
singleSelect
:
false
,
// 设置为true将禁止多选
iconSize
:
"outline"
,
toolbar
:
"#exampleToolbar"
,
// contentType : "application/x-www-form-urlencoded",
// //发送到服务器的数据编码类型
pageSize
:
10
,
// 如果设置了分页,每页数据条数
pageNumber
:
1
,
// 如果设置了分布,首页页码
// search: true, // 是否显示搜索框
showColumns
:
true
,
// 是否显示内容下拉框(选择显示的列)
sidePagination
:
"server"
,
// 设置在哪里进行分页,可选值为"client" 或者 "server"
// queryParams : queryParams,
queryParams
:
function
(
params
)
{
return
{
// 说明:传入后台的参数包括offset开始索引,limit步长,sort排序列,order:desc或者,以及所有列的键值对
limit
:
params
.
limit
,
offset
:
params
.
offset
,
search
:
$
(
'#searchName'
).
val
()
};
},
// //请求服务器数据时,你可以通过重写参数的方式添加一些额外的参数,例如 toolbar 中的参数 如果
// queryParamsType = 'limit' ,返回参数必须包含
// limit, offset, search, sort, order 否则, 需要包含:
// pageSize, pageNumber, searchText, sortName,
// sortOrder.
// 返回false将会终止请求
columns
:
[{
// 列配置项
// 数据类型,详细参数配置参见文档http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/
checkbox
:
true
// 列表中显示复选框
},
{
field
:
"previewUrl"
,
// 列字段名
title
:
"URL"
,
// 列标题
align
:
"center"
},
{
title
:
"操作"
,
field
:
"previewUrl"
,
align
:
"center"
,
formatter
:
function
(
value
,
row
,
index
)
{
var
e
=
'<a class="btn btn-primary btn-sm '
+
s_edit_h
+
'" href="#" mce_href="#" title="编辑" onclick="edit(
\'
'
+
row
.
urlMd5
+
'
\'
)"><i class="fa fa-edit"></i></a> '
;
return
e
;
}
}
]
});
}
function
reLoad
(
type
)
{
if
(
type
==
1
)
{
var
opt
=
{
query
:
{
offset
:
0
}
};
$
(
"#exampleTable"
).
bootstrapTable
(
"refresh"
,
opt
);
}
else
{
$
(
"#exampleTable"
).
bootstrapTable
(
"refresh"
);
}
}
function
edit
(
urlMd5
)
{
layer
.
open
({
type
:
2
,
title
:
"电商标签标注"
,
maxmin
:
true
,
shadeClose
:
false
,
// 点击遮罩关闭层
area
:
[
"800px"
,
"580px"
],
content
:
prefix
+
"/edit?urlMd5="
+
urlMd5
// iframe的url
});
}
\ No newline at end of file
src/main/resources/templates/ec_result/edit.html
0 → 100644
View file @
aa2c5c6c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.w3.org/1999/xhtml"
>
<meta
charset=
"utf-8"
>
<head
th:include=
"include :: header"
>
</head>
<body
class=
"gray-bg"
>
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<div
class=
"ibox-content"
>
<input
id=
"firstECTag"
name=
"firstECTag"
type=
"hidden"
th:value=
"${firstECTag}"
/>
<input
id=
"secondECTag"
name=
"secondECTag"
type=
"hidden"
th:value=
"${secondECTag}"
/>
<input
id=
"resultECTag"
name=
"resultECTag"
type=
"hidden"
th:value=
"${resultECTag}"
/>
<form
class=
"form-horizontal m-t"
id=
"signupForm"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
>
previewUrl:
</label>
<div
class=
"col-sm-8"
>
<a
id=
"previewUrl"
name=
"previewUrl"
th:href=
"${ecTag.previewUrl}"
target=
"_blank"
>
<span
th:text=
"${ecTag.previewUrl}"
></span>
</a>
<input
id=
"urlMd5"
name=
"urlMd5"
type=
"hidden"
th:value=
"${ecTag.urlMd5}"
/>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
>
电商标签:
</label>
<div
class=
"col-sm-8"
>
<select
id=
"ecCode"
name=
"ecCode"
multiple=
"multiple"
>
</select>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-8 col-sm-offset-3"
>
<button
type=
"submit"
class=
"btn btn-primary"
>
提交
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div
th:include=
"include::footer"
></div>
<script
type=
"text/javascript"
>
$
(
'#ecCode'
).
multiselect
({
nonSelectedText
:
'请选择标签!'
});
</script>
<script
type=
"text/javascript"
src=
"/js/appjs/ec_result/edit.js"
>
</script>
</body>
</html>
src/main/resources/templates/ec_result/list.html
0 → 100644
View file @
aa2c5c6c
<!DOCTYPE html>
<html
lang=
"zh_CN"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<meta
charset=
"utf-8"
>
<head
th:include=
"include :: header"
></head>
<body
class=
"gray-bg"
>
<div
class=
"wrapper wrapper-content "
>
<div
class=
"col-sm-12"
>
<div
class=
"ibox"
>
<div
class=
"ibox-body"
>
<div
class=
"fixed-table-toolbar"
>
<div
class=
"columns pull-right"
>
<button
class=
"btn btn-success"
onclick=
"reLoad(1)"
>
查询
</button>
</div>
<div
class=
"columns pull-right col-md-2 nopadding"
>
<input
id=
"searchName"
type=
"text"
class=
"form-control"
placeholder=
"preview_url"
>
</div>
</div>
<table
id=
"exampleTable"
data-mobile-responsive=
"true"
>
</table>
</div>
</div>
</div>
<div>
<script
type=
"text/javascript"
>
var
s_edit_h
=
'hidden'
;
</script>
</div>
<div
shiro:hasPermission=
"sys:user:edit"
>
<script
type=
"text/javascript"
>
s_edit_h
=
''
;
</script>
</div>
</div>
<div
th:include=
"include :: footer"
></div>
<script
type=
"text/javascript"
src=
"/js/appjs/ec_result/list.js"
></script>
</body>
</html>
\ No newline at end of file
src/main/resources/templates/ec_storage/edit.html
0 → 100644
View file @
aa2c5c6c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.w3.org/1999/xhtml"
>
<meta
charset=
"utf-8"
>
<head
th:include=
"include :: header"
>
</head>
<body
class=
"gray-bg"
>
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<div
class=
"ibox-content"
>
<input
id=
"firstECTag"
name=
"firstECTag"
type=
"hidden"
th:value=
"${firstECTag}"
/>
<input
id=
"secondECTag"
name=
"secondECTag"
type=
"hidden"
th:value=
"${secondECTag}"
/>
<input
id=
"resultECTag"
name=
"resultECTag"
type=
"hidden"
th:value=
"${resultECTag}"
/>
<form
class=
"form-horizontal m-t"
id=
"signupForm"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
>
previewUrl:
</label>
<div
class=
"col-sm-8"
>
<a
id=
"previewUrl"
name=
"previewUrl"
th:href=
"${ecTag.previewUrl}"
target=
"_blank"
>
<span
th:text=
"${ecTag.previewUrl}"
></span>
</a>
<input
id=
"urlMd5"
name=
"urlMd5"
type=
"hidden"
th:value=
"${ecTag.urlMd5}"
/>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
>
电商标签:
</label>
<div
class=
"col-sm-8"
>
<select
id=
"ecCode"
name=
"ecCode"
multiple=
"multiple"
>
</select>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-8 col-sm-offset-3"
>
<button
type=
"submit"
class=
"btn btn-primary"
>
提交
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div
th:include=
"include::footer"
></div>
<script
type=
"text/javascript"
>
$
(
'#ecCode'
).
multiselect
({
nonSelectedText
:
'请选择标签!'
});
</script>
<script
type=
"text/javascript"
src=
"/js/appjs/ec_storage/edit.js"
>
</script>
</body>
</html>
src/main/resources/templates/ec_storage/list.html
0 → 100644
View file @
aa2c5c6c
<!DOCTYPE html>
<html
lang=
"zh_CN"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<meta
charset=
"utf-8"
>
<head
th:include=
"include :: header"
></head>
<body
class=
"gray-bg"
>
<div
class=
"wrapper wrapper-content "
>
<!--/*@thymesVar id="userRole" type="userRole"*/-->
<input
id=
"role"
name=
"role"
type=
"hidden"
th:value=
"${userRole}"
/>
<div
class=
"col-sm-12"
>
<div
class=
"ibox"
>
<div
class=
"ibox-body"
>
<div
class=
"fixed-table-toolbar"
>
<div
class=
"columns pull-right"
>
<button
class=
"btn btn-success"
onclick=
"reLoad(1)"
>
查询
</button>
</div>
<div
class=
"columns pull-right col-md-2 nopadding"
>
<input
id=
"searchName"
type=
"text"
class=
"form-control"
placeholder=
"previewUrl"
>
</div>
</div>
<table
id=
"exampleTable"
data-mobile-responsive=
"true"
>
</table>
</div>
</div>
</div>
<div>
<script
type=
"text/javascript"
>
var
s_edit_h
=
'hidden'
;
</script>
</div>
<div
shiro:hasPermission=
"user:role"
>
<script
type=
"text/javascript"
>
s_edit_h
=
''
;
</script>
</div>
</div>
<div
th:include=
"include :: footer"
></div>
<script
type=
"text/javascript"
src=
"/js/appjs/ec_storage/list.js"
></script>
</body>
</html>
\ No newline at end of file
src/main/resources/templates/ec_tag/edit.html
0 → 100644
View file @
aa2c5c6c
<!DOCTYPE html>
<html
xmlns:th=
"http://www.w3.org/1999/xhtml"
>
<meta
charset=
"utf-8"
>
<head
th:include=
"include :: header"
>
</head>
<body
class=
"gray-bg"
>
<div
class=
"wrapper wrapper-content animated fadeInRight"
>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<div
class=
"ibox-content"
>
<input
id=
"firstECTag"
name=
"firstECTag"
type=
"hidden"
th:value=
"${firstECTag}"
/>
<input
id=
"secondECTag"
name=
"secondECTag"
type=
"hidden"
th:value=
"${secondECTag}"
/>
<form
class=
"form-horizontal m-t"
id=
"signupForm"
>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
>
previewUrl:
</label>
<div
class=
"col-sm-8"
>
<a
id=
"previewUrl"
name=
"previewUrl"
th:href=
"${ecTag.previewUrl}"
target=
"_blank"
>
<span
th:text=
"${ecTag.previewUrl}"
></span>
</a>
<input
id=
"urlMd5"
name=
"urlMd5"
type=
"hidden"
th:value=
"${ecTag.urlMd5}"
/>
</div>
</div>
<div
class=
"form-group"
>
<label
class=
"col-sm-3 control-label"
>
电商标签:
</label>
<div
class=
"col-sm-8"
>
<select
id=
"ecCode"
name=
"ecCode"
multiple=
"multiple"
>
</select>
</div>
</div>
<div
class=
"form-group"
>
<div
class=
"col-sm-8 col-sm-offset-3"
>
<button
type=
"submit"
class=
"btn btn-primary"
>
提交
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<div
th:include=
"include::footer"
></div>
<script
type=
"text/javascript"
>
$
(
'#ecCode'
).
multiselect
({
nonSelectedText
:
'请选择标签!'
});
</script>
<script
type=
"text/javascript"
src=
"/js/appjs/ec_tag/edit.js"
>
</script>
</body>
</html>
src/main/resources/templates/ec_tag/list.html
0 → 100644
View file @
aa2c5c6c
<!DOCTYPE html>
<html
lang=
"zh_CN"
xmlns:th=
"http://www.thymeleaf.org"
xmlns:shiro=
"http://www.pollix.at/thymeleaf/shiro"
>
<meta
charset=
"utf-8"
>
<head
th:include=
"include :: header"
></head>
<body
class=
"gray-bg"
>
<div
class=
"wrapper wrapper-content "
>
<div
class=
"col-sm-12"
>
<div
class=
"ibox"
>
<div
class=
"ibox-body"
>
<div
class=
"fixed-table-toolbar"
>
<div
class=
"columns pull-right"
>
<button
class=
"btn btn-success"
onclick=
"reLoad(1)"
>
查询
</button>
</div>
<div
class=
"columns pull-right col-md-2 nopadding"
>
<input
id=
"searchName"
type=
"text"
class=
"form-control"
placeholder=
"preview_url"
>
</div>
</div>
<table
id=
"exampleTable"
data-mobile-responsive=
"true"
>
</table>
</div>
</div>
</div>
<div>
<script
type=
"text/javascript"
>
var
s_edit_h
=
'hidden'
;
</script>
</div>
<div
shiro:hasPermission=
"sys:user:edit"
>
<script
type=
"text/javascript"
>
s_edit_h
=
''
;
</script>
</div>
</div>
<div
th:include=
"include :: footer"
></div>
<script
type=
"text/javascript"
src=
"/js/appjs/ec_tag/list.js"
></script>
</body>
</html>
\ No newline at end of file
src/main/resources/templates/index.html
View file @
aa2c5c6c
...
...
@@ -72,12 +72,28 @@
data-index=
"3"
th:href=
"@{/tag}"
>
未标注 App 列表
</a></li>
</ul>
</li>
<li><a
href=
"#"
>
<i
class=
"fa fa-home"
></i>
<span
class=
"nav-label"
>
电商标签管理
</span>
<span
class=
"fa arrow"
></span>
</a>
<ul
class=
"nav nav-second-level"
>
<li><a
class=
"J_menuItem"
href=
"index.html"
data-index=
"4"
th:href=
"@{/ec_storage}"
>
已入库 URL 列表
</a></li>
</ul>
<ul
class=
"nav nav-second-level"
>
<li><a
class=
"J_menuItem"
href=
"index.html"
data-index=
"5"
th:href=
"@{/ec_result}"
>
未入库 URL 列表
</a></li>
</ul>
<ul
class=
"nav nav-second-level"
>
<li><a
class=
"J_menuItem"
href=
"index.html"
data-index=
"6"
th:href=
"@{/ec_tag}"
>
未标注 URL 列表
</a></li>
</ul>
</li>
<li
id=
"admin"
><a
href=
"#"
>
<i
class=
"fa fa-home"
></i>
<span
class=
"nav-label"
>
用户管理
</span>
<span
class=
"fa arrow"
></span>
</a>
<ul
class=
"nav nav-second-level"
>
<li><a
class=
"J_menuItem"
href=
"index.html"
data-index=
"
4
"
th:href=
"@{/user}"
>
用户列表
</a></li>
data-index=
"
7
"
th:href=
"@{/user}"
>
用户列表
</a></li>
</ul>
</li>
<!--
...
...
src/test/java/com/mobvista/MD5Test.java
View file @
aa2c5c6c
...
...
@@ -6,8 +6,12 @@ public class MD5Test {
public
static
void
main
(
String
[]
args
)
throws
Exception
{
String
password
=
"123456"
;
String
str
=
"PIXEL'S UNKNOWN BATTLE GROUND,언노운 픽셀 배틀건즈,未知的像素槍戰,未知的像素枪战"
;
System
.
out
.
println
(
MD5Util
.
getMD5Str
(
password
));
String
device
=
"'91c70541-1d09-4ee9-8b4d-59e24d626c33','e1ef6f8a-7ea6-4d64-9e55-1cb4ef3eed2b','8e21395e-600a-4e49-9211-b96a78c8f3bc'"
;
// System.out.println(str.replaceAll("\'","\\'"));
System
.
out
.
println
(
device
.
toUpperCase
());
// System.out.println(MD5Util.getMD5Str(password));
/*
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
...
...
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