Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
D
device-back
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
1
议题
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Matrix
device-back
Commits
a4d6023c
提交
a4d6023c
authored
9月 14, 2020
作者:
邓砥奕
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
更新task
上级
dd624d29
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
62 行增加
和
54 行删除
+62
-54
TaskServiceImpl.java
...om/tykj/dev/device/task/service/impl/TaskServiceImpl.java
+62
-54
没有找到文件。
dev-device/device-task/src/main/java/com/tykj/dev/device/task/service/impl/TaskServiceImpl.java
浏览文件 @
a4d6023c
...
...
@@ -6,8 +6,8 @@ import com.tykj.dev.device.task.repository.TaskDao;
import
com.tykj.dev.device.task.repository.TaskLogDao
;
import
com.tykj.dev.device.task.service.TaskService
;
import
com.tykj.dev.device.task.subject.bto.TaskBto
;
import
com.tykj.dev.device.task.subject.common.GlobalMap
;
import
com.tykj.dev.device.task.subject.common.StatusEnum
;
import
com.tykj.dev.device.task.subject.common.GlobalMap
;
import
com.tykj.dev.device.task.subject.domin.Task
;
import
com.tykj.dev.device.task.subject.domin.TaskLog
;
import
com.tykj.dev.device.task.subject.vo.TaskSelectVo
;
...
...
@@ -20,7 +20,6 @@ import com.tykj.dev.misc.utils.ResultUtil;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.jpa.domain.Specification
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
javax.persistence.Transient
;
...
...
@@ -62,6 +61,7 @@ public class TaskServiceImpl implements TaskService {
taskBto
.
setCurrentPoint
(
taskBto
.
getCurrentPoint
()
+
1
);
//set readList empty
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
update
(
taskBto
);
return
taskBto
;
}
...
...
@@ -69,7 +69,6 @@ public class TaskServiceImpl implements TaskService {
* <p>业务进行到下一个状态</p>
* <li>不指定待办用户</li>
* <li>添加自定义信息</li>
*
* @param customInfo 自定义信息
*/
@Override
...
...
@@ -83,13 +82,13 @@ public class TaskServiceImpl implements TaskService {
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
//set customInfo
taskBto
.
setCustomInfo
(
customInfo
);
update
(
taskBto
);
return
taskBto
;
}
/**
* <p>业务进行到下一个状态(指定待办用户)</p>
* <li>指定待办用户</li>
*
* @param userId 待办用户Id
*/
@Override
...
...
@@ -101,6 +100,7 @@ public class TaskServiceImpl implements TaskService {
taskBto
.
setCurrentPoint
(
taskBto
.
getCurrentPoint
()
+
1
);
//set readList empty
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
update
(
taskBto
);
return
taskBto
;
}
...
...
@@ -108,7 +108,6 @@ public class TaskServiceImpl implements TaskService {
* <p>业务进行到下一个状态(指定待办用户)</p>
* <li>指定待办用户</li>
* <li>添加自定义信息</li>
*
* @param userId 待办用户Id
* @param customInfo 自定义信息
*/
...
...
@@ -123,13 +122,13 @@ public class TaskServiceImpl implements TaskService {
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
//set customInfo
taskBto
.
setCustomInfo
(
customInfo
);
update
(
taskBto
);
return
taskBto
;
}
/**
* <p>业务进行到特殊状态</p>
* <li>不指定待办用户</li>
*
* @param statusEnum 状态枚举
*/
@Override
...
...
@@ -141,6 +140,7 @@ public class TaskServiceImpl implements TaskService {
taskBto
.
setCurrentPoint
(
taskBto
.
getCurrentPoint
()
+
1
);
//set readList empty
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
update
(
taskBto
);
return
taskBto
;
}
...
...
@@ -148,7 +148,6 @@ public class TaskServiceImpl implements TaskService {
* <p>业务进行到特殊状态</p>
* <li>不指定待办用户</li>
* <li>添加自定义信息</li>
*
* @param statusEnum 状态枚举
* @param customInfo 自定义信息
*/
...
...
@@ -163,13 +162,13 @@ public class TaskServiceImpl implements TaskService {
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
//set customInfo
taskBto
.
setCustomInfo
(
customInfo
);
update
(
taskBto
);
return
taskBto
;
}
/**
* <p>业务进行到特殊状态</p>
* <li>指定待办用户</li>
*
* @param statusEnum 状态枚举
* @param userId 待办用户Id
*/
...
...
@@ -182,6 +181,7 @@ public class TaskServiceImpl implements TaskService {
taskBto
.
setCurrentPoint
(
taskBto
.
getCurrentPoint
()
+
1
);
//set readList empty
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
update
(
taskBto
);
return
taskBto
;
}
...
...
@@ -189,7 +189,6 @@ public class TaskServiceImpl implements TaskService {
* <p>业务进行到特殊状态</p>
* <li>指定待办用户</li>
* <li>添加自定义信息</li>
*
* @param statusEnum 状态枚举
* @param userId 待办用户Id
* @param customInfo 自定义信息
...
...
@@ -205,6 +204,7 @@ public class TaskServiceImpl implements TaskService {
taskBto
.
setUserReadDetailList
(
new
ArrayList
<>());
//set customInfo
taskBto
.
setCustomInfo
(
customInfo
);
update
(
taskBto
);
return
taskBto
;
}
...
...
@@ -215,6 +215,7 @@ public class TaskServiceImpl implements TaskService {
public
TaskBto
moveToEnd
(
TaskBto
taskBto
)
{
//set status end
taskBto
.
setBillStatus
(
StatusEnum
.
END
.
id
);
update
(
taskBto
);
return
taskBto
;
}
...
...
@@ -225,6 +226,7 @@ public class TaskServiceImpl implements TaskService {
public
TaskBto
moveToArchive
(
TaskBto
taskBto
)
{
//set status archive
taskBto
.
setBillStatus
(
StatusEnum
.
ARCHIVE
.
id
);
update
(
taskBto
);
return
taskBto
;
}
...
...
@@ -263,7 +265,8 @@ public class TaskServiceImpl implements TaskService {
}
/**
* @param taskSelectVo 获取跟踪和待办业务列表
* @param taskSelectVo
* 获取跟踪和待办业务列表
*/
@Override
public
List
<
TaskUserVo
>
getList
(
TaskSelectVo
taskSelectVo
)
{
...
...
@@ -298,7 +301,7 @@ public class TaskServiceImpl implements TaskService {
Integer
num
=
taskSelectVo
.
getSelectNum
();
Integer
userId
=
userUtils
.
getCurrentUserId
();
//业务管理中的待办和跟踪
if
(
num
==
2
||
num
==
3
)
{
if
(
num
==
2
||
num
==
3
)
{
//查询出符合筛选条件的所有task
List
<
TaskUserVo
>
list
=
taskDao
.
findAll
(
getSelectSpecification
(
taskSelectVo
)).
stream
()
.
map
(
Task:
:
parse2Bto
)
...
...
@@ -306,10 +309,10 @@ public class TaskServiceImpl implements TaskService {
.
collect
(
Collectors
.
toList
());
//查询当前用户的跟踪和待办并和list按id取交集
List
<
TaskUserVo
>
taskUserVos
=
getList
(
taskSelectVo
).
stream
()
.
filter
(
taskUserVo
->
find
(
taskUserVo
.
getId
(),
list
)
>
-
1
)
.
filter
(
taskUserVo
->
find
(
taskUserVo
.
getId
(),
list
)>
-
1
)
.
collect
(
Collectors
.
toList
());
//判断是否需要按发起时间排序
if
(
taskSelectVo
.
getOrders
()
!=
null
)
{
if
(
taskSelectVo
.
getOrders
()
!=
null
)
{
if
(
"createTime"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getCoulmn
()))
{
if
(
"ASC"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getDirection
().
toString
()))
{
return
taskUtils
.
orderByCreateTimeAsc2
(
taskUserVos
);
...
...
@@ -321,21 +324,21 @@ public class TaskServiceImpl implements TaskService {
}
return
taskUserVos
;
}
if
(
num
==
4
||
num
==
5
||
num
==
1
||
num
==
0
)
{
if
(
num
==
4
||
num
==
5
||
num
==
1
||
num
==
0
)
{
//获取单位等级
Integer
level
=
userUtils
.
getCurrentUnitLevel
();
//获取该单位以及下属单位所有用户Id
List
<
Integer
>
idLists
=
userPublicService
.
findAllUserIdByUnitsName
(
userUtils
.
getCurrentUserUnitName
());
List
<
TaskUserVo
>
taskUserVos
=
new
ArrayList
<>();
//省能看到所有业务
if
(
level
==
1
)
{
if
(
level
==
1
)
{
taskUserVos
=
taskDao
.
findAll
(
getSelectSpecification
(
taskSelectVo
)).
stream
()
.
map
(
Task:
:
parse2Bto
)
.
map
(
TaskBto:
:
toVo
)
.
collect
(
Collectors
.
toList
());
}
//市或县只能看到涉及人员和idLists有交集的
if
(
level
==
2
||
level
==
3
)
{
if
(
level
==
2
||
level
==
3
)
{
taskUserVos
=
taskDao
.
findAll
(
getSelectSpecification
(
taskSelectVo
)).
stream
()
.
map
(
Task:
:
parse2Bto
)
.
map
(
TaskBto:
:
toVo
)
...
...
@@ -343,7 +346,7 @@ public class TaskServiceImpl implements TaskService {
.
collect
(
Collectors
.
toList
());
}
//set经办人,置顶以及阅读情况
for
(
TaskUserVo
taskUserVo
:
taskUserVos
)
{
for
(
TaskUserVo
taskUserVo
:
taskUserVos
)
{
List
<
Integer
>
idList
=
taskUserVo
.
getUserReadDetailList
();
List
<
Integer
>
idList2
=
taskUserVo
.
getTopFlagDetailList
();
if
(
taskUserVo
.
getInvolveUserIdList
()
!=
null
&&
taskUserVo
.
getInvolveUserIdList
().
size
()
>
0
)
{
...
...
@@ -364,7 +367,7 @@ public class TaskServiceImpl implements TaskService {
}
}
//判断是否需要按发起时间排序
if
(
taskSelectVo
.
getOrders
()
!=
null
)
{
if
(
taskSelectVo
.
getOrders
()
!=
null
)
{
if
(
"createTime"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getCoulmn
()))
{
if
(
"ASC"
.
equals
(
taskSelectVo
.
getOrders
().
get
(
0
).
getDirection
().
toString
()))
{
return
taskUtils
.
orderByCreateTimeAsc2
(
taskUserVos
);
...
...
@@ -375,7 +378,8 @@ public class TaskServiceImpl implements TaskService {
}
}
return
taskUserVos
;
}
else
{
}
else
{
throw
new
ApiException
(
ResultUtil
.
failed
(
"selectNum只能为0,1,2,3,4,5"
));
}
}
...
...
@@ -386,12 +390,13 @@ public class TaskServiceImpl implements TaskService {
*/
@Override
public
TaskBto
addInvolveUser
(
TaskBto
taskBto
,
Integer
userId
)
{
List
<
Integer
>
list
=
taskBto
.
getInvolveUserIdList
();
List
<
Integer
>
list
=
taskBto
.
getInvolveUserIdList
();
//添加涉及用户Id
list
.
add
(
userId
);
taskBto
.
setInvolveUserIdList
(
list
);
//指针后移
taskBto
.
setCurrentPoint
(
taskBto
.
getCurrentPoint
()
+
1
);
taskBto
.
setCurrentPoint
(
taskBto
.
getCurrentPoint
()+
1
);
update
(
taskBto
);
return
taskBto
;
}
...
...
@@ -415,7 +420,7 @@ public class TaskServiceImpl implements TaskService {
/**
* @param taskSelectVo 查询vo
*
查询跟踪和待办列表
* 查询跟踪和待办列表
* @return taskUserVo列表
*/
private
List
<
TaskUserVo
>
getTaskUserVoList
(
TaskSelectVo
taskSelectVo
)
{
...
...
@@ -423,7 +428,7 @@ public class TaskServiceImpl implements TaskService {
Integer
bussinessType
=
taskSelectVo
.
getBusinessType
();
//筛选出未完结和封存业务,映射成bto
List
<
TaskBto
>
taskBtos
=
taskDao
.
findAll
().
stream
()
.
filter
(
task
->
(!
task
.
getBillStatus
().
equals
(
StatusEnum
.
END
.
id
))
&&
(!
task
.
getBillStatus
().
equals
(
StatusEnum
.
ARCHIVE
.
id
)))
.
filter
(
task
->
(!
task
.
getBillStatus
().
equals
(
StatusEnum
.
END
.
id
))
&&
(!
task
.
getBillStatus
().
equals
(
StatusEnum
.
ARCHIVE
.
id
)))
.
map
(
Task:
:
parse2Bto
)
.
collect
(
Collectors
.
toList
());
//查询待办
...
...
@@ -435,15 +440,15 @@ public class TaskServiceImpl implements TaskService {
//查询所有的业务
if
(
bussinessType
==
null
)
{
List
<
TaskUserVo
>
taskUserVos
=
taskBtoList
.
stream
().
map
(
TaskBto:
:
toVo
).
collect
(
Collectors
.
toList
());
return
setTaskUserVo
(
taskUserVos
,
0
);
return
setTaskUserVo
(
taskUserVos
,
0
);
}
else
{
//查询工作台其它业务
if
(
bussinessType
==
0
)
{
List
<
TaskUserVo
>
taskUserVos
=
taskBtoList
.
stream
()
.
filter
(
taskBto
->
!
new
ArrayList
<>(
Arrays
.
asList
(
3
,
4
,
5
,
6
)).
contains
(
taskBto
.
getBusinessType
()))
.
filter
(
taskBto
->
!
new
ArrayList
<>(
Arrays
.
asList
(
3
,
4
,
5
,
6
)).
contains
(
taskBto
.
getBusinessType
()))
.
map
(
TaskBto:
:
toVo
)
.
collect
(
Collectors
.
toList
());
return
setTaskUserVo
(
taskUserVos
,
0
);
return
setTaskUserVo
(
taskUserVos
,
0
);
}
//查询某一业务
else
{
...
...
@@ -451,7 +456,7 @@ public class TaskServiceImpl implements TaskService {
.
filter
(
taskBto
->
taskBto
.
getBusinessType
().
equals
(
bussinessType
))
.
map
(
TaskBto:
:
toVo
)
.
collect
(
Collectors
.
toList
());
return
setTaskUserVo
(
taskUserVos
,
0
);
return
setTaskUserVo
(
taskUserVos
,
0
);
}
}
}
...
...
@@ -459,20 +464,20 @@ public class TaskServiceImpl implements TaskService {
if
(
taskSelectVo
.
getSelectNum
()
==
3
)
{
//涉及人员包括当前用户且指针对应UserId不是当前用户
List
<
TaskBto
>
taskBtoList
=
taskBtos
.
stream
()
.
filter
(
taskBto
->
taskBto
.
getInvolveUserIdList
().
contains
(
userId
)
&&
!
userId
.
equals
(
taskBto
.
getInvolveUserIdList
().
get
(
taskBto
.
getCurrentPoint
())))
.
filter
(
taskBto
->
taskBto
.
getInvolveUserIdList
().
contains
(
userId
)
&&
!
userId
.
equals
(
taskBto
.
getInvolveUserIdList
().
get
(
taskBto
.
getCurrentPoint
())))
.
collect
(
Collectors
.
toList
());
//查询所有业务
if
(
bussinessType
==
null
)
{
List
<
TaskUserVo
>
taskUserVos
=
taskBtoList
.
stream
().
map
(
TaskBto:
:
toVo
).
collect
(
Collectors
.
toList
());
return
setTaskUserVo
(
taskUserVos
,
1
);
return
setTaskUserVo
(
taskUserVos
,
1
);
}
else
{
//查询工作台其它业务
if
(
bussinessType
==
0
)
{
List
<
TaskUserVo
>
taskUserVos
=
taskBtoList
.
stream
()
.
filter
(
taskBto
->
!
new
ArrayList
<>(
Arrays
.
asList
(
3
,
4
,
5
,
6
)).
contains
(
taskBto
.
getBusinessType
()))
.
filter
(
taskBto
->
!
new
ArrayList
<>(
Arrays
.
asList
(
3
,
4
,
5
,
6
)).
contains
(
taskBto
.
getBusinessType
()))
.
map
(
TaskBto:
:
toVo
)
.
collect
(
Collectors
.
toList
());
return
setTaskUserVo
(
taskUserVos
,
1
);
return
setTaskUserVo
(
taskUserVos
,
1
);
}
//查询某一业务
else
{
...
...
@@ -480,7 +485,7 @@ public class TaskServiceImpl implements TaskService {
.
filter
(
taskBto
->
taskBto
.
getBusinessType
().
equals
(
bussinessType
))
.
map
(
TaskBto:
:
toVo
)
.
collect
(
Collectors
.
toList
());
return
setTaskUserVo
(
taskUserVos
,
1
);
return
setTaskUserVo
(
taskUserVos
,
1
);
}
}
}
else
{
...
...
@@ -491,7 +496,7 @@ public class TaskServiceImpl implements TaskService {
/**
* @param list taskUserVos
* @param type 0:set待办 1:set跟踪
*
set一些输出给前端的值
* set一些输出给前端的值
*/
private
List
<
TaskUserVo
>
setTaskUserVo
(
List
<
TaskUserVo
>
list
,
int
type
)
{
Integer
userId
=
userUtils
.
getCurrentUserId
();
...
...
@@ -528,7 +533,8 @@ public class TaskServiceImpl implements TaskService {
if
(
userTime
==
null
)
{
taskUserVo
.
setUserTime
(
"0天0小时"
);
taskUserVo
.
setUserTimeDate
(
new
Date
(
0
));
}
else
{
}
else
{
long
time
=
System
.
currentTimeMillis
()
-
userTime
.
getTime
();
int
day
=
new
Long
(
time
/
86_400_000
).
intValue
();
int
hour
=
new
Long
((
time
%
86_400_000
)
/
3_600_000
).
intValue
();
...
...
@@ -542,52 +548,54 @@ public class TaskServiceImpl implements TaskService {
/**
* @param taskId 业务id
*
获取当前用户上次处理业务时间
* 获取当前用户上次处理业务时间
*/
private
Date
getUserTime
(
Integer
taskId
)
{
List
<
TaskLog
>
list
=
taskLogDao
.
getAllByTaskId
(
taskId
);
if
(
list
.
size
()
>
0
)
{
if
(
list
.
size
()
>
0
)
{
//筛选出当前用户操作该业务的所有日志,根据业务日志的创建时间降序排列,得到最新的上一次操作时间
List
<
TaskLog
>
taskLogs
=
taskUtils
.
orderByCreateTimeDesc
(
list
.
stream
().
filter
(
taskLog
->
taskLog
.
getCreateUserId
().
equals
(
userUtils
.
getCurrentUserId
())).
collect
(
Collectors
.
toList
()));
return
taskLogs
.
get
(
0
).
getCreateTime
();
}
else
{
}
else
{
return
null
;
}
}
/**
* @param taskSelectVo task查询器
* @param taskSelectVo
* task查询器
*/
private
Specification
<
Task
>
getSelectSpecification
(
TaskSelectVo
taskSelectVo
)
{
private
Specification
<
Task
>
getSelectSpecification
(
TaskSelectVo
taskSelectVo
){
PredicateBuilder
<
Task
>
predicateBuilder
=
Specifications
.
and
();
if
(
taskSelectVo
.
getBusinessType
()
!=
null
)
{
if
(
taskSelectVo
.
getBusinessType
()
!=
null
)
{
predicateBuilder
.
eq
(
"businessType"
,
taskSelectVo
.
getBusinessType
());
}
if
(
taskSelectVo
.
getContent
()
!=
null
)
{
if
(
taskSelectVo
.
getContent
()
!=
null
)
{
Class
<
Task
>
taskEntityClass
=
Task
.
class
;
Field
[]
declaredFields
=
taskEntityClass
.
getDeclaredFields
();
PredicateBuilder
<
Task
>
p
=
Specifications
.
or
();
for
(
Field
field
:
declaredFields
)
{
if
(
field
.
getType
().
equals
(
String
.
class
)
&&
field
.
getAnnotation
(
Transient
.
class
)
==
null
)
{
if
(
field
.
getType
().
equals
(
String
.
class
)
&&
field
.
getAnnotation
(
Transient
.
class
)==
null
)
{
p
.
like
(
field
.
getName
(),
"%"
+
taskSelectVo
.
getContent
()
+
"%"
);
}
}
predicateBuilder
.
predicate
(
p
.
build
());
}
if
(
taskSelectVo
.
getStartTime
()
!=
null
)
{
if
(
taskSelectVo
.
getStartTime
()
!=
null
)
{
predicateBuilder
.
gt
(
"createTime"
,
taskSelectVo
.
getStartTime
());
}
if
(
taskSelectVo
.
getEndTime
()
!=
null
)
{
if
(
taskSelectVo
.
getEndTime
()
!=
null
)
{
predicateBuilder
.
lt
(
"createTime"
,
taskSelectVo
.
getEndTime
());
}
if
(
taskSelectVo
.
getSelectNum
()
==
4
)
{
predicateBuilder
.
eq
(
"billStatus"
,
StatusEnum
.
END
.
id
);
if
(
taskSelectVo
.
getSelectNum
()
==
4
)
{
predicateBuilder
.
eq
(
"billStatus"
,
StatusEnum
.
END
.
id
);
}
if
(
taskSelectVo
.
getSelectNum
()
==
5
)
{
predicateBuilder
.
eq
(
"billStatus"
,
StatusEnum
.
ARCHIVE
.
id
);
if
(
taskSelectVo
.
getSelectNum
()
==
5
)
{
predicateBuilder
.
eq
(
"billStatus"
,
StatusEnum
.
ARCHIVE
.
id
);
}
if
(
taskSelectVo
.
getSelectNum
()
==
1
)
{
predicateBuilder
.
eq
(
"createUserId"
,
userUtils
.
getCurrentUnitId
());
if
(
taskSelectVo
.
getSelectNum
()
==
1
)
{
predicateBuilder
.
eq
(
"createUserId"
,
userUtils
.
getCurrentUnitId
());
}
return
predicateBuilder
.
build
();
}
...
...
@@ -595,11 +603,11 @@ public class TaskServiceImpl implements TaskService {
/**
* 判断list中是否包含某个id的taskUserVo,若不存在返回-1,存在则返回第一次出现的索引值
*/
int
find
(
Integer
id
,
List
<
TaskUserVo
>
list
)
{
int
find
(
Integer
id
,
List
<
TaskUserVo
>
list
)
{
int
index
=
-
1
;
if
(
list
!=
null
&&
list
.
size
()
>
0
)
{
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
if
(
list
.
get
(
i
).
getId
().
equals
(
id
))
{
if
(
list
!=
null
&&
list
.
size
()>
0
)
{
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
if
(
list
.
get
(
i
).
getId
().
equals
(
id
)){
index
=
i
;
break
;
}
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论