记得上下班打卡 | 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
c0700095
Commit
c0700095
authored
Sep 12, 2021
by
anjiabin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交chime社交相关
parent
469c3d5f
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
175 additions
and
38 deletions
+175
-38
FeignKylinForChimeClient.java
...net/service/feign/kylin/api/FeignKylinForChimeClient.java
+6
-0
ChimeUserBiz.java
...in/java/com/liquidnet/service/chime/biz/ChimeUserBiz.java
+30
-0
ChimePerformanceController.java
.../service/chime/controller/ChimePerformanceController.java
+24
-38
KylinMyPerformancesController.java
...rvice/kylin/controller/KylinMyPerformancesController.java
+39
-0
KylinPerformancesServiceImpl.java
...vice/kylin/service/impl/KylinPerformancesServiceImpl.java
+11
-0
DataUtils.java
...ain/java/com/liquidnet/service/kylin/utils/DataUtils.java
+26
-0
TestDataUtil.java
...c/test/java/com/liquidnet/service/kylin/TestDataUtil.java
+39
-0
No files found.
liquidnet-bus-feign/liquidnet-api-feign-kylin/src/main/java/com/liquidnet/service/feign/kylin/api/FeignKylinForChimeClient.java
View file @
c0700095
...
@@ -2,6 +2,7 @@ package com.liquidnet.service.feign.kylin.api;
...
@@ -2,6 +2,7 @@ package com.liquidnet.service.feign.kylin.api;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.chime.config.SecuringRequestInterceptor
;
import
com.liquidnet.service.chime.config.SecuringRequestInterceptor
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo
;
import
feign.hystrix.FallbackFactory
;
import
feign.hystrix.FallbackFactory
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.GetMapping;
...
@@ -9,6 +10,7 @@ import org.springframework.web.bind.annotation.GetMapping;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
/**
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @author AnJiabin <anjiabin@zhengzai.tv>
...
@@ -26,6 +28,10 @@ import java.util.HashMap;
...
@@ -26,6 +28,10 @@ import java.util.HashMap;
fallback
=
FallbackFactory
.
Default
.
class
,
fallback
=
FallbackFactory
.
Default
.
class
,
configuration
=
SecuringRequestInterceptor
.
class
)
configuration
=
SecuringRequestInterceptor
.
class
)
public
interface
FeignKylinForChimeClient
{
public
interface
FeignKylinForChimeClient
{
@GetMapping
(
"myPerformance/performancesList"
)
ResponseDto
<
List
<
KylinPerformanceVo
>>
myPerformancesList
();
@GetMapping
(
"performance/localList"
)
@GetMapping
(
"performance/localList"
)
ResponseDto
<
HashMap
<
String
,
Object
>>
localList
(
ResponseDto
<
HashMap
<
String
,
Object
>>
localList
(
@RequestParam
(
value
=
"cityName"
,
defaultValue
=
""
)
String
cityName
,
@RequestParam
(
value
=
"cityName"
,
defaultValue
=
""
)
String
cityName
,
...
...
liquidnet-bus-service/liquidnet-service-chime/liquidnet-service-chime-impl/src/main/java/com/liquidnet/service/chime/biz/ChimeUserBiz.java
View file @
c0700095
...
@@ -4,7 +4,9 @@ import com.fasterxml.jackson.core.JsonProcessingException;
...
@@ -4,7 +4,9 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.service.chime.dto.PerformanceDto
;
import
com.liquidnet.service.chime.vo.mongo.ChimeUserTagsMappingVo
;
import
com.liquidnet.service.chime.vo.mongo.ChimeUserTagsMappingVo
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -45,4 +47,32 @@ public class ChimeUserBiz {
...
@@ -45,4 +47,32 @@ public class ChimeUserBiz {
userTagList
.
stream
().
forEach
(
vo
->
vo
.
setUserId
(
userId
));
userTagList
.
stream
().
forEach
(
vo
->
vo
.
setUserId
(
userId
));
return
userTagList
;
return
userTagList
;
}
}
/**
* 演出voList转换为DtoList
* @param performanceVoList
* @return
*/
public
List
<
PerformanceDto
>
buildPerformanceDtoList
(
List
<
KylinPerformanceVo
>
performanceVoList
){
List
<
PerformanceDto
>
performanceDtoList
=
new
ArrayList
<>();
for
(
KylinPerformanceVo
performanceVo:
performanceVoList
){
PerformanceDto
dto
=
PerformanceDto
.
getNew
();
dto
.
setPerformancesId
(
performanceVo
.
getPerformancesId
());
dto
.
setTitle
(
performanceVo
.
getTitle
());
dto
.
setImgPoster
(
performanceVo
.
getImgPoster
());
dto
.
setTimeStart
(
performanceVo
.
getTimeStart
());
dto
.
setTimeEnd
(
performanceVo
.
getTimeEnd
());
dto
.
setCityName
(
performanceVo
.
getCityName
());
dto
.
setJoinUserCount
(
123
);
List
<
String
>
imgList
=
new
ArrayList
<>();
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
dto
.
setAvatarImgList
(
imgList
);
performanceDtoList
.
add
(
dto
);
}
return
performanceDtoList
;
}
}
}
liquidnet-bus-service/liquidnet-service-chime/liquidnet-service-chime-impl/src/main/java/com/liquidnet/service/chime/controller/ChimePerformanceController.java
View file @
c0700095
...
@@ -2,11 +2,11 @@ package com.liquidnet.service.chime.controller;
...
@@ -2,11 +2,11 @@ package com.liquidnet.service.chime.controller;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSON
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.fasterxml.jackson.core.type.TypeReference
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.JsonUtils
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.commons.lang.util.StringUtil
;
import
com.liquidnet.service.base.PagedResult
;
import
com.liquidnet.service.base.PagedResult
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.chime.biz.ChimeUserBiz
;
import
com.liquidnet.service.chime.dto.ChimeUserInfoDto
;
import
com.liquidnet.service.chime.dto.ChimeUserInfoDto
;
import
com.liquidnet.service.chime.dto.ChimeUserListQueryReqDto
;
import
com.liquidnet.service.chime.dto.ChimeUserListQueryReqDto
;
import
com.liquidnet.service.chime.dto.PerformanceDto
;
import
com.liquidnet.service.chime.dto.PerformanceDto
;
...
@@ -25,7 +25,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
...
@@ -25,7 +25,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
...
@@ -52,6 +51,9 @@ public class ChimePerformanceController {
...
@@ -52,6 +51,9 @@ public class ChimePerformanceController {
@Autowired
@Autowired
private
FeignKylinForChimeClient
feignKylinForChimeClient
;
private
FeignKylinForChimeClient
feignKylinForChimeClient
;
@Autowired
private
ChimeUserBiz
chimeUserBiz
;
@GetMapping
(
"myPerformanceList"
)
@GetMapping
(
"myPerformanceList"
)
@ApiOperation
(
"已购票的演出"
)
@ApiOperation
(
"已购票的演出"
)
@ApiImplicitParams
({
@ApiImplicitParams
({
...
@@ -68,23 +70,26 @@ public class ChimePerformanceController {
...
@@ -68,23 +70,26 @@ public class ChimePerformanceController {
@RequestParam
(
defaultValue
=
""
)
String
orderBy
,
@RequestParam
(
defaultValue
=
""
)
String
orderBy
,
@RequestParam
(
defaultValue
=
""
)
String
sort
@RequestParam
(
defaultValue
=
""
)
String
sort
)
{
)
{
List
<
PerformanceDto
>
performanceDtoList
=
new
ArrayList
<>();
// List<PerformanceDto> performanceDtoList = new ArrayList<>();
for
(
int
i
=
0
;
i
<
10
;
i
++){
// for(int i=0;i<10;i++){
PerformanceDto
dto
=
PerformanceDto
.
getNew
();
// PerformanceDto dto = PerformanceDto.getNew();
dto
.
setPerformancesId
(
IDGenerator
.
get32UUID
());
// dto.setPerformancesId(IDGenerator.get32UUID());
dto
.
setTitle
(
"已购票演出00"
+(
i
+
1
));
// dto.setTitle("已购票演出00"+(i+1));
dto
.
setImgPoster
(
"https://img.zhengzai.tv/other/2021/08/04/865b8c442e7c4fb6a9f3d9b17a8e5b80.jpg"
);
// dto.setImgPoster("https://img.zhengzai.tv/other/2021/08/04/865b8c442e7c4fb6a9f3d9b17a8e5b80.jpg");
dto
.
setTimeStart
(
"2021-09-08 12:00:00"
);
// dto.setTimeStart("2021-09-08 12:00:00");
dto
.
setTimeEnd
(
"2021-10-08 12:00:00"
);
// dto.setTimeEnd("2021-10-08 12:00:00");
dto
.
setCityName
(
"北京"
);
// dto.setCityName("北京");
dto
.
setJoinUserCount
(
123
+(
i
*
2
));
// dto.setJoinUserCount(123+(i*2));
performanceDtoList
.
add
(
dto
);
// performanceDtoList.add(dto);
// }
ResponseDto
<
List
<
KylinPerformanceVo
>>
responseDto
=
feignKylinForChimeClient
.
myPerformancesList
();
List
<
PerformanceDto
>
performanceDtoList
=
null
;
if
(
StringUtil
.
isNotNull
(
responseDto
.
getData
())){
List
<
KylinPerformanceVo
>
kylinPerformanceVoList
=
responseDto
.
getData
();
performanceDtoList
=
chimeUserBiz
.
buildPerformanceDtoList
(
kylinPerformanceVoList
);
}
}
// HashMap<String, Object> result = kylinPerformancesService.localList(
// days, cityName, type,
// isDiscount, isAdvance, isExclusive,
// orderBy, sort
// );
return
ResponseDto
.
success
(
performanceDtoList
);
return
ResponseDto
.
success
(
performanceDtoList
);
}
}
...
@@ -119,29 +124,10 @@ public class ChimePerformanceController {
...
@@ -119,29 +124,10 @@ public class ChimePerformanceController {
ResponseDto
<
HashMap
<
String
,
Object
>>
responseDto
=
feignKylinForChimeClient
.
localList
(
cityName
,
days
,
type
,
isDiscount
,
isAdvance
,
isExclusive
,
orderBy
,
sort
);
ResponseDto
<
HashMap
<
String
,
Object
>>
responseDto
=
feignKylinForChimeClient
.
localList
(
cityName
,
days
,
type
,
isDiscount
,
isAdvance
,
isExclusive
,
orderBy
,
sort
);
if
(
StringUtil
.
isNotNull
(
responseDto
.
getData
())){
if
(
StringUtil
.
isNotNull
(
responseDto
.
getData
())){
String
jsonStr
=
JSON
.
toJSONString
(
responseDto
.
getData
().
get
(
"list"
));
String
jsonStr
=
JSON
.
toJSONString
(
responseDto
.
getData
().
get
(
"list"
));
List
<
KylinPerformanceVo
>
kylinPerformanceVoList
=
JsonUtils
.
fromJson
(
jsonStr
,
new
TypeReference
<
List
<
KylinPerformanceVo
>>()
{});
List
<
KylinPerformanceVo
>
kylinPerformanceVoList
=
JsonUtils
.
fromJson
(
jsonStr
,
new
TypeReference
<
List
<
KylinPerformanceVo
>>()
{});
List
<
PerformanceDto
>
performanceDtoList
=
new
ArrayList
<>();
List
<
PerformanceDto
>
performanceDtoList
=
chimeUserBiz
.
buildPerformanceDtoList
(
kylinPerformanceVoList
);;
for
(
KylinPerformanceVo
performanceVo:
kylinPerformanceVoList
){
PerformanceDto
dto
=
PerformanceDto
.
getNew
();
dto
.
setPerformancesId
(
IDGenerator
.
get32UUID
());
dto
.
setTitle
(
performanceVo
.
getTitle
());
dto
.
setImgPoster
(
performanceVo
.
getImgPoster
());
dto
.
setTimeStart
(
performanceVo
.
getTimeStart
());
dto
.
setTimeEnd
(
performanceVo
.
getTimeEnd
());
dto
.
setCityName
(
performanceVo
.
getCityName
());
dto
.
setJoinUserCount
(
123
);
List
<
String
>
imgList
=
new
ArrayList
<>();
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
imgList
.
add
(
"https://img.zhengzai.tv/user/2021/07/27/a4cc2a4e6dcd44d1812dc60e079086b4.png"
);
dto
.
setAvatarImgList
(
imgList
);
performanceDtoList
.
add
(
dto
);
}
responseDto
.
getData
().
put
(
"list"
,
performanceDtoList
);
responseDto
.
getData
().
put
(
"list"
,
performanceDtoList
);
}
}
...
...
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/controller/KylinMyPerformancesController.java
0 → 100644
View file @
c0700095
package
com
.
liquidnet
.
service
.
kylin
.
controller
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.service.impl.KylinPerformancesServiceImpl
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
java.util.List
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: KylinMyPerformancesController
* @Package com.liquidnet.service.kylin.controller
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/12 13:34
*/
@Api
(
tags
=
"前端-演出"
)
@RestController
@RequestMapping
(
"myPerformance"
)
@Slf4j
public
class
KylinMyPerformancesController
{
@Autowired
private
KylinPerformancesServiceImpl
kylinPerformancesService
;
@GetMapping
(
"performancesList"
)
@ApiOperation
(
"我的已购票演出列表"
)
public
ResponseDto
<
List
<
KylinPerformanceVo
>>
performancesList
()
{
List
<
KylinPerformanceVo
>
result
=
kylinPerformancesService
.
myPerformancesList
();
return
ResponseDto
.
success
(
result
);
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/service/impl/KylinPerformancesServiceImpl.java
View file @
c0700095
...
@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.service.impl;
...
@@ -2,6 +2,7 @@ package com.liquidnet.service.kylin.service.impl;
import
com.liquidnet.commons.lang.CommonConst
;
import
com.liquidnet.commons.lang.CommonConst
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.CollectionUtil
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.DateUtil
;
import
com.liquidnet.commons.lang.util.DistanceUtil
;
import
com.liquidnet.commons.lang.util.DistanceUtil
;
import
com.liquidnet.service.base.UserPathDto
;
import
com.liquidnet.service.base.UserPathDto
;
...
@@ -530,4 +531,14 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
...
@@ -530,4 +531,14 @@ public class KylinPerformancesServiceImpl implements IKylinPerformancesService {
}
}
return
isMemberStatus
;
return
isMemberStatus
;
}
}
/**
* 获取我的已购票演出列表
* @return
*/
public
List
<
KylinPerformanceVo
>
myPerformancesList
()
{
String
userId
=
CurrentUtil
.
getCurrentUid
();
List
<
KylinPerformanceVo
>
performanceVoList
=
dataUtils
.
myPerformancesList
(
userId
);
return
performanceVoList
;
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/main/java/com/liquidnet/service/kylin/utils/DataUtils.java
View file @
c0700095
...
@@ -521,4 +521,30 @@ public class DataUtils {
...
@@ -521,4 +521,30 @@ public class DataUtils {
return
(
KylinOrderExpressVo
)
redisUtil
.
get
(
redisKey
);
return
(
KylinOrderExpressVo
)
redisUtil
.
get
(
redisKey
);
}
}
/**
* 获取我的演出列表
*/
public
List
<
KylinPerformanceVo
>
myPerformancesList
(
String
userId
)
{
Query
queryNew
=
new
Query
();
queryNew
.
addCriteria
(
Criteria
.
where
(
"userId"
).
is
(
userId
));
List
<
String
>
performanceIdList
=
mongoTemplate
.
findDistinct
(
queryNew
,
"performanceId"
,
"KylinOrderTicketVo"
,
KylinOrderTicketVo
.
class
,
String
.
class
);
log
.
info
(
"myPerformancesList performanceIdList.size:{}"
,
performanceIdList
.
size
());
// 固定条件
Query
query
=
getCommonWhere
();
// 不要查询的字段
query
.
fields
().
exclude
(
"details"
);
query
.
fields
().
exclude
(
"noticeImage"
);
query
.
fields
().
exclude
(
"ticketTimeList"
);
query
.
fields
().
exclude
(
"describeElectronic"
);
//
query
.
addCriteria
(
Criteria
.
where
(
"performancesId"
).
in
(
performanceIdList
));
query
.
with
(
Sort
.
by
(
Sort
.
Order
.
desc
(
"timeStart"
)
));
List
<
KylinPerformanceVo
>
kylinPerformanceVoList
=
mongoTemplate
.
find
(
query
,
KylinPerformanceVo
.
class
,
KylinPerformanceVo
.
class
.
getSimpleName
());
return
kylinPerformanceVoList
;
}
}
}
liquidnet-bus-service/liquidnet-service-kylin/liquidnet-service-kylin-impl/src/test/java/com/liquidnet/service/kylin/TestDataUtil.java
0 → 100644
View file @
c0700095
package
com
.
liquidnet
.
service
.
kylin
;
import
com.liquidnet.service.kylin.dto.vo.mongo.KylinPerformanceVo
;
import
com.liquidnet.service.kylin.utils.DataUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.test.context.SpringBootTest
;
import
org.springframework.test.context.junit4.SpringJUnit4ClassRunner
;
import
java.util.List
;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestDataUtil
* @Package com.liquidnet.service.kylin
* @Copyright: LightNet @ Copyright (c) 2021
* @date 2021/9/12 14:37
*/
@Slf4j
@RunWith
(
SpringJUnit4ClassRunner
.
class
)
@SpringBootTest
public
class
TestDataUtil
{
@Autowired
private
DataUtils
dataUtils
;
@Test
public
void
myPerformancesList
(){
List
<
KylinPerformanceVo
>
kylinPerformanceVoList
=
dataUtils
.
myPerformancesList
(
"270788673588551684937456"
);
for
(
KylinPerformanceVo
vo:
kylinPerformanceVoList
){
log
.
info
(
"performanceid:{} "
,
vo
.
getPerformancesId
());
log
.
info
(
"title:{}"
,
vo
.
getTitle
());
}
}
}
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