Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
聂康
local-rnr-fp
Commits
015d4257
Commit
015d4257
authored
Jun 17, 2025
by
kang.nie@inzymeits.com
Browse files
初始化代码
parent
bd38ff8b
Pipeline
#3108
failed with stages
in 0 seconds
Changes
404
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/InstructionRespEnum.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
public
enum
InstructionRespEnum
{
SUCCESS
(
true
,
""
),
REQUEST_ID_MISSING
(
false
,
"指令标识缺失"
),
ICCID_MISSING
(
false
,
"ICCID缺失"
);
// USER_UPLOAD_FAILED(false, "开户信息上传失败"),
// FILE_UPLOAD_FAILED(false, "开户图片类信息上传失败"),
// VEHICLE_UPLOAD_FAILED(false, "车辆信息上传失败"),
// ERROR(false, "上传失败,内部错误,请联系管理员!");
private
boolean
success
;
private
String
msg
;
InstructionRespEnum
(
boolean
success
,
String
msg
)
{
this
.
success
=
success
;
this
.
msg
=
msg
;
}
public
boolean
isSuccess
()
{
return
success
;
}
public
String
getMsg
()
{
return
msg
;
}
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/LivenessActionSeqEnum.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
/**
* 活体动作序列枚举
* 1代表张嘴,2代表闭眼。
*/
public
enum
LivenessActionSeqEnum
{
/**
* 张嘴
*/
OPEN_MOUSE
(
"1"
,
"张嘴"
),
/**
* 闭眼
*/
CLOSE_EYE
(
"2"
,
"闭眼"
);
private
String
code
;
private
String
name
;
LivenessActionSeqEnum
(
String
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
LivenessActionSeqEnum
getEnumByCode
(
String
code
)
{
for
(
LivenessActionSeqEnum
sys
:
LivenessActionSeqEnum
.
values
())
{
if
(
sys
.
getCode
().
equals
(
code
))
{
return
sys
;
}
}
return
null
;
}
public
String
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/LivenessTypeEnum.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
/**
* 活体类型枚举
*/
public
enum
LivenessTypeEnum
{
/**
* 唇语验证码
*/
LIP
(
"LIP"
,
"唇语验证码"
),
/**
* 动作序列
*/
ACTION
(
"ACTION"
,
"动作序列"
);
private
String
code
;
private
String
name
;
LivenessTypeEnum
(
String
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
LivenessTypeEnum
getEnumByCode
(
String
code
)
{
for
(
LivenessTypeEnum
sys
:
LivenessTypeEnum
.
values
())
{
if
(
sys
.
getCode
().
equals
(
code
))
{
return
sys
;
}
}
return
null
;
}
public
String
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/MbCodeEnum.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
/**
* @author: jk
* @description: 运营商类型
* @date: 2022/7/4 9:22
* @version: 1.0
*/
public
enum
MbCodeEnum
{
CMCC
(
"2000"
,
"中国移动"
,
"898600,898602,898604,898607"
),
CUCC
(
"3000"
,
"中国联通"
,
"898601,898606,898609"
),
CTCC
(
"1000"
,
"中国电信"
,
"898603,898611"
),
QT
(
"4000"
,
"其他"
,
""
);
private
String
code
;
private
String
name
;
private
String
codes
;
public
static
MbCodeEnum
get
(
String
iccid
)
{
for
(
MbCodeEnum
value
:
MbCodeEnum
.
values
())
{
String
codes
=
value
.
getCodes
();
if
(
codes
.
indexOf
(
iccid
.
substring
(
0
,
6
))
!=
-
1
)
{
return
value
;
}
}
return
MbCodeEnum
.
QT
;
}
MbCodeEnum
(
String
code
,
String
name
,
String
codes
)
{
this
.
code
=
code
;
this
.
name
=
name
;
this
.
codes
=
codes
;
}
public
String
getCode
()
{
return
code
;
}
public
void
setCode
(
String
code
)
{
this
.
code
=
code
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getCodes
()
{
return
codes
;
}
public
void
setCodes
(
String
codes
)
{
this
.
codes
=
codes
;
}
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/OrganBizzTypeEnum.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
/**
* Description: 组织业务类型枚举
* <br />
* CreateDate 2022-05-19 19:43:58
*
* @author yuyi
**/
public
enum
OrganBizzTypeEnum
{
/**
* 车厂
*/
CAR_FACTORY
(
1
,
"车厂"
),
/**
* 经销商
*/
DISTRIBUTOR
(
2
,
"经销商"
),
/**
* 车企子组织
*/
CAR_SUB_ORGAN
(
3
,
"车企子组织"
);
private
int
code
;
private
String
name
;
OrganBizzTypeEnum
(
int
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
OrganBizzTypeEnum
getEnumByCode
(
int
code
)
{
for
(
OrganBizzTypeEnum
e
:
OrganBizzTypeEnum
.
values
())
{
if
(
e
.
getCode
()
==
code
)
{
return
e
;
}
}
return
null
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/RedisConstant.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
/**
* Description: redis相关常量类
**/
public
class
RedisConstant
{
//实名信息上传key前缀
public
static
final
String
RNR_INSTRUCTION_UPLOAD_KEY
=
"CT:RNR:INSTRUCTION:UPLOAD:KEY:"
;
//短信验证码key前缀
public
static
final
String
SMS_CAPTCHA_KEY
=
"CT:RNR:SMS:CAPTCHA:"
;
//实名验证短信验证码间隔key前缀
public
static
final
String
SMS_RNR_CAPTCHA_SEND_INTERVAL_KEY
=
"CT:RNR:SMS:INTERVAL:CAPTCHA:"
;
/**
* 实名短信同一手机号一天最大限制此时
*/
public
static
final
String
SMS_RNR_CAPTCHA_LIMIT_TIMES
=
"CT:RNR:SMS:LIMIT:TIMES:"
;
/**
* 实名 (活体数字验证码+动作序列)rediskey 前缀
*/
public
static
String
USER_RNR_LIVENESSCODE_PREFIX
=
"CT:RNR:LIVENESS:CODE:"
;
//T1车企信息配置
public
static
final
String
T1_VEHICLE_COMPANY_CONFIG
=
"CT:RNR:T1:VEHICLE_COMPANY:"
;
//T1车企信息配置 失效时间 秒
public
static
final
int
T1_VEHICLE_COMPANY_CONFIG_EXPIRE
=
3600
;
//T1车企信息配置
public
static
final
String
T1_VEHICLE_COMPANY_CODE_CONFIG
=
"CT:RNR:T1:VEHICLE_COMPANY:CODE:"
;
//自然人实名失败次数阈值 key
public
static
final
String
PERSON_RNR_ERROR_COUNT_THRESHOLD
=
"CT:RNR:PERSON:RNR:ERROR:COUNT:"
;
//自然人实名失败次数阈值 key 失效时间 单位秒
public
static
final
int
PERSON_RNR_ERROR_COUNT_THRESHOLD_EXPIRE
=
43200
;
//短信验证码错误次数key前缀
public
static
final
String
SMS_CAPTCHA_ERROR_COUNT_KEY
=
"CT:RNR:SMS:CAPTCHA:ERROR_COUNT:"
;
//T1上报状态锁
public
static
final
String
T1_UPLOAD_STATUS_LOCK
=
"CT:RNR:T1:UPLOAD_STATUS:LOCK"
;
//T1上报状态锁默认失效时间(秒)
public
static
final
int
T1_UPLOAD_STATUS_LOCK_EXPIRE
=
60
;
//短信验证码错误次数key默认失效时间(秒)
public
static
final
int
SMS_CAPTCHA_ERROR_COUNT_EXPIRE
=
3600
;
/**
* 实名活体回调锁
*/
public
static
final
String
RNR_H5_CALLBACK_LOCK
=
"CT:RNR:LOCK:H5:CALLBACK:"
;
/**
* 实名活体回调锁默认失效时间(毫秒)
*/
public
static
final
int
RNR_H5_CALLBACK_LOCK_EXPIRE
=
90000
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/ResultCodeEnum.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
/**
*本地系统将实名结果回传业务结果
*/
public
enum
ResultCodeEnum
{
/**
* 通过
*/
PASS
(
"3"
,
"通过"
),
/**
* 未通过
*/
NOT_PASS
(
"4"
,
"未通过"
),
/**
* 作废
*/
INVALID
(
"9"
,
"作废"
),
;
private
String
code
;
private
String
name
;
ResultCodeEnum
(
String
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
ResultCodeEnum
getEnumByCode
(
String
code
)
{
for
(
ResultCodeEnum
sys
:
ResultCodeEnum
.
values
())
{
if
(
sys
.
getCode
().
equals
(
code
))
{
return
sys
;
}
}
return
null
;
}
public
String
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/UploadStatus.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
public
enum
UploadStatus
{
Uploading
(
0
,
"上传中"
),
Success
(
1
,
"成功"
),
Failed
(
2
,
"失败"
);
//存入数据库值
private
int
code
;
//说明
private
String
value
;
UploadStatus
(
int
code
,
String
value
)
{
this
.
code
=
code
;
this
.
value
=
value
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getValue
()
{
return
value
;
}
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/constants/UploadType.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.constants
;
public
enum
UploadType
{
User
(
0
,
"开户信息上传"
)
,
Vehicle
(
1
,
"车辆信息上传"
)
,
File
(
2
,
"图片类文件上传"
);
//存入数据库值
private
int
code
;
//说明
private
String
value
;
UploadType
(
int
code
,
String
value
)
{
this
.
code
=
code
;
this
.
value
=
value
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getValue
()
{
return
value
;
}
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/BindRequestDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
/**
* 解绑车卡关系请求参数
*/
@Data
public
class
BindRequestDTO
{
/**需解绑iccid*/
@ApiModelProperty
(
value
=
"需解绑iccid"
)
@NotBlank
(
message
=
"iccid不能为空"
)
private
String
iccid
;
/**需解绑vin码*/
@ApiModelProperty
(
value
=
"需解绑vin码"
)
@NotBlank
(
message
=
"vin码不能为空"
)
private
String
vin
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/BindUserInfoDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
lombok.Data
;
@Data
public
class
BindUserInfoDTO
{
//用户id、姓名、身份证、VIN/iccid
private
String
userId
;
private
String
userName
;
private
String
iccid
;
private
String
vin
;
private
String
cert_number
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/BulkBackDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
lombok.Data
;
import
java.util.List
;
/**
* @className: BulkBackDTO
* @description: 单位批量实名报竣实体类
* @author: fxh
* @date: 2022/8/23 11:24
* @version: 1.0
**/
@Data
public
class
BulkBackDTO
{
private
String
OprRst
;
private
String
OprTime
;
private
String
SuccessList
;
private
List
<
FailureListDTO
>
FailureList
;
private
String
FailureCause
;
private
String
ICCID
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/CarInfoBindingDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
@Data
public
class
CarInfoBindingDTO
{
/**组织id*/
@ApiModelProperty
(
value
=
"组织uuid,该组织必须为主机厂"
,
required
=
true
)
@NotBlank
(
message
=
"组织编码不能为空"
)
private
String
organizationId
;
@ApiModelProperty
(
value
=
"业务标签uuid"
)
private
String
tagUuid
;
/**车卡关系列表*/
@ApiModelProperty
(
value
=
"车卡关系列表"
)
@NotNull
(
message
=
"车辆信息列表不能为空"
)
private
List
<
FpCarInfoDTO
>
bindingList
;
/**创建人*/
@ApiModelProperty
(
value
=
"创建人"
,
required
=
false
)
private
String
creator
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/CarInfoResult.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
lombok.Data
;
import
java.util.List
;
@Data
public
class
CarInfoResult
{
/**成功数量*/
private
Integer
successCount
;
/**失败数量*/
private
Integer
failCount
;
/**失败数据*/
List
<
FpCarInfoDTO
>
failData
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/CardNumReqDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.cusc.nirvana.user.rnr.fp.common.BaseAuthenticationReqDTO
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
/**
* Description: 查询卡数量
* <br />
* CreateDate 2022-02-23 17:00:59
*
* @author yuyi
**/
@Data
public
class
CardNumReqDTO
extends
BaseAuthenticationReqDTO
{
/**
* 证件号码
*/
@NotBlank
(
message
=
"证件号码不能为空"
)
private
String
cardNo
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/CertCheckReqDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.cusc.nirvana.user.rnr.fp.common.BaseAuthenticationReqDTO
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
/**
* Description: 自然人身份信息核查请求DTO(校验姓名、身份证、照片的有效性)
* <br />
* CreateDate 2022-02-23 17:00:59
*
* @author yuyi
**/
@Data
public
class
CertCheckReqDTO
extends
BaseAuthenticationReqDTO
{
/**
* 姓名
*/
@NotBlank
(
message
=
"姓名不能为空"
)
private
String
fullName
;
/**
* 证件号
*/
@NotBlank
(
message
=
"证件号不能为空"
)
private
String
certNumber
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/CertCheckRespDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
com.cusc.nirvana.user.rnr.fp.common.BaseAuthenticationRespDTO
;
import
lombok.Data
;
/**
* Description: 身份信息核查响应DTO
* <br />
* CreateDate 2022-02-24 17:17:38
*
* @author yuyi
**/
@Data
public
class
CertCheckRespDTO
extends
BaseAuthenticationRespDTO
{
/**
* 身份证姓名比对结果(0:一致,1:不一致)
*/
private
String
certNameResult
;
/**
* 身份证号码比对结果(0:一致,1:不一致)
*/
private
String
certNumResult
;
/**
* 证件照片(网纹照),JPEG照片编码, base64字符串编码,不进行压缩
*/
private
String
certPhoto
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/EncryptionKeyDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.util.Map
;
/**
* @className: EncryptionKeyDATO
* @description: 密钥
* @author: jk
* @date: 2022/7/19 14:32
* @version: 1.0
**/
@Data
public
class
EncryptionKeyDTO
{
/**
* 车辆信息key
*/
private
String
carInfoKey
;
/**
* T1开户信息加密密钥
*/
private
String
t1UserInfoKey
;
/**
* T1指令加密密钥
*/
private
String
t1InstructionKey
;
/**
* 公司编码,用于T1接口上传
*/
private
String
companyCode
;
/**
* 电信文本加密
*/
private
String
t1UserInfoKeyCTcc
;
@ApiModelProperty
(
value
=
"移动平台标识"
)
private
String
platFormId
;
@ApiModelProperty
(
value
=
"移动密钥"
)
private
String
cmccApiKey
;
@ApiModelProperty
(
value
=
"移动图片和文本加密秘钥"
)
private
String
cmccTextOrPictureKey
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/EnterpriseChangeRnrPersonDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
javax.validation.constraints.NotBlank
;
import
java.util.List
;
/**
* @author stayAnd
* @date 2022/4/24
* 企业修改 实名责任人 DTO
*/
@Data
public
class
EnterpriseChangeRnrPersonDTO
{
@ApiModelProperty
(
value
=
"租户编号"
)
@NotBlank
(
message
=
"租户编号不能为空"
)
private
String
tenantNo
;
@ApiModelProperty
(
value
=
"企业名称"
)
@NotBlank
(
message
=
"企业名称不能为空"
)
private
String
companyName
;
@ApiModelProperty
(
value
=
"原责任人姓名"
)
@NotBlank
(
message
=
"原责任人姓名不能为空"
)
private
String
origCorporationName
;
@ApiModelProperty
(
value
=
"责任人姓名"
)
@NotBlank
(
message
=
"责任人姓名不能为空"
)
private
String
corporationName
;
@ApiModelProperty
(
value
=
"性别"
)
@NotBlank
(
message
=
"性别不能为空"
)
private
String
corporationGender
;
@ApiModelProperty
(
value
=
"责任人证件类型"
)
@NotBlank
(
message
=
"责任人证件类型不能为空"
)
private
String
corporationCertType
;
@ApiModelProperty
(
value
=
"责任人证件号"
)
@NotBlank
(
message
=
"责任人证件号不能为空"
)
private
String
corporationCertNumber
;
@ApiModelProperty
(
value
=
"责任人证件地址"
)
@NotBlank
(
message
=
"责任人证件地址不能为空"
)
private
String
corporationCertAddress
;
@ApiModelProperty
(
value
=
"责任人证件图片集合,身份证第一张必须是人像面"
)
@NotBlank
(
message
=
"责任人证件图片不能为空"
)
private
List
<
String
>
corporationCertPic
;
@ApiModelProperty
(
value
=
"责任人证件有效期开始时间"
)
@NotBlank
(
message
=
"责任人证件有效期开始时间不能为空"
)
private
String
corporationCertEffectiveDate
;
@ApiModelProperty
(
value
=
"责任人证件有效期"
)
@NotBlank
(
message
=
"责任人证件有效期不能为空"
)
private
String
corporationCertExpirationDate
;
@ApiModelProperty
(
value
=
"责任人通讯地址"
)
@NotBlank
(
message
=
"责任人通讯地址不能为空"
)
private
String
corporationContactAddress
;
@ApiModelProperty
(
value
=
"责任人手机号码"
)
@NotBlank
(
message
=
"责任人手机号码不能为空"
)
private
String
corporationPhone
;
@ApiModelProperty
(
value
=
"短信验证码"
)
@NotBlank
(
message
=
"短信验证码不能为空"
)
private
String
captcha
;
@ApiModelProperty
(
value
=
"企业实名认证授权书"
)
@NotBlank
(
message
=
"企业实名认证授权书不能为空"
)
private
List
<
String
>
authorizationLetterPic
;
@ApiModelProperty
(
value
=
"责任人活体视频"
)
@NotBlank
(
message
=
"责任人活体视频不能为空"
)
private
String
corporationVideo
;
@ApiModelProperty
(
value
=
"创建人"
)
@NotBlank
(
message
=
"创建人id"
)
String
creator
;
@ApiModelProperty
(
value
=
"修改实名信息途径来源 参考枚举 RnrOrderSourceEnum"
)
private
String
source
;
}
local-rnr-fp-dto/src/main/java/com/cusc/nirvana/user/rnr/fp/dto/EnterpriseH5CallBackRequestDTO.java
0 → 100644
View file @
015d4257
package
com.cusc.nirvana.user.rnr.fp.dto
;
import
lombok.Data
;
import
javax.validation.constraints.NotEmpty
;
import
javax.validation.constraints.NotNull
;
/**
* @author stayAnd
* @date 2022/5/3
*/
@Data
public
class
EnterpriseH5CallBackRequestDTO
{
/**
* 租户编号
*/
@NotNull
(
message
=
"租户编号不能为空"
)
private
String
tenantNo
;
/**
* 工单号
*/
@NotNull
(
message
=
"工单号不能为空"
)
private
String
orderNo
;
/**
* 活体返回的两张图片
*/
@NotEmpty
(
message
=
"活体返回的两张图片不能为空"
)
private
String
[]
livenessPicFileId
;
/**
* 视屏id
*/
@NotNull
(
message
=
"视屏id不能为空"
)
private
String
videFileId
;
}
Prev
1
2
3
4
5
6
…
21
Next
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