Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hilo-user
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
chenweijian
hilo-user
Commits
cbb3a44a
Commit
cbb3a44a
authored
May 30, 2023
by
chenweijian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
cp
parent
c9d2b270
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
398 additions
and
81 deletions
+398
-81
cp_relation.go
_const/enum/cp_e/cp_relation.go
+7
-0
cp_relation.go
domain/model/cp_m/cp_relation.go
+79
-2
cp_relation.go
domain/service/cp_s/cp_relation.go
+155
-0
bizCode.go
myerr/bizerr/bizCode.go
+3
-0
3.9.0.sql
mysql/3.9.0.sql
+15
-1
cp_relation.go
route/cp_r/cp_relation.go
+139
-78
No files found.
_const/enum/cp_e/cp_relation.go
View file @
cbb3a44a
...
...
@@ -3,6 +3,7 @@ package cp_e
import
"git.hilo.cn/hilo-common/resource/mysql"
type
CpInviteStatus
mysql
.
Type
type
CpCancelStatus
mysql
.
Type
const
(
//新用户
...
...
@@ -13,4 +14,10 @@ const (
CpInviteAccept
CpInviteStatus
=
2
CpInviteRefuse
CpInviteStatus
=
3
CpInviteExpired
CpInviteStatus
=
4
//1.未处理2.发起者已撤销3.对方已确认4.到期自动确认
CpCancel
CpCancelStatus
=
1
CpCancelRevoke
CpCancelStatus
=
2
CpCancelAccept
CpCancelStatus
=
3
CpCancelAcceptAuto
CpCancelStatus
=
4
)
domain/model/cp_m/cp_relation.go
View file @
cbb3a44a
...
...
@@ -32,6 +32,20 @@ type CpInviteMessage struct {
Avatar2
string
`json:"avatar2"`
}
type
CpCancel
struct
{
Id
uint64
`json:"id"`
UserId
uint64
`json:"userId"`
RecUserId
uint64
`json:"recUserId"`
Status
cp_e
.
CpCancelStatus
`json:"status"`
}
// 发送私信(解除)
type
CpCancelMessage
struct
{
Identifier
string
`json:"identifier"`
Msg
string
`json:"msg"`
Status
uint8
`json:"status"`
//1.发起解除2.撤销解除3.接受解除
}
func
CreateCp
(
model
*
domain
.
Model
,
userId1
,
userId2
uint64
)
error
{
userIds
:=
[]
uint64
{
userId1
,
userId2
}
result
:=
model
.
DB
()
.
Exec
(
"insert into cp_relation(user_id1, user_id2) values(?,?) where not exists (select user_id1 from cp_relation where user_id1 in (?) or user_id2 in (?));"
,
userId1
,
userId2
,
userIds
,
userIds
)
...
...
@@ -59,9 +73,9 @@ func GetCp(model *domain.Model, userId uint64) (*CpRelation, error) {
return
res
,
nil
}
func
GetCpInvite
(
model
*
domain
.
Model
,
userId
,
userIdInvite
uint64
)
(
*
CpInvite
,
error
)
{
func
GetCpInvite
(
model
*
domain
.
Model
,
userId
,
userIdInvite
uint64
,
status
cp_e
.
CpInviteStatus
)
(
*
CpInvite
,
error
)
{
res
:=
new
(
CpInvite
)
err
:=
model
.
DB
()
.
Model
(
CpInvite
{})
.
Where
(
CpInvite
{
UserId
:
userId
,
InviteUserId
:
userIdInvite
})
.
First
(
&
res
)
.
Error
err
:=
model
.
DB
()
.
Model
(
CpInvite
{})
.
Where
(
CpInvite
{
UserId
:
userId
,
InviteUserId
:
userIdInvite
,
Status
:
status
})
.
First
(
&
res
)
.
Error
if
err
!=
nil
{
if
err
==
gorm
.
ErrRecordNotFound
{
return
nil
,
nil
...
...
@@ -95,3 +109,66 @@ func UpdateStatusCpInvite(model *domain.Model, id uint64, status cp_e.CpInviteSt
}
return
nil
}
func
CreateCpCancel
(
model
*
domain
.
Model
,
userId
,
recUserId
uint64
)
(
uint64
,
error
)
{
cpCancel
:=
CpCancel
{
UserId
:
userId
,
RecUserId
:
recUserId
,
Status
:
cp_e
.
CpCancel
}
err
:=
model
.
DB
()
.
Model
(
CpCancel
{})
.
Create
(
cpCancel
)
.
Error
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"CreateCpCancel user1:%d, user2:%d, err:%v"
,
userId
,
recUserId
,
err
)
return
0
,
err
}
return
cpCancel
.
Id
,
nil
}
func
GetCpCancel
(
model
*
domain
.
Model
,
userIds
[]
uint64
,
status
cp_e
.
CpCancelStatus
)
(
*
CpCancel
,
error
)
{
res
:=
new
(
CpCancel
)
err
:=
model
.
DB
()
.
Model
(
CpCancel
{})
.
Where
(
"status = ? and user_id in (?) and rec_user_id in (?)"
,
status
,
userIds
,
userIds
)
.
First
(
&
res
)
.
Error
if
err
!=
nil
{
if
err
==
gorm
.
ErrRecordNotFound
{
return
nil
,
nil
}
model
.
Log
.
Errorf
(
"GetCpCancel users:%d, err:%v"
,
userIds
,
err
)
return
nil
,
err
}
return
res
,
nil
}
func
GetCpCancelWithMe
(
model
*
domain
.
Model
,
userId
uint64
,
status
cp_e
.
CpCancelStatus
)
(
*
CpCancel
,
error
)
{
res
:=
new
(
CpCancel
)
err
:=
model
.
DB
()
.
Model
(
CpCancel
{})
.
Where
(
"status = ? and (user_id = ? or rec_user_id = ?)"
,
status
,
userId
,
userId
)
.
First
(
&
res
)
.
Error
if
err
!=
nil
{
if
err
==
gorm
.
ErrRecordNotFound
{
return
nil
,
nil
}
model
.
Log
.
Errorf
(
"GetCpCancel user1:%d, err:%v"
,
userId
,
err
)
return
nil
,
err
}
return
res
,
nil
}
func
UpdateStatusCpCancel
(
model
*
domain
.
Model
,
id
uint64
,
status
cp_e
.
CpCancelStatus
)
error
{
result
:=
model
.
DB
()
.
Exec
(
"update cp_cancel set status=? where id=? and status=? limit 1"
,
status
,
id
,
cp_e
.
CpCancel
)
if
result
.
Error
!=
nil
{
model
.
Log
.
Errorf
(
"UpdateStatusCpCancel id:%d, status:%d, err:%v"
,
id
,
status
,
result
.
Error
)
return
result
.
Error
}
if
result
.
RowsAffected
<=
0
{
model
.
Log
.
Errorf
(
"UpdateStatusCpCancel id:%d, status:%d, err:%v"
,
id
,
status
,
bizerr
.
TransactionFailed
)
return
bizerr
.
TransactionFailed
}
return
nil
}
func
DelCpRelation
(
model
*
domain
.
Model
,
userId1
,
userId2
uint64
)
error
{
userIds
:=
[]
uint64
{
userId1
,
userId2
}
result
:=
model
.
DB
()
.
Exec
(
"delete from cp_relation where user_id1 in (?) and user_id2 in (?) limit 1;"
,
userIds
,
userIds
)
if
result
.
Error
!=
nil
{
model
.
Log
.
Errorf
(
"DelCpRelation user1:%d, user2:%d, err:%v"
,
userId1
,
userId2
,
result
.
Error
)
return
result
.
Error
}
if
result
.
RowsAffected
<=
0
{
model
.
Log
.
Errorf
(
"DelCpRelation user1:%d, user2:%d, err:%v"
,
userId1
,
userId2
,
bizerr
.
TransactionFailed
)
return
bizerr
.
TransactionFailed
}
return
nil
}
domain/service/cp_s/cp_relation.go
0 → 100644
View file @
cbb3a44a
package
cp_s
import
(
"encoding/json"
"git.hilo.cn/hilo-common/_const/enum/diamond_e"
"git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/mycontext"
"git.hilo.cn/hilo-common/myerr/comerr"
"git.hilo.cn/hilo-common/rpc"
"git.hilo.cn/hilo-common/sdk/tencentyun"
"git.hilo.cn/hilo-common/txop/msg"
"hilo-user/_const/enum/cp_e"
"hilo-user/domain/model/cp_m"
"hilo-user/domain/model/diamond_m"
"hilo-user/domain/model/user_m"
"hilo-user/myerr/bizerr"
)
func
InviteCpRelation
(
myCtx
*
mycontext
.
MyContext
,
myUserId
uint64
,
userCode
,
lang
string
)
error
{
model
:=
domain
.
CreateModelContext
(
myCtx
)
user
,
err
:=
user_m
.
GetUser
(
model
,
myUserId
)
if
err
!=
nil
{
return
err
}
userInvite
,
err
:=
user_m
.
GetUserByCode
(
model
,
userCode
)
if
err
!=
nil
{
return
err
}
// 自己是否有cp了
myCp
,
err
:=
cp_m
.
GetCp
(
model
,
myUserId
)
if
err
!=
nil
{
return
err
}
if
myCp
.
Id
>
0
{
return
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
// 对方是否已经有cp了
inviCp
,
err
:=
cp_m
.
GetCp
(
model
,
userInvite
.
ID
)
if
err
!=
nil
{
return
err
}
if
inviCp
.
Id
>
0
{
return
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
// 我是否发起过cp邀请,且还未被处理
myInvite
,
err
:=
cp_m
.
GetCpInvite
(
model
,
user
.
ID
,
0
,
cp_e
.
CpInvite
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"InviteCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
}
if
myInvite
!=
nil
&&
myInvite
.
Id
>
0
{
return
bizerr
.
CpAlreadyInvite
}
err
=
model
.
Transaction
(
func
(
model
*
domain
.
Model
)
error
{
// 创建邀请记录
cpInvId
,
err
:=
cp_m
.
CreateCpInvite
(
model
,
myUserId
,
userInvite
.
ID
,
cp_e
.
CpRelationInviteDiamond
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"InviteCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
}
// 扣费
err
=
diamond_m
.
ChangeDiamondAccountDetail
(
model
,
diamond_e
.
CpInvite
,
cpInvId
,
myUserId
,
cp_e
.
CpRelationInviteDiamond
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"InviteCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
}
// 发送私信
data
,
_
:=
json
.
Marshal
(
cp_m
.
CpInviteMessage
{
Identifier
:
"CpInviteMessage"
,
Msg
:
"Do you want to be CP with me?"
,
Status
:
uint8
(
cp_e
.
CpInvite
),
})
if
err
:=
tencentyun
.
BatchSendCustomMsg
(
model
,
1
,
user
.
ExternalId
,
[]
string
{
userInvite
.
ExternalId
},
string
(
data
),
"cp邀请"
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"BatchSendCustomMsg fail:%v"
,
err
)
return
err
}
return
nil
})
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"InviteCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
}
// socket 推送弹窗
go
rpc
.
SendCpInviteNotice
(
userInvite
.
ID
,
user
.
Code
,
user
.
Nick
,
user
.
Avatar
,
"Do you want to be CP with me?"
)
return
nil
}
func
CancelCpRelation
(
myCtx
*
mycontext
.
MyContext
,
myUserId
uint64
,
userCode
,
lang
string
)
error
{
model
:=
domain
.
CreateModelContext
(
myCtx
)
user
,
err
:=
user_m
.
GetUser
(
model
,
myUserId
)
if
err
!=
nil
{
return
err
}
userRec
,
err
:=
user_m
.
GetUserByCode
(
model
,
userCode
)
if
err
!=
nil
{
return
err
}
// 自己没有cp了
myCp
,
err
:=
cp_m
.
GetCp
(
model
,
myUserId
)
if
err
!=
nil
{
return
err
}
if
myCp
.
Id
==
0
{
return
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
// 对方没有cp了
inviCp
,
err
:=
cp_m
.
GetCp
(
model
,
userRec
.
ID
)
if
err
!=
nil
{
return
err
}
if
inviCp
.
Id
==
0
{
return
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
// 是否有关于我的cp解除申请,且还未被处理
myCancel
,
err
:=
cp_m
.
GetCpCancelWithMe
(
model
,
user
.
ID
,
cp_e
.
CpCancel
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"InviteCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
}
if
myCancel
!=
nil
&&
myCancel
.
Id
>
0
{
return
bizerr
.
CpHaveCancelNoDeal
}
err
=
model
.
Transaction
(
func
(
model
*
domain
.
Model
)
error
{
// 创建邀请记录
_
,
err
=
cp_m
.
CreateCpCancel
(
model
,
myUserId
,
userRec
.
ID
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"CancelCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
}
// 发送私信
data
,
_
:=
json
.
Marshal
(
cp_m
.
CpCancelMessage
{
Identifier
:
"CpCancelMessage"
,
Msg
:
"I want to unbind the CP relationship"
,
Status
:
1
,
})
if
err
:=
tencentyun
.
BatchSendCustomMsg
(
model
,
1
,
user
.
ExternalId
,
[]
string
{
userRec
.
ExternalId
},
string
(
data
),
"cp解除"
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"CancelCpRelation BatchSendCustomMsg fail:%v"
,
err
)
return
err
}
return
nil
})
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"CancelCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
}
return
nil
}
myerr/bizerr/bizCode.go
View file @
cbb3a44a
...
...
@@ -46,4 +46,7 @@ var (
GameSettleWrong
=
myerr
.
NewBusinessCode
(
50114
,
"Game settle wrong"
,
myerr
.
BusinessData
{})
// 结算修改错误
GameCloseWrong
=
myerr
.
NewBusinessCode
(
50115
,
"Game close wrong"
,
myerr
.
BusinessData
{})
// 关闭错误
GameJoinFailed
=
myerr
.
NewBusinessCode
(
50116
,
"Join failed"
,
myerr
.
BusinessData
{})
// 加入失败
CpAlreadyInvite
=
myerr
.
NewBusinessCode
(
50120
,
"Already invited"
,
myerr
.
BusinessData
{})
// 已经发送过邀请了
CpHaveCancelNoDeal
=
myerr
.
NewBusinessCode
(
50121
,
"You have a cancel apply"
,
myerr
.
BusinessData
{})
// 有接触申请需要处理
)
mysql/3.9.0.sql
View file @
cbb3a44a
...
...
@@ -27,4 +27,18 @@ CREATE TABLE `cp_invite` (
KEY
`uid2_idx`
(
`invite_user_id`
)
USING
BTREE
,
KEY
`status_idx`
(
`status`
)
USING
BTREE
,
KEY
`created_time`
(
`created_time`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
COMMENT
=
'cp邀请发起记录'
;
\ No newline at end of file
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
COMMENT
=
'cp邀请发起记录'
;
CREATE
TABLE
`cp_cancel`
(
`id`
bigint
unsigned
NOT
NULL
AUTO_INCREMENT
COMMENT
'id'
,
`user_id`
bigint
NOT
NULL
COMMENT
'发起者'
,
`rec_user_id`
bigint
NOT
NULL
COMMENT
'接收者'
,
`status`
tinyint
unsigned
NOT
NULL
COMMENT
'状态1.未处理2.发起者已撤销3.对方已确认4.到期自动确认'
,
`created_time`
timestamp
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
,
`updated_time`
timestamp
NOT
NULL
DEFAULT
CURRENT_TIMESTAMP
ON
UPDATE
CURRENT_TIMESTAMP
,
PRIMARY
KEY
(
`id`
),
KEY
`uid_idx`
(
`user_id`
)
USING
BTREE
,
KEY
`uid2_idx`
(
`rec_user_id`
)
USING
BTREE
,
KEY
`status_idx`
(
`status`
)
USING
BTREE
,
KEY
`created_time`
(
`created_time`
)
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8mb4
COLLATE
=
utf8mb4_0900_ai_ci
COMMENT
=
'cp解除发起记录'
;
\ No newline at end of file
route/cp_r/cp_relation.go
View file @
cbb3a44a
...
...
@@ -7,9 +7,7 @@ import (
"git.hilo.cn/hilo-common/domain"
"git.hilo.cn/hilo-common/mycontext"
"git.hilo.cn/hilo-common/myerr/comerr"
"git.hilo.cn/hilo-common/rpc"
"git.hilo.cn/hilo-common/sdk/tencentyun"
"git.hilo.cn/hilo-common/txop/bag_tx"
"git.hilo.cn/hilo-common/txop/msg"
"github.com/gin-gonic/gin"
"hilo-user/_const/enum/cp_e"
...
...
@@ -17,6 +15,7 @@ import (
"hilo-user/domain/model/cp_m"
"hilo-user/domain/model/diamond_m"
"hilo-user/domain/model/user_m"
"hilo-user/domain/service/cp_s"
"hilo-user/myerr/bizerr"
"hilo-user/req"
"hilo-user/resp"
...
...
@@ -56,11 +55,12 @@ func CheckUserCpRelation(c *gin.Context) (*mycontext.MyContext, error) {
}
// @Tags cp关系
// @Summary 发送cp邀请
// @Param code formData int true "用户code"
// @Summary 发送cp邀请/发起解除cp
// @Param code formData int true "对方用户code"
// @Param type formData int true "类型1.发起邀请2.发起解除"
// @Success 200
// @Router /v2/cp/relation
/invite
[post]
func
Invite
CpRelation
(
c
*
gin
.
Context
)
(
*
mycontext
.
MyContext
,
error
)
{
// @Router /v2/cp/relation [post]
func
CpRelation
(
c
*
gin
.
Context
)
(
*
mycontext
.
MyContext
,
error
)
{
myCtx
:=
mycontext
.
CreateMyContext
(
c
.
Keys
)
userCode
:=
c
.
PostForm
(
"code"
)
...
...
@@ -69,65 +69,27 @@ func InviteCpRelation(c *gin.Context) (*mycontext.MyContext, error) {
return
myCtx
,
err
}
model
:=
domain
.
CreateModelContext
(
myCtx
)
user
,
err
:=
user_m
.
GetUser
(
model
,
myUserId
)
if
err
!=
nil
{
return
myCtx
,
err
}
userInvite
,
err
:=
user_m
.
GetUserByCode
(
model
,
userCode
)
if
err
!=
nil
{
return
myCtx
,
err
optType
,
err
:=
strconv
.
Atoi
(
c
.
PostForm
(
"type"
))
if
err
!=
nil
||
optType
>
2
||
optType
<
1
{
return
myCtx
,
bizerr
.
InvalidParameter
}
// 自己是否有cp了
myCp
,
err
:=
cp_m
.
GetCp
(
model
,
myUserId
)
if
err
!=
nil
{
return
myCtx
,
err
}
if
myCp
.
Id
>
0
{
return
myCtx
,
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
// 对方是否已经有cp了
inviCp
,
err
:=
cp_m
.
GetCp
(
model
,
userInvite
.
ID
)
if
err
!=
nil
{
return
myCtx
,
err
}
if
inviCp
.
Id
>
0
{
return
myCtx
,
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
err
=
model
.
Transaction
(
func
(
model
*
domain
.
Model
)
error
{
// 创建邀请记录
cpInvId
,
err
:=
cp_m
.
CreateCpInvite
(
model
,
myUserId
,
userInvite
.
ID
,
cp_e
.
CpRelationInviteDiamond
)
if
optType
==
1
{
// 邀请
err
=
cp_s
.
InviteCpRelation
(
myCtx
,
myUserId
,
userCode
,
lang
)
if
err
!=
nil
{
m
odel
.
Log
.
Errorf
(
"InviteCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
m
yCtx
.
Log
.
Errorf
(
"InviteCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
myCtx
,
err
}
// 扣费
err
=
diamond_m
.
ChangeDiamondAccountDetail
(
model
,
diamond_e
.
CpInvite
,
cpInvId
,
myUserId
,
cp_e
.
CpRelationInviteDiamond
)
}
else
{
// 发起解除
err
=
cp_s
.
CancelCpRelation
(
myCtx
,
myUserId
,
userCode
,
lang
)
if
err
!=
nil
{
m
odel
.
Log
.
Errorf
(
"Invite
CpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
err
m
yCtx
.
Log
.
Errorf
(
"Cancel
CpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
myCtx
,
err
}
// 发送私信
data
,
_
:=
json
.
Marshal
(
cp_m
.
CpInviteMessage
{
Identifier
:
"CpInviteMessage"
,
Msg
:
"Do you want to be CP with me?"
,
Status
:
uint8
(
cp_e
.
CpInvite
),
})
if
err
:=
tencentyun
.
BatchSendCustomMsg
(
model
,
1
,
user
.
ExternalId
,
[]
string
{
userInvite
.
ExternalId
},
string
(
data
),
"cp邀请"
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"BatchSendCustomMsg fail:%v"
,
err
)
return
err
}
return
nil
})
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"InviteCpRelation myUserId:%d, err:%v"
,
myUserId
,
err
)
return
myCtx
,
err
}
// socket 推送弹窗
go
rpc
.
SendCpInviteNotice
(
userInvite
.
ID
,
user
.
Code
,
user
.
Nick
,
user
.
Avatar
,
"Do you want to be CP with me?"
)
resp
.
ResponseOk
(
c
,
cp_cv
.
CheckCpRelationRes
{}
)
resp
.
ResponseOk
(
c
,
nil
)
return
myCtx
,
nil
}
...
...
@@ -160,7 +122,7 @@ func ReplyCpInvite(c *gin.Context) (*mycontext.MyContext, error) {
return
myCtx
,
err
}
cpRecord
,
err
:=
cp_m
.
GetCpInvite
(
model
,
userSender
.
ID
,
user
.
ID
)
cpRecord
,
err
:=
cp_m
.
GetCpInvite
(
model
,
userSender
.
ID
,
user
.
ID
,
cp_e
.
CpInvite
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"ReplyCpInvite userSender:%d, user:%d, err:%v"
,
userSender
.
ID
,
user
.
ID
,
err
)
return
myCtx
,
err
...
...
@@ -169,21 +131,23 @@ func ReplyCpInvite(c *gin.Context) (*mycontext.MyContext, error) {
return
myCtx
,
bizerr
.
InvalidParameter
}
// 自己是否有cp了
myCp
,
err
:=
cp_m
.
GetCp
(
model
,
myUserId
)
if
err
!=
nil
{
return
myCtx
,
err
}
if
optType
==
1
&&
myCp
.
Id
>
0
{
// 接受的时候
return
myCtx
,
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
// 对方是否已经有cp了
senderCp
,
err
:=
cp_m
.
GetCp
(
model
,
userSender
.
ID
)
if
err
!=
nil
{
return
myCtx
,
err
}
if
optType
==
1
&&
senderCp
.
Id
>
0
{
return
myCtx
,
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
if
optType
==
1
{
// 接受的时候
// 自己是否有cp了
myCp
,
err
:=
cp_m
.
GetCp
(
model
,
myUserId
)
if
err
!=
nil
{
return
myCtx
,
err
}
if
myCp
.
Id
>
0
{
return
myCtx
,
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
// 对方是否已经有cp了
senderCp
,
err
:=
cp_m
.
GetCp
(
model
,
userSender
.
ID
)
if
err
!=
nil
{
return
myCtx
,
err
}
if
senderCp
.
Id
>
0
{
return
myCtx
,
msg
.
GetErrByLanguage
(
model
,
0
,
lang
,
comerr
.
InvalidParameter
)
}
}
err
=
model
.
Transaction
(
func
(
model
*
domain
.
Model
)
error
{
// 更新邀请状态
...
...
@@ -205,11 +169,11 @@ func ReplyCpInvite(c *gin.Context) (*mycontext.MyContext, error) {
model
.
Log
.
Errorf
(
"ReplyCpInvite userSender:%d, user:%d, status:%d, err:%v"
,
userSender
.
ID
,
user
.
ID
,
updateStatus
,
err
)
return
err
}
// 发放告白礼物
if
_
,
err
=
bag_tx
.
SendUserBag
(
model
,
userSender
.
ID
,
1
,
award
.
GiftId
,
award
.
GiftN
,
3
,
"告白礼物"
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"ReplyCpInvite userSender:%d, user:%d, status:%d, err:%v"
,
userSender
.
ID
,
user
.
ID
,
updateStatus
,
err
)
return
err
}
// 发放告白礼物
cwj----
//
if _, err = bag_tx.SendUserBag(model, userSender.ID, 1, award.GiftId, award.GiftN, 3, "告白礼物"); err != nil {
//
model.Log.Errorf("ReplyCpInvite userSender:%d, user:%d, status:%d, err:%v", userSender.ID, user.ID, updateStatus, err)
//
return err
//
}
// 私信
msgData
,
_
=
json
.
Marshal
(
cp_m
.
CpInviteMessage
{
Identifier
:
"CpInviteMessage"
,
...
...
@@ -246,3 +210,100 @@ func ReplyCpInvite(c *gin.Context) (*mycontext.MyContext, error) {
resp
.
ResponseOk
(
c
,
cp_cv
.
CheckCpRelationRes
{})
return
myCtx
,
nil
}
// @Tags cp关系
// @Summary 回应cp解除
// @Param code formData int true "对方的用户code"
// @Param type formData int true "类型1.撤销2.接受"
// @Success 200
// @Router /v2/cp/relation/cancel/reply [post]
func
ReplyCpCancel
(
c
*
gin
.
Context
)
(
*
mycontext
.
MyContext
,
error
)
{
myCtx
:=
mycontext
.
CreateMyContext
(
c
.
Keys
)
userCode
:=
c
.
PostForm
(
"code"
)
optType
,
err
:=
strconv
.
Atoi
(
c
.
PostForm
(
"type"
))
if
err
!=
nil
||
optType
>
2
||
optType
<
1
{
return
myCtx
,
bizerr
.
InvalidParameter
}
myUserId
,
_
,
err
:=
req
.
GetUserIdLang
(
c
,
myCtx
)
if
err
!=
nil
{
return
myCtx
,
err
}
model
:=
domain
.
CreateModelContext
(
myCtx
)
myUser
,
err
:=
user_m
.
GetUser
(
model
,
myUserId
)
if
err
!=
nil
{
return
myCtx
,
err
}
user2
,
err
:=
user_m
.
GetUserByCode
(
model
,
userCode
)
if
err
!=
nil
{
return
myCtx
,
err
}
cpCancel
,
err
:=
cp_m
.
GetCpCancel
(
model
,
[]
uint64
{
myUser
.
ID
,
user2
.
ID
},
cp_e
.
CpCancel
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"ReplyCpCancel myUser:%d, user2:%d, err:%v"
,
myUser
.
ID
,
user2
.
ID
,
err
)
return
myCtx
,
err
}
if
cpCancel
==
nil
||
cpCancel
.
Id
==
0
{
return
myCtx
,
bizerr
.
InvalidParameter
}
if
optType
==
1
{
// 撤销,只有自己能撤销自己的申请
if
cpCancel
.
UserId
!=
myUserId
{
return
myCtx
,
bizerr
.
InvalidParameter
}
}
else
{
// 接受,只有对方能接受
if
cpCancel
.
RecUserId
!=
myUserId
{
return
myCtx
,
bizerr
.
InvalidParameter
}
}
err
=
model
.
Transaction
(
func
(
model
*
domain
.
Model
)
error
{
// 更新邀请状态
updateStatus
:=
cp_e
.
CpCancelRevoke
if
optType
==
2
{
// 接受
updateStatus
=
cp_e
.
CpCancelAccept
}
err
=
cp_m
.
UpdateStatusCpCancel
(
model
,
cpCancel
.
Id
,
updateStatus
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"ReplyCpCancel myUser:%d, user2:%d, status:%d, err:%v"
,
myUser
.
ID
,
user2
.
ID
,
updateStatus
,
err
)
return
err
}
var
msgData
[]
byte
if
optType
==
1
{
// 撤销解除
// 私信
msgData
,
_
=
json
.
Marshal
(
cp_m
.
CpCancelMessage
{
Identifier
:
"CpCancelMessage"
,
Msg
:
fmt
.
Sprintf
(
"%s withdrew my application to lift CP"
,
myUser
.
Nick
),
Status
:
2
,
})
}
else
{
// 接受解除
// 删除cp关系表的记录
err
=
cp_m
.
DelCpRelation
(
model
,
myUser
.
ID
,
user2
.
ID
)
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"ReplyCpCancel myUser:%d, user2:%d, status:%d, err:%v"
,
myUser
.
ID
,
user2
.
ID
,
updateStatus
,
err
)
return
err
}
// 私信
msgData
,
_
=
json
.
Marshal
(
cp_m
.
CpCancelMessage
{
Identifier
:
"CpCancelMessage"
,
Msg
:
"The CP relationship has been unbound, the CP value has been cleared, and the CP privilege has disappeared"
,
Status
:
3
,
})
}
if
err
:=
tencentyun
.
BatchSendCustomMsg
(
model
,
1
,
myUser
.
ExternalId
,
[]
string
{
user2
.
ExternalId
},
string
(
msgData
),
"cp解除"
);
err
!=
nil
{
model
.
Log
.
Errorf
(
"ReplyCpCancel BatchSendCustomMsg fail:%v"
,
err
)
return
err
}
return
nil
})
if
err
!=
nil
{
model
.
Log
.
Errorf
(
"ReplyCpCancel myUserId:%d, err:%v"
,
myUserId
,
err
)
return
myCtx
,
err
}
resp
.
ResponseOk
(
c
,
cp_cv
.
CheckCpRelationRes
{})
return
myCtx
,
nil
}
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