Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
H
haoban-manage3.0
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
haoban3.0
haoban-manage3.0
Commits
cbf6f281
Commit
cbf6f281
authored
Feb 15, 2022
by
xugaojun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
存量会员:新增登录用户参数、新增配置、匹配逻辑
parent
5ae73d4c
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
135 additions
and
18 deletions
+135
-18
YwWxEnterpriseDTO.java
...java/com/gic/haoban/manage/api/dto/YwWxEnterpriseDTO.java
+12
-0
WxEnterpriseApiService.java
...gic/haoban/manage/api/service/WxEnterpriseApiService.java
+30
-4
EnterpriseController.java
...ic/haoban/manage/web/controller/EnterpriseController.java
+28
-9
Config.java
...ain/java/com/gic/haoban/manage/service/config/Config.java
+21
-0
WxEnterpriseApiServiceImpl.java
.../service/service/out/impl/WxEnterpriseApiServiceImpl.java
+44
-5
No files found.
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/dto/YwWxEnterpriseDTO.java
View file @
cbf6f281
...
@@ -36,6 +36,10 @@ public class YwWxEnterpriseDTO implements Serializable {
...
@@ -36,6 +36,10 @@ public class YwWxEnterpriseDTO implements Serializable {
* 转换状态:0:未转换;1:转换成功;2:转换中
* 转换状态:0:未转换;1:转换成功;2:转换中
*/
*/
private
Integer
externalFlag
;
private
Integer
externalFlag
;
/**
* 是否开启群发 true 开启 false 关闭
*/
private
Boolean
openMassFlag
;
public
static
long
getSerialversionuid
()
{
public
static
long
getSerialversionuid
()
{
...
@@ -156,4 +160,12 @@ public class YwWxEnterpriseDTO implements Serializable {
...
@@ -156,4 +160,12 @@ public class YwWxEnterpriseDTO implements Serializable {
public
void
setExternalFlag
(
Integer
externalFlag
)
{
public
void
setExternalFlag
(
Integer
externalFlag
)
{
this
.
externalFlag
=
externalFlag
;
this
.
externalFlag
=
externalFlag
;
}
}
public
Boolean
getOpenMassFlag
()
{
return
openMassFlag
;
}
public
void
setOpenMassFlag
(
Boolean
openMassFlag
)
{
this
.
openMassFlag
=
openMassFlag
;
}
}
}
haoban-manage3-api/src/main/java/com/gic/haoban/manage/api/service/WxEnterpriseApiService.java
View file @
cbf6f281
package
com
.
gic
.
haoban
.
manage
.
api
.
service
;
package
com
.
gic
.
haoban
.
manage
.
api
.
service
;
import
com.gic.api.base.commons.Page
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.base.api.common.BasePageInfo
;
import
com.gic.haoban.manage.api.dto.*
;
import
com.gic.haoban.manage.api.dto.*
;
...
@@ -14,13 +15,32 @@ public interface WxEnterpriseApiService {
...
@@ -14,13 +15,32 @@ public interface WxEnterpriseApiService {
* @param dto
* @param dto
*/
*/
void
callbackReviceEnterprise
(
QywxCorpInfoSimpleDTO
dto
);
void
callbackReviceEnterprise
(
QywxCorpInfoSimpleDTO
dto
);
/**
/**
* 运维后台获取微信企业id列表
* desc: 运维后台获取微信企业id列表
* @return
*
*/
* @param pageInfo 分页参数
com
.
gic
.
api
.
base
.
commons
.
Page
<
YwWxEnterpriseDTO
>
list
(
BasePageInfo
pageInfo
,
String
keyword
,
List
<
String
>
enterpriseIds
,
Integer
gicContactFlag
,
String
version
,
List
<
String
>
enterpriseIdsNotIn
);
* @param keyword 关键字
* @param enterpriseIds 企业id列表
* @param gicContactFlag 关联标记
* @param version 版本
* @param enterpriseIdsNotIn 企业不存在列表
* @param loginUserId 登录用户id
* @return : {@link Page< YwWxEnterpriseDTO>}
* @author : YongEn
* @date : 2022/2/15
*/
com
.
gic
.
api
.
base
.
commons
.
Page
<
YwWxEnterpriseDTO
>
list
(
BasePageInfo
pageInfo
,
String
keyword
,
List
<
String
>
enterpriseIds
,
Integer
gicContactFlag
,
String
version
,
List
<
String
>
enterpriseIdsNotIn
,
String
loginUserId
);
/**
/**
* 获取一个
* 获取一个
*
* @param wxEnterpriseId
* @param wxEnterpriseId
* @return
* @return
*/
*/
...
@@ -28,12 +48,15 @@ public interface WxEnterpriseApiService {
...
@@ -28,12 +48,15 @@ public interface WxEnterpriseApiService {
/**
/**
* 根据corpId查询一条数据
* 根据corpId查询一条数据
*
* @param corpId
* @param corpId
* @return
* @return
*/
*/
WxEnterpriseDTO
getEnterpriseBycorpId
(
String
corpId
);
WxEnterpriseDTO
getEnterpriseBycorpId
(
String
corpId
);
/**
/**
* 更新企业
* 更新企业
*
* @param enterpriseDTO
* @param enterpriseDTO
*/
*/
void
update
(
WxEnterpriseDTO
enterpriseDTO
);
void
update
(
WxEnterpriseDTO
enterpriseDTO
);
...
@@ -44,6 +67,7 @@ public interface WxEnterpriseApiService {
...
@@ -44,6 +67,7 @@ public interface WxEnterpriseApiService {
/**
/**
* 企业是否过期 true是
* 企业是否过期 true是
*
* @param enterpriseId
* @param enterpriseId
* @return
* @return
*/
*/
...
@@ -69,6 +93,7 @@ public interface WxEnterpriseApiService {
...
@@ -69,6 +93,7 @@ public interface WxEnterpriseApiService {
/**
/**
* secretList
* secretList
*
* @param wxEnterpriseId
* @param wxEnterpriseId
* @return
* @return
*/
*/
...
@@ -76,6 +101,7 @@ public interface WxEnterpriseApiService {
...
@@ -76,6 +101,7 @@ public interface WxEnterpriseApiService {
/**
/**
* 删除
* 删除
*
* @param secretId
* @param secretId
* @return
* @return
*/
*/
...
...
haoban-manage3-operation-web/src/main/java/com/gic/haoban/manage/web/controller/EnterpriseController.java
View file @
cbf6f281
...
@@ -119,15 +119,15 @@ public class EnterpriseController extends WebBaseController {
...
@@ -119,15 +119,15 @@ public class EnterpriseController extends WebBaseController {
Page
<
YwWxEnterpriseDTO
>
page
=
new
Page
<>();
Page
<
YwWxEnterpriseDTO
>
page
=
new
Page
<>();
if
(
Objects
.
nonNull
(
openTagFlag
)
&&
ALL
==
openTagFlag
)
{
if
(
Objects
.
nonNull
(
openTagFlag
)
&&
ALL
==
openTagFlag
)
{
page
=
queryAll
(
pageInfo
,
keyword
,
gicContactHelper
,
version
,
wxEnterpriseIdInList
,
wxEnterpriseIdSetInCache
);
page
=
queryAll
(
pageInfo
,
keyword
,
gicContactHelper
,
version
,
wxEnterpriseIdInList
,
wxEnterpriseIdSetInCache
,
loginUserId
);
}
}
if
(
Objects
.
nonNull
(
openTagFlag
)
&&
OPEN
==
openTagFlag
)
{
if
(
Objects
.
nonNull
(
openTagFlag
)
&&
OPEN
==
openTagFlag
)
{
page
=
queryOpen
(
pageInfo
,
keyword
,
gicEnterpriseName
,
gicContactHelper
,
version
,
wxEnterpriseIdInList
,
wxEnterpriseIdSetInCache
);
page
=
queryOpen
(
pageInfo
,
keyword
,
gicEnterpriseName
,
gicContactHelper
,
version
,
wxEnterpriseIdInList
,
wxEnterpriseIdSetInCache
,
loginUserId
);
}
}
if
(
Objects
.
nonNull
(
openTagFlag
)
&&
CLOSE
==
openTagFlag
)
{
if
(
Objects
.
nonNull
(
openTagFlag
)
&&
CLOSE
==
openTagFlag
)
{
page
=
queryClose
(
pageInfo
,
keyword
,
gicContactHelper
,
version
,
wxEnterpriseIdInList
,
wxEnterpriseIdSetInCache
);
page
=
queryClose
(
pageInfo
,
keyword
,
gicContactHelper
,
version
,
wxEnterpriseIdInList
,
wxEnterpriseIdSetInCache
,
loginUserId
);
}
}
pageResult
.
setList
(
page
.
getResult
());
pageResult
.
setList
(
page
.
getResult
());
...
@@ -167,9 +167,15 @@ public class EnterpriseController extends WebBaseController {
...
@@ -167,9 +167,15 @@ public class EnterpriseController extends WebBaseController {
return
wxEntIdSet
;
return
wxEntIdSet
;
}
}
private
Page
<
YwWxEnterpriseDTO
>
queryAll
(
BasePageInfo
pageInfo
,
String
keyword
,
Integer
gicContactHelper
,
String
version
,
List
<
String
>
wxEnterpriseIdInList
,
Set
<
String
>
wxEnterpriseIdSetInCache
)
{
private
Page
<
YwWxEnterpriseDTO
>
queryAll
(
BasePageInfo
pageInfo
,
String
keyword
,
Integer
gicContactHelper
,
String
version
,
List
<
String
>
wxEnterpriseIdInList
,
Set
<
String
>
wxEnterpriseIdSetInCache
,
String
loginUserId
)
{
// 查询所有状态
// 查询所有状态
Page
<
YwWxEnterpriseDTO
>
page
=
wxEnterpriseApiService
.
list
(
pageInfo
,
keyword
,
wxEnterpriseIdInList
,
gicContactHelper
,
version
,
null
);
Page
<
YwWxEnterpriseDTO
>
page
=
wxEnterpriseApiService
.
list
(
pageInfo
,
keyword
,
wxEnterpriseIdInList
,
gicContactHelper
,
version
,
null
,
loginUserId
);
page
.
getResult
().
forEach
(
one
->
{
page
.
getResult
().
forEach
(
one
->
{
one
.
setVersion
(
"3.0"
);
one
.
setVersion
(
"3.0"
);
one
.
setBuyDate
(
new
Date
());
one
.
setBuyDate
(
new
Date
());
...
@@ -185,14 +191,21 @@ public class EnterpriseController extends WebBaseController {
...
@@ -185,14 +191,21 @@ public class EnterpriseController extends WebBaseController {
return
page
;
return
page
;
}
}
private
Page
<
YwWxEnterpriseDTO
>
queryOpen
(
BasePageInfo
pageInfo
,
String
keyword
,
String
gicEnterpriseName
,
Integer
gicContactHelper
,
String
version
,
List
<
String
>
wxEnterpriseIdInList
,
Set
<
String
>
wxEnterpriseIdSetInCache
)
{
private
Page
<
YwWxEnterpriseDTO
>
queryOpen
(
BasePageInfo
pageInfo
,
String
keyword
,
String
gicEnterpriseName
,
Integer
gicContactHelper
,
String
version
,
List
<
String
>
wxEnterpriseIdInList
,
Set
<
String
>
wxEnterpriseIdSetInCache
,
String
loginUserId
)
{
// 查询开启状态
// 查询开启状态
if
(
haveCondition
(
gicEnterpriseName
))
{
if
(
haveCondition
(
gicEnterpriseName
))
{
// 有条件-取交集
// 有条件-取交集
wxEnterpriseIdSetInCache
.
retainAll
(
wxEnterpriseIdInList
);
wxEnterpriseIdSetInCache
.
retainAll
(
wxEnterpriseIdInList
);
}
}
List
<
String
>
queryList
=
new
ArrayList
<>(
wxEnterpriseIdSetInCache
);
List
<
String
>
queryList
=
new
ArrayList
<>(
wxEnterpriseIdSetInCache
);
Page
<
YwWxEnterpriseDTO
>
page
=
wxEnterpriseApiService
.
list
(
pageInfo
,
keyword
,
queryList
,
gicContactHelper
,
version
,
null
);
Page
<
YwWxEnterpriseDTO
>
page
=
wxEnterpriseApiService
.
list
(
pageInfo
,
keyword
,
queryList
,
gicContactHelper
,
version
,
null
,
loginUserId
);
page
.
getResult
().
forEach
(
one
->
{
page
.
getResult
().
forEach
(
one
->
{
one
.
setVersion
(
"3.0"
);
one
.
setVersion
(
"3.0"
);
one
.
setBuyDate
(
new
Date
());
one
.
setBuyDate
(
new
Date
());
...
@@ -205,9 +218,15 @@ public class EnterpriseController extends WebBaseController {
...
@@ -205,9 +218,15 @@ public class EnterpriseController extends WebBaseController {
return
page
;
return
page
;
}
}
private
Page
<
YwWxEnterpriseDTO
>
queryClose
(
BasePageInfo
pageInfo
,
String
keyword
,
Integer
gicContactHelper
,
String
version
,
List
<
String
>
wxEnterpriseIdInList
,
Set
<
String
>
wxEnterpriseIdSetInCache
)
{
private
Page
<
YwWxEnterpriseDTO
>
queryClose
(
BasePageInfo
pageInfo
,
String
keyword
,
Integer
gicContactHelper
,
String
version
,
List
<
String
>
wxEnterpriseIdInList
,
Set
<
String
>
wxEnterpriseIdSetInCache
,
String
loginUserId
)
{
// 查询关闭状态
// 查询关闭状态
Page
<
YwWxEnterpriseDTO
>
page
=
wxEnterpriseApiService
.
list
(
pageInfo
,
keyword
,
wxEnterpriseIdInList
,
gicContactHelper
,
version
,
new
ArrayList
<>(
wxEnterpriseIdSetInCache
));
Page
<
YwWxEnterpriseDTO
>
page
=
wxEnterpriseApiService
.
list
(
pageInfo
,
keyword
,
wxEnterpriseIdInList
,
gicContactHelper
,
version
,
new
ArrayList
<>(
wxEnterpriseIdSetInCache
)
,
loginUserId
);
page
.
getResult
().
forEach
(
one
->
{
page
.
getResult
().
forEach
(
one
->
{
one
.
setVersion
(
"3.0"
);
one
.
setVersion
(
"3.0"
);
one
.
setBuyDate
(
new
Date
());
one
.
setBuyDate
(
new
Date
());
...
...
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/config/Config.java
View file @
cbf6f281
...
@@ -23,6 +23,11 @@ public class Config {
...
@@ -23,6 +23,11 @@ public class Config {
@Value
(
"${memberOpenPage}"
)
@Value
(
"${memberOpenPage}"
)
private
String
memberOpenPage
;
private
String
memberOpenPage
;
@Value
(
"${historyMbrMassEnterpriseWhiteList}"
)
private
String
historyMbrMassEnterpriseWhiteList
;
@Value
(
"${historyMbrMassEnterpriseWhiteList}"
)
private
String
historyMbrMassOperWhiteList
;
public
String
getMemberOpenPage
()
{
public
String
getMemberOpenPage
()
{
return
memberOpenPage
;
return
memberOpenPage
;
}
}
...
@@ -70,4 +75,20 @@ public class Config {
...
@@ -70,4 +75,20 @@ public class Config {
public
void
setWxSuiteid
(
String
wxSuiteid
)
{
public
void
setWxSuiteid
(
String
wxSuiteid
)
{
this
.
wxSuiteid
=
wxSuiteid
;
this
.
wxSuiteid
=
wxSuiteid
;
}
}
public
String
getHistoryMbrMassEnterpriseWhiteList
()
{
return
historyMbrMassEnterpriseWhiteList
;
}
public
void
setHistoryMbrMassEnterpriseWhiteList
(
String
historyMbrMassEnterpriseWhiteList
)
{
this
.
historyMbrMassEnterpriseWhiteList
=
historyMbrMassEnterpriseWhiteList
;
}
public
String
getHistoryMbrMassOperWhiteList
()
{
return
historyMbrMassOperWhiteList
;
}
public
void
setHistoryMbrMassOperWhiteList
(
String
historyMbrMassOperWhiteList
)
{
this
.
historyMbrMassOperWhiteList
=
historyMbrMassOperWhiteList
;
}
}
}
haoban-manage3-service/src/main/java/com/gic/haoban/manage/service/service/out/impl/WxEnterpriseApiServiceImpl.java
View file @
cbf6f281
...
@@ -11,6 +11,7 @@ import com.gic.haoban.manage.api.dto.*;
...
@@ -11,6 +11,7 @@ import com.gic.haoban.manage.api.dto.*;
import
com.gic.haoban.manage.api.enums.SecretTypeEnum
;
import
com.gic.haoban.manage.api.enums.SecretTypeEnum
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.api.service.StaffApiService
;
import
com.gic.haoban.manage.api.service.WxEnterpriseApiService
;
import
com.gic.haoban.manage.api.service.WxEnterpriseApiService
;
import
com.gic.haoban.manage.service.config.Config
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanWelcomeMapper
;
import
com.gic.haoban.manage.service.dao.mapper.TabHaobanWelcomeMapper
;
import
com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper
;
import
com.gic.haoban.manage.service.dao.mapper.WxEnterpriseMapper
;
import
com.gic.haoban.manage.service.entity.TabHaobanWxApplication
;
import
com.gic.haoban.manage.service.entity.TabHaobanWxApplication
;
...
@@ -21,6 +22,7 @@ import com.gic.haoban.manage.service.pojo.bo.StaffPrivacyUseLogBO;
...
@@ -21,6 +22,7 @@ import com.gic.haoban.manage.service.pojo.bo.StaffPrivacyUseLogBO;
import
com.gic.haoban.manage.service.service.*
;
import
com.gic.haoban.manage.service.service.*
;
import
com.github.pagehelper.Page
;
import
com.github.pagehelper.Page
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageHelper
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.apache.logging.log4j.Logger
;
...
@@ -28,9 +30,8 @@ import org.springframework.beans.BeanUtils;
...
@@ -28,9 +30,8 @@ import org.springframework.beans.BeanUtils;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.*
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.Set
;
@Service
@Service
public
class
WxEnterpriseApiServiceImpl
implements
WxEnterpriseApiService
{
public
class
WxEnterpriseApiServiceImpl
implements
WxEnterpriseApiService
{
...
@@ -53,6 +54,8 @@ public class WxEnterpriseApiServiceImpl implements WxEnterpriseApiService {
...
@@ -53,6 +54,8 @@ public class WxEnterpriseApiServiceImpl implements WxEnterpriseApiService {
private
TabHaobanWelcomeMapper
welcomeMapper
;
private
TabHaobanWelcomeMapper
welcomeMapper
;
@Autowired
@Autowired
private
StaffPrivacyUseLogService
staffPrivacyUseLogService
;
private
StaffPrivacyUseLogService
staffPrivacyUseLogService
;
@Autowired
private
Config
config
;
@Override
@Override
public
void
callbackReviceEnterprise
(
QywxCorpInfoSimpleDTO
dto
)
{
public
void
callbackReviceEnterprise
(
QywxCorpInfoSimpleDTO
dto
)
{
...
@@ -120,10 +123,46 @@ public class WxEnterpriseApiServiceImpl implements WxEnterpriseApiService {
...
@@ -120,10 +123,46 @@ public class WxEnterpriseApiServiceImpl implements WxEnterpriseApiService {
}
}
@Override
@Override
public
com
.
gic
.
api
.
base
.
commons
.
Page
<
YwWxEnterpriseDTO
>
list
(
BasePageInfo
pageInfo
,
String
keyword
,
List
<
String
>
enterpriseIds
,
Integer
gicContactFlag
,
String
version
,
List
<
String
>
enterpriseIdsNotIn
)
{
public
com
.
gic
.
api
.
base
.
commons
.
Page
<
YwWxEnterpriseDTO
>
list
(
BasePageInfo
pageInfo
,
String
keyword
,
List
<
String
>
enterpriseIds
,
Integer
gicContactFlag
,
String
version
,
List
<
String
>
enterpriseIdsNotIn
,
String
loginUserId
)
{
PageHelper
.
startPage
(
pageInfo
.
getPageNum
(),
pageInfo
.
getPageSize
());
PageHelper
.
startPage
(
pageInfo
.
getPageNum
(),
pageInfo
.
getPageSize
());
Page
<
TabHaobanWxEnterprise
>
page
=
wxEnterpriseMapper
.
list
(
keyword
,
enterpriseIds
,
gicContactFlag
,
version
,
enterpriseIdsNotIn
);
Page
<
TabHaobanWxEnterprise
>
page
=
wxEnterpriseMapper
.
list
(
keyword
,
enterpriseIds
,
gicContactFlag
,
version
,
enterpriseIdsNotIn
);
return
PageUtil
.
changePageHelperToCurrentPage
(
page
,
YwWxEnterpriseDTO
.
class
);
// 数据转换+白名单过滤
if
(
Objects
.
isNull
(
page
)
||
CollectionUtils
.
isEmpty
(
page
.
getResult
()))
{
return
new
com
.
gic
.
api
.
base
.
commons
.
Page
<>();
}
com
.
gic
.
api
.
base
.
commons
.
Page
<
YwWxEnterpriseDTO
>
resPage
=
PageUtil
.
changePageHelperToCurrentPage
(
page
,
YwWxEnterpriseDTO
.
class
);
boolean
matchOperId
=
matchOperId
(
loginUserId
);
resPage
.
getResult
().
forEach
(
one
->
{
if
(
matchWxEnterpriseIdWhiteList
(
one
.
getWxEnterpriseId
())
&&
matchOperId
)
{
one
.
setOpenMassFlag
(
Boolean
.
TRUE
);
}
else
{
one
.
setOpenMassFlag
(
Boolean
.
FALSE
);
}
});
return
resPage
;
}
private
boolean
matchWxEnterpriseIdWhiteList
(
String
wxEnterpriseId
)
{
// 匹配微信企业id白名单
String
whiteList
=
config
.
getHistoryMbrMassEnterpriseWhiteList
();
if
(
StringUtils
.
isEmpty
(
whiteList
))
{
return
false
;
}
String
[]
idArr
=
whiteList
.
split
(
","
);
Set
<
String
>
idSet
=
new
HashSet
<>(
Arrays
.
asList
(
idArr
));
return
idSet
.
contains
(
wxEnterpriseId
);
}
private
boolean
matchOperId
(
String
loginUserId
)
{
// 匹配运营id白名单
String
whiteList
=
config
.
getHistoryMbrMassOperWhiteList
();
if
(
StringUtils
.
isEmpty
(
whiteList
))
{
return
false
;
}
String
[]
idArr
=
whiteList
.
split
(
","
);
Set
<
String
>
idSet
=
new
HashSet
<>(
Arrays
.
asList
(
idArr
));
return
idSet
.
contains
(
loginUserId
);
}
}
@Override
@Override
...
...
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