记得上下班打卡 | 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
26420a89
Commit
26420a89
authored
Nov 05, 2021
by
jiangxiulong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
整理完善
parent
01327bdf
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
48 additions
and
26 deletions
+48
-26
SweetConstant.java
...a/com/liquidnet/service/sweet/constant/SweetConstant.java
+2
-3
SweetWechatTemplateMsgServiceImpl.java
...sweet/service/impl/SweetWechatTemplateMsgServiceImpl.java
+4
-3
RedisDataUtils.java
...iquidnet/service/consumer/sweet/utils/RedisDataUtils.java
+9
-4
SweetWechatTemplateController.java
...rvice/sweet/controller/SweetWechatTemplateController.java
+18
-0
SubscribeHandler.java
...com/liquidnet/service/sweet/handler/SubscribeHandler.java
+0
-4
SweetWechatLoginServiceImpl.java
...rvice/sweet/service/impl/SweetWechatLoginServiceImpl.java
+3
-5
SweetWechatTemplateServiceImpl.java
...ce/sweet/service/impl/SweetWechatTemplateServiceImpl.java
+10
-0
WechatUsersRedisUtils.java
.../liquidnet/service/sweet/utils/WechatUsersRedisUtils.java
+0
-2
sqlmap.properties
...uidnet-service-sweet/src/main/resources/sqlmap.properties
+2
-5
No files found.
liquidnet-bus-api/liquidnet-service-sweet-api/src/main/java/com/liquidnet/service/sweet/constant/SweetConstant.java
View file @
26420a89
...
@@ -53,8 +53,7 @@ public class SweetConstant {
...
@@ -53,8 +53,7 @@ public class SweetConstant {
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID
=
"sweet:wechatUser:zhengzai:uid:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID
=
"sweet:wechatUser:zhengzai:uid:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID_MODERNSKY
=
"sweet:wechatUser:modernsky:uid:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USER_UNIONID_UID_MODERNSKY
=
"sweet:wechatUser:modernsky:uid:"
;
// 微信用户相关 新
// 微信用户相关 新
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USERS
=
"sweet:
wechat:users
:unionId:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USERS
=
"sweet:
user:service
:unionId:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USERS_TYPE
=
":type:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USERS_TYPE
=
":type:"
;
public
final
static
String
REDIS_KEY_SWEET_APPLET_USERS_PHONE
=
"sweet:wechat:appletUser:mobile:"
;
public
final
static
String
REDIS_KEY_SWEET_APPLET_USERS_PHONE
=
"sweet:user:applet:mobile:"
;
public
final
static
String
REDIS_KEY_SWEET_WECHAT_USERS_RELATION_UNIONID
=
"sweet:wechat:usersRelation:unionId:"
;
}
}
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-sweet/src/main/java/com/liquidnet/service/consumer/sweet/service/impl/SweetWechatTemplateMsgServiceImpl.java
View file @
26420a89
...
@@ -9,6 +9,7 @@ import com.liquidnet.service.sweet.dto.param.SweetOpenSendMsgParam;
...
@@ -9,6 +9,7 @@ import com.liquidnet.service.sweet.dto.param.SweetOpenSendMsgParam;
import
com.liquidnet.service.sweet.entity.SweetAppletUsers
;
import
com.liquidnet.service.sweet.entity.SweetAppletUsers
;
import
com.liquidnet.service.sweet.entity.SweetWechatUser
;
import
com.liquidnet.service.sweet.entity.SweetWechatUser
;
import
com.liquidnet.service.sweet.mapper.SweetAppletUsersMapper
;
import
com.liquidnet.service.sweet.mapper.SweetAppletUsersMapper
;
import
com.liquidnet.service.sweet.vo.SweetWechatUsersVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.mp.api.WxMpService
;
import
me.chanjar.weixin.mp.api.WxMpService
;
...
@@ -107,12 +108,12 @@ public class SweetWechatTemplateMsgServiceImpl {
...
@@ -107,12 +108,12 @@ public class SweetWechatTemplateMsgServiceImpl {
return
""
;
return
""
;
}
else
{
}
else
{
SweetAppletUsers
sweetAppletUser
=
sweetAppletUsers
.
get
(
0
);
SweetAppletUsers
sweetAppletUser
=
sweetAppletUsers
.
get
(
0
);
SweetWechatUser
userInfo
=
redisDataUtils
.
getSweetWechatUser
(
sweetAppletUser
.
getUnionId
()
);
SweetWechatUser
sVo
sweetWechatUsers
=
redisDataUtils
.
getSweetWechatUsers
(
sweetAppletUser
.
getUnionId
(),
1
);
if
(
null
==
userInfo
)
{
if
(
null
==
sweetWechatUsers
)
{
log
.
info
(
"getOpenId没有此WechatUser用户:[phone={},unionId={}]"
,
phone
,
sweetAppletUser
.
getUnionId
());
log
.
info
(
"getOpenId没有此WechatUser用户:[phone={},unionId={}]"
,
phone
,
sweetAppletUser
.
getUnionId
());
return
""
;
return
""
;
}
else
{
}
else
{
return
userInfo
.
getOpenId
();
return
sweetWechatUsers
.
getOpenId
();
}
}
}
}
}
}
...
...
liquidnet-bus-service/liquidnet-service-consumer-all/liquidnet-service-consumer-sweet/src/main/java/com/liquidnet/service/consumer/sweet/utils/RedisDataUtils.java
View file @
26420a89
...
@@ -3,6 +3,7 @@ package com.liquidnet.service.consumer.sweet.utils;
...
@@ -3,6 +3,7 @@ package com.liquidnet.service.consumer.sweet.utils;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.service.sweet.constant.SweetConstant
;
import
com.liquidnet.service.sweet.constant.SweetConstant
;
import
com.liquidnet.service.sweet.entity.SweetWechatUser
;
import
com.liquidnet.service.sweet.entity.SweetWechatUser
;
import
com.liquidnet.service.sweet.vo.SweetWechatUsersVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -14,12 +15,16 @@ public class RedisDataUtils {
...
@@ -14,12 +15,16 @@ public class RedisDataUtils {
@Autowired
@Autowired
private
RedisUtil
redisUtil
;
private
RedisUtil
redisUtil
;
public
SweetWechatUser
getSweetWechatUser
(
String
unionid
)
{
public
SweetWechatUsersVo
getSweetWechatUsers
(
String
unionId
,
Integer
type
)
{
if
(
unionid
.
isEmpty
())
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USERS
.
concat
(
unionId
)
.
concat
(
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USERS_TYPE
).
concat
(
String
.
valueOf
(
type
));
Object
obj
=
redisUtil
.
get
(
redisKey
);
if
(
null
==
obj
)
{
return
null
;
return
null
;
}
else
{
SweetWechatUsersVo
sweetWechatUsersVo
=
(
SweetWechatUsersVo
)
obj
;
return
sweetWechatUsersVo
;
}
}
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USER_INFO
.
concat
(
unionid
);
return
(
SweetWechatUser
)
redisUtil
.
get
(
redisKey
);
}
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/controller/SweetWechatTemplateController.java
View file @
26420a89
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
package
com
.
liquidnet
.
service
.
sweet
.
controller
;
import
com.liquidnet.commons.lang.util.CurrentUtil
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.sweet.param.SweetOpenSendMsgParam
;
import
com.liquidnet.service.sweet.param.SweetOpenSendMsgParam
;
import
com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl
;
import
com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl
;
...
@@ -75,4 +76,21 @@ public class SweetWechatTemplateController {
...
@@ -75,4 +76,21 @@ public class SweetWechatTemplateController {
}
}
}
}
@PostMapping
(
"followStatusPhone"
)
@ApiOperation
(
"获取关注状态通过手机号"
)
@ApiImplicitParams
({
@ApiImplicitParam
(
type
=
"form"
,
dataType
=
"Integer"
,
name
=
"type"
,
value
=
"type 1正在 2摩登"
,
required
=
true
),
})
public
ResponseDto
followStatusPhone
(
@RequestParam
()
Integer
type
)
{
String
phone
=
(
String
)
CurrentUtil
.
getTokenClaims
().
get
(
CurrentUtil
.
TOKEN_MOBILE
);
boolean
status
=
sweetTemplateService
.
followStatusPhone
(
type
,
phone
);
if
(
status
)
{
return
ResponseDto
.
success
(
1
);
}
else
{
return
ResponseDto
.
success
(
2
);
}
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/handler/SubscribeHandler.java
View file @
26420a89
...
@@ -5,7 +5,6 @@ import com.liquidnet.commons.lang.util.DateUtil;
...
@@ -5,7 +5,6 @@ import com.liquidnet.commons.lang.util.DateUtil;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.commons.lang.util.IDGenerator
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.SqlMapping
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.base.constant.MQConst
;
import
com.liquidnet.service.feign.stone.api.FeignStoneIntegralClient
;
import
com.liquidnet.service.sweet.config.WechatMpConfigure
;
import
com.liquidnet.service.sweet.config.WechatMpConfigure
;
import
com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl
;
import
com.liquidnet.service.sweet.service.impl.SweetWechatTemplateServiceImpl
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
...
@@ -46,9 +45,6 @@ public class SubscribeHandler implements WxMpMessageHandler {
...
@@ -46,9 +45,6 @@ public class SubscribeHandler implements WxMpMessageHandler {
@Autowired
@Autowired
private
SweetWechatTemplateServiceImpl
sweetWechatTemplateService
;
private
SweetWechatTemplateServiceImpl
sweetWechatTemplateService
;
@Autowired
private
FeignStoneIntegralClient
feignStoneIntegralClient
;
@Override
@Override
public
WxMpXmlOutMessage
handle
(
WxMpXmlMessage
wxMessage
,
Map
<
String
,
Object
>
context
,
WxMpService
wxMpService
,
public
WxMpXmlOutMessage
handle
(
WxMpXmlMessage
wxMessage
,
Map
<
String
,
Object
>
context
,
WxMpService
wxMpService
,
WxSessionManager
sessionManager
)
throws
WxErrorException
{
WxSessionManager
sessionManager
)
throws
WxErrorException
{
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetWechatLoginServiceImpl.java
View file @
26420a89
...
@@ -50,8 +50,6 @@ public class SweetWechatLoginServiceImpl {
...
@@ -50,8 +50,6 @@ public class SweetWechatLoginServiceImpl {
@Autowired
@Autowired
private
FeignAdamBaseClient
feignAdamBaseClient
;
private
FeignAdamBaseClient
feignAdamBaseClient
;
@Autowired
private
FeignStoneIntegralClient
feignStoneIntegralClient
;
public
ResponseDto
userInfo
(
String
code
,
String
encryptedData
,
String
iv
,
Integer
type
)
{
public
ResponseDto
userInfo
(
String
code
,
String
encryptedData
,
String
iv
,
Integer
type
)
{
log
.
info
(
"小程序解密用户信息参数:[code=[{}], encryptedData=[{}], [iv=[{}], type=[{}]"
,
code
,
encryptedData
,
iv
,
type
);
log
.
info
(
"小程序解密用户信息参数:[code=[{}], encryptedData=[{}], [iv=[{}], type=[{}]"
,
code
,
encryptedData
,
iv
,
type
);
...
@@ -77,7 +75,7 @@ public class SweetWechatLoginServiceImpl {
...
@@ -77,7 +75,7 @@ public class SweetWechatLoginServiceImpl {
AdamUserInfoVo
userInfoVoData
=
userInfoVo
.
getData
();
AdamUserInfoVo
userInfoVoData
=
userInfoVo
.
getData
();
String
mobile
=
userInfoVoData
.
getMobile
();
String
mobile
=
userInfoVoData
.
getMobile
();
String
userId
=
userInfoVoData
.
getUid
();
String
userId
=
userInfoVoData
.
getUid
();
// mysql redis
// mysql redis
todo 一个手机号多个微信???
SweetAppletUsersVo
sweetAppletUsers
=
redisUtils
.
getSweetAppletUsers
(
mobile
);
SweetAppletUsersVo
sweetAppletUsers
=
redisUtils
.
getSweetAppletUsers
(
mobile
);
if
(
null
==
sweetAppletUsers
)
{
if
(
null
==
sweetAppletUsers
)
{
LinkedList
<
String
>
sqlsA
=
CollectionUtil
.
linkedListString
();
LinkedList
<
String
>
sqlsA
=
CollectionUtil
.
linkedListString
();
...
@@ -102,10 +100,10 @@ public class SweetWechatLoginServiceImpl {
...
@@ -102,10 +100,10 @@ public class SweetWechatLoginServiceImpl {
// 1。关注过了也登陆过小程序的可以脚本处理 脚本不处理就需要每个用户点进入小程序登陆
// 1。关注过了也登陆过小程序的可以脚本处理 脚本不处理就需要每个用户点进入小程序登陆
// 2。关注过了 无小程序的 本次登陆才有的 接口也不是前端请求的 就没有地方触发做任务接口
// 2。关注过了 无小程序的 本次登陆才有的 接口也不是前端请求的 就没有地方触发做任务接口
// 3。有小程序未关注的就关注时候适用
// 3。有小程序未关注的就关注时候适用
SweetWechatUsersVo
sweetWechatUsersSky
=
redisUtils
.
getSweetWechatUsers
(
unionId
,
2
);
/*
SweetWechatUsersVo sweetWechatUsersSky = redisUtils.getSweetWechatUsers(unionId, 2);
if (null != sweetWechatUsersSky) {
if (null != sweetWechatUsersSky) {
feignStoneIntegralClient.doTask(4, userId);
feignStoneIntegralClient.doTask(4, userId);
}
}
*/
}
}
// 返回给前端数据
// 返回给前端数据
HashMap
<
String
,
Object
>
userInfo
=
CollectionUtil
.
mapStringObject
();
HashMap
<
String
,
Object
>
userInfo
=
CollectionUtil
.
mapStringObject
();
...
...
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/service/impl/SweetWechatTemplateServiceImpl.java
View file @
26420a89
...
@@ -17,6 +17,7 @@ import com.liquidnet.service.sweet.param.SweetOpenSendMsgParam;
...
@@ -17,6 +17,7 @@ import com.liquidnet.service.sweet.param.SweetOpenSendMsgParam;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
import
com.liquidnet.service.sweet.utils.QueueUtils
;
import
com.liquidnet.service.sweet.utils.RedisDataUtils
;
import
com.liquidnet.service.sweet.utils.RedisDataUtils
;
import
com.liquidnet.service.sweet.utils.WechatUsersRedisUtils
;
import
com.liquidnet.service.sweet.utils.WechatUsersRedisUtils
;
import
com.liquidnet.service.sweet.vo.SweetAppletUsersVo
;
import
com.liquidnet.service.sweet.vo.SweetWechatUsersVo
;
import
com.liquidnet.service.sweet.vo.SweetWechatUsersVo
;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
me.chanjar.weixin.common.error.WxErrorException
;
import
me.chanjar.weixin.common.error.WxErrorException
;
...
@@ -317,4 +318,13 @@ public class SweetWechatTemplateServiceImpl {
...
@@ -317,4 +318,13 @@ public class SweetWechatTemplateServiceImpl {
}
}
}
}
public
boolean
followStatusPhone
(
Integer
type
,
String
phone
)
{
SweetAppletUsersVo
sweetAppletUsers
=
redisUtils
.
getSweetAppletUsers
(
phone
);
SweetWechatUsersVo
sweetWechatUsers
=
redisUtils
.
getSweetWechatUsers
(
sweetAppletUsers
.
getUnionId
(),
2
);
if
(
null
!=
sweetWechatUsers
&&
!
sweetWechatUsers
.
getUnionId
().
isEmpty
())
{
return
true
;
}
else
{
return
false
;
}
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/java/com/liquidnet/service/sweet/utils/WechatUsersRedisUtils.java
View file @
26420a89
...
@@ -49,9 +49,7 @@ public class WechatUsersRedisUtils {
...
@@ -49,9 +49,7 @@ public class WechatUsersRedisUtils {
}
}
public
void
setSweetAppletUsers
(
SweetAppletUsersVo
sweetAppletUsersVo
)
{
public
void
setSweetAppletUsers
(
SweetAppletUsersVo
sweetAppletUsersVo
)
{
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_APPLET_USERS_PHONE
.
concat
(
sweetAppletUsersVo
.
getPurePhoneNumber
());
String
redisKey
=
SweetConstant
.
REDIS_KEY_SWEET_APPLET_USERS_PHONE
.
concat
(
sweetAppletUsersVo
.
getPurePhoneNumber
());
String
redisKey2
=
SweetConstant
.
REDIS_KEY_SWEET_WECHAT_USERS_RELATION_UNIONID
.
concat
(
sweetAppletUsersVo
.
getUnionId
());
redisUtil
.
set
(
redisKey
,
sweetAppletUsersVo
);
redisUtil
.
set
(
redisKey
,
sweetAppletUsersVo
);
redisUtil
.
set
(
redisKey2
,
sweetAppletUsersVo
);
}
}
}
}
liquidnet-bus-service/liquidnet-service-sweet/src/main/resources/sqlmap.properties
View file @
26420a89
...
@@ -35,9 +35,6 @@ sweet_luck_draw.insert=INSERT INTO sweet_luck_draw (mobile,union_id,luck_draw_nu
...
@@ -35,9 +35,6 @@ sweet_luck_draw.insert=INSERT INTO sweet_luck_draw (mobile,union_id,luck_draw_nu
# --------------------------答案--------------------------
# --------------------------答案--------------------------
sweet_answer.insert
=
INSERT INTO sweet_answer (answer_id,phone,answer_json,img_url) VALUES (?,?,?,?)
sweet_answer.insert
=
INSERT INTO sweet_answer (answer_id,phone,answer_json,img_url) VALUES (?,?,?,?)
# --------------------------关注/取消服务号的用户信息--------------------------
sweet_user.insert
=
INSERT INTO sweet_wechat_user (user_id,type,openId,unionId,nickname,sexDesc,sex,headImgUrl,language,country,province,city,subscribeTime,subscribeScene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_user.update2
=
UPDATE sweet_wechat_user SET adam_user_id = ?, adam_phone = ?, updated_at = ? WHERE unionId = ? and type = ?
# --------------------------提醒记录--------------------------
# --------------------------提醒记录--------------------------
sweet_remind.insert
=
INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
sweet_remind.insert
=
INSERT INTO sweet_remind (remind_id,openId,unionId,performancesId) VALUES (?,?,?,?)
# --------------------------用户投票记录--------------------------
# --------------------------用户投票记录--------------------------
...
@@ -53,5 +50,5 @@ integral_activity_draw.update=UPDATE sweet_integral_activity_draw SET receiving_
...
@@ -53,5 +50,5 @@ integral_activity_draw.update=UPDATE sweet_integral_activity_draw SET receiving_
# --------------------------小程序登录记录用户解密后信息--------------------------
# --------------------------小程序登录记录用户解密后信息--------------------------
sweet_applet_users.insert
=
INSERT INTO sweet_applet_users (applet_user_id,user_id,open_id,union_id,phone_number,pure_phone_number,country_code,type) VALUES (?,?,?,?,?,?,?,?)
sweet_applet_users.insert
=
INSERT INTO sweet_applet_users (applet_user_id,user_id,open_id,union_id,phone_number,pure_phone_number,country_code,type) VALUES (?,?,?,?,?,?,?,?)
# --------------------------微信用户信息表公众号--------------------------
# --------------------------微信用户信息表公众号--------------------------
sweet_wechat_users.insert
=
INSERT INTO sweet_wechat_users (wechat_id,type,open_id,union_id,nickname,sex_desc,sex,head_img_url,language,country,province,city,subscribe_time,subscribe_scene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_wechat_users.insert
=
INSERT INTO sweet_wechat_users (wechat_user_id,type,open_id,union_id,nickname,sex_desc,sex,head_img_url,language,country,province,city,subscribe_time,subscribe_scene) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?)
sweet_wechat_users.delete
=
DELETE FROM sweet_wechat_users WHERE unionId = ? and type = ?
sweet_wechat_users.delete
=
DELETE FROM sweet_wechat_users WHERE union_id = ? and type = ?
\ No newline at end of file
\ 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