sqlx: add some logic implement 8%

r/paopao-ce-plus
Michael Li 2 years ago
parent 7b16fbe542
commit fec8330fb8
No known key found for this signature in database

@ -0,0 +1,24 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package cs
const (
ContactStatusRequesting int8 = iota + 1
ContactStatusAgree
ContactStatusReject
ContactStatusDeleted
)
type Contact struct {
ID int64 `db:"id" json:"id"`
UserId int64 `db:"user_id" json:"user_id"`
FriendId int64 `db:"friend_id" json:"friend_id"`
GroupId int64 `json:"group_id"`
Remark string `json:"remark"`
Status int8 `json:"status"` // 1请求好友, 2已同意好友, 3已拒绝好友, 4已删除好友
IsTop int8 `json:"is_top"`
IsBlack int8 `json:"is_black"`
NoticeEnable int8 `json:"notice_enable"`
}

@ -13,9 +13,9 @@ import (
type CommentReply struct { type CommentReply struct {
*Model *Model
CommentID int64 `json:"comment_id"` CommentID int64 `db:"comment_id" json:"comment_id"`
UserID int64 `json:"user_id"` UserID int64 `db:"user_id" json:"user_id"`
AtUserID int64 `json:"at_user_id"` AtUserID int64 `db:"at_user_id" json:"at_user_id"`
Content string `json:"content"` Content string `json:"content"`
IP string `json:"ip"` IP string `json:"ip"`
IPLoc string `json:"ip_loc"` IPLoc string `json:"ip_loc"`
@ -25,10 +25,10 @@ type CommentReply struct {
type CommentReplyFormated struct { type CommentReplyFormated struct {
ID int64 `json:"id"` ID int64 `json:"id"`
CommentID int64 `json:"comment_id"` CommentID int64 `db:"comment_id" json:"comment_id"`
UserID int64 `json:"user_id"` UserID int64 `db:"user_id" json:"user_id"`
User *UserFormated `json:"user"` User *UserFormated `json:"user"`
AtUserID int64 `json:"at_user_id"` AtUserID int64 `db:"at_user_id" json:"at_user_id"`
AtUser *UserFormated `json:"at_user"` AtUser *UserFormated `json:"at_user"`
Content string `json:"content"` Content string `json:"content"`
IPLoc string `json:"ip_loc"` IPLoc string `json:"ip_loc"`

@ -5,12 +5,15 @@
package sakila package sakila
import ( import (
"time"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs" "github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms" "github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc" "github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc"
"github.com/rocboss/paopao-ce/pkg/debug" "github.com/rocboss/paopao-ce/pkg/types"
) )
var ( var (
@ -28,95 +31,337 @@ type commentManageSrv struct {
q *cc.CommentManage q *cc.CommentManage
} }
func (s *commentSrv) GetComments(conditions *ms.ConditionsT, offset, limit int) ([]*ms.Comment, error) { func (s *commentSrv) GetComments(r *ms.ConditionsT, offset, limit int) ([]*ms.Comment, error) {
// TODO res := []*ms.Comment{}
debug.NotImplemented() (*r)["limit"], (*r)["offset"] = limit, offset
return nil, nil err := s.q.GetComments.Select(&res, r)
return res, err
} }
func (s *commentSrv) GetCommentByID(id int64) (*ms.Comment, error) { func (s *commentSrv) GetCommentByID(id int64) (*ms.Comment, error) {
// TODO res := &ms.Comment{}
debug.NotImplemented() err := s.q.GetCommentById.Get(res, id)
return nil, nil return res, err
} }
func (s *commentSrv) GetCommentReplyByID(id int64) (*ms.CommentReply, error) { func (s *commentSrv) GetCommentReplyByID(id int64) (*ms.CommentReply, error) {
// TODO res := &ms.CommentReply{}
debug.NotImplemented() err := s.q.GetCommentById.Get(res, id)
return nil, nil return res, err
} }
func (s *commentSrv) GetCommentCount(conditions *ms.ConditionsT) (int64, error) { func (s *commentSrv) GetCommentCount(r *ms.ConditionsT) (res int64, err error) {
// TODO err = s.q.GetCommentCount.Get(&res, r)
debug.NotImplemented() return
return 0, nil
} }
func (s *commentSrv) GetCommentContentsByIDs(ids []int64) ([]*ms.CommentContent, error) { func (s *commentSrv) GetCommentContentsByIDs(ids []int64) ([]*ms.CommentContent, error) {
// TODO res := []*ms.CommentContent{}
debug.NotImplemented() err := s.inSelect(&res, s.q.GetCommentContentsByIds, ids)
return nil, nil return res, err
} }
func (s *commentSrv) GetCommentThumbsMap(userId int64, tweetId int64) (cs.CommentThumbsMap, cs.CommentThumbsMap, error) { func (s *commentSrv) GetCommentThumbsMap(userId int64, tweetId int64) (cs.CommentThumbsMap, cs.CommentThumbsMap, error) {
// TODO if userId < 0 {
return nil, nil, debug.ErrNotImplemented return nil, nil, nil
}
commentThumbsList := cs.CommentThumbsList{}
err := s.q.GetCommentThumbs.Select(&commentThumbsList, userId, tweetId)
if err != nil {
return nil, nil, err
}
commentThumbs, replyThumbs := make(cs.CommentThumbsMap), make(cs.CommentThumbsMap)
for _, thumbs := range commentThumbsList {
if thumbs.CommentType == 0 {
commentThumbs[thumbs.CommentID] = thumbs
} else {
replyThumbs[thumbs.ReplyID] = thumbs
}
}
return commentThumbs, replyThumbs, nil
} }
func (s *commentSrv) GetCommentRepliesByID(ids []int64) ([]*ms.CommentReplyFormated, error) { func (s *commentSrv) GetCommentRepliesByID(ids []int64) ([]*ms.CommentReplyFormated, error) {
// TODO replies := []*ms.CommentReply{}
debug.NotImplemented() err := s.inSelect(&replies, s.q.GetCommmentRepliesByIds, ids)
return nil, nil if err != nil {
return nil, err
}
userIds := []int64{}
for _, reply := range replies {
userIds = append(userIds, reply.UserID, reply.AtUserID)
}
users := []*ms.UserFormated{}
if err = s.inSelect(&users, s.q.GetUsersByIds, userIds); err != nil {
return nil, err
}
repliesFormated := []*ms.CommentReplyFormated{}
for _, reply := range replies {
replyFormated := reply.Format()
for _, user := range users {
if reply.UserID == user.ID {
replyFormated.User = user
}
if reply.AtUserID == user.ID {
replyFormated.AtUser = user
}
}
repliesFormated = append(repliesFormated, replyFormated)
}
return repliesFormated, nil
} }
func (s *commentManageSrv) DeleteComment(comment *ms.Comment) error { func (s *commentManageSrv) DeleteComment(r *ms.Comment) error {
// TODO return s.with(func(tx *sqlx.Tx) error {
debug.NotImplemented() if _, err := tx.Stmtx(s.q.DeleteComment).Exec(r.ID); err != nil {
return nil return err
}
_, err := tx.Stmtx(s.q.DeleteCommentThumbs).Exec(r.UserID, r.PostID, r.ID)
return err
})
} }
func (s *commentManageSrv) CreateComment(comment *ms.Comment) (*ms.Comment, error) { func (s *commentManageSrv) CreateComment(r *ms.Comment) (*ms.Comment, error) {
// TODO res, err := s.q.CreateComment.Exec(r)
debug.NotImplemented() if err != nil {
return nil, nil return nil, err
}
id, err := res.LastInsertId()
if err != nil {
return nil, err
}
r.Model = &dbr.Model{
ID: id,
}
return r, nil
} }
func (s *commentManageSrv) CreateCommentReply(reply *ms.CommentReply) (*ms.CommentReply, error) { func (s *commentManageSrv) CreateCommentReply(r *ms.CommentReply) (*ms.CommentReply, error) {
// TODO res, err := s.q.CreateComment.Exec(r)
debug.NotImplemented() if err != nil {
return nil, nil return nil, err
}
id, err := res.LastInsertId()
if err != nil {
return nil, err
}
r.Model = &dbr.Model{ID: id}
return r, nil
} }
func (s *commentManageSrv) DeleteCommentReply(reply *ms.CommentReply) error { func (s *commentManageSrv) DeleteCommentReply(r *ms.CommentReply) error {
// TODO return s.with(func(tx *sqlx.Tx) error {
debug.NotImplemented() if _, err := tx.Stmtx(s.q.DeleteCommentReply).Exec(r.ID); err != nil {
return nil return err
}
_, err := tx.Stmtx(s.q.DeleteCommentThumbs).Exec(r.UserID, r.CommentID, r.ID)
return err
})
} }
func (s *commentManageSrv) CreateCommentContent(content *ms.CommentContent) (*ms.CommentContent, error) { func (s *commentManageSrv) CreateCommentContent(r *ms.CommentContent) (*ms.CommentContent, error) {
// TODO res, err := s.q.CreateCommentContent.Exec(r)
debug.NotImplemented() if err != nil {
return nil, nil return nil, err
}
id, err := res.LastInsertId()
if err != nil {
return nil, err
}
r.Model = &dbr.Model{ID: id}
return r, nil
} }
func (s *commentManageSrv) ThumbsUpComment(userId int64, tweetId, commentId int64) error { func (s *commentManageSrv) ThumbsUpComment(userId int64, tweetId, commentId int64) error {
// TODO return s.with(func(tx *sqlx.Tx) error {
return debug.ErrNotImplemented var (
thumbsUpCount int32 = 0
thumbsDownCount int32 = 0
)
commentThumbs := &dbr.TweetCommentThumbs{}
// 检查thumbs状态
err := tx.Stmtx(s.q.GetTweetCommentThumb).Get(commentThumbs, userId, tweetId, commentId)
if err == nil {
switch {
case commentThumbs.IsThumbsUp == types.Yes && commentThumbs.IsThumbsDown == types.No:
thumbsUpCount, thumbsDownCount = -1, 0
case commentThumbs.IsThumbsUp == types.No && commentThumbs.IsThumbsDown == types.No:
thumbsUpCount, thumbsDownCount = 1, 0
default:
thumbsUpCount, thumbsDownCount = 1, -1
commentThumbs.IsThumbsDown = types.No
}
commentThumbs.IsThumbsUp = 1 - commentThumbs.IsThumbsUp
commentThumbs.ModifiedOn = time.Now().Unix()
if _, err := tx.NamedStmt(s.q.UpdateThumbsUpComment).Exec(commentThumbs); err != nil {
return err
}
} else {
commentThumbs = &dbr.TweetCommentThumbs{
UserID: userId,
TweetID: tweetId,
CommentID: commentId,
IsThumbsUp: types.Yes,
IsThumbsDown: types.No,
CommentType: 0,
Model: &dbr.Model{
CreatedOn: time.Now().Unix(),
},
}
thumbsUpCount, thumbsDownCount = 1, 0
if _, err := tx.NamedStmt(s.q.CreateThumbsUpComment).Exec(commentThumbs); err != nil {
return err
}
}
// 更新thumbsUpCount
_, err = tx.Stmtx(s.q.UpdateCommentThumbsCount).Exec(commentId, thumbsUpCount, thumbsDownCount)
return err
})
} }
func (s *commentManageSrv) ThumbsDownComment(userId int64, tweetId, commentId int64) error { func (s *commentManageSrv) ThumbsDownComment(userId int64, tweetId, commentId int64) error {
// TODO return s.with(func(tx *sqlx.Tx) error {
return debug.ErrNotImplemented var (
thumbsUpCount int32 = 0
thumbsDownCount int32 = 0
)
commentThumbs := &dbr.TweetCommentThumbs{}
// 检查thumbs状态
err := tx.Stmtx(s.q.GetTweetCommentThumb).Get(commentThumbs, userId, tweetId, commentId)
if err == nil {
switch {
case commentThumbs.IsThumbsDown == types.Yes:
thumbsUpCount, thumbsDownCount = 0, -1
case commentThumbs.IsThumbsDown == types.No && commentThumbs.IsThumbsUp == types.No:
thumbsUpCount, thumbsDownCount = 0, 1
default:
thumbsUpCount, thumbsDownCount = -1, 1
commentThumbs.IsThumbsUp = types.No
}
commentThumbs.IsThumbsDown = 1 - commentThumbs.IsThumbsDown
commentThumbs.ModifiedOn = time.Now().Unix()
if _, err := tx.NamedStmt(s.q.UpdateThumbsUpComment).Exec(commentThumbs); err != nil {
return err
}
} else {
commentThumbs = &dbr.TweetCommentThumbs{
UserID: userId,
TweetID: tweetId,
CommentID: commentId,
IsThumbsUp: types.No,
IsThumbsDown: types.Yes,
CommentType: 0,
Model: &dbr.Model{
CreatedOn: time.Now().Unix(),
},
}
thumbsUpCount, thumbsDownCount = 0, 1
if _, err := tx.NamedStmt(s.q.CreateThumbsUpComment).Exec(commentThumbs); err != nil {
return err
}
}
// 更新thumbsUpCount
_, err = tx.Stmtx(s.q.UpdateCommentThumbsCount).Exec(commentId, thumbsUpCount, thumbsDownCount)
return err
})
} }
func (s *commentManageSrv) ThumbsUpReply(userId int64, tweetId, commentId, replyId int64) error { func (s *commentManageSrv) ThumbsUpReply(userId int64, tweetId, commentId, replyId int64) error {
// TODO return s.with(func(tx *sqlx.Tx) error {
return debug.ErrNotImplemented
var (
thumbsUpCount int32 = 0
thumbsDownCount int32 = 0
)
commentThumbs := &dbr.TweetCommentThumbs{}
// 检查thumbs状态
err := tx.Stmtx(s.q.GetCommentReplyThumb).Get(commentThumbs, userId, tweetId, commentId, replyId)
if err == nil {
switch {
case commentThumbs.IsThumbsUp == types.Yes:
thumbsUpCount, thumbsDownCount = -1, 0
case commentThumbs.IsThumbsUp == types.No && commentThumbs.IsThumbsDown == types.No:
thumbsUpCount, thumbsDownCount = 1, 0
default:
thumbsUpCount, thumbsDownCount = 1, -1
commentThumbs.IsThumbsDown = types.No
}
commentThumbs.IsThumbsUp = 1 - commentThumbs.IsThumbsUp
commentThumbs.ModifiedOn = time.Now().Unix()
if _, err := tx.NamedStmt(s.q.UpdateThumbsUpComment).Exec(commentThumbs); err != nil {
return err
}
} else {
commentThumbs = &dbr.TweetCommentThumbs{
UserID: userId,
TweetID: tweetId,
CommentID: commentId,
ReplyID: replyId,
IsThumbsUp: types.Yes,
IsThumbsDown: types.No,
CommentType: 1,
Model: &dbr.Model{
CreatedOn: time.Now().Unix(),
},
}
thumbsUpCount, thumbsDownCount = 1, 0
if _, err := tx.NamedStmt(s.q.CreateThumbsUpComment).Exec(commentThumbs); err != nil {
return err
}
}
// 更新thumbsUpCount
_, err = tx.Stmtx(s.q.UpdateCommentThumbsCount).Exec(commentId, thumbsUpCount, thumbsDownCount)
return err
})
} }
func (s *commentManageSrv) ThumbsDownReply(userId int64, tweetId, commentId, replyId int64) error { func (s *commentManageSrv) ThumbsDownReply(userId int64, tweetId, commentId, replyId int64) error {
// TODO return s.with(func(tx *sqlx.Tx) error {
return debug.ErrNotImplemented var (
thumbsUpCount int32 = 0
thumbsDownCount int32 = 0
)
commentThumbs := &dbr.TweetCommentThumbs{}
// 检查thumbs状态
err := tx.Stmtx(s.q.GetCommentReplyThumb).Get(commentThumbs, userId, tweetId, commentId, replyId)
if err == nil {
switch {
case commentThumbs.IsThumbsDown == types.Yes:
thumbsUpCount, thumbsDownCount = 0, -1
case commentThumbs.IsThumbsUp == types.No && commentThumbs.IsThumbsDown == types.No:
thumbsUpCount, thumbsDownCount = 0, 1
default:
thumbsUpCount, thumbsDownCount = -1, 1
commentThumbs.IsThumbsUp = types.No
}
commentThumbs.IsThumbsDown = 1 - commentThumbs.IsThumbsDown
commentThumbs.ModifiedOn = time.Now().Unix()
if _, err := tx.NamedStmt(s.q.UpdateThumbsUpComment).Exec(commentThumbs); err != nil {
return err
}
} else {
commentThumbs = &dbr.TweetCommentThumbs{
UserID: userId,
TweetID: tweetId,
CommentID: commentId,
ReplyID: replyId,
IsThumbsUp: types.No,
IsThumbsDown: types.Yes,
CommentType: 1,
Model: &dbr.Model{
CreatedOn: time.Now().Unix(),
},
}
thumbsUpCount, thumbsDownCount = 0, 1
if _, err := tx.NamedStmt(s.q.CreateThumbsUpComment).Exec(commentThumbs); err != nil {
return err
}
}
// 更新thumbsUpCount
_, err = tx.Stmtx(s.q.UpdateCommentThumbsCount).Exec(commentId, thumbsUpCount, thumbsDownCount)
return err
})
} }
func newCommentService(db *sqlx.DB) core.CommentService { func newCommentService(db *sqlx.DB) core.CommentService {

@ -7,15 +7,23 @@ package sakila
import ( import (
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/cs"
"github.com/rocboss/paopao-ce/internal/core/ms" "github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc" "github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc"
"github.com/rocboss/paopao-ce/pkg/debug"
) )
var ( var (
_ core.ContactManageService = (*contactManageSrv)(nil) _ core.ContactManageService = (*contactManageSrv)(nil)
) )
type contact struct {
UserId int64 `db:"user_id" json:"user_id"`
FriendId int64 `db:"friend_id" json:"friend_id"`
Status int8 `json:"status"` // 1请求好友, 2已同意好友, 3已拒绝好友, 4已删除好友
IsBlack int8 `json:"is_black"`
NoticeEnable int8 `json:"notice_enable"`
}
type contactManageSrv struct { type contactManageSrv struct {
*sqlxSrv *sqlxSrv
q *cc.ContactManager q *cc.ContactManager
@ -42,13 +50,27 @@ func (s *contactManageSrv) DeleteFriend(userId int64, friendId int64) (err error
} }
func (s *contactManageSrv) GetContacts(userId int64, offset int, limit int) (*ms.ContactList, error) { func (s *contactManageSrv) GetContacts(userId int64, offset int, limit int) (*ms.ContactList, error) {
// TODO res := &ms.ContactList{
return nil, nil Contacts: []ms.ContactItem{},
}
if err := s.q.GetContacts.Select(&res.Contacts, userId, limit, offset); err != nil {
return nil, err
}
if err := s.q.TotalContactsById.Get(&res.Total, userId); err != nil {
return nil, err
}
return res, nil
} }
func (s *contactManageSrv) IsFriend(userId int64, friendId int64) bool { func (s *contactManageSrv) IsFriend(userId int64, friendId int64) bool {
// TODO ct := &contact{
debug.NotImplemented() UserId: friendId,
FriendId: userId,
}
err := s.q.GetUserFriend.Get(ct, userId, friendId)
if err == nil && ct.Status == cs.ContactStatusAgree {
return true
}
return false return false
} }

@ -8,6 +8,7 @@ import (
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms" "github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc" "github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc"
"github.com/rocboss/paopao-ce/pkg/debug" "github.com/rocboss/paopao-ce/pkg/debug"
) )
@ -22,21 +23,27 @@ type messageSrv struct {
} }
func (s *messageSrv) CreateMessage(msg *ms.Message) (*ms.Message, error) { func (s *messageSrv) CreateMessage(msg *ms.Message) (*ms.Message, error) {
// TODO res, err := s.q.CreateMessage.Exec(msg)
debug.NotImplemented() if err != nil {
return nil, nil return nil, err
}
id, err := res.LastInsertId()
if err != nil {
return nil, err
}
msg.Model = &dbr.Model{ID: id}
return msg, nil
} }
func (s *messageSrv) GetUnreadCount(userID int64) (int64, error) { func (s *messageSrv) GetUnreadCount(userID int64) (res int64, err error) {
// TODO err = s.q.GetUnreadCount.Get(&res)
debug.NotImplemented() return
return 0, nil
} }
func (s *messageSrv) GetMessageByID(id int64) (*ms.Message, error) { func (s *messageSrv) GetMessageByID(id int64) (*ms.Message, error) {
// TODO res := &ms.Message{}
debug.NotImplemented() err := s.q.GetMessageById.Get(res, id)
return nil, nil return res, err
} }
func (s *messageSrv) ReadMessage(message *ms.Message) error { func (s *messageSrv) ReadMessage(message *ms.Message) error {
@ -45,16 +52,16 @@ func (s *messageSrv) ReadMessage(message *ms.Message) error {
return nil return nil
} }
func (s *messageSrv) GetMessages(conditions *ms.ConditionsT, offset, limit int) ([]*ms.MessageFormated, error) { func (s *messageSrv) GetMessages(r *ms.ConditionsT, offset, limit int) ([]*ms.MessageFormated, error) {
// TODO res := []*ms.MessageFormated{}
debug.NotImplemented() (*r)["limit"], (*r)["offset"] = limit, offset
return nil, nil err := s.q.GetMessages.Select(&res, r)
return res, err
} }
func (s *messageSrv) GetMessageCount(conditions *ms.ConditionsT) (int64, error) { func (s *messageSrv) GetMessageCount(r *ms.ConditionsT) (res int64, err error) {
// TODO err = s.q.GetMessageCount.Get(&res, r)
debug.NotImplemented() return
return 0, nil
} }
func newMessageService(db *sqlx.DB) core.MessageService { func newMessageService(db *sqlx.DB) core.MessageService {

@ -5,11 +5,15 @@
package sakila package sakila
import ( import (
"math/rand"
"strconv"
"time"
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms" "github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc" "github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc"
"github.com/rocboss/paopao-ce/pkg/debug"
) )
var ( var (
@ -18,33 +22,47 @@ var (
type securitySrv struct { type securitySrv struct {
*sqlxSrv *sqlxSrv
q *cc.Security q *cc.Security
phoneVerify core.PhoneVerifyService
} }
// GetLatestPhoneCaptcha 获取最新短信验证码 // GetLatestPhoneCaptcha 获取最新短信验证码
func (s *securitySrv) GetLatestPhoneCaptcha(phone string) (*ms.Captcha, error) { func (s *securitySrv) GetLatestPhoneCaptcha(phone string) (*ms.Captcha, error) {
// TODO res := &ms.Captcha{}
debug.NotImplemented() err := s.q.GetLatestPhoneCaptcha.Get(res, phone)
return nil, nil return res, err
} }
// UsePhoneCaptcha 更新短信验证码 // UsePhoneCaptcha 更新短信验证码
func (s *securitySrv) UsePhoneCaptcha(captcha *ms.Captcha) error { func (s *securitySrv) UsePhoneCaptcha(r *ms.Captcha) error {
// TODO r.UseTimes++
debug.NotImplemented() _, err := s.q.UsePhoneCaptcha.Exec(r)
return nil return err
} }
// SendPhoneCaptcha 发送短信验证码 // SendPhoneCaptcha 发送短信验证码
func (s *securitySrv) SendPhoneCaptcha(phone string) error { func (s *securitySrv) SendPhoneCaptcha(phone string) error {
// TODO expire := time.Duration(5)
debug.NotImplemented() // 发送验证码
return nil rand.Seed(time.Now().UnixNano())
captcha := strconv.Itoa(rand.Intn(900000) + 100000)
if err := s.phoneVerify.SendPhoneCaptcha(phone, captcha, expire); err != nil {
return err
}
// 写入表
phoneCaptcha := &dbr.Captcha{
Phone: phone,
Captcha: captcha,
ExpiredOn: time.Now().Add(expire * time.Minute).Unix(),
}
_, err := s.q.CreatePhoneCaptcha.Exec(phoneCaptcha)
return err
} }
func newSecurityService(db *sqlx.DB, phoneVerify core.PhoneVerifyService) core.SecurityService { func newSecurityService(db *sqlx.DB, phoneVerify core.PhoneVerifyService) core.SecurityService {
return &securitySrv{ return &securitySrv{
sqlxSrv: newSqlxSrv(db), sqlxSrv: newSqlxSrv(db),
q: mustBuild(db, cc.BuildSecurity), q: mustBuild(db, cc.BuildSecurity),
phoneVerify: phoneVerify,
} }
} }

@ -8,6 +8,7 @@ import (
"github.com/jmoiron/sqlx" "github.com/jmoiron/sqlx"
"github.com/rocboss/paopao-ce/internal/core" "github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/core/ms" "github.com/rocboss/paopao-ce/internal/core/ms"
"github.com/rocboss/paopao-ce/internal/dao/jinzhu/dbr"
"github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc" "github.com/rocboss/paopao-ce/internal/dao/sakila/yesql/cc"
"github.com/rocboss/paopao-ce/pkg/debug" "github.com/rocboss/paopao-ce/pkg/debug"
) )
@ -22,26 +23,38 @@ type walletSrv struct {
} }
func (s *walletSrv) GetRechargeByID(id int64) (*ms.WalletRecharge, error) { func (s *walletSrv) GetRechargeByID(id int64) (*ms.WalletRecharge, error) {
// TODO res := &ms.WalletRecharge{}
debug.NotImplemented() err := s.q.GetRechargeById.Get(res, id)
return nil, nil return res, err
} }
func (s *walletSrv) CreateRecharge(userId, amount int64) (*ms.WalletRecharge, error) { func (s *walletSrv) CreateRecharge(userId, amount int64) (*ms.WalletRecharge, error) {
// TODO res, err := s.q.CreateRecharge.Exec(userId, amount)
debug.NotImplemented() if err != nil {
return nil, nil return nil, err
}
id, err := res.LastInsertId()
if err != nil {
return nil, err
}
return &ms.WalletRecharge{
Model: &dbr.Model{
ID: id,
},
UserID: userId,
Amount: amount,
}, nil
} }
func (s *walletSrv) GetUserWalletBills(userID int64, offset, limit int) ([]*ms.WalletStatement, error) { func (s *walletSrv) GetUserWalletBills(userID int64, offset, limit int) ([]*ms.WalletStatement, error) {
// TODO res := []*ms.WalletStatement{}
debug.NotImplemented() err := s.q.GetUserWalletBills.Select(&res, userID, limit, offset)
return nil, nil return res, err
} }
func (s *walletSrv) GetUserWalletBillCount(userID int64) (int64, error) { func (s *walletSrv) GetUserWalletBillCount(userID int64) (res int64, err error) {
// TODO err = s.q.GetUserWalletBillCount.Get(&res, userID)
debug.NotImplemented() return
return 0, nil
} }
func (s *walletSrv) HandleRechargeSuccess(recharge *ms.WalletRecharge, tradeNo string) error { func (s *walletSrv) HandleRechargeSuccess(recharge *ms.WalletRecharge, tradeNo string) error {

@ -12,111 +12,120 @@ import (
) )
const ( const (
_BeFriendFilter_AuthorizationManage = `SELECT * FROM @user WHERE username=?` _BeFriendFilter_AuthorizationManage = `SELECT * FROM @user WHERE username=?`
_BeFriendIds_AuthorizationManage = `SELECT * FROM @user WHERE username=?` _BeFriendIds_AuthorizationManage = `SELECT * FROM @user WHERE username=?`
_MyFriendSet_AuthorizationManage = `SELECT * FROM @user WHERE username=?` _MyFriendSet_AuthorizationManage = `SELECT * FROM @user WHERE username=?`
_GetCommentById_Comment = `SELECT * FROM @user WHERE username=?` _GetCommentById_Comment = `SELECT * FROM @user WHERE username=?`
_GetCommentContentsByIds_Comment = `SELECT * FROM @user WHERE username=?` _GetCommentContentsByIds_Comment = `SELECT * FROM @user WHERE username=?`
_GetCommentCount_Comment = `SELECT * FROM @user WHERE username=?` _GetCommentCount_Comment = `SELECT * FROM @user WHERE username=?`
_GetCommentReplayById_Comment = `SELECT * FROM @user WHERE username=?` _GetCommentReplyById_Comment = `SELECT * FROM @user WHERE username=?`
_GetCommentThumbsMap_Comment = `SELECT * FROM @user WHERE username=?` _GetCommentThumbs_Comment = `SELECT * FROM @user WHERE username=?`
_GetComments_Comment = `SELECT * FROM @user WHERE username=?` _GetComments_Comment = `SELECT * FROM @user WHERE username=?`
_GetCommmentRepliesById_Comment = `SELECT * FROM @user WHERE username=?` _GetCommmentRepliesByIds_Comment = `SELECT * FROM @user WHERE username=?`
_CreateComment_CommentManage = `SELECT * FROM @user WHERE username=?` _GetUsersByIds_Comment = `SELECT * FROM @user WHERE username=?`
_CreateCommentContent_CommentManage = `SELECT * FROM @user WHERE username=?` _CreateComment_CommentManage = `SELECT * FROM @user WHERE username=?`
_CreateCommentReply_CommentManage = `SELECT * FROM @user WHERE username=?` _CreateCommentContent_CommentManage = `SELECT * FROM @user WHERE username=?`
_DeleteComment_CommentManage = `SELECT * FROM @user WHERE username=?` _CreateCommentReply_CommentManage = `SELECT * FROM @user WHERE username=?`
_DeleteCommentReply_CommentManage = `SELECT * FROM @user WHERE username=?` _CreateThumbsUpComment_CommentManage = `SELECT * FROM @user WHERE username=?`
_ThumbsDownComment_CommentManage = `SELECT * FROM @user WHERE username=?` _DeleteComment_CommentManage = `SELECT * FROM @user WHERE username=?`
_ThumbsDownReply_CommentManage = `SELECT * FROM @user WHERE username=?` _DeleteCommentReply_CommentManage = `SELECT * FROM @user WHERE username=?`
_ThumbsUpComment_CommentManage = `SELECT * FROM @user WHERE username=?` _DeleteCommentThumbs_CommentManage = `SELECT * FROM @user WHERE username=?`
_ThumbsUpReply_CommentManage = `SELECT * FROM @user WHERE username=?` _DeleteReplyThumbs_CommentManage = `SELECT * FROM @user WHERE username=?`
_AddFriend_ContactManager = `SELECT * FROM @user WHERE username=?` _GetCommentReplyThumb_CommentManage = `SELECT * FROM @user WHERE username=?`
_DelFriend_ContactManager = `SELECT * FROM @user WHERE username=?` _GetTweetCommentThumb_CommentManage = `SELECT * FROM @user WHERE username=?`
_GetContacts_ContactManager = `SELECT * FROM @user WHERE username=?` _ThumbsDownComment_CommentManage = `SELECT * FROM @user WHERE username=?`
_IsFriend_ContactManager = `SELECT * FROM @user WHERE username=?` _ThumbsDownReply_CommentManage = `SELECT * FROM @user WHERE username=?`
_RejectFriend_ContactManager = `SELECT * FROM @user WHERE username=?` _ThumbsUpReply_CommentManage = `SELECT * FROM @user WHERE username=?`
_RequestingFriend_ContactManager = `SELECT * FROM @user WHERE username=?` _UpdateCommentThumbsCount_CommentManage = `SELECT * FROM @user WHERE username=?`
_UserInfo_FollowIndexA = `SELECT * FROM @user WHERE username=?` _UpdateThumbsUpComment_CommentManage = `SELECT * FROM @user WHERE username=?`
_UserInfo_FollowIndex = `SELECT * FROM @user WHERE username=?` _AddFriend_ContactManager = `SELECT * FROM @user WHERE username=?`
_UserInfo_FriendIndexA = `SELECT * FROM @user WHERE username=?` _DelFriend_ContactManager = `SELECT * FROM @user WHERE username=?`
_UserInfo_FriendIndex = `SELECT * FROM @user WHERE username=?` _GetContacts_ContactManager = `SELECT * FROM @user WHERE username=?`
_UserInfo_LightIndexA = `SELECT * FROM @user WHERE username=?` _GetUserFriend_ContactManager = `SELECT * FROM @user WHERE username=?`
_UserInfo_LightIndex = `SELECT * FROM @user WHERE username=?` _RejectFriend_ContactManager = `SELECT * FROM @user WHERE username=?`
_CreateMessage_Message = `SELECT * FROM @user WHERE username=?` _RequestingFriend_ContactManager = `SELECT * FROM @user WHERE username=?`
_GetMessageById_Message = `SELECT * FROM @user WHERE username=?` _TotalContactsById_ContactManager = `SELECT * FROM @user WHERE username=?`
_GetMessageCount_Message = `SELECT * FROM @user WHERE username=?` _UserInfo_FollowIndexA = `SELECT * FROM @user WHERE username=?`
_GetMessages_Message = `SELECT * FROM @user WHERE username=?` _UserInfo_FollowIndex = `SELECT * FROM @user WHERE username=?`
_GetUnreadCount_Message = `SELECT * FROM @user WHERE username=?` _UserInfo_FriendIndexA = `SELECT * FROM @user WHERE username=?`
_ReadMessage_Message = `SELECT * FROM @user WHERE username=?` _UserInfo_FriendIndex = `SELECT * FROM @user WHERE username=?`
_GetLatestPhoneCaptcha_Security = `SELECT * FROM @user WHERE username=?` _UserInfo_LightIndexA = `SELECT * FROM @user WHERE username=?`
_SendPhoneCaptcha_Security = `SELECT * FROM @user WHERE username=?` _UserInfo_LightIndex = `SELECT * FROM @user WHERE username=?`
_UsePhoneCaptcha_Security = `SELECT * FROM @user WHERE username=?` _CreateMessage_Message = `SELECT * FROM @user WHERE username=?`
_UserInfo_SimpleIndexA = `SELECT * FROM @user WHERE username=?` _GetMessageById_Message = `SELECT * FROM @user WHERE username=?`
_UserInfo_SimpleIndex = `SELECT * FROM @user WHERE username=?` _GetMessageCount_Message = `SELECT * FROM @user WHERE username=?`
_DecrTagsById_TopicA = `UPDATE @tag SET quote_num=quote_num-1, modified_on=? WHERE id IN (?)` _GetMessages_Message = `SELECT * FROM @user WHERE username=?`
_HotTags_TopicA = `SELECT t.id id, t.user_id user_id, t.tag tag, t.quote_num quote_num, u.id, u.nickname, u.username, u.status, u.avatar, u.is_admin FROM @tag t JOIN @user u ON t.user_id = u.id WHERE t.is_del = 0 AND t.quote_num > 0 ORDER BY t.quote_num DESC LIMIT ? OFFSET ?` _GetUnreadCount_Message = `SELECT * FROM @user WHERE username=?`
_IncrTagsById_TopicA = `UPDATE @tag SET quote_num=quote_num+1, is_del=0, modified_on=? WHERE id IN (?)` _ReadMessage_Message = `SELECT * FROM @user WHERE username=?`
_InsertTag_TopicA = `INSERT INTO @tag (user_id, tag, created_on, modified_on, quote_num) VALUES (?, ?, ?, ?, 1)` _CreatePhoneCaptcha_Security = `SELECT * FROM @user WHERE username=?`
_NewestTags_TopicA = `SELECT t.id id, t.user_id user_id, t.tag tag, t.quote_num quote_num, u.id, u.nickname, u.username, u.status, u.avatar, u.is_admin FROM @tag t JOIN @user u ON t.user_id = u.id WHERE t.is_del = 0 AND t.quote_num > 0 ORDER BY t.id DESC LIMIT ? OFFSET ?` _GetLatestPhoneCaptcha_Security = `SELECT * FROM @user WHERE username=?`
_TagsByIdA_TopicA = `SELECT id FROM @tag WHERE id IN (?) AND is_del = 0 AND quote_num > 0` _SendPhoneCaptcha_Security = `SELECT * FROM @user WHERE username=?`
_TagsByIdB_TopicA = `SELECT id, user_id, tag, quote_num FROM @tag WHERE id IN (?)` _UsePhoneCaptcha_Security = `SELECT * FROM @user WHERE username=?`
_TagsByKeywordA_TopicA = `SELECT id, user_id, tag, quote_num FROM @tag WHERE is_del = 0 ORDER BY quote_num DESC LIMIT 6` _UserInfo_SimpleIndexA = `SELECT * FROM @user WHERE username=?`
_TagsByKeywordB_TopicA = `SELECT id, user_id, tag, quote_num FROM @tag WHERE is_del = 0 AND tag LIKE ? ORDER BY quote_num DESC LIMIT 6` _UserInfo_SimpleIndex = `SELECT * FROM @user WHERE username=?`
_TagsForIncr_TopicA = `SELECT id, user_id, tag, quote_num FROM @tag WHERE tag IN (?)` _DecrTagsById_TopicA = `UPDATE @tag SET quote_num=quote_num-1, modified_on=? WHERE id IN (?)`
_AttachmentByTweetId_TweetA = `SELECT * FROM @user WHERE username=?` _HotTags_TopicA = `SELECT t.id id, t.user_id user_id, t.tag tag, t.quote_num quote_num, u.id, u.nickname, u.username, u.status, u.avatar, u.is_admin FROM @tag t JOIN @user u ON t.user_id = u.id WHERE t.is_del = 0 AND t.quote_num > 0 ORDER BY t.quote_num DESC LIMIT ? OFFSET ?`
_FavoriteByTweetId_TweetA = `SELECT * FROM @user WHERE username=?` _IncrTagsById_TopicA = `UPDATE @tag SET quote_num=quote_num+1, is_del=0, modified_on=? WHERE id IN (?)`
_ReactionByTweetId_TweetA = `SELECT * FROM @user WHERE username=?` _InsertTag_TopicA = `INSERT INTO @tag (user_id, tag, created_on, modified_on, quote_num) VALUES (?, ?, ?, ?, 1)`
_TweetInfoById_TweetA = `SELECT * FROM @user WHERE username=?` _NewestTags_TopicA = `SELECT t.id id, t.user_id user_id, t.tag tag, t.quote_num quote_num, u.id, u.nickname, u.username, u.status, u.avatar, u.is_admin FROM @tag t JOIN @user u ON t.user_id = u.id WHERE t.is_del = 0 AND t.quote_num > 0 ORDER BY t.id DESC LIMIT ? OFFSET ?`
_TweetItemById_TweetA = `SELECT * FROM @user WHERE username=?` _TagsByIdA_TopicA = `SELECT id FROM @tag WHERE id IN (?) AND is_del = 0 AND quote_num > 0`
_UserFavorites_TweetA = `SELECT * FROM @user WHERE username=?` _TagsByIdB_TopicA = `SELECT id, user_id, tag, quote_num FROM @tag WHERE id IN (?)`
_UserInfo_TweetA = `SELECT * FROM @user WHERE username=?` _TagsByKeywordA_TopicA = `SELECT id, user_id, tag, quote_num FROM @tag WHERE is_del = 0 ORDER BY quote_num DESC LIMIT 6`
_UserReactions_TweetA = `SELECT * FROM @user WHERE username=?` _TagsByKeywordB_TopicA = `SELECT id, user_id, tag, quote_num FROM @tag WHERE is_del = 0 AND tag LIKE ? ORDER BY quote_num DESC LIMIT 6`
_UserTweetsByAdmin_TweetA = `SELECT * FROM @user WHERE username=?` _TagsForIncr_TopicA = `SELECT id, user_id, tag, quote_num FROM @tag WHERE tag IN (?)`
_UserTweetsByFriend_TweetA = `SELECT * FROM @user WHERE username=?` _AttachmentByTweetId_TweetA = `SELECT * FROM @user WHERE username=?`
_UserTweetsByGuest_TweetA = `SELECT * FROM @user WHERE username=?` _FavoriteByTweetId_TweetA = `SELECT * FROM @user WHERE username=?`
_UserTweetsBySelf_TweetA = `SELECT * FROM @user WHERE username=?` _ReactionByTweetId_TweetA = `SELECT * FROM @user WHERE username=?`
_GetPostAttachmentBill_Tweet = `SELECT * FROM @user WHERE username=?` _TweetInfoById_TweetA = `SELECT * FROM @user WHERE username=?`
_GetPostById_Tweet = `SELECT * FROM @user WHERE username=?` _TweetItemById_TweetA = `SELECT * FROM @user WHERE username=?`
_GetPostContentById_Tweet = `SELECT * FROM @user WHERE username=?` _UserFavorites_TweetA = `SELECT * FROM @user WHERE username=?`
_GetPostContetnsByIds_Tweet = `SELECT id, user_id, tag, quote_num FROM @tag WHERE tag IN (?)` _UserInfo_TweetA = `SELECT * FROM @user WHERE username=?`
_GetPostCount_Tweet = `SELECT * FROM @user WHERE username=?` _UserReactions_TweetA = `SELECT * FROM @user WHERE username=?`
_GetPosts_Tweet = `SELECT * FROM @user WHERE username=?` _UserTweetsByAdmin_TweetA = `SELECT * FROM @user WHERE username=?`
_GetUserPostCollection_Tweet = `SELECT * FROM @user WHERE username=?` _UserTweetsByFriend_TweetA = `SELECT * FROM @user WHERE username=?`
_GetUserPostCollectionCount_Tweet = `SELECT * FROM @user WHERE username=?` _UserTweetsByGuest_TweetA = `SELECT * FROM @user WHERE username=?`
_GetUserPostCollections_Tweet = `SELECT * FROM @user WHERE username=?` _UserTweetsBySelf_TweetA = `SELECT * FROM @user WHERE username=?`
_GetUserPostStar_Tweet = `SELECT * FROM @user WHERE username=?` _GetPostAttachmentBill_Tweet = `SELECT * FROM @user WHERE username=?`
_GetUserPostStarCount_Tweet = `SELECT * FROM @user WHERE username=?` _GetPostById_Tweet = `SELECT * FROM @user WHERE username=?`
_GetUserPostStars_Tweet = `SELECT * FROM @user WHERE username=?` _GetPostContentById_Tweet = `SELECT * FROM @user WHERE username=?`
_UserInfo_TweetHelpA = `SELECT * FROM @user WHERE username=?` _GetPostContetnsByIds_Tweet = `SELECT id, user_id, tag, quote_num FROM @tag WHERE tag IN (?)`
_GetPostContentByIds_TweetHelp = `SELECT * FROM @user WHERE username=?` _GetPostCount_Tweet = `SELECT * FROM @user WHERE username=?`
_GetUsersByIds_TweetHelp = `SELECT * FROM @user WHERE username=?` _GetPosts_Tweet = `SELECT * FROM @user WHERE username=?`
_UserInfo_TweetManageA = `SELECT * FROM @user WHERE username=?` _GetUserPostCollection_Tweet = `SELECT * FROM @user WHERE username=?`
_AddAttachment_TweetManage = `SELECT * FROM @user WHERE username=?` _GetUserPostCollectionCount_Tweet = `SELECT * FROM @user WHERE username=?`
_AddPost_TweetManage = `SELECT * FROM @user WHERE username=?` _GetUserPostCollections_Tweet = `SELECT * FROM @user WHERE username=?`
_AddPostCollection_TweetManage = `SELECT * FROM @user WHERE username=?` _GetUserPostStar_Tweet = `SELECT * FROM @user WHERE username=?`
_AddPostContent_TweetManage = `SELECT * FROM @user WHERE username=?` _GetUserPostStarCount_Tweet = `SELECT * FROM @user WHERE username=?`
_AddPostStar_TweetManage = `SELECT * FROM @user WHERE username=?` _GetUserPostStars_Tweet = `SELECT * FROM @user WHERE username=?`
_DelPost_TweetManage = `SELECT * FROM @user WHERE username=?` _UserInfo_TweetHelpA = `SELECT * FROM @user WHERE username=?`
_DelPostCollection_TweetManage = `SELECT * FROM @user WHERE username=?` _GetPostContentByIds_TweetHelp = `SELECT * FROM @user WHERE username=?`
_DelPostStar_TweetManage = `SELECT * FROM @user WHERE username=?` _GetUsersByIds_TweetHelp = `SELECT * FROM @user WHERE username=?`
_LockPost_TweetManage = `SELECT * FROM @user WHERE username=?` _UserInfo_TweetManageA = `SELECT * FROM @user WHERE username=?`
_StickPost_TweetManage = `SELECT * FROM @user WHERE username=?` _AddAttachment_TweetManage = `SELECT * FROM @user WHERE username=?`
_UpdatePost_TweetManage = `SELECT * FROM @user WHERE username=?` _AddPost_TweetManage = `SELECT * FROM @user WHERE username=?`
_VisiblePost_TweetManage = `SELECT * FROM @user WHERE username=?` _AddPostCollection_TweetManage = `SELECT * FROM @user WHERE username=?`
_AddUser_UserManage = `SELECT * FROM @user WHERE username=?` _AddPostContent_TweetManage = `SELECT * FROM @user WHERE username=?`
_GetUserById_UserManage = `SELECT * FROM @user WHERE username=?` _AddPostStar_TweetManage = `SELECT * FROM @user WHERE username=?`
_GetUserByPhone_UserManage = `SELECT * FROM @user WHERE username=?` _DelPost_TweetManage = `SELECT * FROM @user WHERE username=?`
_GetUserByUsername_UserManage = `SELECT * FROM @user WHERE username=?` _DelPostCollection_TweetManage = `SELECT * FROM @user WHERE username=?`
_GetUsersByIds_UserManage = `SELECT * FROM @user WHERE username=?` _DelPostStar_TweetManage = `SELECT * FROM @user WHERE username=?`
_GetUsersByKeyword_UserManage = `SELECT * FROM @user WHERE username=?` _LockPost_TweetManage = `SELECT * FROM @user WHERE username=?`
_UpdateUser_UserManage = `SELECT * FROM @user WHERE username=?` _StickPost_TweetManage = `SELECT * FROM @user WHERE username=?`
_CreateRecharge_Wallet = `SELECT * FROM @user WHERE username=?` _UpdatePost_TweetManage = `SELECT * FROM @user WHERE username=?`
_GetRechargeById_Wallet = `SELECT * FROM @user WHERE username=?` _VisiblePost_TweetManage = `SELECT * FROM @user WHERE username=?`
_GetUserWalletBillCount_Wallet = `SELECT * FROM @user WHERE username=?` _AddUser_UserManage = `SELECT * FROM @user WHERE username=?`
_GetUserWalletBills_Wallet = `SELECT * FROM @user WHERE username=?` _GetUserById_UserManage = `SELECT * FROM @user WHERE username=?`
_HandlePostAttachementBought_Wallet = `SELECT * FROM @user WHERE username=?` _GetUserByPhone_UserManage = `SELECT * FROM @user WHERE username=?`
_HandleRechargeSuccess_Wallet = `SELECT * FROM @user WHERE username=?` _GetUserByUsername_UserManage = `SELECT * FROM @user WHERE username=?`
_GetUsersByIds_UserManage = `SELECT * FROM @user WHERE username=?`
_GetUsersByKeyword_UserManage = `SELECT * FROM @user WHERE username=?`
_UpdateUser_UserManage = `SELECT * FROM @user WHERE username=?`
_CreateRecharge_Wallet = `SELECT * FROM @user WHERE username=?`
_GetRechargeById_Wallet = `SELECT * FROM @user WHERE username=?`
_GetUserWalletBillCount_Wallet = `SELECT * FROM @user WHERE username=?`
_GetUserWalletBills_Wallet = `SELECT * FROM @user WHERE username=?`
_HandlePostAttachementBought_Wallet = `SELECT * FROM @user WHERE username=?`
_HandleRechargeSuccess_Wallet = `SELECT * FROM @user WHERE username=?`
) )
type AuthorizationManage struct { type AuthorizationManage struct {
@ -128,36 +137,44 @@ type AuthorizationManage struct {
type Comment struct { type Comment struct {
yesql.Namespace `yesql:"comment"` yesql.Namespace `yesql:"comment"`
GetCommentById *sqlx.Stmt `yesql:"get_comment_by_id"` GetCommentContentsByIds string `yesql:"get_comment_contents_by_ids"`
GetCommentContentsByIds *sqlx.Stmt `yesql:"get_comment_contents_by_ids"` GetCommmentRepliesByIds string `yesql:"get_commment_replies_by_ids"`
GetCommentCount *sqlx.Stmt `yesql:"get_comment_count"` GetUsersByIds string `yesql:"get_users_by_ids"`
GetCommentReplayById *sqlx.Stmt `yesql:"get_comment_replay_by_id"` GetCommentById *sqlx.Stmt `yesql:"get_comment_by_id"`
GetCommentThumbsMap *sqlx.Stmt `yesql:"get_comment_thumbs_map"` GetCommentReplyById *sqlx.Stmt `yesql:"get_comment_reply_by_id"`
GetComments *sqlx.Stmt `yesql:"get_comments"` GetCommentThumbs *sqlx.Stmt `yesql:"get_comment_thumbs"`
GetCommmentRepliesById *sqlx.Stmt `yesql:"get_commment_replies_by_id"` GetCommentCount *sqlx.NamedStmt `yesql:"get_comment_count"`
GetComments *sqlx.NamedStmt `yesql:"get_comments"`
} }
type CommentManage struct { type CommentManage struct {
yesql.Namespace `yesql:"comment_manage"` yesql.Namespace `yesql:"comment_manage"`
CreateComment *sqlx.Stmt `yesql:"create_comment"` DeleteComment *sqlx.Stmt `yesql:"delete_comment"`
CreateCommentContent *sqlx.Stmt `yesql:"create_comment_content"` DeleteCommentReply *sqlx.Stmt `yesql:"delete_comment_reply"`
CreateCommentReply *sqlx.Stmt `yesql:"create_comment_reply"` DeleteCommentThumbs *sqlx.Stmt `yesql:"delete_comment_thumbs"`
DeleteComment *sqlx.Stmt `yesql:"delete_comment"` DeleteReplyThumbs *sqlx.Stmt `yesql:"delete_reply_thumbs"`
DeleteCommentReply *sqlx.Stmt `yesql:"delete_comment_reply"` GetCommentReplyThumb *sqlx.Stmt `yesql:"get_comment_reply_thumb"`
ThumbsDownComment *sqlx.Stmt `yesql:"thumbs_down_comment"` GetTweetCommentThumb *sqlx.Stmt `yesql:"get_tweet_comment_thumb"`
ThumbsDownReply *sqlx.Stmt `yesql:"thumbs_down_reply"` ThumbsDownComment *sqlx.Stmt `yesql:"thumbs_down_comment"`
ThumbsUpComment *sqlx.Stmt `yesql:"thumbs_up_comment"` ThumbsDownReply *sqlx.Stmt `yesql:"thumbs_down_reply"`
ThumbsUpReply *sqlx.Stmt `yesql:"thumbs_up_reply"` ThumbsUpReply *sqlx.Stmt `yesql:"thumbs_up_reply"`
UpdateCommentThumbsCount *sqlx.Stmt `yesql:"update_comment_thumbs_count"`
CreateComment *sqlx.NamedStmt `yesql:"create_comment"`
CreateCommentContent *sqlx.NamedStmt `yesql:"create_comment_content"`
CreateCommentReply *sqlx.NamedStmt `yesql:"create_comment_reply"`
CreateThumbsUpComment *sqlx.NamedStmt `yesql:"create_thumbs_up_comment"`
UpdateThumbsUpComment *sqlx.NamedStmt `yesql:"update_thumbs_up_comment"`
} }
type ContactManager struct { type ContactManager struct {
yesql.Namespace `yesql:"contact_manager"` yesql.Namespace `yesql:"contact_manager"`
AddFriend *sqlx.Stmt `yesql:"add_friend"` AddFriend *sqlx.Stmt `yesql:"add_friend"`
DelFriend *sqlx.Stmt `yesql:"del_friend"` DelFriend *sqlx.Stmt `yesql:"del_friend"`
GetContacts *sqlx.Stmt `yesql:"get_contacts"` GetContacts *sqlx.Stmt `yesql:"get_contacts"`
IsFriend *sqlx.Stmt `yesql:"is_friend"` GetUserFriend *sqlx.Stmt `yesql:"get_user_friend"`
RejectFriend *sqlx.Stmt `yesql:"reject_friend"` RejectFriend *sqlx.Stmt `yesql:"reject_friend"`
RequestingFriend *sqlx.Stmt `yesql:"requesting_friend"` RequestingFriend *sqlx.Stmt `yesql:"requesting_friend"`
TotalContactsById *sqlx.Stmt `yesql:"total_contacts_by_id"`
} }
type FollowIndex struct { type FollowIndex struct {
@ -192,19 +209,20 @@ type LightIndexA struct {
type Message struct { type Message struct {
yesql.Namespace `yesql:"message"` yesql.Namespace `yesql:"message"`
CreateMessage *sqlx.Stmt `yesql:"create_message"` GetMessageById *sqlx.Stmt `yesql:"get_message_by_id"`
GetMessageById *sqlx.Stmt `yesql:"get_message_by_id"` GetUnreadCount *sqlx.Stmt `yesql:"get_unread_count"`
GetMessageCount *sqlx.Stmt `yesql:"get_message_count"` ReadMessage *sqlx.Stmt `yesql:"read_message"`
GetMessages *sqlx.Stmt `yesql:"get_messages"` CreateMessage *sqlx.NamedStmt `yesql:"create_message"`
GetUnreadCount *sqlx.Stmt `yesql:"get_unread_count"` GetMessageCount *sqlx.NamedStmt `yesql:"get_message_count"`
ReadMessage *sqlx.Stmt `yesql:"read_message"` GetMessages *sqlx.NamedStmt `yesql:"get_messages"`
} }
type Security struct { type Security struct {
yesql.Namespace `yesql:"security"` yesql.Namespace `yesql:"security"`
GetLatestPhoneCaptcha *sqlx.Stmt `yesql:"get_latest_phone_captcha"` GetLatestPhoneCaptcha *sqlx.Stmt `yesql:"get_latest_phone_captcha"`
SendPhoneCaptcha *sqlx.Stmt `yesql:"send_phone_captcha"` SendPhoneCaptcha *sqlx.Stmt `yesql:"send_phone_captcha"`
UsePhoneCaptcha *sqlx.Stmt `yesql:"use_phone_captcha"` CreatePhoneCaptcha *sqlx.NamedStmt `yesql:"create_phone_captcha"`
UsePhoneCaptcha *sqlx.NamedStmt `yesql:"use_phone_captcha"`
} }
type SimpleIndex struct { type SimpleIndex struct {
@ -343,26 +361,24 @@ func BuildComment(p yesql.PreparexBuilder, ctx ...context.Context) (obj *Comment
} else { } else {
c = context.Background() c = context.Background()
} }
obj = &Comment{} obj = &Comment{
if obj.GetCommentById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentById_Comment))); err != nil { GetCommentContentsByIds: p.QueryHook(_GetCommentContentsByIds_Comment),
return GetCommmentRepliesByIds: p.QueryHook(_GetCommmentRepliesByIds_Comment),
GetUsersByIds: p.QueryHook(_GetUsersByIds_Comment),
} }
if obj.GetCommentContentsByIds, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentContentsByIds_Comment))); err != nil { if obj.GetCommentById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentById_Comment))); err != nil {
return
}
if obj.GetCommentCount, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentCount_Comment))); err != nil {
return return
} }
if obj.GetCommentReplayById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentReplayById_Comment))); err != nil { if obj.GetCommentReplyById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentReplyById_Comment))); err != nil {
return return
} }
if obj.GetCommentThumbsMap, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentThumbsMap_Comment))); err != nil { if obj.GetCommentThumbs, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentThumbs_Comment))); err != nil {
return return
} }
if obj.GetComments, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetComments_Comment))); err != nil { if obj.GetCommentCount, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_GetCommentCount_Comment))); err != nil {
return return
} }
if obj.GetCommmentRepliesById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommmentRepliesById_Comment))); err != nil { if obj.GetComments, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_GetComments_Comment))); err != nil {
return return
} }
return return
@ -376,19 +392,22 @@ func BuildCommentManage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *C
c = context.Background() c = context.Background()
} }
obj = &CommentManage{} obj = &CommentManage{}
if obj.CreateComment, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_CreateComment_CommentManage))); err != nil { if obj.DeleteComment, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_DeleteComment_CommentManage))); err != nil {
return return
} }
if obj.CreateCommentContent, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_CreateCommentContent_CommentManage))); err != nil { if obj.DeleteCommentReply, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_DeleteCommentReply_CommentManage))); err != nil {
return return
} }
if obj.CreateCommentReply, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_CreateCommentReply_CommentManage))); err != nil { if obj.DeleteCommentThumbs, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_DeleteCommentThumbs_CommentManage))); err != nil {
return return
} }
if obj.DeleteComment, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_DeleteComment_CommentManage))); err != nil { if obj.DeleteReplyThumbs, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_DeleteReplyThumbs_CommentManage))); err != nil {
return return
} }
if obj.DeleteCommentReply, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_DeleteCommentReply_CommentManage))); err != nil { if obj.GetCommentReplyThumb, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetCommentReplyThumb_CommentManage))); err != nil {
return
}
if obj.GetTweetCommentThumb, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetTweetCommentThumb_CommentManage))); err != nil {
return return
} }
if obj.ThumbsDownComment, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ThumbsDownComment_CommentManage))); err != nil { if obj.ThumbsDownComment, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ThumbsDownComment_CommentManage))); err != nil {
@ -397,10 +416,25 @@ func BuildCommentManage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *C
if obj.ThumbsDownReply, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ThumbsDownReply_CommentManage))); err != nil { if obj.ThumbsDownReply, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ThumbsDownReply_CommentManage))); err != nil {
return return
} }
if obj.ThumbsUpComment, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ThumbsUpComment_CommentManage))); err != nil { if obj.ThumbsUpReply, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ThumbsUpReply_CommentManage))); err != nil {
return return
} }
if obj.ThumbsUpReply, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ThumbsUpReply_CommentManage))); err != nil { if obj.UpdateCommentThumbsCount, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UpdateCommentThumbsCount_CommentManage))); err != nil {
return
}
if obj.CreateComment, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_CreateComment_CommentManage))); err != nil {
return
}
if obj.CreateCommentContent, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_CreateCommentContent_CommentManage))); err != nil {
return
}
if obj.CreateCommentReply, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_CreateCommentReply_CommentManage))); err != nil {
return
}
if obj.CreateThumbsUpComment, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_CreateThumbsUpComment_CommentManage))); err != nil {
return
}
if obj.UpdateThumbsUpComment, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_UpdateThumbsUpComment_CommentManage))); err != nil {
return return
} }
return return
@ -423,7 +457,7 @@ func BuildContactManager(p yesql.PreparexBuilder, ctx ...context.Context) (obj *
if obj.GetContacts, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetContacts_ContactManager))); err != nil { if obj.GetContacts, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetContacts_ContactManager))); err != nil {
return return
} }
if obj.IsFriend, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_IsFriend_ContactManager))); err != nil { if obj.GetUserFriend, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetUserFriend_ContactManager))); err != nil {
return return
} }
if obj.RejectFriend, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_RejectFriend_ContactManager))); err != nil { if obj.RejectFriend, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_RejectFriend_ContactManager))); err != nil {
@ -432,6 +466,9 @@ func BuildContactManager(p yesql.PreparexBuilder, ctx ...context.Context) (obj *
if obj.RequestingFriend, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_RequestingFriend_ContactManager))); err != nil { if obj.RequestingFriend, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_RequestingFriend_ContactManager))); err != nil {
return return
} }
if obj.TotalContactsById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_TotalContactsById_ContactManager))); err != nil {
return
}
return return
} }
@ -527,22 +564,22 @@ func BuildMessage(p yesql.PreparexBuilder, ctx ...context.Context) (obj *Message
c = context.Background() c = context.Background()
} }
obj = &Message{} obj = &Message{}
if obj.CreateMessage, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_CreateMessage_Message))); err != nil { if obj.GetMessageById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetMessageById_Message))); err != nil {
return return
} }
if obj.GetMessageById, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetMessageById_Message))); err != nil { if obj.GetUnreadCount, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetUnreadCount_Message))); err != nil {
return return
} }
if obj.GetMessageCount, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetMessageCount_Message))); err != nil { if obj.ReadMessage, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ReadMessage_Message))); err != nil {
return return
} }
if obj.GetMessages, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetMessages_Message))); err != nil { if obj.CreateMessage, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_CreateMessage_Message))); err != nil {
return return
} }
if obj.GetUnreadCount, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_GetUnreadCount_Message))); err != nil { if obj.GetMessageCount, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_GetMessageCount_Message))); err != nil {
return return
} }
if obj.ReadMessage, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_ReadMessage_Message))); err != nil { if obj.GetMessages, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_GetMessages_Message))); err != nil {
return return
} }
return return
@ -562,7 +599,10 @@ func BuildSecurity(p yesql.PreparexBuilder, ctx ...context.Context) (obj *Securi
if obj.SendPhoneCaptcha, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_SendPhoneCaptcha_Security))); err != nil { if obj.SendPhoneCaptcha, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_SendPhoneCaptcha_Security))); err != nil {
return return
} }
if obj.UsePhoneCaptcha, err = p.PreparexContext(c, p.Rebind(p.QueryHook(_UsePhoneCaptcha_Security))); err != nil { if obj.CreatePhoneCaptcha, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_CreatePhoneCaptcha_Security))); err != nil {
return
}
if obj.UsePhoneCaptcha, err = p.PrepareNamedContext(c, p.Rebind(p.QueryHook(_UsePhoneCaptcha_Security))); err != nil {
return return
} }
return return

@ -19,7 +19,7 @@ SELECT * FROM @user WHERE username=?
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- name: get_comments@comment -- name: get_comments@comment
-- prepare: stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_comment_by_id@comment -- name: get_comment_by_id@comment
@ -27,22 +27,29 @@ SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_comment_count@comment -- name: get_comment_count@comment
-- prepare: stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_comment_replay_by_id@comment -- name: get_comment_reply_by_id@comment
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_comment_contents_by_ids@comment -- name: get_comment_contents_by_ids@comment
-- prepare: stmt -- prepare: raw
-- clause: in
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_commment_replies_by_id@comment -- name: get_commment_replies_by_ids@comment
-- prepare: stmt -- prepare: raw
-- clause: in
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_comment_thumbs_map@comment -- name: get_users_by_ids@comment
-- prepare: raw
-- clause: in
SELECT * FROM @user WHERE username=?
-- name: get_comment_thumbs@comment
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
@ -54,23 +61,47 @@ SELECT * FROM @user WHERE username=?
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: create_comment@comment_manage -- name: delete_comment_thumbs@comment_manage
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: create_comment@comment_manage
-- prepare: named_stmt
SELECT * FROM @user WHERE username=?
-- name: create_comment_reply@comment_manage -- name: create_comment_reply@comment_manage
-- prepare: stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: delete_comment_reply@comment_manage -- name: delete_comment_reply@comment_manage
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: delete_reply_thumbs@comment_manage
-- prepare: stmt
SELECT * FROM @user WHERE username=?
-- name: create_comment_content@comment_manage -- name: create_comment_content@comment_manage
-- prepare: named_stmt
SELECT * FROM @user WHERE username=?
-- name: update_thumbs_up_comment@comment_manage
-- prepare: named_stmt
SELECT * FROM @user WHERE username=?
-- name: create_thumbs_up_comment@comment_manage
-- prepare: named_stmt
SELECT * FROM @user WHERE username=?
-- name: update_comment_thumbs_count@comment_manage
-- prepare: stmt
SELECT * FROM @user WHERE username=?
-- name: get_tweet_comment_thumb@comment_manage
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: thumbs_up_comment@comment_manage -- name: get_comment_reply_thumb@comment_manage
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
@ -110,7 +141,11 @@ SELECT * FROM @user WHERE username=?
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: is_friend@contact_manager -- name: total_contacts_by_id@contact_manager
-- prepare: stmt
SELECT * FROM @user WHERE username=?
-- name: get_user_friend@contact_manager
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
@ -119,7 +154,7 @@ SELECT * FROM @user WHERE username=?
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- name: create_message@message -- name: create_message@message
-- prepare: stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_unread_count@message -- name: get_unread_count@message
@ -135,11 +170,11 @@ SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_messages@message -- name: get_messages@message
-- prepare: stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: get_message_count@message -- name: get_message_count@message
-- prepare: stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
@ -151,13 +186,17 @@ SELECT * FROM @user WHERE username=?
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: use_phone_captcha@security -- name: use_phone_captcha@security
-- prepare: stmt -- prepare: named_stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: send_phone_captcha@security -- name: send_phone_captcha@security
-- prepare: stmt -- prepare: stmt
SELECT * FROM @user WHERE username=? SELECT * FROM @user WHERE username=?
-- name: create_phone_captcha@security
-- prepare: named_stmt
SELECT * FROM @user WHERE username=?
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------
-- friend_index sql dml -- friend_index sql dml
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------

Loading…
Cancel
Save