go_dreamfactory/modules/sys/api_func.go
2023-01-29 15:03:17 +08:00

60 lines
1.4 KiB
Go

package sys
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"google.golang.org/protobuf/proto"
)
func (this *apiComp) FunclistCheck(session comm.IUserSession, req *pb.SysFuncListReq) (code pb.ErrorCode) {
return
}
func (this *apiComp) Funclist(session comm.IUserSession, req *pb.SysFuncListReq) (code pb.ErrorCode, data proto.Message) {
rsp := &pb.SysFuncListResp{}
iuser := this.moduleSys.ModuleUser
user := iuser.GetUser(session.GetUserId())
if user == nil {
code = pb.ErrorCode_UserSessionNobeing
return
}
var funcList []string
if len(req.Keys) == 0 {
confList := this.moduleSys.configure.getOpencondList()
for _, v := range confList {
// 返回未开启的功能列表
for _, conf := range v.Main {
// 校验玩家等级
if conf.Key == "platlv" && user.Lv >= conf.Param {
funcList = append(funcList, v.Id)
continue
}
}
}
} else {
for _, key := range req.Keys {
opencfg, err := this.moduleSys.configure.getOpencondCfg()
if err != nil {
continue
}
if conf, ok := opencfg.GetDataMap()[key]; ok {
for _, main := range conf.Main {
// 校验玩家等级
if main.Key == "platlv" && user.Lv >= main.Param {
funcList = append(funcList, key)
continue
}
}
}
}
}
rsp.FuncIds = funcList
if err := session.SendMsg(string(this.moduleSys.GetType()), SysSubTypeFunc, rsp); err != nil {
code = pb.ErrorCode_SystemError
}
return
}