Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
wangxiaolu-export
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
promotion
wangxiaolu-export
Commits
179fe6ae
提交
179fe6ae
authored
7月 31, 2024
作者:
000516
提交者:
Coding
7月 31, 2024
浏览文件
操作
浏览文件
下载
差异文件
上传飞书数据添加是否已提交审批列
上传飞书数据添加是否已提交审批列
上级
9e0e41af
d5bcadb0
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
49 行增加
和
41 行删除
+49
-41
TemporaryActivityReportedDO.java
...olu/export/mapper/entity/TemporaryActivityReportedDO.java
+2
-0
ActivityToFeishuSheetServiceImpl.java
...export/service/impl/ActivityToFeishuSheetServiceImpl.java
+44
-41
TemporaryActivityReportedMapper.xml
...main/resources/mapper/TemporaryActivityReportedMapper.xml
+2
-0
WangxiaoluExportApplicationTests.java
...m/wangxiaolu/export/WangxiaoluExportApplicationTests.java
+1
-0
没有找到文件。
src/main/java/com/wangxiaolu/export/mapper/entity/TemporaryActivityReportedDO.java
浏览文件 @
179fe6ae
...
@@ -20,6 +20,8 @@ public class TemporaryActivityReportedDO implements Serializable {
...
@@ -20,6 +20,8 @@ public class TemporaryActivityReportedDO implements Serializable {
private
Integer
temporaryId
;
private
Integer
temporaryId
;
private
String
approveStatus
;
@TableField
(
exist
=
false
)
@TableField
(
exist
=
false
)
private
String
activityPattern
;
private
String
activityPattern
;
...
...
src/main/java/com/wangxiaolu/export/service/impl/ActivityToFeishuSheetServiceImpl.java
浏览文件 @
179fe6ae
...
@@ -120,6 +120,9 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
...
@@ -120,6 +120,9 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
// 活动形式
// 活动形式
row
.
add
(
rdo
.
getActivityPattern
());
row
.
add
(
rdo
.
getActivityPattern
());
// 是否提交审核
row
.
add
(
"APPROVED"
.
equals
(
rdo
.
getApproveStatus
())
?
"已审核"
:
"未提交"
);
// 推广活动销额(元)
// 推广活动销额(元)
row
.
add
(
"0"
);
row
.
add
(
"0"
);
...
@@ -148,24 +151,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
...
@@ -148,24 +151,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
List
<
TemporaryActivityPhotoDO
>
photosType7
=
Objects
.
isNull
(
photoTypeMap
.
get
(
7
))
?
new
ArrayList
<>()
:
photoTypeMap
.
get
(
7
);
List
<
TemporaryActivityPhotoDO
>
photosType7
=
Objects
.
isNull
(
photoTypeMap
.
get
(
7
))
?
new
ArrayList
<>()
:
photoTypeMap
.
get
(
7
);
int
photosType7Size
=
photosType7
.
size
();
int
photosType7Size
=
photosType7
.
size
();
// 真实pos证明反馈1 >>>
K
// 真实pos证明反馈1 >>>
if
(!(
photosType7Size
<
1
||
Objects
.
isNull
(
photosType7
.
get
(
0
))))
{
if
(!(
photosType7Size
<
1
||
Objects
.
isNull
(
photosType7
.
get
(
0
))))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
K"
,
"K
"
),
photosType7
.
get
(
0
).
getPhotoUrl
());
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
L"
,
"L
"
),
photosType7
.
get
(
0
).
getPhotoUrl
());
}
}
// 真实pos证明反馈2 >>>
L
// 真实pos证明反馈2 >>>
if
(!(
photosType7Size
<
2
||
Objects
.
isNull
(
photosType7
.
get
(
1
))))
{
if
(!(
photosType7Size
<
2
||
Objects
.
isNull
(
photosType7
.
get
(
1
))))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
L"
,
"L
"
),
photosType7
.
get
(
1
).
getPhotoUrl
());
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
M"
,
"M
"
),
photosType7
.
get
(
1
).
getPhotoUrl
());
}
}
// 真实pos证明反馈3 >>>
M
// 真实pos证明反馈3 >>>
if
(!(
photosType7Size
<
3
||
Objects
.
isNull
(
photosType7
.
get
(
2
))))
{
if
(!(
photosType7Size
<
3
||
Objects
.
isNull
(
photosType7
.
get
(
2
))))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
M"
,
"M
"
),
photosType7
.
get
(
2
).
getPhotoUrl
());
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
N"
,
"N
"
),
photosType7
.
get
(
2
).
getPhotoUrl
());
}
}
// 真实pos证明反馈4 >>>
N
// 真实pos证明反馈4 >>>
if
(!(
photosType7Size
<
4
||
Objects
.
isNull
(
photosType7
.
get
(
3
))))
{
if
(!(
photosType7Size
<
4
||
Objects
.
isNull
(
photosType7
.
get
(
3
))))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
N"
,
"N
"
),
photosType7
.
get
(
3
).
getPhotoUrl
());
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
O"
,
"O
"
),
photosType7
.
get
(
3
).
getPhotoUrl
());
}
}
log
.
info
(
"上传pos照片完成,行号:{}"
,
rowNumStr
);
log
.
info
(
"上传pos照片完成,行号:{}"
,
rowNumStr
);
...
@@ -174,24 +177,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
...
@@ -174,24 +177,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
*/
*/
Map
<
Integer
,
String
>
clockMap
=
activityClock
.
stream
().
collect
(
Collectors
.
toMap
(
TemporaryActivityPhotoDO:
:
getType
,
TemporaryActivityPhotoDO:
:
getPhotoUrl
));
Map
<
Integer
,
String
>
clockMap
=
activityClock
.
stream
().
collect
(
Collectors
.
toMap
(
TemporaryActivityPhotoDO:
:
getType
,
TemporaryActivityPhotoDO:
:
getPhotoUrl
));
// 上班打卡照片 >>>
O
// 上班打卡照片 >>>
if
(
clockMap
.
containsKey
(
4
))
{
if
(
clockMap
.
containsKey
(
4
))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
O"
,
"O
"
),
clockMap
.
get
(
4
));
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
P"
,
"P
"
),
clockMap
.
get
(
4
));
}
}
// 午休下班打卡照片 >>>
P
// 午休下班打卡照片 >>>
if
(
clockMap
.
containsKey
(
5
))
{
if
(
clockMap
.
containsKey
(
5
))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
P"
,
"P
"
),
clockMap
.
get
(
5
));
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
Q"
,
"Q
"
),
clockMap
.
get
(
5
));
}
}
// 午休上班打卡照片 >>>
Q
// 午休上班打卡照片 >>>
if
(
clockMap
.
containsKey
(
6
))
{
if
(
clockMap
.
containsKey
(
6
))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
Q"
,
"Q
"
),
clockMap
.
get
(
6
));
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
R"
,
"R
"
),
clockMap
.
get
(
6
));
}
}
// 下班打卡照片 >>>
R
// 下班打卡照片 >>>
if
(
clockMap
.
containsKey
(
7
))
{
if
(
clockMap
.
containsKey
(
7
))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
R"
,
"R
"
),
clockMap
.
get
(
7
));
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
S"
,
"S
"
),
clockMap
.
get
(
7
));
}
}
log
.
info
(
"上传打卡照片完成,行号:{}"
,
rowNumStr
);
log
.
info
(
"上传打卡照片完成,行号:{}"
,
rowNumStr
);
...
@@ -200,24 +203,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
...
@@ -200,24 +203,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
*/
*/
List
<
TemporaryActivityPhotoDO
>
photosType1
=
Objects
.
isNull
(
photoTypeMap
.
get
(
1
))
?
new
ArrayList
<>()
:
photoTypeMap
.
get
(
1
);
List
<
TemporaryActivityPhotoDO
>
photosType1
=
Objects
.
isNull
(
photoTypeMap
.
get
(
1
))
?
new
ArrayList
<>()
:
photoTypeMap
.
get
(
1
);
int
photosType1Size
=
photosType1
.
size
();
int
photosType1Size
=
photosType1
.
size
();
// 推广试吃照片1 >>>
S
// 推广试吃照片1 >>>
if
(!(
photosType1Size
<
1
||
Objects
.
isNull
(
photosType1
.
get
(
0
))))
{
if
(!(
photosType1Size
<
1
||
Objects
.
isNull
(
photosType1
.
get
(
0
))))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
S"
,
"S
"
),
photosType1
.
get
(
0
).
getPhotoUrl
());
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
T"
,
"T
"
),
photosType1
.
get
(
0
).
getPhotoUrl
());
}
}
// 推广试吃照片2 >>>
T
// 推广试吃照片2 >>>
if
(!(
photosType1Size
<
2
||
Objects
.
isNull
(
photosType1
.
get
(
1
))))
{
if
(!(
photosType1Size
<
2
||
Objects
.
isNull
(
photosType1
.
get
(
1
))))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
T"
,
"T
"
),
photosType1
.
get
(
1
).
getPhotoUrl
());
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
U"
,
"U
"
),
photosType1
.
get
(
1
).
getPhotoUrl
());
}
}
// 推广试吃照片3 >>>
U
// 推广试吃照片3 >>>
if
(!(
photosType1Size
<
3
||
Objects
.
isNull
(
photosType1
.
get
(
2
))))
{
if
(!(
photosType1Size
<
3
||
Objects
.
isNull
(
photosType1
.
get
(
2
))))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
U"
,
"U
"
),
photosType1
.
get
(
2
).
getPhotoUrl
());
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
V"
,
"V
"
),
photosType1
.
get
(
2
).
getPhotoUrl
());
}
}
// 推广试吃照片4 >>>
V
// 推广试吃照片4 >>>
if
(!(
photosType1Size
<
4
||
Objects
.
isNull
(
photosType1
.
get
(
3
))))
{
if
(!(
photosType1Size
<
4
||
Objects
.
isNull
(
photosType1
.
get
(
3
))))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
V"
,
"V
"
),
photosType1
.
get
(
3
).
getPhotoUrl
());
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
W"
,
"W
"
),
photosType1
.
get
(
3
).
getPhotoUrl
());
}
}
log
.
info
(
"上传推广-试吃照片完成,行号:{}"
,
rowNumStr
);
log
.
info
(
"上传推广-试吃照片完成,行号:{}"
,
rowNumStr
);
...
@@ -226,24 +229,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
...
@@ -226,24 +229,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
*/
*/
List
<
TemporaryActivityPhotoDO
>
photosType2
=
Objects
.
isNull
(
photoTypeMap
.
get
(
2
))
?
new
ArrayList
<>()
:
photoTypeMap
.
get
(
2
);
List
<
TemporaryActivityPhotoDO
>
photosType2
=
Objects
.
isNull
(
photoTypeMap
.
get
(
2
))
?
new
ArrayList
<>()
:
photoTypeMap
.
get
(
2
);
int
photosType2Size
=
photosType2
.
size
();
int
photosType2Size
=
photosType2
.
size
();
// 推广互动照片1 >>>
W
// 推广互动照片1 >>>
if
(!(
photosType2Size
<
1
||
Objects
.
isNull
(
photosType2
.
get
(
0
))))
{
if
(!(
photosType2Size
<
1
||
Objects
.
isNull
(
photosType2
.
get
(
0
))))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
W"
,
"W
"
),
photosType2
.
get
(
0
).
getPhotoUrl
());
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
X"
,
"X
"
),
photosType2
.
get
(
0
).
getPhotoUrl
());
}
}
// 推广互动照片2 >>>
X
// 推广互动照片2 >>>
if
(!(
photosType2Size
<
2
||
Objects
.
isNull
(
photosType2
.
get
(
1
))))
{
if
(!(
photosType2Size
<
2
||
Objects
.
isNull
(
photosType2
.
get
(
1
))))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
X"
,
"X
"
),
photosType2
.
get
(
1
).
getPhotoUrl
());
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
Y"
,
"Y
"
),
photosType2
.
get
(
1
).
getPhotoUrl
());
}
}
// 推广互动照片3 >>>
Y
// 推广互动照片3 >>>
if
(!(
photosType2Size
<
3
||
Objects
.
isNull
(
photosType2
.
get
(
2
))))
{
if
(!(
photosType2Size
<
3
||
Objects
.
isNull
(
photosType2
.
get
(
2
))))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
Y"
,
"Y
"
),
photosType2
.
get
(
2
).
getPhotoUrl
());
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"
Z"
,
"Z
"
),
photosType2
.
get
(
2
).
getPhotoUrl
());
}
}
// 推广互动照片4 >>>
Z
// 推广互动照片4 >>>
if
(!(
photosType2Size
<
4
||
Objects
.
isNull
(
photosType2
.
get
(
3
))))
{
if
(!(
photosType2Size
<
4
||
Objects
.
isNull
(
photosType2
.
get
(
3
))))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
Z"
,
"Z
"
),
photosType2
.
get
(
3
).
getPhotoUrl
());
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"
AA"
,
"AA
"
),
photosType2
.
get
(
3
).
getPhotoUrl
());
}
}
log
.
info
(
"上传推广-互动照片完成,行号:{}"
,
rowNumStr
);
log
.
info
(
"上传推广-互动照片完成,行号:{}"
,
rowNumStr
);
...
@@ -252,24 +255,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
...
@@ -252,24 +255,24 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
*/
*/
List
<
TemporaryActivityPhotoDO
>
photosType3
=
Objects
.
isNull
(
photoTypeMap
.
get
(
3
))
?
new
ArrayList
<>()
:
photoTypeMap
.
get
(
3
);
List
<
TemporaryActivityPhotoDO
>
photosType3
=
Objects
.
isNull
(
photoTypeMap
.
get
(
3
))
?
new
ArrayList
<>()
:
photoTypeMap
.
get
(
3
);
int
photosType3Size
=
photosType3
.
size
();
int
photosType3Size
=
photosType3
.
size
();
// 推广成交照片1 >>>
AA
// 推广成交照片1 >>>
if
(!(
photosType3Size
<
1
||
Objects
.
isNull
(
photosType3
.
get
(
0
))))
{
if
(!(
photosType3Size
<
1
||
Objects
.
isNull
(
photosType3
.
get
(
0
))))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"A
A"
,
"AA
"
),
photosType3
.
get
(
0
).
getPhotoUrl
());
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"A
B"
,
"AB
"
),
photosType3
.
get
(
0
).
getPhotoUrl
());
}
}
// 推广成交照片2 >>>
AB
// 推广成交照片2 >>>
if
(!(
photosType3Size
<
2
||
Objects
.
isNull
(
photosType3
.
get
(
1
))))
{
if
(!(
photosType3Size
<
2
||
Objects
.
isNull
(
photosType3
.
get
(
1
))))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"A
B"
,
"AB
"
),
photosType3
.
get
(
1
).
getPhotoUrl
());
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"A
C"
,
"AC
"
),
photosType3
.
get
(
1
).
getPhotoUrl
());
}
}
// 推广成交照片3 >>>
AC
// 推广成交照片3 >>>
if
(!(
photosType3Size
<
3
||
Objects
.
isNull
(
photosType3
.
get
(
2
))))
{
if
(!(
photosType3Size
<
3
||
Objects
.
isNull
(
photosType3
.
get
(
2
))))
{
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"A
C"
,
"AC
"
),
photosType3
.
get
(
2
).
getPhotoUrl
());
valuesImageToSheet
(
String
.
format
(
rangFormat
,
"A
D"
,
"AD
"
),
photosType3
.
get
(
2
).
getPhotoUrl
());
}
}
// 推广成交照片4 >>>
AD
// 推广成交照片4 >>>
if
(!(
photosType3Size
<
4
||
Objects
.
isNull
(
photosType3
.
get
(
3
))))
{
if
(!(
photosType3Size
<
4
||
Objects
.
isNull
(
photosType3
.
get
(
3
))))
{
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"A
D"
,
"AD
"
),
photosType3
.
get
(
3
).
getPhotoUrl
());
valuesImageToSheetByRobot2
(
String
.
format
(
rangFormat
,
"A
E"
,
"AE
"
),
photosType3
.
get
(
3
).
getPhotoUrl
());
}
}
log
.
info
(
"上传推广-成交照片完成,行号:{}"
,
rowNumStr
);
log
.
info
(
"上传推广-成交照片完成,行号:{}"
,
rowNumStr
);
}
}
...
@@ -278,7 +281,7 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
...
@@ -278,7 +281,7 @@ public class ActivityToFeishuSheetServiceImpl implements ActivityToFeishuSheetSe
String
redisKey
=
getRowNumRedisKey
();
String
redisKey
=
getRowNumRedisKey
();
String
rowNumStr
=
redisCache
.
get
(
redisKey
);
String
rowNumStr
=
redisCache
.
get
(
redisKey
);
Integer
rowNumNext
=
StringUtils
.
isBlank
(
rowNumStr
)
?
2
:
Integer
.
parseInt
(
rowNumStr
)
+
1
;
Integer
rowNumNext
=
StringUtils
.
isBlank
(
rowNumStr
)
?
2
:
Integer
.
parseInt
(
rowNumStr
)
+
1
;
String
range
=
sheetInfoD
.
getSheetId
()
+
"!A"
+
rowNumNext
+
":
J
"
+
rowNumNext
;
String
range
=
sheetInfoD
.
getSheetId
()
+
"!A"
+
rowNumNext
+
":
K
"
+
rowNumNext
;
Integer
rowNumEnd
=
feishuSheetUtils
.
appendValueToSheet
(
range
,
rowData
,
sheetInfoD
.
getSheetToken
(),
getFeishuTenantToken1
());
Integer
rowNumEnd
=
feishuSheetUtils
.
appendValueToSheet
(
range
,
rowData
,
sheetInfoD
.
getSheetToken
(),
getFeishuTenantToken1
());
if
(
rowNumEnd
<
1
)
{
if
(
rowNumEnd
<
1
)
{
...
...
src/main/resources/mapper/TemporaryActivityReportedMapper.xml
浏览文件 @
179fe6ae
...
@@ -9,6 +9,7 @@
...
@@ -9,6 +9,7 @@
<id
property=
"id"
column=
"id"
jdbcType=
"BIGINT"
/>
<id
property=
"id"
column=
"id"
jdbcType=
"BIGINT"
/>
<result
property=
"temporaryId"
column=
"temporary_id"
jdbcType=
"INTEGER"
/>
<result
property=
"temporaryId"
column=
"temporary_id"
jdbcType=
"INTEGER"
/>
<result
property=
"activityPattern"
column=
"activity_pattern"
jdbcType=
"VARCHAR"
/>
<result
property=
"activityPattern"
column=
"activity_pattern"
jdbcType=
"VARCHAR"
/>
<result
property=
"approveStatus"
column=
"approve_status"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeName"
column=
"store_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"storeName"
column=
"store_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"city"
column=
"city"
jdbcType=
"VARCHAR"
/>
<result
property=
"city"
column=
"city"
jdbcType=
"VARCHAR"
/>
<result
property=
"approveName"
column=
"approve_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"approveName"
column=
"approve_name"
jdbcType=
"VARCHAR"
/>
...
@@ -27,6 +28,7 @@
...
@@ -27,6 +28,7 @@
ar.store_id,
ar.store_id,
ar.store_name,
ar.store_name,
ar.activity_pattern,
ar.activity_pattern,
ar.approve_status,
ps.line_name,
ps.line_name,
qd.org_name
qd.org_name
from temporary_activity_reported ar
from temporary_activity_reported ar
...
...
src/test/java/com/wangxiaolu/export/WangxiaoluExportApplicationTests.java
浏览文件 @
179fe6ae
...
@@ -8,6 +8,7 @@ class WangxiaoluExportApplicationTests {
...
@@ -8,6 +8,7 @@ class WangxiaoluExportApplicationTests {
@Test
@Test
void
contextLoads
()
{
void
contextLoads
()
{
}
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论