记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
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
董敬伟
liquidnet-bus-v1
Commits
3df649cd
Commit
3df649cd
authored
Sep 22, 2021
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
+common_coupon降级DB;
~优先购默认允许叠加,去除点选;
parent
b0ff7c4d
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
101 additions
and
74 deletions
+101
-74
add101.html
...resources/templates/zhengzai/candy/coupon/mgt/add101.html
+11
-11
CandyCommonCouponBasicDto.java
...iquidnet/service/candy/dto/CandyCommonCouponBasicDto.java
+5
-2
CandyCommonCouponMapper.java
...quidnet/service/candy/mapper/CandyCommonCouponMapper.java
+6
-0
CandyCouponRuleMapper.java
...liquidnet/service/candy/mapper/CandyCouponRuleMapper.java
+1
-1
CandyCommonCouponMapper.xml
...iquidnet/service/candy/mapper/CandyCommonCouponMapper.xml
+50
-51
CandyCouponRuleMapper.xml
.../liquidnet/service/candy/mapper/CandyCouponRuleMapper.xml
+7
-0
CandyUserCouponMapper.xml
.../liquidnet/service/candy/mapper/CandyUserCouponMapper.xml
+2
-2
PlatformCandyDemoteController.java
...tform/controller/candy/PlatformCandyDemoteController.java
+3
-3
PlatformCandyUserCouponService.java
...rm/service/impl/candy/PlatformCandyUserCouponService.java
+16
-4
No files found.
liquidnet-bus-client/liquidnet-client-admin/liquidnet-client-admin-web/src/main/resources/templates/zhengzai/candy/coupon/mgt/add101.html
View file @
3df649cd
...
...
@@ -217,14 +217,14 @@
<textarea
id=
"describeTxt"
class=
"form-control"
rows=
"4"
></textarea>
</div>
</div>
<div
class=
"main_type"
>
<span
class=
"labelName"
>
使用限制:
</span
>
<div
class=
"layui-input-block"
style=
"display: flex"
>
<input
type=
"radio"
value=
"0"
class=
"typeOverlay"
name=
"typeOverlay"
><span>
叠加
</span
>
<input
type=
"radio"
value=
"1"
class=
"typeOverlay"
name=
"typeOverlay"
checked
><span>
限制
</span
>
</div
>
<!-- <div class="main_type">--
>
<!-- <span class="labelName">使用限制:</span>--
>
<!-- <div class="layui-input-block" style="display: flex">--
>
<!-- <input type="radio" value="0" class="typeOverlay" name="typeOverlay"><span>叠加</span>--
>
<!-- <input type="radio" value="1" class="typeOverlay" name="typeOverlay" checked><span>限制</span>--
>
<!-- </div>--
>
</div
>
<!-- </div>--
>
<div
class=
"sendTime"
>
<span
class=
"labelName"
>
发送时间:
</span>
<div
class=
"layui-input-block"
style=
"display: flex"
>
...
...
@@ -257,7 +257,7 @@
let
selectThreeId
=
''
;
// 选中演出三级的ID
let
selectThreeName
=
''
;
// 选中演出三级的名称
let
sendTimeType
=
''
;
let
playMethod
=
'
1
'
;
// 叠加/限制
let
playMethod
=
'
0
'
;
// 叠加/限制
function
search
()
{
let
data
=
{
status
:
'(3,6)'
,
...
...
@@ -386,9 +386,9 @@
$
(
'#test1'
).
hide
();
}
});
$
(
"input[name=typeOverlay]"
).
change
(
function
(
e
){
playMethod
=
e
.
target
.
value
;
});
//
$("input[name=typeOverlay]").change(function(e){
//
playMethod = e.target.value;
//
});
layui
.
use
(
'laydate'
,
function
(){
var
laydate
=
layui
.
laydate
;
//执行一个laydate实例
...
...
liquidnet-bus-do/liquidnet-service-candy-do/src/main/java/com/liquidnet/service/candy/dto/CandyCommonCouponBasicDto.java
View file @
3df649cd
...
...
@@ -36,7 +36,7 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{
private
LocalDateTime
effectAt
;
private
LocalDateTime
expireAt
;
//private String operator;
private
LocalDateTime
createdAt
;
//
private LocalDateTime createdAt;
//private Date updatedAt;
//private String comment;
...
...
@@ -46,6 +46,9 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{
//private String couponId;
private
Integer
state
;
private
Integer
ranged
;
//private String operator;
private
LocalDateTime
createdAt
;
//private LocalDateTime updatedAt;
//private String comment;
/* com.liquidnet.service.candy.entity.CandyCouponRule */
...
...
@@ -84,12 +87,12 @@ public class CandyCommonCouponBasicDto implements Serializable ,Cloneable{
this
.
setRedeemStop
(
coupon
.
getRedeemStop
());
this
.
setEffectAt
(
coupon
.
getEffectAt
());
this
.
setExpireAt
(
coupon
.
getExpireAt
());
this
.
setCreatedAt
(
coupon
.
getCreatedAt
());
this
.
setCcouponId
(
commonCoupon
.
getCcouponId
());
this
.
setMcouponId
(
commonCoupon
.
getMcouponId
());
this
.
setState
(
commonCoupon
.
getState
());
this
.
setRanged
(
commonCoupon
.
getRanged
());
this
.
setCreatedAt
(
commonCoupon
.
getCreatedAt
());
this
.
setUseRules
(
couponRuleDtoList
);
return
this
;
...
...
liquidnet-bus-do/liquidnet-service-candy-do/src/main/java/com/liquidnet/service/candy/mapper/CandyCommonCouponMapper.java
View file @
3df649cd
package
com
.
liquidnet
.
service
.
candy
.
mapper
;
import
com.liquidnet.service.candy.dto.CandyCommonCouponBasicDto
;
import
com.liquidnet.service.candy.entity.CandyCommonCoupon
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Param
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
* <p>
...
...
@@ -13,4 +18,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public
interface
CandyCommonCouponMapper
extends
BaseMapper
<
CandyCommonCoupon
>
{
List
<
CandyCommonCouponBasicDto
>
selectMultiForCommonCouponBasicDto
(
@Param
(
"ucreatedAt"
)
LocalDateTime
ucreatedAt
);
}
liquidnet-bus-do/liquidnet-service-candy-do/src/main/java/com/liquidnet/service/candy/mapper/CandyCouponRuleMapper.java
View file @
3df649cd
...
...
@@ -37,5 +37,5 @@ public interface CandyCouponRuleMapper extends BaseMapper<CandyCouponRule> {
* @param couponIdList 券ID列表
* @return List<CandyCouponRuleDto>
*/
List
<
CandyCouponRuleDto
>
selectForCouponRuleDto
(
@Param
(
"couponIdList"
)
List
<
String
>
couponIdList
);
List
<
CandyCouponRuleDto
>
select
List
ForCouponRuleDto
(
@Param
(
"couponIdList"
)
List
<
String
>
couponIdList
);
}
liquidnet-bus-do/liquidnet-service-candy-do/src/main/resources/com/liquidnet/service/candy/mapper/CandyCommonCouponMapper.xml
View file @
3df649cd
...
...
@@ -2,59 +2,58 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.liquidnet.service.candy.mapper.CandyCommonCouponMapper"
>
<!-- <resultMap id="Rst_UserCouponBasicDto" type="com.liquidnet.service.candy.dto.CandyUserCouponBasicDto">--
>
<!-- <result column="coupon_id" jdbcType="VARCHAR" property="couponId"/>--
>
<!-- <!– <result column="state" jdbcType="TINYINT" property="state"/>–>
-->
<!-- <result column="title" jdbcType="VARCHAR" property="title"/>--
>
<!-- <result column="label" jdbcType="VARCHAR" property="label"/>--
>
<!-- <result column="notice" jdbcType="VARCHAR" property="notice"/>--
>
<!-- <result column="exclusive" jdbcType="SMALLINT" property="exclusive"/>--
>
<!-- <result column="busi_type" jdbcType="SMALLINT" property="busiType"/>--
>
<!-- <result column="cou_type" jdbcType="SMALLINT" property="couType"/>--
>
<!-- <result column="bind_type" jdbcType="SMALLINT" property="bindType"/>--
>
<!-- <result column="discount" jdbcType="DECIMAL" property="discount"/>--
>
<!-- <result column="val_face" jdbcType="DECIMAL" property="valFace"/>--
>
<!-- <result column="val_over" jdbcType="DECIMAL" property="valOver"/>--
>
<!-- <result column="val_minus" jdbcType="DECIMAL" property="valMinus"/>--
>
<!-- <result column="overlay" jdbcType="TINYINT" property="overlay"/>--
>
<!-- <result column="overlay_level" jdbcType="TINYINT" property="overlayLevel"/>--
>
<!-- <result column="validity" jdbcType="INTEGER" property="validity"/>--
>
<!-- <result column="redeem_validity" jdbcType="INTEGER" property="redeemValidity"/>--
>
<!-- <result column="redeem_start" jdbcType="TIMESTAMP" property="redeemStart"/>--
>
<!-- <result column="redeem_stop" jdbcType="TIMESTAMP" property="redeemStop"/>--
>
<!-- <result column="effect_at" jdbcType="TIMESTAMP" property="effectAt"/>--
>
<!-- <result column="expire_at" jdbcType="TIMESTAMP" property="expireAt"/>--
>
<!-- <!– <result column="operator" jdbcType="VARCHAR" property="operator" />–>
-->
<!-- <!– <result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />–>
-->
<!-- <!– <result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />–>
-->
<!-- <!– <result column="comment" jdbcType="VARCHAR" property="comment" />–>
-->
<resultMap
id=
"Rst_CommonCouponBasicDto"
type=
"com.liquidnet.service.candy.dto.CandyCommonCouponBasicDto"
>
<result
column=
"coupon_id"
jdbcType=
"VARCHAR"
property=
"couponId"
/
>
<!-- <result column="state" jdbcType="TINYINT" property="state"/>
-->
<result
column=
"title"
jdbcType=
"VARCHAR"
property=
"title"
/
>
<result
column=
"label"
jdbcType=
"VARCHAR"
property=
"label"
/
>
<result
column=
"notice"
jdbcType=
"VARCHAR"
property=
"notice"
/
>
<result
column=
"exclusive"
jdbcType=
"SMALLINT"
property=
"exclusive"
/
>
<result
column=
"busi_type"
jdbcType=
"SMALLINT"
property=
"busiType"
/
>
<result
column=
"cou_type"
jdbcType=
"SMALLINT"
property=
"couType"
/
>
<result
column=
"bind_type"
jdbcType=
"SMALLINT"
property=
"bindType"
/
>
<result
column=
"discount"
jdbcType=
"DECIMAL"
property=
"discount"
/
>
<result
column=
"val_face"
jdbcType=
"DECIMAL"
property=
"valFace"
/
>
<result
column=
"val_over"
jdbcType=
"DECIMAL"
property=
"valOver"
/
>
<result
column=
"val_minus"
jdbcType=
"DECIMAL"
property=
"valMinus"
/
>
<result
column=
"overlay"
jdbcType=
"TINYINT"
property=
"overlay"
/
>
<result
column=
"overlay_level"
jdbcType=
"TINYINT"
property=
"overlayLevel"
/
>
<result
column=
"validity"
jdbcType=
"INTEGER"
property=
"validity"
/
>
<result
column=
"redeem_validity"
jdbcType=
"INTEGER"
property=
"redeemValidity"
/
>
<result
column=
"redeem_start"
jdbcType=
"TIMESTAMP"
property=
"redeemStart"
/
>
<result
column=
"redeem_stop"
jdbcType=
"TIMESTAMP"
property=
"redeemStop"
/
>
<result
column=
"effect_at"
jdbcType=
"TIMESTAMP"
property=
"effectAt"
/
>
<result
column=
"expire_at"
jdbcType=
"TIMESTAMP"
property=
"expireAt"
/
>
<!-- <result column="operator" jdbcType="VARCHAR" property="operator" />
-->
<!-- <result column="created_at" jdbcType="TIMESTAMP" property="createdAt" />
-->
<!-- <result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />
-->
<!-- <result column="comment" jdbcType="VARCHAR" property="comment" />
-->
<!-- <result column="ucoupon_id" jdbcType="VARCHAR" property="ucouponId"/>-->
<!-- <!– <result column="mcoupon_id" jdbcType="VARCHAR" property="mcouponId" />–>-->
<!-- <result column="uid" jdbcType="VARCHAR" property="uid"/>-->
<!-- <!– <result column="coupon_id" jdbcType="VARCHAR" property="couponId" />–>-->
<!-- <result column="state" jdbcType="TINYINT" property="state"/>-->
<!-- <result column="ccode" jdbcType="VARCHAR" property="ccode"/>-->
<!-- <result column="bind_at" jdbcType="TIMESTAMP" property="bindAt"/>-->
<!-- <result column="used_at" jdbcType="TIMESTAMP" property="usedAt"/>-->
<!-- <result column="used_for" jdbcType="VARCHAR" property="usedFor"/>-->
<!-- <!– <result column="comment" jdbcType="VARCHAR" property="comment" />–>-->
<!-- </resultMap>-->
<result
column=
"ccoupon_id"
jdbcType=
"VARCHAR"
property=
"ccouponId"
/>
<result
column=
"mcoupon_id"
jdbcType=
"VARCHAR"
property=
"mcouponId"
/>
<!-- <result column="coupon_id" jdbcType="VARCHAR" property="couponId" />-->
<result
column=
"state"
jdbcType=
"TINYINT"
property=
"state"
/>
<result
column=
"ranged"
jdbcType=
"TINYINT"
property=
"ranged"
/>
<!-- <result column="operator" jdbcType="VARCHAR" property="operator" />-->
<result
column=
"created_at"
jdbcType=
"TIMESTAMP"
property=
"createdAt"
/>
<!-- <result column="updated_at" jdbcType="TIMESTAMP" property="updatedAt" />-->
<!-- <result column="comment" jdbcType="VARCHAR" property="comment" />-->
</resultMap>
<!-- <sql id="Rst_CommonCouponBasicDto_Column_List">--
>
<!-- cc.coupon_id, cc.title, cc.`label`, cc.notice, cc.`exclusive`, cc.busi_type, cc.cou_type, cc.bind_type,-->
<!-- cc.discount, cc.val_face, cc.val_over, cc.val_minus, cc.`overlay`, cc.overlay_level,-->
<!-- cc.validity,cc.redeem_validity, cc.redeem_start, cc.redeem_stop,-->
<sql
id=
"Rst_CommonCouponBasicDto_Column_List"
>
cc.coupon_id, cc.title, cc.`label`, cc.notice, cc.`exclusive`, cc.busi_type, cc.cou_type, cc.bind_type,
cc.discount, cc.val_face, cc.val_over, cc.val_minus, cc.`overlay`, cc.overlay_level,
cc.validity, cc.redeem_validity, cc.redeem_start, cc.redeem_stop, cc.effect_at, cc.expire_at
<!-- cuc.ucoupon_id, cuc.mcoupon_id, cuc.`uid`, cuc.`state`, cuc.ccode, cuc.bind_at, cuc.dued_at, cuc.used_at, cuc.used_for-->
<!-- </sql>--
>
ccc.ccoupon_id, ccc.mcoupon_id, ccc.`state`, ccc.ranged, ccc.created_at
</sql
>
<!-- <select id="selectMultiForCommonCouponBasicDto" resultMap="Rst_CommonCouponBasicDto">--
>
<!-- SELECT-->
<!-- <include refid="Rst_CommonCouponBasicDto_Column_List"/>--
>
<!-- FROM candy_user_coupon cuc-->
<!-- LEFT JOIN candy_coupon cc ON cuc.coupon_id = cc.coupon_id-->
<!-- WHERE cuc.uid = #{uid,jdbcType=VARCHAR}-->
<!-- AND state <![CDATA[<>]]> 2-->
<!-- </select>--
>
<select
id=
"selectMultiForCommonCouponBasicDto"
resultMap=
"Rst_CommonCouponBasicDto"
>
SELECT
<include
refid=
"Rst_CommonCouponBasicDto_Column_List"
/
>
FROM candy_common_coupon ccc
LEFT JOIN candy_coupon cc ON ccc.coupon_id = cc.coupon_id
WHERE ccc.state
<![CDATA[<>]]>
2
AND ccc.created_at
<![CDATA[>=]]>
#{ucreatedAt,jdbcType=TIMESTAMP}
</select
>
</mapper>
liquidnet-bus-do/liquidnet-service-candy-do/src/main/resources/com/liquidnet/service/candy/mapper/CandyCouponRuleMapper.xml
View file @
3df649cd
...
...
@@ -19,6 +19,13 @@
<if
test=
"couponId != null and couponId != ''"
>
AND coupon_id = #{couponId,jdbcType=VARCHAR}
</if>
ORDER BY coupon_id
</select>
<select
id=
"selectListForCouponRuleDto"
resultMap=
"Rst_CouponRuleDto"
>
SELECT crule_id, coupon_id, use_scope, busi_name, busi_id
FROM candy_coupon_rule
WHERE state = 1
<if
test=
"couponIdList != null and couponIdList.size() > 0"
>
<foreach
collection=
"couponIdList"
item=
"couponId"
open=
"AND coupon_id IN ("
separator=
","
close=
")"
>
$(couponId)
...
...
liquidnet-bus-do/liquidnet-service-candy-do/src/main/resources/com/liquidnet/service/candy/mapper/CandyUserCouponMapper.xml
View file @
3df649cd
...
...
@@ -55,7 +55,7 @@
<include
refid=
"Rst_UserCouponBasicDto_Column_List"
/>
FROM candy_user_coupon cuc
LEFT JOIN candy_coupon cc ON cuc.coupon_id = cc.coupon_id
WHERE cuc.
uid = #{uid,jdbcType=VARCHAR}
AND
state
<![CDATA[<>]]>
2
WHERE cuc.
state
<![CDATA[<>]]>
2
AND
cuc.uid = #{uid,jdbcType=VARCHAR}
</select>
</mapper>
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/controller/candy/PlatformCandyDemoteController.java
View file @
3df649cd
...
...
@@ -7,8 +7,6 @@ import com.liquidnet.service.candy.dto.CandyCommonCouponBasicDto;
import
com.liquidnet.service.candy.dto.CandyUserCouponBasicDto
;
import
com.liquidnet.service.platform.service.impl.candy.PlatformCandyUserCouponService
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiImplicitParams
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -16,6 +14,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.time.LocalDateTime
;
import
java.util.List
;
@Api
(
tags
=
"券系统-数据降级查询"
)
...
...
@@ -37,7 +36,8 @@ public class PlatformCandyDemoteController {
@ApiOperation
(
value
=
"用户公有券"
)
@PostMapping
(
"ccoupon"
)
public
ResponseDto
<
List
<
CandyCommonCouponBasicDto
>>
queryForCommonCouponBasicDto
()
{
return
ResponseDto
.
success
(
platformCandyUserCouponService
.
ccouponBasicDtoByUidProcessing
(
CurrentUtil
.
getCurrentUid
()));
LocalDateTime
ucreatedAt
=
(
LocalDateTime
)
CurrentUtil
.
getTokenClaims
().
get
(
CurrentUtil
.
TOKEN_UCREATED
);
return
ResponseDto
.
success
(
platformCandyUserCouponService
.
ccouponBasicDtoByUidProcessing
(
ucreatedAt
));
}
}
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/service/impl/candy/PlatformCandyUserCouponService.java
View file @
3df649cd
...
...
@@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.time.LocalDateTime
;
import
java.util.ArrayList
;
import
java.util.LinkedList
;
import
java.util.List
;
...
...
@@ -68,7 +69,7 @@ public class PlatformCandyUserCouponService extends ServiceImpl<CandyUserCouponM
if
(!
CollectionUtils
.
isEmpty
(
basicDtoList
))
{
List
<
String
>
couponIdList
=
basicDtoList
.
parallelStream
().
map
(
CandyUserCouponBasicDto:
:
getCouponId
).
collect
(
Collectors
.
toList
());
List
<
CandyCouponRuleDto
>
couponRuleDtoList
=
candyCouponRuleMapper
.
selectForCouponRuleDto
(
couponIdList
);
List
<
CandyCouponRuleDto
>
couponRuleDtoList
=
candyCouponRuleMapper
.
select
List
ForCouponRuleDto
(
couponIdList
);
Map
<
String
,
List
<
CandyCouponRuleDto
>>
couponRuleDtoListMap
=
couponRuleDtoList
.
parallelStream
().
collect
(
Collectors
.
groupingBy
(
CandyCouponRuleDto:
:
getCouponId
));
...
...
@@ -81,8 +82,19 @@ public class PlatformCandyUserCouponService extends ServiceImpl<CandyUserCouponM
return
basicDtoList
;
}
public
List
<
CandyCommonCouponBasicDto
>
ccouponBasicDtoByUidProcessing
(
String
uid
)
{
// candyCommonCouponMapper.selectMultiForCommonCouponBasicDto()
return
null
;
public
List
<
CandyCommonCouponBasicDto
>
ccouponBasicDtoByUidProcessing
(
LocalDateTime
ucreatedAt
)
{
List
<
CandyCommonCouponBasicDto
>
basicDtoList
=
candyCommonCouponMapper
.
selectMultiForCommonCouponBasicDto
(
ucreatedAt
);
if
(!
CollectionUtils
.
isEmpty
(
basicDtoList
))
{
List
<
String
>
couponIdList
=
basicDtoList
.
parallelStream
().
map
(
CandyCommonCouponBasicDto:
:
getCouponId
).
collect
(
Collectors
.
toList
());
List
<
CandyCouponRuleDto
>
couponRuleDtoList
=
candyCouponRuleMapper
.
selectListForCouponRuleDto
(
couponIdList
);
Map
<
String
,
List
<
CandyCouponRuleDto
>>
couponRuleDtoListMap
=
couponRuleDtoList
.
parallelStream
().
collect
(
Collectors
.
groupingBy
(
CandyCouponRuleDto:
:
getCouponId
));
basicDtoList
.
parallelStream
().
forEach
(
dto
->
{
dto
.
setUseRules
(
couponRuleDtoListMap
.
get
(
dto
.
getCouponId
()));
});
}
return
basicDtoList
;
}
}
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