添加门店管理员获取信息接口、调整微信登录账号生成逻辑
This commit is contained in:
15
api/storeAdmin/storeAdmin.go
Normal file
15
api/storeAdmin/storeAdmin.go
Normal file
@ -0,0 +1,15 @@
|
||||
// =================================================================================
|
||||
// Code generated and maintained by GoFrame CLI tool. DO NOT EDIT.
|
||||
// =================================================================================
|
||||
|
||||
package storeAdmin
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"server/api/storeAdmin/v1"
|
||||
)
|
||||
|
||||
type IStoreAdminV1 interface {
|
||||
Info(ctx context.Context, req *v1.InfoReq) (res *v1.InfoRes, err error)
|
||||
}
|
||||
12
api/storeAdmin/v1/storeAdmin.go
Normal file
12
api/storeAdmin/v1/storeAdmin.go
Normal file
@ -0,0 +1,12 @@
|
||||
package v1
|
||||
|
||||
import "github.com/gogf/gf/v2/frame/g"
|
||||
|
||||
type InfoReq struct {
|
||||
g.Meta `path:"/store/info" method:"get" tags:"StoreAdmin" summary:"(门店管理员)获取门店管理员信息"`
|
||||
}
|
||||
|
||||
type InfoRes struct {
|
||||
Id int64 `json:"id"`
|
||||
Username string `json:"username"`
|
||||
}
|
||||
@ -1 +1,5 @@
|
||||
package consts
|
||||
|
||||
const (
|
||||
DefaultPassword = "Aa123456"
|
||||
)
|
||||
|
||||
@ -10,3 +10,8 @@ const (
|
||||
GameLifeUserKey = "gamelife:user:%s"
|
||||
GameLifeUserExpire = 2 * 60 * 60
|
||||
)
|
||||
|
||||
const (
|
||||
WeChatLoginCache = "wx:login:cache:%s"
|
||||
WeChatLoginLimit = "wx:login:limit:%s"
|
||||
)
|
||||
|
||||
5
internal/controller/storeAdmin/storeAdmin.go
Normal file
5
internal/controller/storeAdmin/storeAdmin.go
Normal file
@ -0,0 +1,5 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package storeAdmin
|
||||
15
internal/controller/storeAdmin/storeAdmin_new.go
Normal file
15
internal/controller/storeAdmin/storeAdmin_new.go
Normal file
@ -0,0 +1,15 @@
|
||||
// =================================================================================
|
||||
// This is auto-generated by GoFrame CLI tool only once. Fill this file as you wish.
|
||||
// =================================================================================
|
||||
|
||||
package storeAdmin
|
||||
|
||||
import (
|
||||
"server/api/storeAdmin"
|
||||
)
|
||||
|
||||
type ControllerV1 struct{}
|
||||
|
||||
func NewV1() storeAdmin.IStoreAdminV1 {
|
||||
return &ControllerV1{}
|
||||
}
|
||||
14
internal/controller/storeAdmin/storeAdmin_v1_info.go
Normal file
14
internal/controller/storeAdmin/storeAdmin_v1_info.go
Normal file
@ -0,0 +1,14 @@
|
||||
package storeAdmin
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gcode"
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
|
||||
"server/api/storeAdmin/v1"
|
||||
)
|
||||
|
||||
func (c *ControllerV1) Info(ctx context.Context, req *v1.InfoReq) (res *v1.InfoRes, err error) {
|
||||
return nil, gerror.NewCode(gcode.CodeNotImplemented)
|
||||
}
|
||||
@ -4,6 +4,7 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
v1 "server/api/wx/v1"
|
||||
"server/internal/consts"
|
||||
"server/internal/model"
|
||||
"server/internal/service"
|
||||
"strings"
|
||||
@ -50,7 +51,7 @@ func (c *ControllerV1) WeChatEvent(ctx context.Context, req *v1.WeChatEventReq)
|
||||
}
|
||||
|
||||
func updateLoginCache(ctx context.Context, key string, token string) error {
|
||||
loginCacheKey := fmt.Sprintf("wx:login:cache:%s", key)
|
||||
loginCacheKey := fmt.Sprintf(consts.WeChatLoginCache, key)
|
||||
glog.Infof(ctx, "【微信事件】准备更新登录缓存 | redisKey=%s, token=%s", loginCacheKey, token)
|
||||
|
||||
// 获取原缓存
|
||||
|
||||
@ -8,6 +8,7 @@ import (
|
||||
"io"
|
||||
"os"
|
||||
v1 "server/api/wx/v1"
|
||||
"server/internal/consts"
|
||||
"server/internal/model"
|
||||
"server/utility/ecode"
|
||||
"server/utility/wechat"
|
||||
@ -18,7 +19,7 @@ import (
|
||||
|
||||
func (c *ControllerV1) WeChatLogin(ctx context.Context, req *v1.WeChatLoginReq) (res *v1.WeChatLoginRes, err error) {
|
||||
glog.Infof(ctx, "收到微信登录请求,SceneId: %s", req.SceneId)
|
||||
loginLimitKey := fmt.Sprintf("wx:login:limit:%s", req.SceneId)
|
||||
loginLimitKey := fmt.Sprintf(consts.WeChatLoginLimit, req.SceneId)
|
||||
|
||||
// 检查登录限制
|
||||
va, err := g.Redis().Get(ctx, loginLimitKey)
|
||||
@ -77,7 +78,7 @@ func (c *ControllerV1) WeChatLogin(ctx context.Context, req *v1.WeChatLoginReq)
|
||||
|
||||
data, err := json.Marshal(loginCache)
|
||||
if err == nil {
|
||||
_ = g.Redis().SetEX(ctx, fmt.Sprintf("wx:login:cache:%s", req.SceneId), data, 60)
|
||||
_ = g.Redis().SetEX(ctx, fmt.Sprintf(consts.WeChatLoginCache, req.SceneId), data, 60)
|
||||
glog.Infof(ctx, "SceneId %s 登录缓存已写入 Redis", req.SceneId)
|
||||
} else {
|
||||
glog.Warningf(ctx, "SceneId %s登录缓存序列化失败: %v", req.SceneId, err)
|
||||
|
||||
@ -5,6 +5,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
v1 "server/api/wx/v1"
|
||||
"server/internal/consts"
|
||||
"server/internal/model"
|
||||
"server/utility/ecode"
|
||||
|
||||
@ -13,7 +14,7 @@ import (
|
||||
)
|
||||
|
||||
func (c *ControllerV1) WeChatPolling(ctx context.Context, req *v1.WeChatPollingReq) (res *v1.WeChatPollingRes, err error) {
|
||||
loginCacheKey := fmt.Sprintf("wx:login:cache:%s", req.SceneId)
|
||||
loginCacheKey := fmt.Sprintf(consts.WeChatLoginCache, req.SceneId)
|
||||
glog.Infof(ctx, "开始处理微信长轮询请求,SceneID: %s", req.SceneId)
|
||||
|
||||
var loginCache model.LoginCache
|
||||
|
||||
@ -11,7 +11,9 @@ import (
|
||||
"server/internal/model/do"
|
||||
"server/internal/model/entity"
|
||||
"server/internal/service"
|
||||
"server/utility"
|
||||
"server/utility/ecode"
|
||||
"server/utility/encrypt"
|
||||
"server/utility/gamelife"
|
||||
"server/utility/jwt"
|
||||
|
||||
@ -63,10 +65,34 @@ func (s *sUser) Login(ctx context.Context, in *model.UserLoginIn) (out *model.Us
|
||||
var userId int64
|
||||
if !exist {
|
||||
// 用户不存在,创建新用户
|
||||
// 生成 username: qy_ + 8位随机字母数字
|
||||
var username string
|
||||
for {
|
||||
randomStr := grand.Str("abcdefghijklmnopqrstuvwxyz0123456789", 8)
|
||||
username = "qy_" + randomStr
|
||||
// 检查 username 是否唯一
|
||||
count, err := dao.Users.Ctx(ctx).Where(do.Users{Username: username}).Count()
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("检查用户名失败")
|
||||
}
|
||||
if count == 0 {
|
||||
break // username 唯一,退出循环
|
||||
}
|
||||
}
|
||||
password, err := encrypt.EncryptPassword(consts.DefaultPassword)
|
||||
if err != nil {
|
||||
return nil, ecode.Fail.Sub("加密密码失败")
|
||||
}
|
||||
user := &entity.Users{
|
||||
WxOpenId: in.OpenId,
|
||||
Username: grand.Digits(10),
|
||||
Username: username,
|
||||
Nickname: username,
|
||||
PasswordHash: password,
|
||||
Avatar: "adssssssssssssss", // FIXME 后续替换成默认头像的 oss 链接
|
||||
FirstVisitAt: gtime.Now(),
|
||||
LastLoginAt: gtime.Now(),
|
||||
WxPopenId: utility.GenerateUserID("WX"),
|
||||
QqPopenId: utility.GenerateUserID("QQ"),
|
||||
}
|
||||
result, err := dao.Users.Ctx(ctx).Insert(user)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user