package user import ( "yunyan/comm" "yunyan/lego/sys/log" "yunyan/lego/sys/mysql" "yunyan/pb" "yunyan/sys/ipinfo" "time" ) // @Summary 获取用户信息 // @Description 使用token获取用户信息 // @Tags User // @Accept json // @Produce json // @Security BearerAuth // @Param user body pb.UserGetInfoReq true "获取用户信息" // @Success 200 {object} comm.HttpResult{data=pb.UserGetInfoResp} "成功返回用户信息" // @Router /api/home/user_getinfo [post] func (this *apiComp) GetInfo(session comm.IUserSession, req *pb.UserGetInfoReq) (resp *pb.UserGetInfoResp, errdata *pb.ErrorData) { var ( user *pb.DBUser divices []*pb.DBUserDivice ipdata *ipinfo.IPData // isNew bool err error ) if user, err = this.module.model.findforid(session.GetUserId()); err != nil { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Message: err.Error(), } this.module.Error("登录失败!", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "err", Value: err.Error()}) return } if user.Version != "" && user.Version != req.Version { user.Version = req.Version // isNew = true } if user.Channel != 0 && user.Channel != req.Channel { user.Channel = req.Channel // isNew = true } ipdata, _ = ipinfo.GetIPInfo(session.GetIP()) // if isNew { user.Lastsgintime = time.Now().Unix() this.module.model.save(user) // } if ipdata != nil { user.ContinentCode = ipdata.ContinentCode user.CountryCode = ipdata.CountryCode } if divices, err = this.module.model.getDevices(user.Uid); err != nil && err != mysql.ErrNoDocuments { errdata = &pb.ErrorData{ Code: pb.ErrorCode_DBError, Message: err.Error(), } this.module.Error("获取用户设备失败!", log.Field{Key: "uid", Value: session.GetUserId()}, log.Field{Key: "err", Value: err.Error()}) return } // if user.Phone != "" { // user.Phone = aes.AesDecryptCBC(user.Phone, this.options.CBCKey) // } // if user.Mail != "" { // user.Mail = aes.AesDecryptCBC(user.Mail, this.options.CBCKey) // } // if user.Name != "" { // user.Name = aes.AesDecryptCBC(user.Name, this.options.CBCKey) // } // if user.Avatar != "" { // user.Avatar = aes.AesDecryptCBC(user.Avatar, this.options.CBCKey) // } // 老客户端只认 user.viplv / user.vipexptime,这里把**合并后的有效值**(自购 或 设备赋予) // 覆盖到响应对象上——上面的 save 已经落库完,这次改动只进响应、不再写库。 // 库里 vipexptime 始终只记自购部分(见 comm.ResolveVip)。 if vip, _, verr := comm.ResolveUserVip(user.Uid, user); verr == nil { user.Viplv = vip.Level user.Vipexptime = vip.ExpTime } resp = &pb.UserGetInfoResp{ User: user, Devices: divices, } return }