Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gdtel-gztel-school-center
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
吴学德
gdtel-gztel-school-center
Commits
df3ddfd9
Commit
df3ddfd9
authored
Mar 12, 2020
by
吴学德
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master'
parents
8153a221
d9c5758a
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
351 additions
and
55 deletions
+351
-55
common/src/main/java/com/winsun/mapper/OrderMapper.java
+28
-0
common/src/main/java/com/winsun/utils/ImportExcel.java
+257
-0
deploy/prod/upload.sh
+18
-0
deploy/prod/winsun-docker-application-list/docker-compose.yml
+16
-35
deploy/upload.sh
+0
-19
gateway/src/main/resources/application-prod.yml
+1
-1
service-manager/src/main/java/com/winsun/controller/OrderController.java
+0
-0
service-manager/src/main/java/com/winsun/controller/hhrUserController.java
+12
-0
service-manager/src/main/java/com/winsun/controller/supervisorController.java
+19
-0
No files found.
common/src/main/java/com/winsun/mapper/OrderMapper.java
View file @
df3ddfd9
package
com
.
winsun
.
mapper
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Map
;
import
org.apache.ibatis.annotations.Mapper
;
import
org.apache.ibatis.annotations.Param
;
import
org.apache.ibatis.annotations.Select
;
import
org.apache.ibatis.annotations.Update
;
import
org.springframework.stereotype.Component
;
import
com.baomidou.mybatisplus.mapper.BaseMapper
;
...
...
@@ -22,4 +24,30 @@ public interface OrderMapper extends BaseMapper<Order> {
@Select
(
"select * from `hhr_order_history` where order_id = #{oredrId}"
)
List
<
Map
<
String
,
Object
>>
selectOrderHis
(
String
oredrId
);
@Update
(
"update `hhr_order` set order_status = #{orderStatus}, accept_name = #{acceptName},"
+
" accept_result = #{acceptResult}, accept_comment = #{acceptComment}, accept_date = #{acceptDate} "
+
" where order_number = #{orderNumber}"
)
Integer
updateOrderSUByOrderNumberIsNotNull
(
@Param
(
"orderNumber"
)
String
orderNumber
,
@Param
(
"orderStatus"
)
String
orderStatus
,
@Param
(
"acceptName"
)
String
acceptName
,
@Param
(
"acceptResult"
)
String
acceptResult
,
@Param
(
"acceptComment"
)
String
acceptComment
,
@Param
(
"acceptDate"
)
Date
acceptDate
);
@Update
(
"update `hhr_order` set order_status = #{orderStatus}, accept_name = #{acceptName},"
+
" accept_result = #{acceptResult}, accept_date = #{acceptDate} "
+
" where order_number = #{orderNumber}"
)
Integer
updateOrderSUByOrderNumberIsNull
(
@Param
(
"orderNumber"
)
String
orderNumber
,
@Param
(
"orderStatus"
)
String
orderStatus
,
@Param
(
"acceptName"
)
String
acceptName
,
@Param
(
"acceptResult"
)
String
acceptResult
,
@Param
(
"acceptDate"
)
Date
acceptDate
);
@Update
(
"update `hhr_order` set order_status = #{orderStatus},company = #{company},kuaidi_order = #{kuaidiOrder},send_type = #{sendType} where order_number = #{orderNumber}"
)
Integer
updateOrderKDIsNotNull
(
@Param
(
"orderNumber"
)
String
orderNumber
,
@Param
(
"company"
)
String
company
,
@Param
(
"kuaidiOrder"
)
String
kuaidiOrder
,
@Param
(
"sendType"
)
String
sendType
,
@Param
(
"orderStatus"
)
String
orderStatus
);
@Update
(
"update `hhr_order` set order_status = #{orderStatus},send_type = #{sendType} where order_number = #{orderNumber}"
)
Integer
updateOrderKDIsNull
(
@Param
(
"orderNumber"
)
String
orderNumber
,
@Param
(
"sendType"
)
String
sendType
,
@Param
(
"orderStatus"
)
String
orderStatus
);
@Select
(
"select id from `hhr_order` where order_number = #{orderNumber}"
)
String
selectIdByOrderNumber
(
String
orderNumber
);
@Select
(
"select xb_order_id xbOrderId from `hhr_order` where order_number = #{orderNumber}"
)
String
selectxbOrderIdByOrderNumber
(
String
orderNumber
);
}
common/src/main/java/com/winsun/utils/ImportExcel.java
0 → 100644
View file @
df3ddfd9
package
com
.
winsun
.
utils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.poi.hssf.usermodel.HSSFWorkbook
;
import
org.apache.poi.openxml4j.exceptions.InvalidFormatException
;
import
org.apache.poi.ss.usermodel.*
;
import
org.apache.poi.xssf.usermodel.XSSFWorkbook
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.web.multipart.MultipartFile
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.util.ArrayList
;
import
java.util.LinkedHashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* 导入Excel文件(支持“XLS”和“XLSX”格式)
* @author
* @version
*/
public
class
ImportExcel
{
private
static
Logger
log
=
LoggerFactory
.
getLogger
(
ImportExcel
.
class
);
/**
* 工作薄对象
*/
private
Workbook
wb
;
/**
* 工作表对象
*/
private
Sheet
sheet
;
/**
* 标题行号
*/
private
int
headerNum
;
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
String
fileName
,
int
headerNum
)
throws
InvalidFormatException
,
IOException
{
this
(
new
File
(
fileName
),
headerNum
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
File
file
,
int
headerNum
)
throws
InvalidFormatException
,
IOException
{
this
(
file
,
headerNum
,
0
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
String
fileName
,
int
headerNum
,
int
sheetIndex
)
throws
InvalidFormatException
,
IOException
{
this
(
new
File
(
fileName
),
headerNum
,
sheetIndex
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
File
file
,
int
headerNum
,
int
sheetIndex
)
throws
InvalidFormatException
,
IOException
{
this
(
file
.
getName
(),
new
FileInputStream
(
file
),
headerNum
,
sheetIndex
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
MultipartFile
multipartFile
,
int
headerNum
,
int
sheetIndex
)
throws
InvalidFormatException
,
IOException
{
this
(
multipartFile
.
getOriginalFilename
(),
multipartFile
.
getInputStream
(),
headerNum
,
sheetIndex
);
}
/**
* 构造函数
* @param headerNum 标题行号,数据行号=标题行号+1
* @param sheetIndex 工作表编号
* @throws InvalidFormatException
* @throws IOException
*/
public
ImportExcel
(
String
fileName
,
InputStream
is
,
int
headerNum
,
int
sheetIndex
)
throws
InvalidFormatException
,
IOException
{
if
(
StringUtils
.
isBlank
(
fileName
)){
throw
new
RuntimeException
(
"导入文档为空!"
);
}
else
if
(
fileName
.
toLowerCase
().
endsWith
(
"xls"
)){
this
.
wb
=
new
HSSFWorkbook
(
is
);
}
else
if
(
fileName
.
toLowerCase
().
endsWith
(
"xlsx"
)){
this
.
wb
=
new
XSSFWorkbook
(
is
);
}
else
{
throw
new
RuntimeException
(
"文档格式不正确!"
);
}
if
(
this
.
wb
.
getNumberOfSheets
()<
sheetIndex
){
throw
new
RuntimeException
(
"文档中没有工作表!"
);
}
this
.
sheet
=
this
.
wb
.
getSheetAt
(
sheetIndex
);
this
.
headerNum
=
headerNum
;
log
.
debug
(
"Initialize success."
);
}
/**
* 获取行对象
* @param rownum
* @return
*/
public
Row
getRow
(
int
rownum
){
return
this
.
sheet
.
getRow
(
rownum
);
}
/**
* 获取数据行号
* @return
*/
public
int
getDataRowNum
(){
return
headerNum
+
1
;
}
/**
* 获取最后一个数据行号
* @return
*/
public
int
getLastDataRowNum
(){
return
this
.
sheet
.
getLastRowNum
()+
headerNum
;
}
/**
* 获取最后一个列号
* @return
*/
public
int
getLastCellNum
(){
return
this
.
getRow
(
headerNum
).
getLastCellNum
();
}
/**
* 获取单元格值
* @param row 获取的行
* @param column 获取单元格列号
* @return 单元格值
*/
public
Object
getCellValue
(
Row
row
,
int
column
){
Object
val
=
""
;
try
{
Cell
cell
=
row
.
getCell
(
column
);
if
(
cell
!=
null
){
if
(
cell
.
getCellType
()
==
CellType
.
NUMERIC
){
val
=
cell
.
getNumericCellValue
();
// DecimalFormat df = new DecimalFormat("0");
// val = df.format(cell.getNumericCellValue());
}
else
if
(
cell
.
getCellType
()
==
CellType
.
STRING
){
val
=
cell
.
getStringCellValue
();
}
else
if
(
cell
.
getCellType
()
==
CellType
.
FORMULA
){
val
=
cell
.
getCellFormula
();
}
else
if
(
cell
.
getCellType
()
==
CellType
.
BOOLEAN
){
val
=
cell
.
getBooleanCellValue
();
}
else
if
(
cell
.
getCellType
()
==
CellType
.
ERROR
){
val
=
cell
.
getErrorCellValue
();
}
}
}
catch
(
Exception
e
)
{
return
val
;
}
return
val
;
}
public
List
<
List
<
String
>>
getDataList
(){
List
<
List
<
String
>>
data
=
new
ArrayList
<>();
int
sum
=
sheet
.
getLastRowNum
();
Row
fristCount
=
sheet
.
getRow
(
0
);
int
cellCount
=
fristCount
.
getLastCellNum
();
for
(
int
i
=
headerNum
;
i
<=
sum
;
i
++){
Row
row
=
sheet
.
getRow
(
i
);
List
<
String
>
list
=
new
ArrayList
<>();
for
(
int
j
=
0
;
j
<
cellCount
;
j
++){
String
result
=
""
;
result
=
getCellValue
(
row
,
j
).
toString
();
list
.
add
(
result
.
trim
());
}
data
.
add
(
list
);
}
return
data
;
}
public
List
<
Map
<
String
,
Object
>>
getDataListMap
(){
List
<
Map
<
String
,
Object
>>
data
=
new
ArrayList
<>();
int
sum
=
sheet
.
getLastRowNum
();
for
(
int
i
=
headerNum
;
i
<=
sum
;
i
++){
Row
row
=
sheet
.
getRow
(
i
);
if
(
row
!=
null
&&
row
.
getCell
(
0
)!=
null
&&
!
""
.
equals
(
row
.
getCell
(
0
))){
Map
<
String
,
Object
>
map
=
new
LinkedHashMap
<
String
,
Object
>();
int
cellCount
=
row
.
getLastCellNum
();
for
(
int
j
=
0
;
j
<
cellCount
;
j
++){
String
result
=
""
;
result
=
getCellValue
(
row
,
j
).
toString
();
map
.
put
(
index
[
j
],
result
);
}
data
.
add
(
map
);
}
}
return
data
;
}
static
String
[]
index
=
{
"a"
,
"b"
,
"c"
,
"d"
,
"e"
,
"f"
,
"g"
,
"h"
,
"i"
,
"j"
,
"k"
,
"l"
,
"m"
,
"n"
,
"o"
,
"p"
,
"q"
,
"r"
,
"s"
,
"t"
,
"u"
,
"v"
,
"w"
,
"x"
,
"y"
,
"z"
,
"aa"
,
"ab"
,
"ac"
,
"ad"
,
"ae"
,
"af"
,
"ag"
,
"ah"
,
"ai"
,
"aj"
,
"ak"
,
"al"
,
"am"
,
"an"
,
"ao"
,
"ap"
,
"aq"
,
"ar"
,
"as"
,
"at"
,
"au"
,
"av"
,
"aw"
,
"ax"
,
"ay"
,
"az"
,
"ba"
,
"bb"
,
"bc"
,
"bd"
,
"be"
,
"bf"
,
"bg"
,
"bh"
,
"bi"
,
"bj"
,
"bk"
,
"bl"
,
"bm"
,
"bn"
,
"bo"
,
"bp"
,
"bq"
,
"br"
,
"bs"
,
"bt"
,
"bu"
,
"bv"
,
"bw"
,
"bx"
,
"by"
,
"bz"
,
"ca"
,
"cb"
,
"cc"
,
"cd"
,
"ce"
,
"cf"
,
"cg"
,
"ch"
,
"ci"
,
"cj"
,
"ck"
,
"cl"
,
"cm"
,
"cn"
,
"co"
,
"cp"
,
"cq"
,
"cr"
,
"cs"
,
"ct"
,
"cu"
,
"cv"
,
"cw"
,
"cx"
,
"cy"
,
"cz"
};
// /**
// * 导入测试
// */
// public static void main(String[] args) throws Throwable {
//
// ImportExcel ei = new ImportExcel("target/export.xlsx", 1);
//
// for (int i = ei.getDataRowNum(); i < ei.getLastDataRowNum(); i++) {
// Row row = ei.getRow(i);
// for (int j = 0; j < ei.getLastCellNum(); j++) {
// Object val = ei.getCellValue(row, j);
// System.out.print(val+", ");
// }
// System.out.print("\n");
// }
//
// }
}
deploy/prod/upload.sh
0 → 100755
View file @
df3ddfd9
#!/bin/bash
cp ../../eureka/target/
*
.jar winsun-docker-application-list/eureka/
cp ../../gateway/target/
*
.jar winsun-docker-application-list/gateway/
cp ../../core-service/target/
*
.jar winsun-docker-application-list/core/
cp ../../apply-net/target/
*
.jar winsun-docker-application-list/gdtel-gztel-school-center/applynet/
cp ../../service-manager/target/
*
.jar winsun-docker-application-list/gdtel-gztel-school-center/manager/
cp ../../new-user/target/
*
.jar winsun-docker-application-list/gdtel-gztel-school-center/newuser/
cp ../../old-user/target/
*
.jar winsun-docker-application-list/gdtel-gztel-school-center/olduser/
cp ../../task/target/
*
.jar winsun-docker-application-list/gdtel-gztel-school-center/task/
# scp -r winsun-docker-application-list/eureka/eureka.jar liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/eureka/eureka.jar
# scp -r winsun-docker-application-list/gateway/gateway.jar liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/gateway/gateway.jar
# scp -r winsun-docker-application-list/core/core.jar liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/core/core.jar
# scp -r winsun-docker-application-list/* liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/
scp
-r
winsun-docker-application-list/gdtel-gztel-school-center/
*
liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/gdtel-gztel-school-center/
deploy/prod/winsun-docker-application-list/docker-compose.yml
View file @
df3ddfd9
...
...
@@ -11,14 +11,25 @@ services:
container_name
:
redis
ports
:
-
"
6379:6379"
es
:
image
:
elasticsearch
container_name
:
es
ports
:
-
"
9200:9200"
-
"
9300:9300"
environment
:
-
"
discovery.type=single-node"
deploy
:
resources
:
limits
:
memory
:
4G
reservations
:
memory
:
1G
eureka
:
image
:
eureka
container_name
:
eureka
ports
:
-
"
20000:20000"
build
:
context
:
eureka/
dockerfile
:
Dockerfile
depends_on
:
-
rabbitmq
deploy
:
...
...
@@ -32,9 +43,6 @@ services:
container_name
:
gateway
ports
:
-
"
10001:10001"
build
:
context
:
gateway/
dockerfile
:
Dockerfile
depends_on
:
-
rabbitmq
-
eureka
...
...
@@ -47,9 +55,6 @@ services:
core
:
image
:
core
container_name
:
core
build
:
context
:
core/
dockerfile
:
Dockerfile
ports
:
-
"
10002:10002"
depends_on
:
...
...
@@ -64,9 +69,6 @@ services:
gdtelgztelschoolcentermanager
:
image
:
gdtelgztelschoolcentermanager
container_name
:
gdtelgztelschoolcentermanager
build
:
context
:
gdtel-gztel-school-center/manager/
dockerfile
:
Dockerfile
ports
:
-
"
11091:11091"
depends_on
:
...
...
@@ -83,9 +85,6 @@ services:
gdtelgztelschoolcentertask
:
image
:
gdtelgztelschoolcentertask
container_name
:
gdtelgztelschoolcentertask
build
:
context
:
gdtel-gztel-school-center/task/
dockerfile
:
Dockerfile
ports
:
-
"
11191:11191"
-
"
8199:8199"
...
...
@@ -103,9 +102,6 @@ services:
gdtelgztelschoolcenterapplynet
:
image
:
gdtelgztelschoolcenterapplynet
container_name
:
gdtelgztelschoolcenterapplynet
build
:
context
:
gdtel-gztel-school-center/applynet/
dockerfile
:
Dockerfile
ports
:
-
"
11092:11092"
depends_on
:
...
...
@@ -122,9 +118,6 @@ services:
gdtelgztelschoolcenternewuser
:
image
:
gdtelgztelschoolcenternewuser
container_name
:
gdtelgztelschoolcenternewuser
build
:
context
:
gdtel-gztel-school-center/newuser/
dockerfile
:
Dockerfile
ports
:
-
"
11093:11093"
depends_on
:
...
...
@@ -141,9 +134,6 @@ services:
gdtelgztelschoolcenterolduser
:
image
:
gdtelgztelschoolcenterolduser
container_name
:
gdtelgztelschoolcenterolduser
build
:
context
:
gdtel-gztel-school-center/olduser/
dockerfile
:
Dockerfile
ports
:
-
"
11094:11094"
depends_on
:
...
...
@@ -160,9 +150,6 @@ services:
gdtelgztelschoolcenterui
:
image
:
gdtelgztelschoolcenterui
container_name
:
gdtelgztelschoolcenterui
build
:
context
:
gdtel-gztel-school-center/ui/
dockerfile
:
Dockerfile
ports
:
-
"
11090:11090"
depends_on
:
...
...
@@ -174,15 +161,12 @@ services:
deploy
:
resources
:
limits
:
memory
:
2
00M
memory
:
1
00M
reservations
:
memory
:
100M
winsunoaui
:
image
:
winsunoaui
container_name
:
winsunoaui
build
:
context
:
winsun-oa/ui/
dockerfile
:
Dockerfile
ports
:
-
"
11080:11080"
depends_on
:
...
...
@@ -194,7 +178,7 @@ services:
deploy
:
resources
:
limits
:
memory
:
2
00M
memory
:
1
00M
reservations
:
memory
:
100M
winsunoareport
:
...
...
@@ -202,9 +186,6 @@ services:
container_name
:
winsunoareport
ports
:
-
"
10003:10003"
build
:
context
:
winsun-oa/report/
dockerfile
:
Dockerfile
depends_on
:
-
rabbitmq
-
redis
...
...
deploy/upload.sh
deleted
100755 → 0
View file @
8153a221
#!/bin/bash
cp ../eureka/target/
*
.jar prod/winsun-docker-application-list/eureka/
cp ../gateway/target/
*
.jar prod/winsun-docker-application-list/gateway/
cp ../core-service/target/
*
.jar prod/winsun-docker-application-list/core/
cp ../apply-net/target/
*
.jar prod/winsun-docker-application-list/gdtel-gztel-school-center/applynet/
cp ../service-manager/target/
*
.jar prod/winsun-docker-application-list/gdtel-gztel-school-center/manager/
cp ../new-user/target/
*
.jar prod/winsun-docker-application-list/gdtel-gztel-school-center/newuser/
cp ../old-user/target/
*
.jar prod/winsun-docker-application-list/gdtel-gztel-school-center/olduser/
cp ../renewal-user/target/
*
.jar prod/winsun-docker-application-list/gdtel-gztel-school-center/renewaluser/
cp ../task/target/
*
.jar prod/winsun-docker-application-list/gdtel-gztel-school-center/task/
# scp -r prod/winsun-docker-application-list/eureka/eureka.jar liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/eureka/eureka.jar
# scp -r prod/winsun-docker-application-list/gateway/gateway.jar liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/gateway/gateway.jar
# scp -r prod/winsun-docker-application-list/core/core.jar liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/core/core.jar
# scp -r prod/winsun-docker-application-list/ liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list
scp
-r
prod/winsun-docker-application-list/gdtel-gztel-school-center/
*
liph@172.18.101.171:/datas/apps/web/jars/winsun-docker-application-list/gdtel-gztel-school-center/
gateway/src/main/resources/application-prod.yml
View file @
df3ddfd9
...
...
@@ -29,7 +29,7 @@ spring:
max-file-size
:
100MB
datasource
:
driver-class-name
:
com.mysql.jdbc.Driver
url
:
jdbc:mysql://172.18.101.171:3306/
ws_project
?useSSL=false
url
:
jdbc:mysql://172.18.101.171:3306/
school_center
?useSSL=false
username
:
root
password
:
AMrGBg6ZSsRrDLs6
zuul
:
...
...
service-manager/src/main/java/com/winsun/controller/OrderController.java
View file @
df3ddfd9
This diff is collapsed.
Click to expand it.
service-manager/src/main/java/com/winsun/controller/hhrUserController.java
0 → 100644
View file @
df3ddfd9
package
com
.
winsun
.
controller
;
import
com.winsun.auth.core.base.controller.BaseController
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@Slf4j
@RestController
@RequestMapping
(
"/hhrUser"
)
public
class
hhrUserController
extends
BaseController
{
}
service-manager/src/main/java/com/winsun/controller/supervisorController.java
0 → 100644
View file @
df3ddfd9
package
com
.
winsun
.
controller
;
import
com.winsun.auth.core.base.controller.BaseController
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* @Author: 张宸
* @Date: 2020年3月11日15:12:46
*/
@Slf4j
@RestController
@RequestMapping
(
"/supervisor"
)
public
class
supervisorController
extends
BaseController
{
}
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