go_dreamfactory/modules/user/api_modifyname.go
2023-06-20 15:11:24 +08:00

89 lines
2.1 KiB
Go

package user
import (
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"go_dreamfactory/sys/wordfilter"
"strings"
)
func (this *apiComp) ModifynameCheck(session comm.IUserSession, req *pb.UserModifynameReq) (errdata *pb.ErrorData) {
name := strings.TrimSpace(req.Name)
if name == "" || len(name) > 30 {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_ReqParameterError,
Title: pb.ErrorCode_ReqParameterError.ToString(),
}
return
}
if ok, _ := wordfilter.FindIn(name); !ok {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_UserNickSensitive,
Title: pb.ErrorCode_UserNickSensitive.ToString(),
}
}
return
}
func (this *apiComp) Modifyname(session comm.IUserSession, req *pb.UserModifynameReq) (errdata *pb.ErrorData) {
if errdata = this.ModifynameCheck(session, req); errdata != nil {
return
}
uid := session.GetUserId()
resp := &pb.UserModifynameResp{Uid: uid, Name: req.Name}
name := strings.TrimSpace(req.Name)
//验证名称
if !this.module.modelUser.NickNameIsExist(name) {
resp.Code = pb.ErrorCode_UserNickNameExist
this.sendMsg(session, UserSubTypeModifyName, resp)
return
}
expand, err := this.module.modelExpand.GetUserExpand(uid)
if err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
return
}
//校验名称修改次数
if expand.ModifynameCount <= 0 {
errdata = this.module.ConsumeRes(session, this.module.globalConf.HeroName, true)
if errdata != nil {
return
}
}
//修改名称次数
left := expand.ModifynameCount - 1
if left < 0 {
left = 0
}
mc := map[string]interface{}{
"modifynameCount": left,
}
if err := this.module.modelExpand.ChangeUserExpand(uid, mc); err != nil {
errdata = &pb.ErrorData{
Code: pb.ErrorCode_DBError,
Title: pb.ErrorCode_DBError.ToString(),
Message: err.Error(),
}
this.module.Errorf("更新昵称失败 uid:%v name:%v err:%v", uid, req.Name, err)
return
}
// 修改名称
if errdata = this.module.modelUser.modifyName(uid, name); errdata != nil {
return
}
resp.Count = uint32(left)
this.sendMsg(session, UserSubTypeModifyName, resp)
return
}