You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
paopao-ce/internal/servants/web/share_key.go

105 lines
2.7 KiB

package web
import (
"fmt"
"github.com/alimy/mir/v4"
"github.com/gin-gonic/gin"
api "github.com/rocboss/paopao-ce/auto/api/v1"
"github.com/rocboss/paopao-ce/internal/model/web"
"github.com/rocboss/paopao-ce/internal/servants/base"
"github.com/rocboss/paopao-ce/internal/servants/chain"
"github.com/sirupsen/logrus"
)
var (
_ api.KeyQuery = (*shareKey)(nil)
)
type shareKey struct {
api.UnimplementedShareKeyServant
*base.DaoServant
}
func (s *shareKey) Chain() gin.HandlersChain {
return gin.HandlersChain{chain.JWT()}
}
func (s *shareKey) GetKeyDetail(req *web.GetUserKeysReq) (*web.GetUserKeysResp, mir.Error) {
//判断GetUserKeys是否为nil
if s.Ds == nil {
logrus.Errorf("GetKeyDetail err: %s", web.ErrDsNil)
return nil, web.ErrDsNil
} else {
logrus.Info("GetKeyDetail success")
}
if req.UserName == "" {
logrus.Errorf("GetKeyDetail err: %s", web.ErrUserNameEmpty)
return nil, web.ErrUserNameEmpty
}
// 调用数据源的方法查询用户的所有key信息
keys, err := s.Ds.GetUserKeys(req.UserName, (req.Page-1)*req.PageSize, req.PageSize)
if err != nil {
logrus.Errorf("GetUserKeys err: %s", err)
return nil, web.ErrGetUserKeysFailed
}
// 将查询到的key信息转换为KeyInfo结构体
var keyInfos []web.KeyInfo
for _, key := range keys {
keyInfos = append(keyInfos, web.KeyInfo{
ShareKey: key.ShareKey,
Name: key.Name,
Description: key.Description,
})
}
//计算share_key的总数
totalRows, err := s.Ds.GetUserShareKeyCount(req.UserName)
if err != nil {
logrus.Errorf("GetUserShareKeyCount err: %s", err)
return nil, web.ErrGetUserShareKeyCountFailed
}
resp := base.PageRespFrom(keys, req.Page, req.PageSize, totalRows)
// 构建返回结果并返回
return (*web.GetUserKeysResp)(resp), nil
}
func (s *shareKey) DeleteKeyDetail(req *web.DeleteKeyReq) (*web.DeleteKeyResp, mir.Error) {
//判断GetUserKeys是否为nil
if s.Ds == nil {
logrus.Errorf("GetKeyDetail err: %s", web.ErrDsNil)
return nil, web.ErrDsNil
} else {
logrus.Info("GetKeyDetail success")
}
if req.UserName == "" {
logrus.Errorf("GetKeyDetail err: %s", web.ErrUserNameEmpty)
return nil, web.ErrUserNameEmpty
}
fmt.Print(req.UserName, req.ShareKey)
sof, err := s.Ds.DeleteUserKey(req.UserName, req.ShareKey)
if err != nil {
logrus.Errorf("DeleteUserKey err: %s", err)
return nil, web.ErrDeleteUserKeyFailed
}
if sof.SuccessOrFail == false {
logrus.Errorf("DeleteUserKey err: %s", err)
return nil, web.ErrDeleteUserKeyFailed
}
// 构建返回结果并返回
resp := &web.DeleteKeyResp{
Status: "DELETE_SUCCESS",
}
return resp, nil
}
// NewShareKeyServant 创建share_key服务
func NewShareKeyServant(s *base.DaoServant) api.KeyQuery {
return &shareKey{
DaoServant: s,
}
}