Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-backend
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
AutogeneralShanghai
yd-backend
Commits
2c5cab57
Commit
2c5cab57
authored
Jan 19, 2021
by
jianan
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
电子报聘保存薪资单图片接口
parent
2ce1a0ff
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
110 additions
and
9 deletions
+110
-9
yd-api/src/main/java/com/yd/api/practitioner/PractitionerHiringController.java
+13
-0
yd-api/src/main/java/com/yd/api/practitioner/service/PractitionerHiringService.java
+2
-0
yd-api/src/main/java/com/yd/api/practitioner/service/impl/PractitionerHiringServiceImpl.java
+26
-1
yd-api/src/main/java/com/yd/api/practitioner/vo/hiring/SavePayRollPictureRequestVO.java
+9
-0
yd-api/src/main/java/com/yd/api/practitioner/vo/hiring/SavePayrollPictureResponseVO.java
+10
-0
yd-api/src/main/java/com/yd/dal/entity/agms/hiring/PractitionerHiringBasicInfo.java
+17
-3
yd-api/src/main/java/com/yd/dal/entity/customer/AclPractitionerHiringBasicInfo.java
+5
-0
yd-api/src/main/java/com/yd/dal/entity/practitioner/hiring/HiringBasicInfo.java
+18
-4
yd-api/src/main/resources/mapper/agms/AgmsHiringMapper.xml
+2
-0
yd-api/src/main/resources/mapper/customer/AclPractitionerHiringBasicInfoMapper.xml
+6
-1
yd-api/src/main/resources/mapper/practitioner/PractitionerHiringMapper.xml
+2
-0
No files found.
yd-api/src/main/java/com/yd/api/practitioner/PractitionerHiringController.java
View file @
2c5cab57
...
@@ -84,6 +84,19 @@ public class PractitionerHiringController {
...
@@ -84,6 +84,19 @@ public class PractitionerHiringController {
}
}
/**
/**
* 保存报聘经纪人薪资单图片
*
*/
@RequestMapping
(
"/savePayrollPicture"
)
public
Object
savePayrollPicture
(
@RequestBody
SavePayRollPictureRequestVO
requestVO
){
JsonResult
result
=
new
JsonResult
();
SavePayrollPictureResponseVO
responseVO
=
practitionerHiringService
.
savePayrollPicture
(
requestVO
);
result
.
addResult
(
responseVO
);
result
.
setData
(
responseVO
);
return
result
;
}
/**
* 保存报聘经纪人身份证正反面图片
* 保存报聘经纪人身份证正反面图片
*
*
*/
*/
...
...
yd-api/src/main/java/com/yd/api/practitioner/service/PractitionerHiringService.java
View file @
2c5cab57
...
@@ -50,4 +50,6 @@ public interface PractitionerHiringService {
...
@@ -50,4 +50,6 @@ public interface PractitionerHiringService {
QueryWholeInfoResponseVO
queryWholeInfo
(
HiringBasicInfoIdRequestVO
requestVO
);
QueryWholeInfoResponseVO
queryWholeInfo
(
HiringBasicInfoIdRequestVO
requestVO
);
CommonResultResponseVO
saveDigitalSignatures
(
SaveDigitalSignaturesRequestVO
requestVO
);
CommonResultResponseVO
saveDigitalSignatures
(
SaveDigitalSignaturesRequestVO
requestVO
);
SavePayrollPictureResponseVO
savePayrollPicture
(
SavePayRollPictureRequestVO
requestVO
);
}
}
yd-api/src/main/java/com/yd/api/practitioner/service/impl/PractitionerHiringServiceImpl.java
View file @
2c5cab57
...
@@ -9,7 +9,6 @@ import com.yd.dal.entity.meta.MdPractitionerHiringApproveSteps;
...
@@ -9,7 +9,6 @@ import com.yd.dal.entity.meta.MdPractitionerHiringApproveSteps;
import
com.yd.dal.entity.practitioner.hiring.*
;
import
com.yd.dal.entity.practitioner.hiring.*
;
import
com.yd.dal.mapper.customer.*
;
import
com.yd.dal.mapper.customer.*
;
import
com.yd.dal.service.customer.AclPractitionerHiringApproveRecordsDALService
;
import
com.yd.dal.service.customer.AclPractitionerHiringApproveRecordsDALService
;
import
com.yd.dal.service.meta.MdPractitionerHiringApproveStepsDALService
;
import
com.yd.dal.service.practitioner.PractitionerHiringDALService
;
import
com.yd.dal.service.practitioner.PractitionerHiringDALService
;
import
com.yd.rmi.ali.oss.service.OssService
;
import
com.yd.rmi.ali.oss.service.OssService
;
import
com.yd.rmi.cache.SystemConfigService
;
import
com.yd.rmi.cache.SystemConfigService
;
...
@@ -659,6 +658,32 @@ public class PractitionerHiringServiceImpl implements PractitionerHiringService
...
@@ -659,6 +658,32 @@ public class PractitionerHiringServiceImpl implements PractitionerHiringService
return
resp
;
return
resp
;
}
}
@Override
public
SavePayrollPictureResponseVO
savePayrollPicture
(
SavePayRollPictureRequestVO
requestVO
)
{
SavePayrollPictureResponseVO
resp
=
new
SavePayrollPictureResponseVO
();
try
{
String
mediaId
=
requestVO
.
getVxUrl
();
Long
basicInfoId
=
requestVO
.
getHiringBasicInfoId
();
String
imgUrl
=
this
.
uploadImageToOss
(
mediaId
,
basicInfoId
,
2
);
if
(
imgUrl
==
null
)
{
resp
.
setCommonResult
(
new
CommonResult
(
false
,
ZHBErrorConfig
.
getErrorInfo
(
"830024"
)));
}
else
{
AclPractitionerHiringBasicInfo
basicInfo
=
new
AclPractitionerHiringBasicInfo
();
basicInfo
.
setId
(
basicInfoId
);
basicInfo
.
setPayrollOssPath
(
imgUrl
);
basicInfoMapper
.
updateByPrimaryKeySelective
(
basicInfo
);
resp
.
setCommonResult
(
new
CommonResult
(
true
,
ZHBErrorConfig
.
getErrorInfo
(
"800000"
)));
resp
.
setImgUrl
(
imgUrl
);
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
resp
.
setCommonResult
(
new
CommonResult
(
false
,
e
.
getMessage
()));
}
return
resp
;
}
@SuppressWarnings
(
"unchecked"
)
@SuppressWarnings
(
"unchecked"
)
private
boolean
addStepToList
(
HiringApproveRequestVO
requestVO
,
private
boolean
addStepToList
(
HiringApproveRequestVO
requestVO
,
int
stepSeq
,
int
stepSeq
,
...
...
yd-api/src/main/java/com/yd/api/practitioner/vo/hiring/SavePayRollPictureRequestVO.java
0 → 100644
View file @
2c5cab57
package
com
.
yd
.
api
.
practitioner
.
vo
.
hiring
;
import
lombok.Data
;
@Data
public
class
SavePayRollPictureRequestVO
{
private
Long
hiringBasicInfoId
;
private
String
vxUrl
;
}
yd-api/src/main/java/com/yd/api/practitioner/vo/hiring/SavePayrollPictureResponseVO.java
0 → 100644
View file @
2c5cab57
package
com
.
yd
.
api
.
practitioner
.
vo
.
hiring
;
import
com.yd.api.result.CommonResult
;
import
lombok.Data
;
@Data
public
class
SavePayrollPictureResponseVO
{
private
CommonResult
commonResult
;
private
String
imgUrl
;
}
yd-api/src/main/java/com/yd/dal/entity/agms/hiring/PractitionerHiringBasicInfo.java
View file @
2c5cab57
...
@@ -71,6 +71,11 @@ public class PractitionerHiringBasicInfo {
...
@@ -71,6 +71,11 @@ public class PractitionerHiringBasicInfo {
private
String
personerPictureOssPath
;
private
String
personerPictureOssPath
;
/**
/**
* 个人薪资单图片
*/
private
String
payrollOssPath
;
/**
* Id 正面照片
* Id 正面照片
*/
*/
private
String
idFrontPageOssPath
;
private
String
idFrontPageOssPath
;
...
@@ -488,22 +493,31 @@ public class PractitionerHiringBasicInfo {
...
@@ -488,22 +493,31 @@ public class PractitionerHiringBasicInfo {
this
.
personalSignOssPath
=
personalSignOssPath
;
this
.
personalSignOssPath
=
personalSignOssPath
;
}
}
public
String
getPayrollOssPath
()
{
return
payrollOssPath
;
}
public
void
setPayrollOssPath
(
String
payrollOssPath
)
{
this
.
payrollOssPath
=
payrollOssPath
;
}
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
"PractitionerHiringBasicInfo{"
+
return
"PractitionerHiringBasicInfo{"
+
"
inviteePractitionerName='"
+
inviteePractitionerName
+
'\''
+
"inviteePractitionerName='"
+
inviteePractitionerName
+
'\''
+
", name='"
+
name
+
'\''
+
", name='"
+
name
+
'\''
+
", mobileNo='"
+
mobileNo
+
'\''
+
", mobileNo='"
+
mobileNo
+
'\''
+
", idType='"
+
idType
+
'\''
+
", idType='"
+
idType
+
'\''
+
", idNo='"
+
idNo
+
'\''
+
", idNo='"
+
idNo
+
'\''
+
", gender=
"
+
gender
+
", gender=
'"
+
gender
+
'\''
+
", practitionerBirthdate=
"
+
practitionerBirthdate
+
", practitionerBirthdate=
'"
+
practitionerBirthdate
+
'\''
+
", provinceName='"
+
provinceName
+
'\''
+
", provinceName='"
+
provinceName
+
'\''
+
", cityName='"
+
cityName
+
'\''
+
", cityName='"
+
cityName
+
'\''
+
", residentAddress='"
+
residentAddress
+
'\''
+
", residentAddress='"
+
residentAddress
+
'\''
+
", wechatId='"
+
wechatId
+
'\''
+
", wechatId='"
+
wechatId
+
'\''
+
", email='"
+
email
+
'\''
+
", email='"
+
email
+
'\''
+
", personerPictureOssPath='"
+
personerPictureOssPath
+
'\''
+
", personerPictureOssPath='"
+
personerPictureOssPath
+
'\''
+
", payrollOssPath='"
+
payrollOssPath
+
'\''
+
", idFrontPageOssPath='"
+
idFrontPageOssPath
+
'\''
+
", idFrontPageOssPath='"
+
idFrontPageOssPath
+
'\''
+
", idBackPageOssPath='"
+
idBackPageOssPath
+
'\''
+
", idBackPageOssPath='"
+
idBackPageOssPath
+
'\''
+
", lastGraduateGrade='"
+
lastGraduateGrade
+
'\''
+
", lastGraduateGrade='"
+
lastGraduateGrade
+
'\''
+
...
...
yd-api/src/main/java/com/yd/dal/entity/customer/AclPractitionerHiringBasicInfo.java
View file @
2c5cab57
...
@@ -104,6 +104,11 @@ public class AclPractitionerHiringBasicInfo {
...
@@ -104,6 +104,11 @@ public class AclPractitionerHiringBasicInfo {
private
String
personerPictureOssPath
;
private
String
personerPictureOssPath
;
/**
/**
* 个人照片
*/
private
String
payrollOssPath
;
/**
* Id 正面照片
* Id 正面照片
*/
*/
private
String
idFrontPageOssPath
;
private
String
idFrontPageOssPath
;
...
...
yd-api/src/main/java/com/yd/dal/entity/practitioner/hiring/HiringBasicInfo.java
View file @
2c5cab57
...
@@ -71,6 +71,11 @@ public class HiringBasicInfo {
...
@@ -71,6 +71,11 @@ public class HiringBasicInfo {
private
String
personerPictureOssPath
;
private
String
personerPictureOssPath
;
/**
/**
* 个人薪资单图片
*/
private
String
payrollOssPath
;
/**
* Id 正面照片
* Id 正面照片
*/
*/
private
String
idFrontPageOssPath
;
private
String
idFrontPageOssPath
;
...
@@ -488,22 +493,31 @@ public class HiringBasicInfo {
...
@@ -488,22 +493,31 @@ public class HiringBasicInfo {
this
.
personalSignOssPath
=
personalSignOssPath
;
this
.
personalSignOssPath
=
personalSignOssPath
;
}
}
public
String
getPayrollOssPath
()
{
return
payrollOssPath
;
}
public
void
setPayrollOssPath
(
String
payrollOssPath
)
{
this
.
payrollOssPath
=
payrollOssPath
;
}
@Override
@Override
public
String
toString
()
{
public
String
toString
()
{
return
"
Practitioner
HiringBasicInfo{"
+
return
"HiringBasicInfo{"
+
"
inviteePractitionerName='"
+
inviteePractitionerName
+
'\''
+
"inviteePractitionerName='"
+
inviteePractitionerName
+
'\''
+
", name='"
+
name
+
'\''
+
", name='"
+
name
+
'\''
+
", mobileNo='"
+
mobileNo
+
'\''
+
", mobileNo='"
+
mobileNo
+
'\''
+
", idType='"
+
idType
+
'\''
+
", idType='"
+
idType
+
'\''
+
", idNo='"
+
idNo
+
'\''
+
", idNo='"
+
idNo
+
'\''
+
", gender=
"
+
gender
+
", gender=
'"
+
gender
+
'\''
+
", practitionerBirthdate=
"
+
practitionerBirthdate
+
", practitionerBirthdate=
'"
+
practitionerBirthdate
+
'\''
+
", provinceName='"
+
provinceName
+
'\''
+
", provinceName='"
+
provinceName
+
'\''
+
", cityName='"
+
cityName
+
'\''
+
", cityName='"
+
cityName
+
'\''
+
", residentAddress='"
+
residentAddress
+
'\''
+
", residentAddress='"
+
residentAddress
+
'\''
+
", wechatId='"
+
wechatId
+
'\''
+
", wechatId='"
+
wechatId
+
'\''
+
", email='"
+
email
+
'\''
+
", email='"
+
email
+
'\''
+
", personerPictureOssPath='"
+
personerPictureOssPath
+
'\''
+
", personerPictureOssPath='"
+
personerPictureOssPath
+
'\''
+
", payrollOssPath='"
+
payrollOssPath
+
'\''
+
", idFrontPageOssPath='"
+
idFrontPageOssPath
+
'\''
+
", idFrontPageOssPath='"
+
idFrontPageOssPath
+
'\''
+
", idBackPageOssPath='"
+
idBackPageOssPath
+
'\''
+
", idBackPageOssPath='"
+
idBackPageOssPath
+
'\''
+
", lastGraduateGrade='"
+
lastGraduateGrade
+
'\''
+
", lastGraduateGrade='"
+
lastGraduateGrade
+
'\''
+
...
...
yd-api/src/main/resources/mapper/agms/AgmsHiringMapper.xml
View file @
2c5cab57
...
@@ -25,6 +25,7 @@
...
@@ -25,6 +25,7 @@
<result
column=
"bankAccountOpening"
jdbcType=
"VARCHAR"
property=
"bankAccountOpening"
/>
<result
column=
"bankAccountOpening"
jdbcType=
"VARCHAR"
property=
"bankAccountOpening"
/>
<result
column=
"bankAccountId"
jdbcType=
"VARCHAR"
property=
"bankAccountId"
/>
<result
column=
"bankAccountId"
jdbcType=
"VARCHAR"
property=
"bankAccountId"
/>
<result
column=
"personalSignOssPath"
jdbcType=
"VARCHAR"
property=
"personalSignOssPath"
/>
<result
column=
"personalSignOssPath"
jdbcType=
"VARCHAR"
property=
"personalSignOssPath"
/>
<result
column=
"payroll_oss_path"
jdbcType=
"VARCHAR"
property=
"payrollOssPath"
/>
</resultMap>
</resultMap>
<select
id=
"findPractitionerHiringBasicInfo"
resultMap=
"practitionerHiringBasicInfo"
>
<select
id=
"findPractitionerHiringBasicInfo"
resultMap=
"practitionerHiringBasicInfo"
>
select p.name inviteePractitionerName,
select p.name inviteePractitionerName,
...
@@ -47,6 +48,7 @@
...
@@ -47,6 +48,7 @@
b.last_graduate_certification_oss_path lastGraduateCertificationOssPath,
b.last_graduate_certification_oss_path lastGraduateCertificationOssPath,
b.bank_account_opening bankAccountOpening,
b.bank_account_opening bankAccountOpening,
b.bank_account_id bankAccountId,
b.bank_account_id bankAccountId,
b.payroll_oss_path payrollOssPath,
b.personal_sign_oss_path personalSignOssPath
b.personal_sign_oss_path personalSignOssPath
from ag_acl_practitioner_hiring_basic_info b
from ag_acl_practitioner_hiring_basic_info b
left join ag_acl_practitioner p on b.invitee_practitioner_id = p.id
left join ag_acl_practitioner p on b.invitee_practitioner_id = p.id
...
...
yd-api/src/main/resources/mapper/customer/AclPractitionerHiringBasicInfoMapper.xml
View file @
2c5cab57
...
@@ -23,6 +23,7 @@
...
@@ -23,6 +23,7 @@
<result
column=
"wechat_id"
jdbcType=
"VARCHAR"
property=
"wechatId"
/>
<result
column=
"wechat_id"
jdbcType=
"VARCHAR"
property=
"wechatId"
/>
<result
column=
"email"
jdbcType=
"VARCHAR"
property=
"email"
/>
<result
column=
"email"
jdbcType=
"VARCHAR"
property=
"email"
/>
<result
column=
"personer_picture_oss_path"
jdbcType=
"VARCHAR"
property=
"personerPictureOssPath"
/>
<result
column=
"personer_picture_oss_path"
jdbcType=
"VARCHAR"
property=
"personerPictureOssPath"
/>
<result
column=
"payroll_oss_path"
jdbcType=
"VARCHAR"
property=
"payrollOssPath"
/>
<result
column=
"id_front_page_oss_path"
jdbcType=
"VARCHAR"
property=
"idFrontPageOssPath"
/>
<result
column=
"id_front_page_oss_path"
jdbcType=
"VARCHAR"
property=
"idFrontPageOssPath"
/>
<result
column=
"id_back_page_oss_path"
jdbcType=
"VARCHAR"
property=
"idBackPageOssPath"
/>
<result
column=
"id_back_page_oss_path"
jdbcType=
"VARCHAR"
property=
"idBackPageOssPath"
/>
<result
column=
"last_graduate_code"
jdbcType=
"VARCHAR"
property=
"lastGraduateCode"
/>
<result
column=
"last_graduate_code"
jdbcType=
"VARCHAR"
property=
"lastGraduateCode"
/>
...
@@ -42,7 +43,7 @@
...
@@ -42,7 +43,7 @@
<!--@mbg.generated-->
<!--@mbg.generated-->
id, practitioner_potential_id, invitee_practitioner_id, `name`, mobile_no, id_type_id,
id, practitioner_potential_id, invitee_practitioner_id, `name`, mobile_no, id_type_id,
id_type, id_no, gender, practitioner_birthdate, province_id, province_name, city_id,
id_type, id_no, gender, practitioner_birthdate, province_id, province_name, city_id,
city_name, resident_address, wechat_id, email, personer_picture_oss_path,
id_front_page_oss_path,
city_name, resident_address, wechat_id, email, personer_picture_oss_path,
payroll_oss_path, id_front_page_oss_path,
id_back_page_oss_path, last_graduate_code, last_graduate_grade, last_graduate_school, last_graduate_certification_oss_path,
id_back_page_oss_path, last_graduate_code, last_graduate_grade, last_graduate_school, last_graduate_certification_oss_path,
bank_account_opening, bank_account_id, personal_sign_oss_path, is_active, created_at,
bank_account_opening, bank_account_id, personal_sign_oss_path, is_active, created_at,
created_by, updated_at, updated_by, approve_status
created_by, updated_at, updated_by, approve_status
...
@@ -329,6 +330,9 @@
...
@@ -329,6 +330,9 @@
<if
test=
"personerPictureOssPath != null"
>
<if
test=
"personerPictureOssPath != null"
>
personer_picture_oss_path = #{personerPictureOssPath,jdbcType=VARCHAR},
personer_picture_oss_path = #{personerPictureOssPath,jdbcType=VARCHAR},
</if>
</if>
<if
test=
"payrollOssPath != null"
>
payroll_oss_path = #{payrollOssPath,jdbcType=VARCHAR},
</if>
<if
test=
"idFrontPageOssPath != null"
>
<if
test=
"idFrontPageOssPath != null"
>
id_front_page_oss_path = #{idFrontPageOssPath,jdbcType=VARCHAR},
id_front_page_oss_path = #{idFrontPageOssPath,jdbcType=VARCHAR},
</if>
</if>
...
@@ -394,6 +398,7 @@
...
@@ -394,6 +398,7 @@
wechat_id = #{wechatId,jdbcType=VARCHAR},
wechat_id = #{wechatId,jdbcType=VARCHAR},
email = #{email,jdbcType=VARCHAR},
email = #{email,jdbcType=VARCHAR},
personer_picture_oss_path = #{personerPictureOssPath,jdbcType=VARCHAR},
personer_picture_oss_path = #{personerPictureOssPath,jdbcType=VARCHAR},
payroll_oss_path = #{payrollOssPath,jdbcType=VARCHAR},
id_front_page_oss_path = #{idFrontPageOssPath,jdbcType=VARCHAR},
id_front_page_oss_path = #{idFrontPageOssPath,jdbcType=VARCHAR},
id_back_page_oss_path = #{idBackPageOssPath,jdbcType=VARCHAR},
id_back_page_oss_path = #{idBackPageOssPath,jdbcType=VARCHAR},
last_graduate_code = #{lastGraduateCode,jdbcType=VARCHAR},
last_graduate_code = #{lastGraduateCode,jdbcType=VARCHAR},
...
...
yd-api/src/main/resources/mapper/practitioner/PractitionerHiringMapper.xml
View file @
2c5cab57
...
@@ -86,6 +86,7 @@
...
@@ -86,6 +86,7 @@
<result
column=
"bankAccountOpening"
jdbcType=
"VARCHAR"
property=
"bankAccountOpening"
/>
<result
column=
"bankAccountOpening"
jdbcType=
"VARCHAR"
property=
"bankAccountOpening"
/>
<result
column=
"bankAccountId"
jdbcType=
"VARCHAR"
property=
"bankAccountId"
/>
<result
column=
"bankAccountId"
jdbcType=
"VARCHAR"
property=
"bankAccountId"
/>
<result
column=
"personalSignOssPath"
jdbcType=
"VARCHAR"
property=
"personalSignOssPath"
/>
<result
column=
"personalSignOssPath"
jdbcType=
"VARCHAR"
property=
"personalSignOssPath"
/>
<result
column=
"payroll_oss_path"
jdbcType=
"VARCHAR"
property=
"payrollOssPath"
/>
</resultMap>
</resultMap>
<select
id=
"findHiringBasicInfo"
resultMap=
"hiringBasicInfo"
>
<select
id=
"findHiringBasicInfo"
resultMap=
"hiringBasicInfo"
>
select p.name inviteePractitionerName,
select p.name inviteePractitionerName,
...
@@ -108,6 +109,7 @@
...
@@ -108,6 +109,7 @@
b.last_graduate_certification_oss_path lastGraduateCertificationOssPath,
b.last_graduate_certification_oss_path lastGraduateCertificationOssPath,
b.bank_account_opening bankAccountOpening,
b.bank_account_opening bankAccountOpening,
b.bank_account_id bankAccountId,
b.bank_account_id bankAccountId,
b.payroll_oss_path payrollOssPath,
b.personal_sign_oss_path personalSignOssPath
b.personal_sign_oss_path personalSignOssPath
from ag_acl_practitioner_hiring_basic_info b
from ag_acl_practitioner_hiring_basic_info b
left join ag_acl_practitioner p on b.invitee_practitioner_id = p.id
left join ag_acl_practitioner p on b.invitee_practitioner_id = p.id
...
...
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