Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
C
chnmuseum-party
Project
Project
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
liqin
chnmuseum-party
Commits
ec5ec0ba
Commit
ec5ec0ba
authored
Mar 28, 2021
by
liqin
💬
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
http://111.203.232.171:8888/lee/chnmuseum-party
into master
parents
c88a2b62
b8810ebd
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
2584 additions
and
0 deletions
+2584
-0
CurrencyMathUtil.java
...senergy/chnmuseum/party/common/util/CurrencyMathUtil.java
+138
-0
RedisUtil.java
...a/cn/wisenergy/chnmuseum/party/common/util/RedisUtil.java
+664
-0
RedisLock.java
...wisenergy/chnmuseum/party/core/annotations/RedisLock.java
+45
-0
RedisLockInterceptor.java
...energy/chnmuseum/party/core/aop/RedisLockInterceptor.java
+84
-0
TBoardPlayRankMapper.java
...isenergy/chnmuseum/party/mapper/TBoardPlayRankMapper.java
+16
-0
TBoardPlayTrendMapper.java
...senergy/chnmuseum/party/mapper/TBoardPlayTrendMapper.java
+16
-0
TBoardStatisticMapper.java
...senergy/chnmuseum/party/mapper/TBoardStatisticMapper.java
+34
-0
TDistrictBoardStatisticMapper.java
...chnmuseum/party/mapper/TDistrictBoardStatisticMapper.java
+16
-0
TBoardPlayRank.java
...va/cn/wisenergy/chnmuseum/party/model/TBoardPlayRank.java
+73
-0
TBoardPlayTrend.java
...a/cn/wisenergy/chnmuseum/party/model/TBoardPlayTrend.java
+61
-0
TBoardStatistic.java
...a/cn/wisenergy/chnmuseum/party/model/TBoardStatistic.java
+78
-0
TDistrictBoardStatistic.java
...energy/chnmuseum/party/model/TDistrictBoardStatistic.java
+59
-0
TBoardPlayRankService.java
...energy/chnmuseum/party/service/TBoardPlayRankService.java
+16
-0
TBoardPlayTrendService.java
...nergy/chnmuseum/party/service/TBoardPlayTrendService.java
+16
-0
TBoardStatisticService.java
...nergy/chnmuseum/party/service/TBoardStatisticService.java
+54
-0
TDistrictBoardStatisticService.java
...nmuseum/party/service/TDistrictBoardStatisticService.java
+16
-0
TBoardPlayRankServiceImpl.java
...nmuseum/party/service/impl/TBoardPlayRankServiceImpl.java
+28
-0
TBoardPlayTrendServiceImpl.java
...museum/party/service/impl/TBoardPlayTrendServiceImpl.java
+28
-0
TBoardStatisticServiceImpl.java
...museum/party/service/impl/TBoardStatisticServiceImpl.java
+153
-0
TDistrictBoardStatisticServiceImpl.java
...arty/service/impl/TDistrictBoardStatisticServiceImpl.java
+28
-0
ChinaMobileRestApiController.java
...um/party/web/controller/ChinaMobileRestApiController.java
+29
-0
TBoardPlayRankController.java
...museum/party/web/controller/TBoardPlayRankController.java
+181
-0
TBoardPlayTrendController.java
...useum/party/web/controller/TBoardPlayTrendController.java
+181
-0
TBoardStatisticController.java
...useum/party/web/controller/TBoardStatisticController.java
+244
-0
TDistrictBoardStatisticController.java
...rty/web/controller/TDistrictBoardStatisticController.java
+181
-0
TBoardPlayRankMapper.xml
src/main/resources/mapper/TBoardPlayRankMapper.xml
+22
-0
TBoardPlayTrendMapper.xml
src/main/resources/mapper/TBoardPlayTrendMapper.xml
+20
-0
TBoardStatisticMapper.xml
src/main/resources/mapper/TBoardStatisticMapper.xml
+82
-0
TDistrictBoardStatisticMapper.xml
src/main/resources/mapper/TDistrictBoardStatisticMapper.xml
+21
-0
No files found.
src/main/java/cn/wisenergy/chnmuseum/party/common/util/CurrencyMathUtil.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
common
.
util
;
import
java.math.BigDecimal
;
import
java.text.DecimalFormat
;
public
class
CurrencyMathUtil
{
private
static
int
SCALE
=
18
;
public
static
int
compare
(
String
str1
,
String
str2
)
{
BigDecimal
a
=
new
BigDecimal
(
str1
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
str2
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
a
.
compareTo
(
b
);
}
/**
* 乘法
* @param str1
* @param str2
* @return
*/
public
static
String
multiply
(
String
str1
,
String
str2
)
{
BigDecimal
a
=
new
BigDecimal
(
str1
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
str2
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
multiply
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
/**
* 除法
* @param str1
* @param str2
* @return
*/
public
static
String
divide
(
String
str1
,
String
str2
)
{
BigDecimal
a
=
new
BigDecimal
(
str1
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
str2
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
divide
(
b
,
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
/**
* 加法
* @param str1
* @param str2
* @return
*/
public
static
String
add
(
String
str1
,
String
str2
)
{
BigDecimal
a
=
new
BigDecimal
(
str1
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
str2
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
add
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
public
static
String
add
(
Integer
str1
,
Integer
str2
)
{
BigDecimal
a
=
new
BigDecimal
(
str1
.
toString
()).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
str2
.
toString
()).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
add
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
public
static
Double
add
(
Double
d1
,
Double
d2
)
{
BigDecimal
a
=
new
BigDecimal
(
d1
.
toString
()).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
d2
.
toString
()).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
add
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
doubleValue
();
}
/**
* 减法
* @param str1
* @param str2
* @return
*/
public
static
String
subtract
(
String
str1
,
String
str2
)
{
BigDecimal
a
=
new
BigDecimal
(
str1
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
str2
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
subtract
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
public
static
Double
subtract
(
Double
str1
,
Double
str2
)
{
BigDecimal
a
=
new
BigDecimal
(
str1
.
toString
()).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
str2
.
toString
()).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
subtract
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
doubleValue
();
}
public
static
String
gweiToWei
(
String
gwei
)
{
BigDecimal
a
=
new
BigDecimal
(
gwei
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
"1000000000"
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
multiply
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
public
static
String
ethToWei
(
String
eth
)
{
BigDecimal
a
=
new
BigDecimal
(
eth
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
"1000000000000000000"
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
multiply
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
public
static
String
ethToGwei
(
String
eth
)
{
BigDecimal
a
=
new
BigDecimal
(
eth
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
"1000000000"
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
multiply
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
public
static
String
gweiToEth
(
String
gwei
)
{
BigDecimal
a
=
new
BigDecimal
(
gwei
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
"1000000000"
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
divide
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
public
static
String
weiToEth
(
String
gwei
)
{
BigDecimal
a
=
new
BigDecimal
(
gwei
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
b
=
new
BigDecimal
(
"1000000000000000000"
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
BigDecimal
c
=
a
.
divide
(
b
).
setScale
(
SCALE
,
BigDecimal
.
ROUND_HALF_DOWN
);
return
c
.
stripTrailingZeros
().
toPlainString
();
}
public
static
String
roundByScale
(
double
v
,
int
scale
)
{
if
(
scale
<
0
)
{
throw
new
IllegalArgumentException
(
"The scale must be a positive integer or zero"
);
}
if
(
scale
==
0
)
{
return
new
DecimalFormat
(
"0"
).
format
(
v
);
}
String
formatStr
=
"0."
;
for
(
int
i
=
0
;
i
<
scale
;
i
++)
{
formatStr
=
formatStr
+
"0"
;
}
return
new
DecimalFormat
(
formatStr
).
format
(
v
);
}
}
src/main/java/cn/wisenergy/chnmuseum/party/common/util/RedisUtil.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
common
.
util
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.ss.formula.functions.T
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.ListOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.util.Collection
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.concurrent.TimeUnit
;
@Component
@Slf4j
public
class
RedisUtil
{
@Autowired
private
RedisTemplate
<
String
,
Object
>
redisTemplate
;
// =============================common============================
/**
* 指定缓存失效时间
*
* @param key 键
* @param time 时间(秒)
* @return
*/
public
boolean
expire
(
String
key
,
long
time
)
{
try
{
if
(
time
>
0
)
{
redisTemplate
.
expire
(
key
,
time
,
TimeUnit
.
SECONDS
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 根据key 获取过期时间
*
* @param key 键 不能为null
* @return 时间(秒) 返回0代表为永久有效
*/
public
long
getExpire
(
String
key
)
{
return
redisTemplate
.
getExpire
(
key
,
TimeUnit
.
SECONDS
);
}
/**
* 判断key是否存在
*
* @param key 键
* @return true 存在 false不存在
*/
public
boolean
hasKey
(
String
key
)
{
try
{
return
redisTemplate
.
hasKey
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 删除缓存
*
* @param key 可以传一个值 或多个
*/
@SuppressWarnings
(
"unchecked"
)
public
void
del
(
String
...
key
)
{
if
(
key
!=
null
&&
key
.
length
>
0
)
{
if
(
key
.
length
==
1
)
{
redisTemplate
.
delete
(
key
[
0
]);
}
else
{
redisTemplate
.
delete
((
Collection
<
String
>)
CollectionUtils
.
arrayToList
(
key
));
}
}
}
// ============================String=============================
/**
* 普通缓存获取
*
* @param key 键
* @return 值
*/
public
Object
get
(
String
key
)
{
return
key
==
null
?
null
:
redisTemplate
.
opsForValue
().
get
(
key
);
}
/**
* 普通缓存放入
*
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public
boolean
set
(
String
key
,
Object
value
)
{
try
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 普通缓存放入并设置时间
*
* @param key 键
* @param value 值
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期
* @return true成功 false 失败
*/
public
boolean
set
(
String
key
,
Object
value
,
long
time
)
{
try
{
if
(
time
>
0
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
,
time
,
TimeUnit
.
SECONDS
);
}
else
{
set
(
key
,
value
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 递增
*
* @param key 键
* @param delta 要增加几(大于0)
* @return
*/
public
long
incr
(
String
key
,
long
delta
)
{
if
(
delta
<
0
)
{
throw
new
RuntimeException
(
"递增因子必须大于0"
);
}
return
redisTemplate
.
opsForValue
().
increment
(
key
,
delta
);
}
/**
* 递减
*
* @param key 键
* @param delta 要减少几(小于0)
* @return
*/
public
long
decr
(
String
key
,
long
delta
)
{
if
(
delta
<
0
)
{
throw
new
RuntimeException
(
"递减因子必须大于0"
);
}
return
redisTemplate
.
opsForValue
().
increment
(
key
,
-
delta
);
}
// ================================Map=================================
/**
* HashGet
*
* @param key 键 不能为null
* @param item 项 不能为null
* @return 值
*/
public
Object
hget
(
String
key
,
String
item
)
{
return
redisTemplate
.
opsForHash
().
get
(
key
,
item
);
}
/**
* 获取hashKey对应的所有键值
*
* @param key 键
* @return 对应的多个键值
*/
public
Map
<
Object
,
Object
>
hmget
(
String
key
)
{
return
redisTemplate
.
opsForHash
().
entries
(
key
);
}
/**
* HashSet
*
* @param key 键
* @param map 对应多个键值
* @return true 成功 false 失败
*/
public
boolean
hmset
(
String
key
,
Map
<
String
,
Object
>
map
)
{
try
{
redisTemplate
.
opsForHash
().
putAll
(
key
,
map
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* HashSet 并设置时间
*
* @param key 键
* @param map 对应多个键值
* @param time 时间(秒)
* @return true成功 false失败
*/
public
boolean
hmset
(
String
key
,
Map
<
String
,
Object
>
map
,
long
time
)
{
try
{
redisTemplate
.
opsForHash
().
putAll
(
key
,
map
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
* @return true 成功 false失败
*/
public
boolean
hset
(
String
key
,
String
item
,
Object
value
)
{
try
{
redisTemplate
.
opsForHash
().
put
(
key
,
item
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key 键
* @param item 项
* @param value 值
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
* @return true 成功 false失败
*/
public
boolean
hset
(
String
key
,
String
item
,
Object
value
,
long
time
)
{
try
{
redisTemplate
.
opsForHash
().
put
(
key
,
item
,
value
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 删除hash表中的值
*
* @param key 键 不能为null
* @param item 项 可以使多个 不能为null
*/
public
void
hdel
(
String
key
,
Object
...
item
)
{
redisTemplate
.
opsForHash
().
delete
(
key
,
item
);
}
/**
* 判断hash表中是否有该项的值
*
* @param key 键 不能为null
* @param item 项 不能为null
* @return true 存在 false不存在
*/
public
boolean
hHasKey
(
String
key
,
String
item
)
{
return
redisTemplate
.
opsForHash
().
hasKey
(
key
,
item
);
}
/**
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
*
* @param key 键
* @param item 项
* @param by 要增加几(大于0)
* @return
*/
public
double
hincr
(
String
key
,
String
item
,
double
by
)
{
return
redisTemplate
.
opsForHash
().
increment
(
key
,
item
,
by
);
}
/**
* hash递减
*
* @param key 键
* @param item 项
* @param by 要减少记(小于0)
* @return
*/
public
double
hdecr
(
String
key
,
String
item
,
double
by
)
{
return
redisTemplate
.
opsForHash
().
increment
(
key
,
item
,
-
by
);
}
// ============================set=============================
/**
* 根据key获取Set中的所有值
*
* @param key 键
* @return
*/
public
Set
<
Object
>
sGet
(
String
key
)
{
try
{
return
redisTemplate
.
opsForSet
().
members
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 根据value从一个set中查询,是否存在
*
* @param key 键
* @param value 值
* @return true 存在 false不存在
*/
public
boolean
sHasKey
(
String
key
,
Object
value
)
{
try
{
return
redisTemplate
.
opsForSet
().
isMember
(
key
,
value
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将数据放入set缓存
*
* @param key 键
* @param values 值 可以是多个
* @return 成功个数
*/
public
long
sSet
(
String
key
,
Object
...
values
)
{
try
{
return
redisTemplate
.
opsForSet
().
add
(
key
,
values
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 将set数据放入缓存
*
* @param key 键
* @param time 时间(秒)
* @param values 值 可以是多个
* @return 成功个数
*/
public
long
sSetAndTime
(
String
key
,
long
time
,
Object
...
values
)
{
try
{
Long
count
=
redisTemplate
.
opsForSet
().
add
(
key
,
values
);
if
(
time
>
0
)
expire
(
key
,
time
);
return
count
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 获取set缓存的长度
*
* @param key 键
* @return
*/
public
long
sGetSetSize
(
String
key
)
{
try
{
return
redisTemplate
.
opsForSet
().
size
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 移除值为value的
*
* @param key 键
* @param values 值 可以是多个
* @return 移除的个数
*/
public
long
setRemove
(
String
key
,
Object
...
values
)
{
try
{
Long
count
=
redisTemplate
.
opsForSet
().
remove
(
key
,
values
);
return
count
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
// ===============================list=================================
/**
* 获取list缓存的内容
*
* @param key 键
* @param start 开始
* @param end 结束 0 到 -1代表所有值
* @return
*/
public
List
<
Object
>
lGet
(
String
key
,
long
start
,
long
end
)
{
try
{
return
redisTemplate
.
opsForList
().
range
(
key
,
start
,
end
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 获取list缓存的长度
*
* @param key 键
* @return
*/
public
long
lGetListSize
(
String
key
)
{
try
{
return
redisTemplate
.
opsForList
().
size
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 通过索引 获取list中的值
*
* @param key 键
* @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
* @return
*/
public
Object
lGetIndex
(
String
key
,
long
index
)
{
try
{
return
redisTemplate
.
opsForList
().
index
(
key
,
index
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @return
*/
public
boolean
lSet
(
String
key
,
Object
value
)
{
try
{
redisTemplate
.
opsForList
().
rightPush
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
Object
value
,
long
time
)
{
try
{
redisTemplate
.
opsForList
().
rightPush
(
key
,
value
);
if
(
time
>
0
)
expire
(
key
,
time
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @return
*/
public
boolean
lSet
(
String
key
,
List
<
Object
>
value
)
{
try
{
redisTemplate
.
opsForList
().
rightPushAll
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key 键
* @param value 值
* @param time 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
List
<
Object
>
value
,
long
time
)
{
try
{
redisTemplate
.
opsForList
().
rightPushAll
(
key
,
value
);
if
(
time
>
0
)
expire
(
key
,
time
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 根据索引修改list中的某条数据
*
* @param key 键
* @param index 索引
* @param value 值
* @return
*/
public
boolean
lUpdateIndex
(
String
key
,
long
index
,
Object
value
)
{
try
{
redisTemplate
.
opsForList
().
set
(
key
,
index
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 移除N个值为value
*
* @param key 键
* @param count 移除多少个
* @param value 值
* @return 移除的个数
*/
public
long
lRemove
(
String
key
,
long
count
,
Object
value
)
{
try
{
Long
remove
=
redisTemplate
.
opsForList
().
remove
(
key
,
count
,
value
);
return
remove
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
private
static
final
long
EXPIRE
=
60000L
;
private
static
final
long
TIMEOUT
=
60000L
;
public
boolean
lock
(
String
key
,
String
value
){
log
.
info
(
"获取锁 kye:{},value:{}"
,
key
,
value
);
//请求锁时间
long
requestTime
=
System
.
currentTimeMillis
();
while
(
true
){
//等待锁时间
long
watiTime
=
System
.
currentTimeMillis
()
-
requestTime
;
//如果等待锁时间超过10s,加锁失败
if
(
watiTime
>
TIMEOUT
){
log
.
info
(
"等待锁超时 kye:{},value:{}"
,
key
,
value
);
return
false
;
}
if
(
redisTemplate
.
opsForValue
().
setIfAbsent
(
key
,
String
.
valueOf
(
System
.
currentTimeMillis
()))){
//获取锁成功
log
.
info
(
"获取锁成功 kye:{},value:{}"
,
key
,
value
);
//设置超时时间,防止解锁失败,导致死锁
redisTemplate
.
expire
(
key
,
EXPIRE
,
TimeUnit
.
MILLISECONDS
);
return
true
;
}
String
valueTime
=
(
String
)
redisTemplate
.
opsForValue
().
get
(
key
);
if
(!
StringUtils
.
isEmpty
(
valueTime
)
&&
System
.
currentTimeMillis
()
-
Long
.
parseLong
(
valueTime
)
>
EXPIRE
){
//加锁时间超过过期时间,删除key,防止死锁
log
.
info
(
"锁超时, key:{}, value:{}"
,
key
,
value
);
try
{
redisTemplate
.
opsForValue
().
getOperations
().
delete
(
key
);
}
catch
(
Exception
e
){
log
.
info
(
"删除锁异常 key:{}, value:{}"
,
key
,
value
);
e
.
printStackTrace
();
}
return
false
;
}
//获取锁失败,等待20毫秒继续请求
try
{
log
.
info
(
"等待20 nanoSeconds key:{},value:{}"
,
key
,
value
);
TimeUnit
.
NANOSECONDS
.
sleep
(
TIMEOUT
);
}
catch
(
InterruptedException
e
)
{
log
.
info
(
"等待20 nanoSeconds 异常 key:{},value:{}"
,
key
,
value
);
e
.
printStackTrace
();
}
}
}
/**
* 分布式加锁
* @param key
* @param value
* @return
* */
public
boolean
secKilllock
(
String
key
,
String
value
){
/**
* setIfAbsent就是setnx
* 将key设置值为value,如果key不存在,这种情况下等同SET命令。
* 当key存在时,什么也不做。SETNX是”SET if Not eXists”的简写
* */
if
(
redisTemplate
.
opsForValue
().
setIfAbsent
(
key
,
value
)){
//加锁成功返回true
return
true
;
}
String
currentValue
=
(
String
)
redisTemplate
.
opsForValue
().
get
(
key
);
/**
* 下面这几行代码的作用:
* 1、防止死锁
* 2、防止多线程抢锁
* */
if
(!
StringUtils
.
isEmpty
(
currentValue
)
&&
Long
.
parseLong
(
currentValue
)
<
System
.
currentTimeMillis
()){
String
oldValue
=
(
String
)
redisTemplate
.
opsForValue
().
getAndSet
(
key
,
value
);
if
(!
StringUtils
.
isEmpty
(
oldValue
)
&&
oldValue
.
equals
(
currentValue
)){
return
true
;
}
}
return
false
;
}
/**
* 解锁
* @param key
* @param value
* */
public
void
unlock
(
String
key
,
String
value
){
try
{
redisTemplate
.
opsForValue
().
getOperations
().
delete
(
key
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
}
}
src/main/java/cn/wisenergy/chnmuseum/party/core/annotations/RedisLock.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
core
.
annotations
;
import
java.lang.annotation.ElementType
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
/**
* Created by xulinglin on 2019/1/24
*/
@Target
({
ElementType
.
METHOD
})
@Retention
(
RetentionPolicy
.
RUNTIME
)
public
@interface
RedisLock
{
/**
* 上锁key值
* @return
*/
String
value
()
default
""
;
/**
* 上锁超时时间
* @return
*/
long
timeOut
()
default
3000
;
/**
* 是否循环等待获取锁进行执行方法
* @return
*/
boolean
required
()
default
false
;
/**
* 循环等待多少时间 时间单位秒
* @return
*/
long
timeLock
()
default
0
;
/**
* 是否开启事务
* 默认开启
* @return
*/
boolean
transaction
()
default
true
;
}
src/main/java/cn/wisenergy/chnmuseum/party/core/aop/RedisLockInterceptor.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
core
.
aop
;
import
cn.wisenergy.chnmuseum.party.common.util.RedisUtil
;
import
cn.wisenergy.chnmuseum.party.core.annotations.RedisLock
;
import
lombok.extern.java.Log
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
import
java.util.UUID
;
import
java.util.concurrent.TimeUnit
;
/**
* Created by xulinglin on 2019/1/24
*/
@Aspect
@Order
(-
1
)
//保证该AOP在@Transactional之前执行
@Component
@Log
public
class
RedisLockInterceptor
{
@Resource
private
RedisTemplate
<
String
,
Object
>
redisTemplate
;
@Resource
private
RedisUtil
redisUtil
;
@Pointcut
(
"@annotation(redisLock)"
)
public
void
pointCut
(
RedisLock
redisLock
)
{}
/**
* 环绕通知
* @param proceedingJoinPoint
* @param redisLock
* @return
* @throws Throwable
*/
@Around
(
"pointCut(redisLock)"
)
public
Object
around
(
ProceedingJoinPoint
proceedingJoinPoint
,
RedisLock
redisLock
)
throws
Throwable
{
//方法执行前时间
long
currentTimeMillis
=
System
.
currentTimeMillis
();
//获取当前值
String
lockKey
=
redisLock
.
value
();
//获取上锁超时时间
long
time
=
redisLock
.
timeOut
();
//获取循环等待多少时间
long
timeLock
=
redisLock
.
timeLock
();
//控制当前循环
boolean
required
=
redisLock
.
required
();
required
=
timeLock
>
0
;
//获取事务是否开启
boolean
transaction
=
redisLock
.
transaction
();
//获取随机id
String
name
=
String
.
valueOf
(
UUID
.
randomUUID
());
boolean
flag
=
false
;
try
{
do
{
//set到redis
flag
=
redisUtil
.
lock
(
lockKey
,
currentTimeMillis
+
""
);
//执行添加了注解的方法并返回
if
(
flag
){
Object
result
=
proceedingJoinPoint
.
proceed
();
return
result
;
}
}
while
(
required
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
catch
(
Throwable
throwable
)
{
throwable
.
printStackTrace
();
}
finally
{
//最后在finally中删除
if
(
flag
){
redisUtil
.
del
(
lockKey
);
}
}
return
null
;
}
}
src/main/java/cn/wisenergy/chnmuseum/party/mapper/TBoardPlayRankMapper.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayRank
;
/**
* <pre>
* 展板播放排行 Mapper 接口
* </pre>
*
* @author Danny Lee
* @since 2021-03-26
*/
public
interface
TBoardPlayRankMapper
extends
BaseMapper
<
TBoardPlayRank
>
{
}
src/main/java/cn/wisenergy/chnmuseum/party/mapper/TBoardPlayTrendMapper.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend
;
/**
* <pre>
* 展板播放趋势 Mapper 接口
* </pre>
*
* @author Danny Lee
* @since 2021-03-26
*/
public
interface
TBoardPlayTrendMapper
extends
BaseMapper
<
TBoardPlayTrend
>
{
}
src/main/java/cn/wisenergy/chnmuseum/party/mapper/TBoardStatisticMapper.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
mapper
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayRank
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend
;
import
cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
cn.wisenergy.chnmuseum.party.model.TBoardStatistic
;
import
com.baomidou.mybatisplus.core.metadata.IPage
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
org.apache.ibatis.annotations.Param
;
import
org.mapstruct.Mapper
;
import
java.util.List
;
/**
* <pre>
* 展板统计信息表 Mapper 接口
* </pre>
*
* @author Danny Lee
* @since 2021-03-25
*/
@Mapper
public
interface
TBoardStatisticMapper
extends
BaseMapper
<
TBoardStatistic
>
{
public
List
<
TBoardPlayRank
>
getBoardRankPageList
(
Page
<
TBoardPlayRank
>
page
,
TBoardPlayRank
rank
);
public
List
<
TBoardPlayTrend
>
getBoardTrendPageList
(
Page
<
TBoardPlayTrend
>
page
,
TBoardPlayTrend
trend
);
public
List
<
TDistrictBoardStatistic
>
getBoardDistrictPageList
(
Page
<
TDistrictBoardStatistic
>
page
,
TDistrictBoardStatistic
trend
);
}
src/main/java/cn/wisenergy/chnmuseum/party/mapper/TDistrictBoardStatisticMapper.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
mapper
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic
;
/**
* <pre>
* 地区看板播放统计 Mapper 接口
* </pre>
*
* @author Danny Lee
* @since 2021-03-26
*/
public
interface
TDistrictBoardStatisticMapper
extends
BaseMapper
<
TDistrictBoardStatistic
>
{
}
src/main/java/cn/wisenergy/chnmuseum/party/model/TBoardPlayRank.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
model
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.Version
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
java.io.Serializable
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Add
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Update
;
/**
* <p>
* 展板播放排行
* </p>
*
* @author Danny Lee
* @since 2021-03-26
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"t_board_play_rank"
)
@ApiModel
(
value
=
"展板播放排行"
,
description
=
"展板播放排行"
)
public
class
TBoardPlayRank
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"ID"
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
ASSIGN_ID
)
@NotNull
(
message
=
"ID不能为空"
,
groups
=
{
Update
.
class
})
private
String
id
;
@ApiModelProperty
(
"看板ID"
)
@TableField
(
"board_id"
)
@NotBlank
(
message
=
"看板ID不能为空"
,
groups
=
{
Add
.
class
,
Update
.
class
})
private
String
boardId
;
@ApiModelProperty
(
"看板名称"
)
@TableField
(
"board_name"
)
@NotBlank
(
message
=
"看板名称不能为空"
,
groups
=
{
Add
.
class
,
Update
.
class
})
private
String
boardName
;
@ApiModelProperty
(
"播放次数"
)
@TableField
(
"play_number"
)
private
Integer
playNumber
;
@ApiModelProperty
(
"机构id"
)
@TableField
(
"organ_id"
)
private
String
organId
;
@ApiModelProperty
(
"播放时间"
)
@TableField
(
"play_date"
)
private
String
playDate
;
}
src/main/java/cn/wisenergy/chnmuseum/party/model/TBoardPlayTrend.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
model
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
java.time.LocalDate
;
import
com.baomidou.mybatisplus.annotation.Version
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
java.io.Serializable
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Add
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Update
;
import
com.baomidou.mybatisplus.annotation.TableField
;
/**
* <p>
* 展板播放趋势
* </p>
*
* @author Danny Lee
* @since 2021-03-26
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"t_board_play_trend"
)
@ApiModel
(
value
=
"展板播放趋势"
,
description
=
"展板播放趋势"
)
public
class
TBoardPlayTrend
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"播放次数"
)
@TableField
(
"play_number"
)
private
Integer
playNumber
;
@ApiModelProperty
(
"播放时间 yyyy 统计周期为年 yyyyMM 统计周期为月"
)
@TableField
(
exist
=
false
)
private
String
playDate
;
@ApiModelProperty
(
"机构id"
)
@TableField
(
"organ_id"
)
private
Integer
organId
;
}
src/main/java/cn/wisenergy/chnmuseum/party/model/TBoardStatistic.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
model
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.Version
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
java.io.Serializable
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Add
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Update
;
/**
* <p>
* 展板统计信息表
* </p>
*
* @author Danny Lee
* @since 2021-03-25
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"t_board_statistic"
)
@ApiModel
(
value
=
"展板统计信息表"
,
description
=
"展板统计信息表"
)
public
class
TBoardStatistic
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"主键id"
)
@TableId
(
value
=
"id"
,
type
=
IdType
.
ASSIGN_ID
)
@NotNull
(
message
=
"主键id不能为空"
,
groups
=
{
Update
.
class
})
private
String
id
;
@ApiModelProperty
(
"展板id"
)
@TableField
(
"board_id"
)
@NotBlank
(
message
=
"展板id不能为空"
,
groups
=
{
Add
.
class
,
Update
.
class
})
private
String
boardId
;
@ApiModelProperty
(
"展板名称"
)
@TableField
(
"board_name"
)
private
String
boardName
;
@ApiModelProperty
(
"播放机构id"
)
@TableField
(
"organ_id"
)
private
String
organId
;
@ApiModelProperty
(
"机构所在地区id"
)
@TableField
(
"area_id"
)
private
Integer
areaId
;
@ApiModelProperty
(
"播放次数"
)
@TableField
(
"play_number"
)
private
Integer
playNumber
;
@ApiModelProperty
(
"播放日期yyyy-MM-dd"
)
@TableField
(
"play_date"
)
private
String
playDate
;
@ApiModelProperty
(
"用户id"
)
@TableField
(
exist
=
false
)
private
String
userId
;
}
src/main/java/cn/wisenergy/chnmuseum/party/model/TDistrictBoardStatistic.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
model
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.annotation.Version
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
java.io.Serializable
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.AllArgsConstructor
;
import
lombok.EqualsAndHashCode
;
import
lombok.experimental.Accessors
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Add
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Update
;
import
com.baomidou.mybatisplus.annotation.TableField
;
/**
* <p>
* 地区看板播放统计
* </p>
*
* @author Danny Lee
* @since 2021-03-26
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Accessors
(
chain
=
true
)
@EqualsAndHashCode
(
callSuper
=
false
)
@TableName
(
"t_district_board_statistic"
)
@ApiModel
(
value
=
"地区看板播放统计"
,
description
=
"地区看板播放统计"
)
public
class
TDistrictBoardStatistic
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
@ApiModelProperty
(
"播放次数"
)
@TableField
(
"play_number"
)
private
Integer
playNumber
;
@ApiModelProperty
(
"地区名称"
)
@TableField
(
exist
=
false
)
private
String
areaName
;
@ApiModelProperty
(
"看板数量"
)
@TableField
(
exist
=
false
)
private
Integer
boardCnt
;
}
src/main/java/cn/wisenergy/chnmuseum/party/service/TBoardPlayRankService.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
service
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayRank
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* <p>
* 展板播放排行 服务接口
* </p>
*
* @author Danny Lee
* @since 2021-03-26
*/
public
interface
TBoardPlayRankService
extends
IService
<
TBoardPlayRank
>
{
}
src/main/java/cn/wisenergy/chnmuseum/party/service/TBoardPlayTrendService.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
service
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* <p>
* 展板播放趋势 服务接口
* </p>
*
* @author Danny Lee
* @since 2021-03-26
*/
public
interface
TBoardPlayTrendService
extends
IService
<
TBoardPlayTrend
>
{
}
src/main/java/cn/wisenergy/chnmuseum/party/service/TBoardStatisticService.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
service
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayRank
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend
;
import
cn.wisenergy.chnmuseum.party.model.TBoardStatistic
;
import
cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
java.util.List
;
/**
* <p>
* 展板统计信息表 服务接口
* </p>
*
* @author Danny Lee
* @since 2021-03-25
*/
public
interface
TBoardStatisticService
extends
IService
<
TBoardStatistic
>
{
Object
boardStatisticInfo
(
TBoardStatistic
tBoardStatistic
,
boolean
autoUpdate
);
/**
* 更新展板统计信息
*/
void
updateBoardStatisticInfo
(
List
<
TBoardStatistic
>
statisticList
,
String
redisKey
);
/**
* 获取展板播放排行
* @param page
* @param rank
* @return
*/
Page
<
TBoardPlayRank
>
getBoardRankPageList
(
Page
<
TBoardPlayRank
>
page
,
TBoardPlayRank
rank
);
/**
* 获取展板播放趋势
* @param page
* @param rank
* @return
*/
Page
<
TBoardPlayTrend
>
getBoardTrendPageList
(
Page
<
TBoardPlayTrend
>
page
,
TBoardPlayTrend
rank
);
/**
* 获取地区看板统计信息
* @param page
* @param district
* @return
*/
Page
<
TDistrictBoardStatistic
>
getBoardDistrictPageList
(
Page
<
TDistrictBoardStatistic
>
page
,
TDistrictBoardStatistic
district
);
}
src/main/java/cn/wisenergy/chnmuseum/party/service/TDistrictBoardStatisticService.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
service
;
import
cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic
;
import
com.baomidou.mybatisplus.extension.service.IService
;
/**
* <p>
* 地区看板播放统计 服务接口
* </p>
*
* @author Danny Lee
* @since 2021-03-26
*/
public
interface
TDistrictBoardStatisticService
extends
IService
<
TDistrictBoardStatistic
>
{
}
src/main/java/cn/wisenergy/chnmuseum/party/service/impl/TBoardPlayRankServiceImpl.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
service
.
impl
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayRank
;
import
cn.wisenergy.chnmuseum.party.mapper.TBoardPlayRankMapper
;
import
cn.wisenergy.chnmuseum.party.service.TBoardPlayRankService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.beans.factory.annotation.Autowired
;
/**
* <pre>
* 展板播放排行 服务实现类
* </pre>
*
* @author Danny Lee
* @since 2021-03-26
*/
@Slf4j
@Service
public
class
TBoardPlayRankServiceImpl
extends
ServiceImpl
<
TBoardPlayRankMapper
,
TBoardPlayRank
>
implements
TBoardPlayRankService
{
@Autowired
private
TBoardPlayRankMapper
tBoardPlayRankMapper
;
}
src/main/java/cn/wisenergy/chnmuseum/party/service/impl/TBoardPlayTrendServiceImpl.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
service
.
impl
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend
;
import
cn.wisenergy.chnmuseum.party.mapper.TBoardPlayTrendMapper
;
import
cn.wisenergy.chnmuseum.party.service.TBoardPlayTrendService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.beans.factory.annotation.Autowired
;
/**
* <pre>
* 展板播放趋势 服务实现类
* </pre>
*
* @author Danny Lee
* @since 2021-03-26
*/
@Slf4j
@Service
public
class
TBoardPlayTrendServiceImpl
extends
ServiceImpl
<
TBoardPlayTrendMapper
,
TBoardPlayTrend
>
implements
TBoardPlayTrendService
{
@Autowired
private
TBoardPlayTrendMapper
tBoardPlayTrendMapper
;
}
src/main/java/cn/wisenergy/chnmuseum/party/service/impl/TBoardStatisticServiceImpl.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
service
.
impl
;
import
cn.wisenergy.chnmuseum.party.common.util.CurrencyMathUtil
;
import
cn.wisenergy.chnmuseum.party.common.util.DateUtil
;
import
cn.wisenergy.chnmuseum.party.common.util.RedisUtil
;
import
cn.wisenergy.chnmuseum.party.core.annotations.RedisLock
;
import
cn.wisenergy.chnmuseum.party.model.*
;
import
cn.wisenergy.chnmuseum.party.mapper.TBoardStatisticMapper
;
import
cn.wisenergy.chnmuseum.party.service.TBoardStatisticService
;
import
cn.wisenergy.chnmuseum.party.service.TUserService
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* <pre>
* 展板统计信息表 服务实现类
* </pre>
*
* @author Danny Lee
* @since 2021-03-25
*/
@Slf4j
@Service
public
class
TBoardStatisticServiceImpl
extends
ServiceImpl
<
TBoardStatisticMapper
,
TBoardStatistic
>
implements
TBoardStatisticService
{
@Autowired
private
TBoardStatisticMapper
boardStatisticMapper
;
@Autowired
private
TUserService
userService
;
@Autowired
private
RedisUtil
redisUtil
;
@Autowired
private
RedisTemplate
<
String
,?
extends
Object
>
redisTemplate
;
private
static
String
STATISTIC_BOARD_INFO_KEY
=
"STATISTIC_BOARD_INFO_KEY"
;
// 展板统计信息key
@Override
@RedisLock
(
value
=
"boardLock"
,
timeLock
=
20
,
required
=
true
,
timeOut
=
1100000
)
public
Object
boardStatisticInfo
(
TBoardStatistic
tBoardStatistic
,
boolean
autoUpdate
)
{
// 根据用户id获取用户信息
TUser
user
=
userService
.
selectById
(
tBoardStatistic
.
getUserId
());
tBoardStatistic
.
setOrganId
(
user
.
getOrgId
());
// 用户所属机构
tBoardStatistic
.
setAreaId
(
Integer
.
parseInt
(
user
.
getAreaId
()));
// 用户所属地区
if
(
StringUtils
.
isEmpty
(
tBoardStatistic
.
getPlayDate
())){
// 获取当前日期
tBoardStatistic
.
setPlayDate
(
DateUtil
.
getCurrentDate
(
"yyyyMMdd"
));
}
List
<
TBoardStatistic
>
statisticList
=
new
ArrayList
<>();
String
redisKey
=
STATISTIC_BOARD_INFO_KEY
;
// 获取统计信息缓存数据
String
businessJsonArray
=
(
String
)
redisUtil
.
get
(
redisKey
);
// 缓存数据不为空,转换数据
if
(
StringUtils
.
isNotEmpty
(
businessJsonArray
)){
statisticList
=
JSONObject
.
parseArray
(
businessJsonArray
,
TBoardStatistic
.
class
);
}
statisticList
.
add
(
tBoardStatistic
);
redisUtil
.
set
(
redisKey
,
JSON
.
toJSON
(
statisticList
).
toString
());
// 统计记录数等于100 时,或者需要自动更新时 汇总统计数据
if
(
statisticList
.
size
()
>=
100
||
autoUpdate
){
// 更新展板统计信息
updateBoardStatisticInfo
(
statisticList
,
redisKey
);
}
return
true
;
}
@Override
public
Page
<
TBoardPlayRank
>
getBoardRankPageList
(
Page
<
TBoardPlayRank
>
page
,
TBoardPlayRank
rank
)
{
page
.
setRecords
(
boardStatisticMapper
.
getBoardRankPageList
(
page
,
rank
));
return
page
;
}
@Override
public
Page
<
TBoardPlayTrend
>
getBoardTrendPageList
(
Page
<
TBoardPlayTrend
>
page
,
TBoardPlayTrend
rank
)
{
page
.
setRecords
(
boardStatisticMapper
.
getBoardTrendPageList
(
page
,
rank
));
return
page
;
}
@Override
public
Page
<
TDistrictBoardStatistic
>
getBoardDistrictPageList
(
Page
<
TDistrictBoardStatistic
>
page
,
TDistrictBoardStatistic
district
){
page
.
setRecords
(
boardStatisticMapper
.
getBoardDistrictPageList
(
page
,
district
));
return
page
;
}
/**
* 更新展板统计信息
*/
@Override
public
void
updateBoardStatisticInfo
(
List
<
TBoardStatistic
>
statisticList
,
String
redisKey
)
{
Map
<
String
,
TBoardStatistic
>
map
=
new
HashMap
<>();
statisticList
.
stream
().
forEach
(
s
->{
String
key
=
s
.
getBoardId
()+
"_"
+
s
.
getOrganId
()+
"_"
+
s
.
getPlayDate
();
// 如果有对应的展板记录,累计播放量
if
(
map
.
containsKey
(
key
)){
TBoardStatistic
boardStatistic
=
map
.
get
(
key
);
boardStatistic
.
setPlayNumber
(
Integer
.
parseInt
(
CurrencyMathUtil
.
add
(
boardStatistic
.
getPlayNumber
(),
s
.
getPlayNumber
())));
map
.
put
(
key
,
boardStatistic
);
}
else
{
// 如果无对应的展板记录,插入到map中
map
.
put
(
key
,
s
);
}
});
// 更新数据库展板统计信息
for
(
String
key
:
map
.
keySet
()){
TBoardStatistic
bs
=
map
.
get
(
key
);
// 查询数据库是否有对应的记录
QueryWrapper
<
TBoardStatistic
>
qw
=
new
QueryWrapper
<>();
qw
.
eq
(
"board_id"
,
bs
.
getBoardId
());
qw
.
eq
(
"organ_id"
,
bs
.
getOrganId
());
qw
.
eq
(
"play_date"
,
bs
.
getPlayDate
());
TBoardStatistic
tbDB
=
this
.
getOne
(
qw
);
// 如果数据库存在统计记录,则累计统计数量
if
(
tbDB
!=
null
){
tbDB
.
setPlayNumber
(
Integer
.
parseInt
(
CurrencyMathUtil
.
add
(
bs
.
getPlayNumber
(),
tbDB
.
getPlayNumber
())));
this
.
updateById
(
tbDB
);
map
.
put
(
key
,
tbDB
);
}
else
{
// 如果数据库不存在统计记录,则增加统计数据
this
.
save
(
bs
);
}
}
// 更新展板播放排行 t_board_play_rank
// 插入
// 看板播放趋势
// 地区看板播放统计
// 播放数据概览
// 清空redis
redisUtil
.
del
(
redisKey
);
}
}
src/main/java/cn/wisenergy/chnmuseum/party/service/impl/TDistrictBoardStatisticServiceImpl.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
service
.
impl
;
import
cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic
;
import
cn.wisenergy.chnmuseum.party.mapper.TDistrictBoardStatisticMapper
;
import
cn.wisenergy.chnmuseum.party.service.TDistrictBoardStatisticService
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.beans.factory.annotation.Autowired
;
/**
* <pre>
* 地区看板播放统计 服务实现类
* </pre>
*
* @author Danny Lee
* @since 2021-03-26
*/
@Slf4j
@Service
public
class
TDistrictBoardStatisticServiceImpl
extends
ServiceImpl
<
TDistrictBoardStatisticMapper
,
TDistrictBoardStatistic
>
implements
TDistrictBoardStatisticService
{
@Autowired
private
TDistrictBoardStatisticMapper
tDistrictBoardStatisticMapper
;
}
src/main/java/cn/wisenergy/chnmuseum/party/web/controller/ChinaMobileRestApiController.java
View file @
ec5ec0ba
...
...
@@ -4,10 +4,12 @@ import cn.wisenergy.chnmuseum.party.auth.SHA256PasswordEncryptionService;
import
cn.wisenergy.chnmuseum.party.auth.util.JwtTokenUtil
;
import
cn.wisenergy.chnmuseum.party.common.enums.LanguageEnum
;
import
cn.wisenergy.chnmuseum.party.common.util.TimeUtils
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Add
;
import
cn.wisenergy.chnmuseum.party.common.vo.GenericPageParam
;
import
cn.wisenergy.chnmuseum.party.model.*
;
import
cn.wisenergy.chnmuseum.party.service.ExhibitionBoardService
;
import
cn.wisenergy.chnmuseum.party.service.RunLogService
;
import
cn.wisenergy.chnmuseum.party.service.TBoardStatisticService
;
import
cn.wisenergy.chnmuseum.party.service.impl.*
;
import
cn.wisenergy.chnmuseum.party.web.controller.base.BaseController
;
import
com.alibaba.fastjson.JSONObject
;
...
...
@@ -23,12 +25,14 @@ import org.apache.commons.lang3.StringUtils;
import
org.apache.shiro.SecurityUtils
;
import
org.apache.shiro.authc.DisabledAccountException
;
import
org.apache.shiro.authc.IncorrectCredentialsException
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.data.redis.core.ValueOperations
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
...
...
@@ -69,6 +73,9 @@ public class ChinaMobileRestApiController extends BaseController {
@Resource
private
ExhibitionBoardService
exhibitionBoardService
;
@Resource
private
TBoardStatisticService
tBoardStatisticService
;
private
static
final
String
SHIRO_JWT_TOKEN
=
"shiro:jwt:token:"
;
//用户登录次数计数 redisKey 前缀
private
static
final
String
SHIRO_LOGIN_COUNT
=
"shiro_login_count_"
;
...
...
@@ -419,4 +426,26 @@ public class ChinaMobileRestApiController extends BaseController {
return
resultMap
;
}
@PostMapping
(
"/equitment/playLog"
)
@RequiresPermissions
(
"t:board:statistic:statisticBoardInfo"
)
@ApiOperation
(
value
=
"播放记录信息反馈"
,
notes
=
"播放记录信息反馈"
)
public
Map
<
String
,
Object
>
boardStatisticInfo
(
@Validated
(
value
=
{
Add
.
class
})
TBoardStatistic
tBoardStatistic
)
{
// 展板信息统计
try
{
Object
result
=
tBoardStatisticService
.
boardStatisticInfo
(
tBoardStatistic
,
false
);
// 返回操作结果
if
(
result
!=
null
&&
(
boolean
)
result
)
{
return
getSuccessResult
();
}
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
// 保存失败
return
getFailResult
();
}
}
src/main/java/cn/wisenergy/chnmuseum/party/web/controller/TBoardPlayRankController.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
web
.
controller
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
cn.wisenergy.chnmuseum.party.web.controller.base.BaseController
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayRank
;
import
cn.wisenergy.chnmuseum.party.service.TBoardPlayRankService
;
import
cn.wisenergy.chnmuseum.party.common.enums.AuditStatusEnum
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Add
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Update
;
import
cn.wisenergy.chnmuseum.party.common.vo.GenericPageParam
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.stereotype.Controller
;
import
javax.annotation.Resource
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
import
java.util.Map
;
/**
* <pre>
* 展板播放排行 前端控制器
* </pre>
*
* @author Danny Lee
* @since 2021-03-26
*/
@Slf4j
@RestController
@RequestMapping
(
"/tBoardPlayRank"
)
@Api
(
tags
=
{
"展板播放排行操作接口"
})
public
class
TBoardPlayRankController
extends
BaseController
{
@Resource
private
TBoardPlayRankService
tBoardPlayRankService
;
@PostMapping
(
"/batchSave"
)
@RequiresPermissions
(
"t:board:play:rank:batch:save"
)
@ApiOperation
(
value
=
"批量添加展板播放排行"
,
notes
=
"批量添加展板播放排行"
)
public
Map
<
String
,
Object
>
batchSaveTBoardPlayRank
(
@Validated
(
value
=
{
Add
.
class
})
List
<
TBoardPlayRank
>
tBoardPlayRankList
)
{
// 保存业务节点信息
boolean
result
=
tBoardPlayRankService
.
saveBatch
(
tBoardPlayRankList
);
// 返回操作结果
if
(
result
)
{
return
getSuccessResult
();
}
else
{
// 保存失败
return
getFailResult
();
}
}
@PostMapping
(
"/save"
)
@RequiresPermissions
(
"t:board:play:rank:save"
)
@ApiOperation
(
value
=
"添加展板播放排行"
,
notes
=
"添加展板播放排行"
)
public
Map
<
String
,
Object
>
saveTBoardPlayRank
(
@Validated
(
value
=
{
Add
.
class
})
TBoardPlayRank
tBoardPlayRank
)
{
// 保存业务节点信息
boolean
result
=
tBoardPlayRankService
.
save
(
tBoardPlayRank
);
// 返回操作结果
if
(
result
)
{
return
getSuccessResult
();
}
else
{
// 保存失败
return
getFailResult
();
}
}
@PutMapping
(
"/update"
)
@RequiresPermissions
(
"t:board:play:rank:update"
)
@ApiOperation
(
value
=
"修改展板播放排行信息"
,
notes
=
"修改展板播放排行信息"
)
public
Map
<
String
,
Object
>
updateTBoardPlayRank
(
@Validated
(
value
=
{
Update
.
class
})
TBoardPlayRank
tBoardPlayRank
)
{
boolean
flag
=
tBoardPlayRankService
.
updateById
(
tBoardPlayRank
);
if
(
flag
)
{
return
getSuccessResult
();
}
return
getFailResult
();
}
// @PutMapping("/updateAuditStatus/{id}")
// @RequiresPermissions("t:board:play:rank:update:audit:status")
// @ApiOperation(value = "更新展板播放排行审核状态", notes = "更新展板播放排行审核状态")
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path"),
// @ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataType = "String")
// })
// public Map<String, Object> updateStatus(@NotNull(message = "展板播放排行ID不能为空") @PathVariable("id") String id, @RequestParam("status") AuditStatusEnum status) {
// UpdateWrapper<TBoardPlayRank> updateWrapper = new UpdateWrapper<>();
// updateWrapper.eq("id", id);
// updateWrapper.eq("audit_status", status.name());
// boolean flag = tBoardPlayRankService.update(updateWrapper);
// if (flag) {
// return getSuccessResult();
// }
// return getFailResult();
// }
@DeleteMapping
(
"/delete/{id}"
)
@RequiresPermissions
(
"t:board:play:rank:delete"
)
@ApiOperation
(
value
=
"根据ID删除展板播放排行"
,
notes
=
"根据ID删除展板播放排行"
)
@ApiImplicitParams
(
value
=
{
@ApiImplicitParam
(
name
=
"id"
,
value
=
"标识ID"
,
paramType
=
"path"
,
dataType
=
"String"
)
})
public
Map
<
String
,
Object
>
deleteTBoardPlayRank
(
@PathVariable
(
"id"
)
String
id
)
{
boolean
result
=
tBoardPlayRankService
.
removeById
(
id
);
if
(
result
)
{
return
getSuccessResult
();
}
return
getFailResult
();
}
@GetMapping
(
"/getList"
)
@RequiresPermissions
(
"t:board:play:rank:list"
)
@ApiOperation
(
value
=
"获取展板播放排行全部列表(无分页)"
,
notes
=
"获取展板播放排行全部列表(无分页)"
)
@ApiImplicitParams
(
value
=
{
@ApiImplicitParam
(
name
=
"auditStatus"
,
value
=
"审核状态"
,
paramType
=
"query"
,
dataType
=
"String"
)
})
public
Map
<
String
,
Object
>
getTBoardPlayRankList
(
@RequestParam
(
value
=
"auditStatus"
,
defaultValue
=
"APPROVED_FINAL"
,
required
=
false
)
AuditStatusEnum
auditStatus
)
{
List
<
TBoardPlayRank
>
tBoardPlayRankList
=
tBoardPlayRankService
.
list
();
return
getResult
(
tBoardPlayRankList
);
}
@ApiImplicitParams
(
value
=
{
@ApiImplicitParam
(
name
=
"_index"
,
value
=
"分页起始偏移量"
,
paramType
=
"query"
,
dataType
=
"Integer"
),
@ApiImplicitParam
(
name
=
"_size"
,
value
=
"返回条数"
,
paramType
=
"query"
,
dataType
=
"Integer"
),
@ApiImplicitParam
(
name
=
"nameOrCode"
,
value
=
"名称或编码"
,
paramType
=
"query"
,
dataType
=
"String"
),
@ApiImplicitParam
(
name
=
"startDate"
,
value
=
"创建时间-开始"
,
paramType
=
"query"
,
dataType
=
"String"
),
@ApiImplicitParam
(
name
=
"endDate"
,
value
=
"创建时间-结束"
,
paramType
=
"query"
,
dataType
=
"String"
)
})
@PostMapping
(
"/getPageList"
)
@RequiresPermissions
(
"t:board:play:rank:page"
)
@ApiOperation
(
value
=
"获取展板播放排行分页列表"
,
notes
=
"获取展板播放排行分页列表"
)
public
Map
<
String
,
Object
>
getTBoardPlayRankPageList
(
GenericPageParam
genericPageParam
)
{
LambdaQueryWrapper
<
TBoardPlayRank
>
queryWrapper
=
new
LambdaQueryWrapper
<>();
// // 对名称或编码模糊查询
// if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
// queryWrapper.like(TBoardPlayRank::getName, genericPageParam.getNameOrCode());
// }
// // 根据创建时间区间检索
// if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
// queryWrapper.ge(TBoardPlayRank::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
// .le(TBoardPlayRank::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
// }
// // 设置排序规则
// queryWrapper.orderByDesc(TBoardPlayRank::getCreateTime);
// // 设置查询内容
// queryWrapper.select(
// TBoardPlayRank::getId,
// TBoardPlayRank::getName,
// TBoardPlayRank::getAuditStatus,
// TBoardPlayRank::getCreateTime,
// TBoardPlayRank::getUpdateTime);
Page
<
TBoardPlayRank
>
page
=
this
.
tBoardPlayRankService
.
page
(
getPage
(),
queryWrapper
);
for
(
TBoardPlayRank
tBoardPlayRank
:
page
.
getRecords
())
{
}
return
getResult
(
page
);
}
@ApiOperation
(
value
=
"获取展板播放排行详情"
,
notes
=
"获取展板播放排行详情"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
name
=
"id"
,
value
=
"标识ID"
,
dataType
=
"String"
,
paramType
=
"path"
)
})
@GetMapping
(
"/get/{id}"
)
@RequiresPermissions
(
"t:board:play:rank:get:id"
)
public
Map
<
String
,
Object
>
getById
(
@PathVariable
(
"id"
)
String
id
)
{
TBoardPlayRank
tBoardPlayRank
=
tBoardPlayRankService
.
getById
(
id
);
return
getResult
(
tBoardPlayRank
);
}
}
src/main/java/cn/wisenergy/chnmuseum/party/web/controller/TBoardPlayTrendController.java
0 → 100644
View file @
ec5ec0ba
//package cn.wisenergy.chnmuseum.party.web.controller;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import cn.wisenergy.chnmuseum.party.web.controller.base.BaseController;
//import cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend;
//import cn.wisenergy.chnmuseum.party.service.TBoardPlayTrendService;
//import cn.wisenergy.chnmuseum.party.common.enums.AuditStatusEnum;
//import cn.wisenergy.chnmuseum.party.common.validator.groups.Add;
//import cn.wisenergy.chnmuseum.party.common.validator.groups.Update;
//import cn.wisenergy.chnmuseum.party.common.vo.GenericPageParam;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiImplicitParam;
//import io.swagger.annotations.ApiImplicitParams;
//import io.swagger.annotations.ApiOperation;
//
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.shiro.authz.annotation.RequiresPermissions;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.stereotype.Controller;
//
//import javax.annotation.Resource;
//import javax.validation.constraints.NotNull;
//import java.util.List;
//import java.util.Map;
//
///**
// * <pre>
// * 展板播放趋势 前端控制器
// * </pre>
// *
// * @author Danny Lee
// * @since 2021-03-26
// */
//@Slf4j
//@RestController
//@RequestMapping("/tBoardPlayTrend")
//@Api(tags = {"展板播放趋势操作接口"})
//public class TBoardPlayTrendController extends BaseController {
//
// @Resource
// private TBoardPlayTrendService tBoardPlayTrendService;
//
// @PostMapping("/batchSave")
// @RequiresPermissions("t:board:play:trend:batch:save")
// @ApiOperation(value = "批量添加展板播放趋势", notes = "批量添加展板播放趋势")
// public Map<String, Object> batchSaveTBoardPlayTrend(@Validated(value = {Add.class}) List<TBoardPlayTrend> tBoardPlayTrendList) {
// // 保存业务节点信息
// boolean result = tBoardPlayTrendService.saveBatch(tBoardPlayTrendList);
// // 返回操作结果
// if (result) {
// return getSuccessResult();
// } else {
// // 保存失败
// return getFailResult();
// }
// }
//
// @PostMapping("/save")
// @RequiresPermissions("t:board:play:trend:save")
// @ApiOperation(value = "添加展板播放趋势", notes = "添加展板播放趋势")
// public Map<String, Object> saveTBoardPlayTrend(@Validated(value = {Add.class}) TBoardPlayTrend tBoardPlayTrend) {
// // 保存业务节点信息
// boolean result = tBoardPlayTrendService.save(tBoardPlayTrend);
// // 返回操作结果
// if (result) {
// return getSuccessResult();
// } else {
// // 保存失败
// return getFailResult();
// }
// }
//
// @PutMapping("/update")
// @RequiresPermissions("t:board:play:trend:update")
// @ApiOperation(value = "修改展板播放趋势信息", notes = "修改展板播放趋势信息")
// public Map<String, Object> updateTBoardPlayTrend(@Validated(value = {Update.class}) TBoardPlayTrend tBoardPlayTrend) {
// boolean flag = tBoardPlayTrendService.updateById(tBoardPlayTrend);
// if (flag) {
// return getSuccessResult();
// }
// return getFailResult();
// }
//
//// @PutMapping("/updateAuditStatus/{id}")
//// @RequiresPermissions("t:board:play:trend:update:audit:status")
//// @ApiOperation(value = "更新展板播放趋势审核状态", notes = "更新展板播放趋势审核状态")
//// @ApiImplicitParams(value = {
//// @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path"),
//// @ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataType = "String")
//// })
//// public Map<String, Object> updateStatus(@NotNull(message = "展板播放趋势ID不能为空") @PathVariable("id") String id, @RequestParam("status") AuditStatusEnum status) {
//// UpdateWrapper<TBoardPlayTrend> updateWrapper = new UpdateWrapper<>();
//// updateWrapper.eq("id", id);
//// updateWrapper.eq("audit_status", status.name());
//// boolean flag = tBoardPlayTrendService.update(updateWrapper);
//// if (flag) {
//// return getSuccessResult();
//// }
//// return getFailResult();
//// }
//
// @DeleteMapping("/delete/{id}")
// @RequiresPermissions("t:board:play:trend:delete")
// @ApiOperation(value = "根据ID删除展板播放趋势", notes = "根据ID删除展板播放趋势")
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "id", value = "标识ID", paramType = "path", dataType = "String")
// })
// public Map<String, Object> deleteTBoardPlayTrend(@PathVariable("id") String id) {
// boolean result = tBoardPlayTrendService.removeById(id);
// if (result) {
// return getSuccessResult();
// }
// return getFailResult();
// }
//
// @GetMapping("/getList")
// @RequiresPermissions("t:board:play:trend:list")
// @ApiOperation(value = "获取展板播放趋势全部列表(无分页)", notes = "获取展板播放趋势全部列表(无分页)")
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "auditStatus", value = "审核状态", paramType = "query", dataType = "String")
// })
// public Map<String, Object> getTBoardPlayTrendList(@RequestParam(value = "auditStatus", defaultValue = "APPROVED_FINAL", required = false) AuditStatusEnum auditStatus) {
// List<TBoardPlayTrend> tBoardPlayTrendList = tBoardPlayTrendService.list();
// return getResult(tBoardPlayTrendList);
// }
//
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
// @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
// @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String"),
// @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
// @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String")
// })
// @PostMapping("/getPageList")
// @RequiresPermissions("t:board:play:trend:page")
// @ApiOperation(value = "获取展板播放趋势分页列表", notes = "获取展板播放趋势分页列表")
// public Map<String, Object> getTBoardPlayTrendPageList(GenericPageParam genericPageParam) {
// LambdaQueryWrapper<TBoardPlayTrend> queryWrapper = new LambdaQueryWrapper<>();
// // 对名称或编码模糊查询
//// if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
//// queryWrapper.like(TBoardPlayTrend::getName, genericPageParam.getNameOrCode());
//// }
//// // 根据创建时间区间检索
//// if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
//// queryWrapper.ge(TBoardPlayTrend::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
//// .le(TBoardPlayTrend::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
//// }
//// // 设置排序规则
//// queryWrapper.orderByDesc(TBoardPlayTrend::getCreateTime);
//// // 设置查询内容
//// queryWrapper.select(
//// TBoardPlayTrend::getId,
//// TBoardPlayTrend::getName,
//// TBoardPlayTrend::getAuditStatus,
//// TBoardPlayTrend::getCreateTime,
//// TBoardPlayTrend::getUpdateTime);
// Page<TBoardPlayTrend> page = this.tBoardPlayTrendService.page(getPage(), queryWrapper);
// for (TBoardPlayTrend tBoardPlayTrend : page.getRecords()) {
//
// }
// return getResult(page);
// }
//
// @ApiOperation(value = "获取展板播放趋势详情", notes = "获取展板播放趋势详情")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path")
// })
// @GetMapping("/get/{id}")
// @RequiresPermissions("t:board:play:trend:get:id")
// public Map<String, Object> getById(@PathVariable("id") String id) {
// TBoardPlayTrend tBoardPlayTrend = tBoardPlayTrendService.getById(id);
// return getResult(tBoardPlayTrend);
// }
//
//}
//
src/main/java/cn/wisenergy/chnmuseum/party/web/controller/TBoardStatisticController.java
0 → 100644
View file @
ec5ec0ba
package
cn
.
wisenergy
.
chnmuseum
.
party
.
web
.
controller
;
import
cn.wisenergy.chnmuseum.party.common.util.DateUtil
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayRank
;
import
cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend
;
import
cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.extension.plugins.pagination.Page
;
import
cn.wisenergy.chnmuseum.party.web.controller.base.BaseController
;
import
cn.wisenergy.chnmuseum.party.model.TBoardStatistic
;
import
cn.wisenergy.chnmuseum.party.service.TBoardStatisticService
;
import
cn.wisenergy.chnmuseum.party.common.enums.AuditStatusEnum
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Add
;
import
cn.wisenergy.chnmuseum.party.common.validator.groups.Update
;
import
cn.wisenergy.chnmuseum.party.common.vo.GenericPageParam
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.shiro.authz.annotation.RequiresPermissions
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
import
java.util.Map
;
/**
* <pre>
* 展板统计信息表 前端控制器
* </pre>
*
* @author Danny Lee
* @since 2021-03-25
*/
@Slf4j
@RestController
@RequestMapping
(
"/tBoardStatistic"
)
@Api
(
tags
=
{
"展板统计信息表操作接口"
})
public
class
TBoardStatisticController
extends
BaseController
{
@Resource
private
TBoardStatisticService
tBoardStatisticService
;
@ApiImplicitParams
(
value
=
{
@ApiImplicitParam
(
name
=
"_index"
,
value
=
"分页起始偏移量"
,
paramType
=
"query"
,
dataType
=
"Integer"
),
@ApiImplicitParam
(
name
=
"_size"
,
value
=
"返回条数"
,
paramType
=
"query"
,
dataType
=
"Integer"
)
})
@PostMapping
(
"/getBoardRankPageList"
)
@RequiresPermissions
(
"t:board:statistic:rankPage"
)
@ApiOperation
(
value
=
"获取展板播放排行"
,
notes
=
"获取展板播放排行"
)
public
Map
<
String
,
Object
>
getBoardRankPageList
(
TBoardPlayRank
rank
)
{
Page
<
TBoardPlayRank
>
page
=
this
.
tBoardStatisticService
.
getBoardRankPageList
(
getPage
(),
rank
);
for
(
TBoardPlayRank
tBoardStatistic
:
page
.
getRecords
())
{
}
return
getResult
(
page
);
}
@ApiImplicitParams
(
value
=
{
@ApiImplicitParam
(
name
=
"_index"
,
value
=
"分页起始偏移量"
,
paramType
=
"query"
,
dataType
=
"Integer"
),
@ApiImplicitParam
(
name
=
"_size"
,
value
=
"返回条数"
,
paramType
=
"query"
,
dataType
=
"Integer"
)
})
@PostMapping
(
"/getBoardTrendPageList"
)
@RequiresPermissions
(
"t:board:statistic:trendPage"
)
@ApiOperation
(
value
=
"获取展板播放趋势"
,
notes
=
"获取展板播放趋势"
)
public
Map
<
String
,
Object
>
getBoardTrendPageList
(
TBoardPlayTrend
trend
)
{
if
(
StringUtils
.
isEmpty
(
trend
.
getPlayDate
())){
throw
new
RuntimeException
(
"统计周期时间不能为空"
);
}
Page
<
TBoardPlayTrend
>
page
=
this
.
tBoardStatisticService
.
getBoardTrendPageList
(
getPage
(),
trend
);
for
(
TBoardPlayTrend
tBoardStatistic
:
page
.
getRecords
())
{
}
return
getResult
(
page
);
}
@ApiImplicitParams
(
value
=
{
@ApiImplicitParam
(
name
=
"_index"
,
value
=
"分页起始偏移量"
,
paramType
=
"query"
,
dataType
=
"Integer"
),
@ApiImplicitParam
(
name
=
"_size"
,
value
=
"返回条数"
,
paramType
=
"query"
,
dataType
=
"Integer"
)
})
@PostMapping
(
"/getBoardDistrictPageList"
)
@RequiresPermissions
(
"t:board:statistic:districtPage"
)
@ApiOperation
(
value
=
"获取地区展板播统计"
,
notes
=
"获取地区展板播统计"
)
public
Map
<
String
,
Object
>
getBoardDistrictPageList
(
TDistrictBoardStatistic
district
)
{
Page
<
TDistrictBoardStatistic
>
page
=
this
.
tBoardStatisticService
.
getBoardDistrictPageList
(
getPage
(),
district
);
for
(
TDistrictBoardStatistic
tBoardStatistic
:
page
.
getRecords
())
{
}
return
getResult
(
page
);
}
//
// @PostMapping("/batchSave")
// @RequiresPermissions("t:board:statistic:batch:save")
// @ApiOperation(value = "批量添加展板统计信息表", notes = "批量添加展板统计信息表")
// public Map<String, Object> batchSaveTBoardStatistic(@Validated(value = {Add.class}) List<TBoardStatistic> tBoardStatisticList) {
// // 保存业务节点信息
// boolean result = tBoardStatisticService.saveBatch(tBoardStatisticList);
// // 返回操作结果
// if (result) {
// return getSuccessResult();
// } else {
// // 保存失败
// return getFailResult();
// }
// }
//
//
//
//
// @PostMapping("/save")
// @RequiresPermissions("t:board:statistic:save")
// @ApiOperation(value = "添加展板统计信息表", notes = "添加展板统计信息表")
// public Map<String, Object> saveTBoardStatistic(@Validated(value = {Add.class}) TBoardStatistic tBoardStatistic) {
// // 获取当前日期
// tBoardStatistic.setPlayDate(DateUtil.getCurrentDate("yyyyMMdd"));
//
// // 保存业务节点信息
// boolean result = tBoardStatisticService.save(tBoardStatistic);
// // 返回操作结果
// if (result) {
// return getSuccessResult();
// } else {
// // 保存失败
// return getFailResult();
// }
// }
//
// @PutMapping("/update")
// @RequiresPermissions("t:board:statistic:update")
// @ApiOperation(value = "修改展板统计信息表信息", notes = "修改展板统计信息表信息")
// public Map<String, Object> updateTBoardStatistic(@Validated(value = {Update.class}) TBoardStatistic tBoardStatistic) {
// boolean flag = tBoardStatisticService.updateById(tBoardStatistic);
// if (flag) {
// return getSuccessResult();
// }
// return getFailResult();
// }
//
// @PutMapping("/updateAuditStatus/{id}")
// @RequiresPermissions("t:board:statistic:update:audit:status")
// @ApiOperation(value = "更新展板统计信息表审核状态", notes = "更新展板统计信息表审核状态")
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path"),
// @ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataType = "String")
// })
// public Map<String, Object> updateStatus(@NotNull(message = "展板统计信息表ID不能为空") @PathVariable("id") String id, @RequestParam("status") AuditStatusEnum status) {
// UpdateWrapper<TBoardStatistic> updateWrapper = new UpdateWrapper<>();
// updateWrapper.eq("id", id);
// updateWrapper.eq("audit_status", status.name());
// boolean flag = tBoardStatisticService.update(updateWrapper);
// if (flag) {
// return getSuccessResult();
// }
// return getFailResult();
// }
//
// @DeleteMapping("/delete/{id}")
// @RequiresPermissions("t:board:statistic:delete")
// @ApiOperation(value = "根据ID删除展板统计信息表", notes = "根据ID删除展板统计信息表")
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "id", value = "标识ID", paramType = "path", dataType = "String")
// })
// public Map<String, Object> deleteTBoardStatistic(@PathVariable("id") String id) {
// boolean result = tBoardStatisticService.removeById(id);
// if (result) {
// return getSuccessResult();
// }
// return getFailResult();
// }
//
// @GetMapping("/getList")
// @RequiresPermissions("t:board:statistic:list")
// @ApiOperation(value = "获取展板统计信息表全部列表(无分页)", notes = "获取展板统计信息表全部列表(无分页)")
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "auditStatus", value = "审核状态", paramType = "query", dataType = "String")
// })
// public Map<String, Object> getTBoardStatisticList(@RequestParam(value = "auditStatus", defaultValue = "APPROVED_FINAL", required = false) TBoardStatistic auditStatus) {
// List<TBoardStatistic> tBoardStatisticList = tBoardStatisticService.list();
// return getResult(tBoardStatisticList);
// }
//
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
// @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
// @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String"),
// @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
// @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String")
// })
// @PostMapping("/getPageList")
// @RequiresPermissions("t:board:statistic:page")
// @ApiOperation(value = "获取展板统计信息表分页列表", notes = "获取展板统计信息表分页列表")
// public Map<String, Object> getTBoardStatisticPageList(GenericPageParam genericPageParam) {
// LambdaQueryWrapper<TBoardStatistic> queryWrapper = new LambdaQueryWrapper<>();
//// // 对名称或编码模糊查询
//// if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
//// queryWrapper.like(TBoardStatistic::getName, genericPageParam.getNameOrCode());
//// }
//// // 根据创建时间区间检索
//// if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
//// queryWrapper.ge(TBoardStatistic::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
//// .le(TBoardStatistic::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
//// }
//// // 设置排序规则
//// queryWrapper.orderByDesc(TBoardStatistic::getCreateTime);
//// // 设置查询内容
//// queryWrapper.select(
//// TBoardStatistic::getId,
//// TBoardStatistic::getName,
//// TBoardStatistic::getAuditStatus,
//// TBoardStatistic::getCreateTime,
//// TBoardStatistic::getUpdateTime);
// Page<TBoardStatistic> page = this.tBoardStatisticService.page(getPage(), queryWrapper);
// for (TBoardStatistic tBoardStatistic : page.getRecords()) {
//
// }
// return getResult(page);
// }
//
// @ApiOperation(value = "获取展板统计信息表详情", notes = "获取展板统计信息表详情")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path")
// })
// @GetMapping("/get/{id}")
// @RequiresPermissions("t:board:statistic:get:id")
// public Map<String, Object> getById(@PathVariable("id") String id) {
// TBoardStatistic tBoardStatistic = tBoardStatisticService.getById(id);
// return getResult(tBoardStatistic);
// }
}
src/main/java/cn/wisenergy/chnmuseum/party/web/controller/TDistrictBoardStatisticController.java
0 → 100644
View file @
ec5ec0ba
//package cn.wisenergy.chnmuseum.party.web.controller;
//
//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
//import com.baomidou.mybatisplus.core.toolkit.Wrappers;
//import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
//import cn.wisenergy.chnmuseum.party.web.controller.base.BaseController;
//import cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic;
//import cn.wisenergy.chnmuseum.party.service.TDistrictBoardStatisticService;
//import cn.wisenergy.chnmuseum.party.common.enums.AuditStatusEnum;
//import cn.wisenergy.chnmuseum.party.common.validator.groups.Add;
//import cn.wisenergy.chnmuseum.party.common.validator.groups.Update;
//import cn.wisenergy.chnmuseum.party.common.vo.GenericPageParam;
//
//import io.swagger.annotations.Api;
//import io.swagger.annotations.ApiImplicitParam;
//import io.swagger.annotations.ApiImplicitParams;
//import io.swagger.annotations.ApiOperation;
//
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.shiro.authz.annotation.RequiresPermissions;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.stereotype.Controller;
//
//import javax.annotation.Resource;
//import javax.validation.constraints.NotNull;
//import java.util.List;
//import java.util.Map;
//
///**
// * <pre>
// * 地区看板播放统计 前端控制器
// * </pre>
// *
// * @author Danny Lee
// * @since 2021-03-26
// */
//@Slf4j
//@RestController
//@RequestMapping("/tDistrictBoardStatistic")
//@Api(tags = {"地区看板播放统计操作接口"})
//public class TDistrictBoardStatisticController extends BaseController {
//
// @Resource
// private TDistrictBoardStatisticService tDistrictBoardStatisticService;
//
// @PostMapping("/batchSave")
// @RequiresPermissions("t:district:board:statistic:batch:save")
// @ApiOperation(value = "批量添加地区看板播放统计", notes = "批量添加地区看板播放统计")
// public Map<String, Object> batchSaveTDistrictBoardStatistic(@Validated(value = {Add.class}) List<TDistrictBoardStatistic> tDistrictBoardStatisticList) {
// // 保存业务节点信息
// boolean result = tDistrictBoardStatisticService.saveBatch(tDistrictBoardStatisticList);
// // 返回操作结果
// if (result) {
// return getSuccessResult();
// } else {
// // 保存失败
// return getFailResult();
// }
// }
//
// @PostMapping("/save")
// @RequiresPermissions("t:district:board:statistic:save")
// @ApiOperation(value = "添加地区看板播放统计", notes = "添加地区看板播放统计")
// public Map<String, Object> saveTDistrictBoardStatistic(@Validated(value = {Add.class}) TDistrictBoardStatistic tDistrictBoardStatistic) {
// // 保存业务节点信息
// boolean result = tDistrictBoardStatisticService.save(tDistrictBoardStatistic);
// // 返回操作结果
// if (result) {
// return getSuccessResult();
// } else {
// // 保存失败
// return getFailResult();
// }
// }
//
// @PutMapping("/update")
// @RequiresPermissions("t:district:board:statistic:update")
// @ApiOperation(value = "修改地区看板播放统计信息", notes = "修改地区看板播放统计信息")
// public Map<String, Object> updateTDistrictBoardStatistic(@Validated(value = {Update.class}) TDistrictBoardStatistic tDistrictBoardStatistic) {
// boolean flag = tDistrictBoardStatisticService.updateById(tDistrictBoardStatistic);
// if (flag) {
// return getSuccessResult();
// }
// return getFailResult();
// }
//
//// @PutMapping("/updateAuditStatus/{id}")
//// @RequiresPermissions("t:district:board:statistic:update:audit:status")
//// @ApiOperation(value = "更新地区看板播放统计审核状态", notes = "更新地区看板播放统计审核状态")
//// @ApiImplicitParams(value = {
//// @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path"),
//// @ApiImplicitParam(name = "status", value = "状态", paramType = "query", dataType = "String")
//// })
//// public Map<String, Object> updateStatus(@NotNull(message = "地区看板播放统计ID不能为空") @PathVariable("id") String id, @RequestParam("status") AuditStatusEnum status) {
//// UpdateWrapper<TDistrictBoardStatistic> updateWrapper = new UpdateWrapper<>();
//// updateWrapper.eq("id", id);
//// updateWrapper.eq("audit_status", status.name());
//// boolean flag = tDistrictBoardStatisticService.update(updateWrapper);
//// if (flag) {
//// return getSuccessResult();
//// }
//// return getFailResult();
//// }
//
// @DeleteMapping("/delete/{id}")
// @RequiresPermissions("t:district:board:statistic:delete")
// @ApiOperation(value = "根据ID删除地区看板播放统计", notes = "根据ID删除地区看板播放统计")
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "id", value = "标识ID", paramType = "path", dataType = "String")
// })
// public Map<String, Object> deleteTDistrictBoardStatistic(@PathVariable("id") String id) {
// boolean result = tDistrictBoardStatisticService.removeById(id);
// if (result) {
// return getSuccessResult();
// }
// return getFailResult();
// }
//
// @GetMapping("/getList")
// @RequiresPermissions("t:district:board:statistic:list")
// @ApiOperation(value = "获取地区看板播放统计全部列表(无分页)", notes = "获取地区看板播放统计全部列表(无分页)")
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "auditStatus", value = "审核状态", paramType = "query", dataType = "String")
// })
// public Map<String, Object> getTDistrictBoardStatisticList(@RequestParam(value = "auditStatus", defaultValue = "APPROVED_FINAL", required = false) AuditStatusEnum auditStatus) {
// List<TDistrictBoardStatistic> tDistrictBoardStatisticList = tDistrictBoardStatisticService.list();
// return getResult(tDistrictBoardStatisticList);
// }
//
// @ApiImplicitParams(value = {
// @ApiImplicitParam(name = "_index", value = "分页起始偏移量", paramType = "query", dataType = "Integer"),
// @ApiImplicitParam(name = "_size", value = "返回条数", paramType = "query", dataType = "Integer"),
// @ApiImplicitParam(name = "nameOrCode", value = "名称或编码", paramType = "query", dataType = "String"),
// @ApiImplicitParam(name = "startDate", value = "创建时间-开始", paramType = "query", dataType = "String"),
// @ApiImplicitParam(name = "endDate", value = "创建时间-结束", paramType = "query", dataType = "String")
// })
// @PostMapping("/getPageList")
// @RequiresPermissions("t:district:board:statistic:page")
// @ApiOperation(value = "获取地区看板播放统计分页列表", notes = "获取地区看板播放统计分页列表")
// public Map<String, Object> getTDistrictBoardStatisticPageList(GenericPageParam genericPageParam) {
// LambdaQueryWrapper<TDistrictBoardStatistic> queryWrapper = new LambdaQueryWrapper<>();
// // 对名称或编码模糊查询
//// if (StringUtils.isNotBlank(genericPageParam.getNameOrCode())) {
//// queryWrapper.like(TDistrictBoardStatistic::getName, genericPageParam.getNameOrCode());
//// }
//// // 根据创建时间区间检索
//// if (genericPageParam.getStartDate() != null && genericPageParam.getEndDate() != null) {
//// queryWrapper.ge(TDistrictBoardStatistic::getCreateTime, genericPageParam.getStartDate().atTime(0, 0, 0))
//// .le(TDistrictBoardStatistic::getCreateTime, genericPageParam.getEndDate().atTime(23, 59, 59));
//// }
//// // 设置排序规则
//// queryWrapper.orderByDesc(TDistrictBoardStatistic::getCreateTime);
//// // 设置查询内容
//// queryWrapper.select(
//// TDistrictBoardStatistic::getId,
//// TDistrictBoardStatistic::getName,
//// TDistrictBoardStatistic::getAuditStatus,
//// TDistrictBoardStatistic::getCreateTime,
//// TDistrictBoardStatistic::getUpdateTime);
// Page<TDistrictBoardStatistic> page = this.tDistrictBoardStatisticService.page(getPage(), queryWrapper);
// for (TDistrictBoardStatistic tDistrictBoardStatistic : page.getRecords()) {
//
// }
// return getResult(page);
// }
//
// @ApiOperation(value = "获取地区看板播放统计详情", notes = "获取地区看板播放统计详情")
// @ApiImplicitParams({
// @ApiImplicitParam(name = "id", value = "标识ID", dataType = "String", paramType = "path")
// })
// @GetMapping("/get/{id}")
// @RequiresPermissions("t:district:board:statistic:get:id")
// public Map<String, Object> getById(@PathVariable("id") String id) {
// TDistrictBoardStatistic tDistrictBoardStatistic = tDistrictBoardStatisticService.getById(id);
// return getResult(tDistrictBoardStatistic);
// }
//
//}
//
src/main/resources/mapper/TBoardPlayRankMapper.xml
0 → 100644
View file @
ec5ec0ba
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.wisenergy.chnmuseum.party.mapper.TBoardPlayRankMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"cn.wisenergy.chnmuseum.party.model.TBoardPlayRank"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"board_id"
property=
"boardId"
/>
<result
column=
"board_name"
property=
"boardName"
/>
<result
column=
"play_number"
property=
"playNumber"
/>
<result
column=
"year"
property=
"year"
/>
<result
column=
"month"
property=
"month"
/>
<result
column=
"organ_id"
property=
"organId"
/>
<result
column=
"play_date"
property=
"playDate"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id, board_id, board_name, play_number, year, month, organ_id, play_date
</sql>
</mapper>
src/main/resources/mapper/TBoardPlayTrendMapper.xml
0 → 100644
View file @
ec5ec0ba
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.wisenergy.chnmuseum.party.mapper.TBoardPlayTrendMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"board_id"
property=
"boardId"
/>
<result
column=
"board_name"
property=
"boardName"
/>
<result
column=
"play_number"
property=
"playNumber"
/>
<result
column=
"data_time"
property=
"dataTime"
/>
<result
column=
"organ_id"
property=
"organId"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id, board_id, board_name, play_number, data_time, organ_id
</sql>
</mapper>
src/main/resources/mapper/TBoardStatisticMapper.xml
0 → 100644
View file @
ec5ec0ba
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.wisenergy.chnmuseum.party.mapper.TBoardStatisticMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"cn.wisenergy.chnmuseum.party.model.TBoardStatistic"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"board_id"
property=
"boardId"
/>
<result
column=
"board_name"
property=
"boardName"
/>
<result
column=
"organ_id"
property=
"organId"
/>
<result
column=
"area_id"
property=
"areaId"
/>
<result
column=
"play_number"
property=
"playNumber"
/>
<result
column=
"play_date"
property=
"playDate"
/>
</resultMap>
<!-- 播放排行结果 -->
<resultMap
id=
"rankMap"
type=
"cn.wisenergy.chnmuseum.party.model.TBoardPlayRank"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"board_id"
property=
"boardId"
/>
<result
column=
"board_name"
property=
"boardName"
/>
<result
column=
"play_number"
property=
"playNumber"
/>
<result
column=
"play_date"
property=
"playDate"
/>
</resultMap>
<resultMap
id=
"trendMap"
type=
"cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend"
>
<result
column=
"play_number"
property=
"playNumber"
/>
<result
column=
"play_date"
property=
"playDate"
/>
</resultMap>
<!-- 地区看板统计 -->
<resultMap
id=
"districtMap"
type=
"cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic"
>
<result
column=
"area_name"
property=
"areaName"
/>
<result
column=
"play_number"
property=
"playNumber"
/>
<result
column=
"board_cnt"
property=
"boardCnt"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id, board_id, board_name, organ_id, area_id, play_number, play_date
</sql>
<!-- 展板播放量统计 -->
<select
id=
"getBoardRankPageList"
parameterType=
"cn.wisenergy.chnmuseum.party.model.TBoardPlayRank"
resultMap=
"rankMap"
>
SELECT board_id,board_name,sum(play_number) play_number from t_board_statistic
<where>
<if
test=
"rank.playDate != null"
>
and play_date like concat( #{rank.playDate}, '%')
</if>
<if
test=
"rank.organId != null"
>
and organ_id = #{rank.organId}
</if>
</where>
GROUP BY board_id,board_name
ORDER BY sum(play_number) desc
</select>
<!-- 播放趋势统计 -->
<select
id=
"getBoardTrendPageList"
parameterType=
"cn.wisenergy.chnmuseum.party.model.TBoardPlayTrend"
resultMap=
"trendMap"
>
<if
test=
"trend.playDate != null and trend.playDate.length() == 4"
>
SELECT sum(play_number) play_number,left(play_date,6) play_date from t_board_statistic
where left(play_date,4) = ${trend.playDate}
GROUP BY left(play_date,6)
ORDER BY left(play_date,6)
</if>
<if
test=
"trend.playDate != null and trend.playDate.length() == 6"
>
SELECT sum(play_number) play_number,play_date from t_board_statistic
where left(play_date,6) = ${trend.playDate}
GROUP BY play_date
ORDER BY play_date
</if>
</select>
<!-- 地区展板播放统计 -->
<select
id=
"getBoardDistrictPageList"
resultMap=
"districtMap"
>
SELECT a.name area_name,sum(play_number) play_number,count(board_id) board_cnt from t_board_statistic s
left join t_area a on s.area_id = a.id
GROUP BY area_id
order by sum(play_number) desc,count(board_id) desc
</select>
</mapper>
src/main/resources/mapper/TDistrictBoardStatisticMapper.xml
0 → 100644
View file @
ec5ec0ba
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"cn.wisenergy.chnmuseum.party.mapper.TDistrictBoardStatisticMapper"
>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"cn.wisenergy.chnmuseum.party.model.TDistrictBoardStatistic"
>
<id
column=
"id"
property=
"id"
/>
<result
column=
"board_id"
property=
"boardId"
/>
<result
column=
"board_name"
property=
"boardName"
/>
<result
column=
"play_number"
property=
"playNumber"
/>
<result
column=
"year"
property=
"year"
/>
<result
column=
"month"
property=
"month"
/>
<result
column=
"organ_id"
property=
"organId"
/>
</resultMap>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
id, board_id, board_name, play_number, year, month, organ_id
</sql>
</mapper>
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