github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/game/internal/user_config.go (about) 1 package internal 2 3 import ( 4 "common" 5 "msg" 6 "net/url" 7 8 "github.com/name5566/leaf/log" 9 "gopkg.in/mgo.v2/bson" 10 ) 11 12 func (user *User) setLandlordAndroidVersion(version int) { 13 if version <= landlordConfigData.AndroidVersion && user.baseData.userData.Role < roleRoot { 14 log.Debug("设置的斗地主安卓版本: %v 无效", version) 15 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 16 Error: msg.S2C_SetLandlordConfig_VersionInvalid, 17 AndroidVersion: version, 18 }) 19 return 20 } 21 landlordConfigData.AndroidVersion = version 22 saveConfigData(landlordConfigData) 23 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 24 Error: msg.S2C_SetLandlordConfig_OK, 25 AndroidVersion: version, 26 }) 27 log.Debug("userID %v 设置斗地主安卓新版本为: %v", user.baseData.userData.UserID, version) 28 } 29 30 func (user *User) setLandlordIOSVersion(version int) { 31 if version <= landlordConfigData.IOSVersion && user.baseData.userData.Role < roleRoot { 32 log.Debug("设置的斗地主iOS版本: %v 无效", version) 33 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 34 Error: msg.S2C_SetLandlordConfig_VersionInvalid, 35 IOSVersion: version, 36 }) 37 return 38 } 39 landlordConfigData.IOSVersion = version 40 saveConfigData(landlordConfigData) 41 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 42 Error: msg.S2C_SetLandlordConfig_OK, 43 IOSVersion: version, 44 }) 45 log.Debug("userID %v 设置斗地主iOS新版本为: %v", user.baseData.userData.UserID, version) 46 } 47 48 func (user *User) setLandlordAndroidDownloadUrl(downloadUrl string) { 49 surl, err := url.Parse(downloadUrl) 50 if err == nil && surl.Scheme == "" || err != nil || downloadUrl == landlordConfigData.AndroidDownloadUrl { 51 log.Debug("设置的斗地主安卓下载地址: %v 无效", downloadUrl) 52 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 53 Error: msg.S2C_SetLandlordConfig_DownloadUrlInvalid, 54 AndroidDownloadUrl: downloadUrl, 55 }) 56 return 57 } 58 landlordConfigData.AndroidDownloadUrl = downloadUrl 59 saveConfigData(landlordConfigData) 60 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 61 Error: msg.S2C_SetLandlordConfig_OK, 62 AndroidDownloadUrl: downloadUrl, 63 }) 64 log.Debug("userID %v 设置斗地主安卓下载地址为: %v", user.baseData.userData.UserID, downloadUrl) 65 } 66 67 func (user *User) setLandlordIOSDownloadUrl(downloadUrl string) { 68 surl, err := url.Parse(downloadUrl) 69 if err == nil && surl.Scheme == "" || err != nil || downloadUrl == landlordConfigData.IOSDownloadUrl { 70 log.Debug("设置的斗地主iOS下载地址: %v 无效", downloadUrl) 71 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 72 Error: msg.S2C_SetLandlordConfig_DownloadUrlInvalid, 73 IOSDownloadUrl: downloadUrl, 74 }) 75 return 76 } 77 landlordConfigData.IOSDownloadUrl = downloadUrl 78 saveConfigData(landlordConfigData) 79 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 80 Error: msg.S2C_SetLandlordConfig_OK, 81 IOSDownloadUrl: downloadUrl, 82 }) 83 log.Debug("userID %v 设置斗地主iOS下载地址为: %v", user.baseData.userData.UserID, downloadUrl) 84 } 85 86 func (user *User) setLandlordNotice(notice string) { 87 landlordConfigData.Notice = notice 88 saveConfigData(landlordConfigData) 89 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 90 Error: msg.S2C_SetLandlordConfig_OK, 91 Notice: notice, 92 }) 93 broadcastAll(&msg.S2C_UpdateNotice{Notice: notice}) 94 log.Debug("userID %v 设置斗地主公告成功", user.baseData.userData.UserID) 95 } 96 97 func (user *User) setLandlordRadio(radio string) { 98 landlordConfigData.Radio = radio 99 saveConfigData(landlordConfigData) 100 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 101 Error: msg.S2C_SetLandlordConfig_OK, 102 Radio: radio, 103 }) 104 broadcastAll(&msg.S2C_UpdateRadio{Radio: radio}) 105 log.Debug("userID %v 设置斗地主广播成功", user.baseData.userData.UserID) 106 } 107 108 func (user *User) setLandlordWeChatNumber(wechatNumber string) { 109 if wechatNumber == landlordConfigData.WeChatNumber { 110 log.Debug("设置的斗地主客服微信号: %v 无效", wechatNumber) 111 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 112 Error: msg.S2C_SetLandlordConfig_WeChatNumberInvalid, 113 WeChatNumber: wechatNumber, 114 }) 115 return 116 } 117 landlordConfigData.WeChatNumber = wechatNumber 118 saveConfigData(landlordConfigData) 119 user.WriteMsg(&msg.S2C_SetLandlordConfig{ 120 Error: msg.S2C_SetLandlordConfig_OK, 121 WeChatNumber: wechatNumber, 122 }) 123 log.Debug("userID %v 设置斗地主客服微信号为: %v", user.baseData.userData.UserID, wechatNumber) 124 } 125 126 func (user *User) setUsernamePassword(username string, password string) { 127 userData := new(UserData) 128 skeleton.Go(func() { 129 db := mongoDB.Ref() 130 defer mongoDB.UnRef(db) 131 // load 132 db.DB(DB).C("users"). 133 Find(bson.M{"username": username}).One(userData) 134 }, func() { 135 if user.state == userLogout { 136 return 137 } 138 switch userData.UserID { 139 case 0: 140 user.baseData.userData.Username = username 141 user.baseData.userData.Password = password 142 updateUserData(user.baseData.userData.UserID, bson.M{"$set": bson.M{"username": username, "password": password}}) 143 log.Debug("userID %v 设置用户名: %v, 密码: %v", user.baseData.userData.UserID, username, password) 144 return 145 case user.baseData.userData.UserID: 146 if user.baseData.userData.Password == password { 147 log.Debug("userID %v 新、旧密码不能相同", user.baseData.userData.UserID) 148 return 149 } 150 user.baseData.userData.Password = password 151 updateUserData(user.baseData.userData.UserID, bson.M{"$set": bson.M{"password": password}}) 152 log.Debug("userID %v 修改密码为: %v", user.baseData.userData.UserID, password) 153 return 154 } 155 log.Debug("用户名: %v 已占用", username) 156 }) 157 } 158 159 func toRoleString(role int) string { 160 switch role { 161 case roleRoot: 162 return "超管" 163 case roleAdmin: 164 return "管理员" 165 case roleAgent: 166 return "代理" 167 case rolePlayer: 168 return "玩家" 169 case roleBlack: 170 return "拉黑" 171 case roleRobot: 172 return "机器人" 173 } 174 return "" 175 } 176 177 func (user *User) setRole(accountID int, role int) { 178 if accountID == 0 { 179 log.Debug("账户ID为0") 180 user.WriteMsg(&msg.S2C_SetUserRole{Error: msg.S2C_SetUserRole_AccountIDInvalid}) 181 return 182 } 183 if user.baseData.userData.AccountID == accountID { 184 log.Debug("不能设置自己") 185 user.WriteMsg(&msg.S2C_SetUserRole{Error: msg.S2C_SetUserRole_NotYourself}) 186 return 187 } 188 if common.Index([]int{roleRobot, roleBlack, rolePlayer, roleAdmin, roleRoot}, role) == -1 { 189 log.Debug("角色 %v 无效", role) 190 user.WriteMsg(&msg.S2C_SetUserRole{ 191 Error: msg.S2C_SetUserRole_RoleInvalid, 192 Role: role, 193 }) 194 return 195 } 196 if user.baseData.userData.Role < role { 197 log.Debug("userID: %v 没有权限", user.baseData.userData.UserID) 198 user.WriteMsg(&msg.S2C_SetUserRole{ 199 Error: msg.S2C_SetUserRole_PermissionDenied, 200 Role: role, 201 }) 202 return 203 } 204 otherUserData := new(UserData) 205 skeleton.Go(func() { 206 db := mongoDB.Ref() 207 defer mongoDB.UnRef(db) 208 209 db.DB(DB).C("users").Find(bson.M{"accountid": accountID}).One(otherUserData) 210 }, func() { 211 if otherUserData.UserID == 0 { 212 log.Debug("账户ID: %v 的用户不存在", accountID) 213 user.WriteMsg(&msg.S2C_SetUserRole{ 214 Error: msg.S2C_SetUserRole_AccountIDInvalid, 215 }) 216 return 217 } 218 if otherUser, ok := userIDUsers[otherUserData.UserID]; ok { 219 if otherUser.baseData.userData.Role == role { 220 log.Debug("账户ID: %v 已经是: %v", accountID, toRoleString(role)) 221 user.WriteMsg(&msg.S2C_SetUserRole{ 222 Error: msg.S2C_SetUserRole_SetRepeated, 223 Role: role, 224 }) 225 return 226 } 227 if user.baseData.userData.Role > otherUser.baseData.userData.Role { 228 otherUser.baseData.userData.Role = role 229 user.WriteMsg(&msg.S2C_SetUserRole{ 230 Error: msg.S2C_SetUserRole_OK, 231 Role: role, 232 }) 233 log.Debug("userID %v 设置账号ID: %v为 %v", user.baseData.userData.UserID, accountID, toRoleString(role)) 234 if otherUser.baseData.userData.Role == roleBlack { 235 otherUser.Close() 236 } 237 return 238 } 239 } else { 240 if otherUserData.Role == role { 241 log.Debug("账户ID: %v 已经是: %v", accountID, toRoleString(role)) 242 user.WriteMsg(&msg.S2C_SetUserRole{ 243 Error: msg.S2C_SetUserRole_SetRepeated, 244 Role: role, 245 }) 246 return 247 } 248 if user.baseData.userData.Role > otherUserData.Role { 249 otherUserData.Role = role 250 updateUserData(otherUserData.UserID, bson.M{"$set": bson.M{"role": otherUserData.Role}}) 251 user.WriteMsg(&msg.S2C_SetUserRole{ 252 Error: msg.S2C_SetUserRole_OK, 253 Role: role, 254 }) 255 log.Debug("userID %v 设置账号ID: %v为 %v", user.baseData.userData.UserID, accountID, toRoleString(role)) 256 return 257 } 258 } 259 log.Debug("userID: %v 权限不够", user.baseData.userData.UserID) 260 user.WriteMsg(&msg.S2C_SetUserRole{Error: msg.S2C_SetUserRole_PermissionDenied}) 261 }) 262 }