Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
amos-boot-biz
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
项目统一框架
amos-boot-biz
Commits
ad07a2b4
Commit
ad07a2b4
authored
Dec 15, 2023
by
LiuLin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix(common):调整代码生成类,修改BaseEntity为tyboot
parent
2e47c117
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
539 additions
and
0 deletions
+539
-0
MyBatisPlusCodeGeneratorJyjc.java
...s/boot/biz/common/utils/MyBatisPlusCodeGeneratorJyjc.java
+0
-0
bean.java.ftl
...oot-biz-common/src/main/resources/template2/bean.java.ftl
+33
-0
controller.java.ftl
...z-common/src/main/resources/template2/controller.java.ftl
+135
-0
dto.java.ftl
...boot-biz-common/src/main/resources/template2/dto.java.ftl
+134
-0
mapper.java.ftl
...t-biz-common/src/main/resources/template2/mapper.java.ftl
+18
-0
mapper.xml.ftl
...ot-biz-common/src/main/resources/template2/mapper.xml.ftl
+39
-0
model.java.ftl
...ot-biz-common/src/main/resources/template2/model.java.ftl
+133
-0
service.java.ftl
...-biz-common/src/main/resources/template2/service.java.ftl
+13
-0
serviceImpl.java.ftl
...-common/src/main/resources/template2/serviceImpl.java.ftl
+34
-0
No files found.
amos-boot-biz-common/src/main/java/com/yeejoin/amos/boot/biz/common/utils/MyBatisPlusCodeGeneratorJyjc.java
0 → 100644
View file @
ad07a2b4
This diff is collapsed.
Click to expand it.
amos-boot-biz-common/src/main/resources/template2/bean.java.ftl
0 → 100644
View file @
ad07a2b4
package
${
package
.
Entity
};
import
com
.
baomidou
.
mybatisplus
.
annotation
.
TableField
;
import
com
.
baomidou
.
mybatisplus
.
annotation
.
TableName
;
import
org
.
typroject
.
tyboot
.
core
.
rdbms
.
orm
.
entity
.
BaseEntity
;
import
lombok
.
Data
;
import
lombok
.
EqualsAndHashCode
;
import
lombok
.
experimental
.
Accessors
;
/**
*
${
table
.
comment
!}
*
*
@
author
${
author
}
*
@
date
${
date
}
*/
@
Data
@
EqualsAndHashCode
(
callSuper
=
true
)
@
Accessors
(
chain
=
true
)
@
TableName
(
"${table.name}"
)
public
class
${
entity
}
extends
BaseEntity
{
private
static
final
long
serialVersionUID
=
1L
;
<#--
----------
BEGIN
字段循环遍历
---------->
<#
list
table
.
fields
as
field
>
/**
*
${
field
.
comment
}
*/
@
TableField
(
"${field.name}"
)
private
${
field
.
propertyType
}
${
field
.
propertyName
};
</#
list
>
}
amos-boot-biz-common/src/main/resources/template2/controller.java.ftl
0 → 100644
View file @
ad07a2b4
package
${
package
.
Controller
};
import
org
.
springframework
.
web
.
bind
.
annotation
.
RequestMapping
;
import
io
.
swagger
.
annotations
.
ApiOperation
;
import
io
.
swagger
.
annotations
.
Api
;
<#
if
restControllerStyle
>
import
org
.
springframework
.
web
.
bind
.
annotation
.
RestController
;
<#
else
>
import
org
.
springframework
.
stereotype
.
Controller
;
</#
if
>
<#
if
superControllerClassPackage
??>
import
${
superControllerClassPackage
};
</#
if
>
import
java
.
util
.
List
;
import
${
package
.
ServiceImpl
}.${
table
.
serviceImplName
};
import
org
.
typroject
.
tyboot
.
core
.
restful
.
utils
.
ResponseHelper
;
import
org
.
typroject
.
tyboot
.
core
.
restful
.
utils
.
ResponseModel
;
import
org
.
springframework
.
beans
.
factory
.
annotation
.
Autowired
;
import
javax
.
servlet
.
http
.
HttpServletRequest
;
import
org
.
springframework
.
web
.
bind
.
annotation
.*;
import
com
.
baomidou
.
mybatisplus
.
extension
.
plugins
.
pagination
.
Page
;
import
${
package
.
Xml
}.${
entity
}
Model
;
import
org
.
typroject
.
tyboot
.
core
.
restful
.
doc
.
TycloudOperation
;
import
org
.
typroject
.
tyboot
.
core
.
foundation
.
enumeration
.
UserType
;
/**
*
${
table
.
comment
!}
*
*
@
author
${
author
}
*
@
date
${
date
}
*/
<#
if
restControllerStyle
>
@
RestController
@
Api
(
tags
=
"${table.comment}Api"
)
<#
else
>
@
Controller
</#
if
>
@
RequestMapping
(
value
=
"/<#if controllerMappingHyphenStyle??>${controllerMappingHyphen}<#else>${table.entityPath}</#if>"
)
<#
if
kotlin
>
class
${
table
.
controllerName
}<#
if
superControllerClass
??>
:
${
superControllerClass
}()</#
if
>
<#
else
>
<#
if
superControllerClass
??>
public
class
${
table
.
controllerName
}
extends
${
superControllerClass
}
{
<#
else
>
public
class
${
table
.
controllerName
}
{
</#
if
>
@
Autowired
${
table
.
serviceImplName
}
${
table
.
serviceImplName
?
uncap_first
};
/**
*
新增
${
table
.
comment
}
*
*
@
return
*/
@
TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@
PostMapping
(
value
=
"/save"
)
@
ApiOperation
(
httpMethod
=
"POST"
,
value
=
"新增${table.comment}"
,
notes
=
"新增${table.comment}"
)
public
ResponseModel
<${
entity
}
Model
>
save
(@
RequestBody
${
entity
}
Model
model
)
{
model
=
${
table
.
serviceImplName
?
uncap_first
}.
createWithModel
(
model
);
return
ResponseHelper
.
buildResponse
(
model
);
}
/**
*
根据
sequenceNbr
更新
*
*
@
param
sequenceNbr
主键
*
@
return
*/
@
TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@
PutMapping
(
value
=
"/{sequenceNbr}"
)
@
ApiOperation
(
httpMethod
=
"PUT"
,
value
=
"根据sequenceNbr更新${table.comment}"
,
notes
=
"根据sequenceNbr更新${table.comment}"
)
public
ResponseModel
<${
entity
}
Model
>
updateBySequenceNbr
${
entity
}(@
RequestBody
${
entity
}
Model
model
,@
PathVariable
(
value
=
"sequenceNbr"
)
Long
sequenceNbr
)
{
model
.
setSequenceNbr
(
sequenceNbr
);
return
ResponseHelper
.
buildResponse
(${
table
.
serviceImplName
?
uncap_first
}.
updateWithModel
(
model
));
}
/**
*
根据
sequenceNbr
删除
*
*
@
param
sequenceNbr
主键
*
@
return
*/
@
TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@
DeleteMapping
(
value
=
"/{sequenceNbr}"
)
@
ApiOperation
(
httpMethod
=
"DELETE"
,
value
=
"根据sequenceNbr删除${table.comment}"
,
notes
=
"根据sequenceNbr删除${table.comment}"
)
public
ResponseModel
<
Boolean
>
deleteBySequenceNbr
(
HttpServletRequest
request
,
@
PathVariable
(
value
=
"sequenceNbr"
)
Long
sequenceNbr
){
return
ResponseHelper
.
buildResponse
(${
table
.
serviceImplName
?
uncap_first
}.
removeById
(
sequenceNbr
));
}
/**
*
根据
sequenceNbr
查询
*
*
@
param
sequenceNbr
主键
*
@
return
*/
@
TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@
GetMapping
(
value
=
"/{sequenceNbr}"
)
@
ApiOperation
(
httpMethod
=
"GET"
,
value
=
"根据sequenceNbr查询单个${table.comment}"
,
notes
=
"根据sequenceNbr查询单个${table.comment}"
)
public
ResponseModel
<${
entity
}
Model
>
selectOne
(@
PathVariable
Long
sequenceNbr
)
{
return
ResponseHelper
.
buildResponse
(${
table
.
serviceImplName
?
uncap_first
}.
queryBySeq
(
sequenceNbr
));
}
/**
*
列表分页查询
*
*
@
param
current
当前页
*
@
param
current
每页大小
*
@
return
*/
@
TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@
GetMapping
(
value
=
"/page"
)
@
ApiOperation
(
httpMethod
=
"GET"
,
value
=
"分页查询${table.comment}"
,
notes
=
"分页查询${table.comment}"
)
public
ResponseModel
<
Page
<${
entity
}
Model
>>
queryForPage
(@
RequestParam
(
value
=
"current"
)
int
current
,@
RequestParam
(
value
=
"size"
)
int
size
)
{
Page
<${
entity
}
Model
>
page
=
new
Page
<${
entity
}
Model
>();
page
.
setCurrent
(
current
);
page
.
setSize
(
size
);
return
ResponseHelper
.
buildResponse
(${
table
.
serviceImplName
?
uncap_first
}.
queryFor
${
entity
}
Page
(
page
));
}
/**
*
列表全部数据查询
*
*
@
return
*/
@
TycloudOperation
(
ApiLevel
=
UserType
.
AGENCY
)
@
ApiOperation
(
httpMethod
=
"GET"
,
value
=
"列表全部数据查询${table.comment}"
,
notes
=
"列表全部数据查询${table.comment}"
)
@
GetMapping
(
value
=
"/list"
)
public
ResponseModel
<
List
<${
entity
}
Model
>>
selectForList
()
{
return
ResponseHelper
.
buildResponse
(${
table
.
serviceImplName
?
uncap_first
}.
queryFor
${
entity
}
List
());
}
}
</#
if
>
\ No newline at end of file
amos-boot-biz-common/src/main/resources/template2/dto.java.ftl
0 → 100644
View file @
ad07a2b4
package
com
.
yeejoin
.
amos
.
boot
.
module
.${
package
.
ModuleName
}.
api
.
dto
;
import
io
.
swagger
.
annotations
.
ApiModel
;
import
io
.
swagger
.
annotations
.
ApiModelProperty
;
import
com
.
yeejoin
.
amos
.
boot
.
biz
.
common
.
dto
.
BaseDto
;
<#
if
entityLombokModel
>
import
lombok
.
Data
;
import
lombok
.
EqualsAndHashCode
;
</#
if
>
import
java
.
util
.
Date
;
/**
*
${
table
.
comment
!}
*
*
@
author
${
author
}
*
@
date
${
date
}
*/
<#
if
entityLombokModel
>
@
Data
<#
if
superEntityClass
??>
@
EqualsAndHashCode
(
callSuper
=
true
)
<#
else
>
@
EqualsAndHashCode
(
callSuper
=
false
)
</#
if
>
</#
if
>
<#
if
swagger2
>
@
ApiModel
(
value
=
"${entity}Dto"
,
description
=
"${table.comment!}"
)
</#
if
>
public
class
${
entity
}
Dto
extends
BaseDto
{
private
static
final
long
serialVersionUID
=
1L
;
<#--
----------
BEGIN
字段循环遍历
---------->
<#
list
table
.
fields
as
field
>
<#
if
field
.
keyFlag
>
<#
assign
keyPropertyName
=
"${field.propertyName}"
/>
</#
if
>
<#
if
field
.
comment
!?length gt 0>
<#
if
swagger2
>
@
ApiModelProperty
(
value
=
"${field.comment}"
)
<#
else
>
/**
*
${
field
.
comment
}
*/
</#
if
>
</#
if
>
<#
if
field
.
keyFlag
>
<#--
主键
-->
<#
if
field
.
keyIdentityFlag
>
@
TableId
(
value
=
"${field.name}"
,
type
=
IdType
.
AUTO
)
<#
elseif
idType
??>
@
TableId
(
value
=
"${field.name}"
,
type
=
IdType
.${
idType
})
<#
elseif
field
.
convert
>
@
TableId
(
"${field.name}"
)
</#
if
>
<#--
普通字段
-->
<#
elseif
field
.
fill
??>
<#--
-----
存在字段填充设置
----->
<#
if
field
.
convert
>
@
TableField
(
value
=
"${field.name}"
,
fill
=
FieldFill
.${
field
.
fill
})
<#
else
>
@
TableField
(
fill
=
FieldFill
.${
field
.
fill
})
</#
if
>
<#
elseif
field
.
convert
>
@
TableField
(
"${field.name}"
)
</#
if
>
<#--
乐观锁注解
-->
<#
if
(
versionFieldName
!"") == field.name>
@
Version
</#
if
>
<#--
逻辑删除注解
-->
<#
if
(
logicDeleteFieldName
!"") == field.name>
@
TableLogic
</#
if
>
private
${
field
.
propertyType
}
${
field
.
propertyName
};
</#
list
>
<#------------
END
字段循环遍历
---------->
<#
if
!entityLombokModel>
<#
list
table
.
fields
as
field
>
<#
if
field
.
propertyType
==
"boolean"
>
<#
assign
getprefix
=
"is"
/>
<#
else
>
<#
assign
getprefix
=
"get"
/>
</#
if
>
public
${
field
.
propertyType
}
${
getprefix
}${
field
.
capitalName
}()
{
return
${
field
.
propertyName
};
}
<#
if
entityBuilderModel
>
public
${
entity
}
set
${
field
.
capitalName
}(${
field
.
propertyType
}
${
field
.
propertyName
})
{
<#
else
>
public
void
set
${
field
.
capitalName
}(${
field
.
propertyType
}
${
field
.
propertyName
})
{
</#
if
>
this
.${
field
.
propertyName
}
=
${
field
.
propertyName
};
<#
if
entityBuilderModel
>
return
this
;
</#
if
>
}
</#
list
>
</#
if
>
<#
if
entityColumnConstant
>
<#
list
table
.
fields
as
field
>
public
static
final
String
${
field
.
name
?
upper_case
}
=
"${field.name}"
;
</#
list
>
</#
if
>
<#
if
activeRecord
>
@
Override
protected
Serializable
pkVal
()
{
<#
if
keyPropertyName
??>
return
this
.${
keyPropertyName
};
<#
else
>
return
null
;
</#
if
>
}
</#
if
>
<#
if
!entityLombokModel>
@
Override
public
String
toString
()
{
return
"${entity}{"
+
<#
list
table
.
fields
as
field
>
<#
if
field_index
==
0
>
"${field.propertyName}="
+
${
field
.
propertyName
}
+
<#
else
>
", ${field.propertyName}="
+
${
field
.
propertyName
}
+
</#
if
>
</#
list
>
"}"
;
}
</#
if
>
}
amos-boot-biz-common/src/main/resources/template2/mapper.java.ftl
0 → 100644
View file @
ad07a2b4
package
${
package
.
Mapper
};
import
${
package
.
Entity
}.${
entity
};
import
${
superMapperClassPackage
};
/**
*
${
table
.
comment
!} Mapper 接口
*
*
@
author
${
author
}
*
@
date
${
date
}
*/
<#
if
kotlin
>
interface
${
table
.
mapperName
}
:
${
superMapperClass
}<${
entity
}>
<#
else
>
public
interface
${
table
.
mapperName
}
extends
${
superMapperClass
}<${
entity
}>
{
}
</#
if
>
amos-boot-biz-common/src/main/resources/template2/mapper.xml.ftl
0 → 100644
View file @
ad07a2b4
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"${package.Mapper}.${table.mapperName}"
>
<
#if enableCache>
<!-- 开启二级缓存 -->
<cache
type=
"org.mybatis.caches.ehcache.LoggingEhcache"
/>
<
/#if>
<
#if baseResultMap>
<!-- 通用查询映射结果 -->
<resultMap
id=
"BaseResultMap"
type=
"${package.Entity}.${entity}"
>
<
#list table.fields as field>
<
#if field.keyFlag>
<
#--生成主键排在第一位-->
<id
column=
"${field.name}"
property=
"${field.propertyName}"
/>
<
/#if>
<
/#list>
<
#list table.commonFields as field>
<
#--生成公共字段 -->
<result
column=
"${field.name}"
property=
"${field.propertyName}"
/>
<
/#list>
<
#list table.fields as field>
<
#if !field.keyFlag>
<
#--生成普通字段 -->
<result
column=
"${field.name}"
property=
"${field.propertyName}"
/>
<
/#if>
<
/#list>
</resultMap>
<
/#if>
<
#if baseColumnList>
<!-- 通用查询结果列 -->
<sql
id=
"Base_Column_List"
>
<
#list table.commonFields as field>
${field.name},
<
/#list>
${table.fieldNames}
</sql>
<
/#if>
</mapper>
amos-boot-biz-common/src/main/resources/template2/model.java.ftl
0 → 100644
View file @
ad07a2b4
package
com
.
yeejoin
.
amos
.
boot
.
module
.${
package
.
ModuleName
}.
api
.
model
;
import
io
.
swagger
.
annotations
.
ApiModel
;
import
io
.
swagger
.
annotations
.
ApiModelProperty
;
import
org
.
typroject
.
tyboot
.
core
.
rdbms
.
model
.
BaseModel
;
<#
if
entityLombokModel
>
import
lombok
.
Data
;
import
lombok
.
EqualsAndHashCode
;
</#
if
>
/**
*
${
table
.
comment
!}
*
*
@
author
${
author
}
*
@
date
${
date
}
*/
<#
if
entityLombokModel
>
@
Data
<#
if
superEntityClass
??>
@
EqualsAndHashCode
(
callSuper
=
true
)
<#
else
>
@
EqualsAndHashCode
(
callSuper
=
false
)
</#
if
>
</#
if
>
<#
if
swagger2
>
@
ApiModel
(
value
=
"${entity}Model"
,
description
=
"${table.comment!}"
)
</#
if
>
public
class
${
entity
}
Model
extends
BaseModel
{
private
static
final
long
serialVersionUID
=
1L
;
<#--
----------
BEGIN
字段循环遍历
---------->
<#
list
table
.
fields
as
field
>
<#
if
field
.
keyFlag
>
<#
assign
keyPropertyName
=
"${field.propertyName}"
/>
</#
if
>
<#
if
field
.
comment
!?length gt 0>
<#
if
swagger2
>
@
ApiModelProperty
(
value
=
"${field.comment}"
)
<#
else
>
/**
*
${
field
.
comment
}
*/
</#
if
>
</#
if
>
<#
if
field
.
keyFlag
>
<#--
主键
-->
<#
if
field
.
keyIdentityFlag
>
@
TableId
(
value
=
"${field.name}"
,
type
=
IdType
.
AUTO
)
<#
elseif
idType
??>
@
TableId
(
value
=
"${field.name}"
,
type
=
IdType
.${
idType
})
<#
elseif
field
.
convert
>
@
TableId
(
"${field.name}"
)
</#
if
>
<#--
普通字段
-->
<#
elseif
field
.
fill
??>
<#--
-----
存在字段填充设置
----->
<#
if
field
.
convert
>
@
TableField
(
value
=
"${field.name}"
,
fill
=
FieldFill
.${
field
.
fill
})
<#
else
>
@
TableField
(
fill
=
FieldFill
.${
field
.
fill
})
</#
if
>
<#
elseif
field
.
convert
>
@
TableField
(
"${field.name}"
)
</#
if
>
<#--
乐观锁注解
-->
<#
if
(
versionFieldName
!"") == field.name>
@
Version
</#
if
>
<#--
逻辑删除注解
-->
<#
if
(
logicDeleteFieldName
!"") == field.name>
@
TableLogic
</#
if
>
private
${
field
.
propertyType
}
${
field
.
propertyName
};
</#
list
>
<#------------
END
字段循环遍历
---------->
<#
if
!entityLombokModel>
<#
list
table
.
fields
as
field
>
<#
if
field
.
propertyType
==
"boolean"
>
<#
assign
getprefix
=
"is"
/>
<#
else
>
<#
assign
getprefix
=
"get"
/>
</#
if
>
public
${
field
.
propertyType
}
${
getprefix
}${
field
.
capitalName
}()
{
return
${
field
.
propertyName
};
}
<#
if
entityBuilderModel
>
public
${
entity
}
set
${
field
.
capitalName
}(${
field
.
propertyType
}
${
field
.
propertyName
})
{
<#
else
>
public
void
set
${
field
.
capitalName
}(${
field
.
propertyType
}
${
field
.
propertyName
})
{
</#
if
>
this
.${
field
.
propertyName
}
=
${
field
.
propertyName
};
<#
if
entityBuilderModel
>
return
this
;
</#
if
>
}
</#
list
>
</#
if
>
<#
if
entityColumnConstant
>
<#
list
table
.
fields
as
field
>
public
static
final
String
${
field
.
name
?
upper_case
}
=
"${field.name}"
;
</#
list
>
</#
if
>
<#
if
activeRecord
>
@
Override
protected
Serializable
pkVal
()
{
<#
if
keyPropertyName
??>
return
this
.${
keyPropertyName
};
<#
else
>
return
null
;
</#
if
>
}
</#
if
>
<#
if
!entityLombokModel>
@
Override
public
String
toString
()
{
return
"${entity}{"
+
<#
list
table
.
fields
as
field
>
<#
if
field_index
==
0
>
"${field.propertyName}="
+
${
field
.
propertyName
}
+
<#
else
>
", ${field.propertyName}="
+
${
field
.
propertyName
}
+
</#
if
>
</#
list
>
"}"
;
}
</#
if
>
}
amos-boot-biz-common/src/main/resources/template2/service.java.ftl
0 → 100644
View file @
ad07a2b4
package
com
.
yeejoin
.
amos
.
boot
.
module
.${
package
.
ModuleName
}.
api
.
service
;
/**
*
${
table
.
comment
!}接口类
*
*
@
author
${
author
}
*
@
date
${
date
}
*/
<#
if
kotlin
>
interface
${
table
.
serviceName
}
:
${
superServiceClass
}<${
entity
}>
<#
else
>
public
interface
${
table
.
serviceName
}
{}
</#
if
>
amos-boot-biz-common/src/main/resources/template2/serviceImpl.java.ftl
0 → 100644
View file @
ad07a2b4
package
${
package
.
ServiceImpl
};
import
${
package
.
Entity
}.${
entity
};
import
${
package
.
Mapper
}.${
table
.
mapperName
};
import
${
package
.
Service
}.${
table
.
serviceName
};
import
${
package
.
Xml
}.${
entity
}
Model
;
import
org
.
typroject
.
tyboot
.
core
.
rdbms
.
service
.
BaseService
;
import
org
.
springframework
.
stereotype
.
Service
;
import
com
.
baomidou
.
mybatisplus
.
extension
.
plugins
.
pagination
.
Page
;
import
java
.
util
.
List
;
/**
*
${
table
.
comment
!}服务实现类
*
*
@
author
${
author
}
*
@
date
${
date
}
*/
@
Service
public
class
${
table
.
serviceImplName
}
extends
BaseService
<${
entity
}
Model
,${
entity
},${
table
.
mapperName
}>
implements
${
table
.
serviceName
}
{
/**
*
分页查询
*/
public
Page
<${
entity
}
Model
>
queryFor
${
entity
}
Page
(
Page
<${
entity
}
Model
>
page
)
{
return
this
.
queryForPage
(
page
,
null
,
false
);
}
/**
*
列表查询
示例
*/
public
List
<${
entity
}
Model
>
queryFor
${
entity
}
List
()
{
return
this
.
queryForList
(
""
,
false
);
}
}
\ No newline at end of file
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