/// <summary> /// 处理角色封停 /// </summary> /// <param name="obj"></param> /// <returns></returns> private async Task <string> OnHandleServerBan(JObject obj) { var type = (BanType)obj["type"].ToObject <short>(); var rolename_list = obj["role"].ToString().Split(','); var reason = obj["reason"].ToString(); var final_date = DateTime.UtcNow; switch (type) { case BanType.Ban_Seven: final_date = final_date.AddDays(7); break; case BanType.Ban_Month: final_date = final_date.AddMonths(1); break; case BanType.Ban_Year: final_date = final_date.AddYears(1); break; case BanType.Ban_Forever: final_date = final_date.AddYears(99); break; case BanType.Ban_Cancel: final_date.AddDays(-1); break; } //TODO 接口不支持多用户暂时写死 var roleDataWriter = new TLRoleDataStatusSnapWriter(this); string roleUUID = null; var result = await roleDataWriter.SuspendRoleData(rolename_list[0], final_date, reason, string.Empty); //KICK Logic. if (type != BanType.Ban_Cancel && !string.IsNullOrEmpty(result.Item3)) { roleUUID = result.Item3; var logic = await this.Provider.GetAsync(ServerNames.GetLogicServiceAddress(roleUUID)); if (logic != null && logic.Config.TryGetValue("sessionName", out var sessionName)) { var session = await this.Provider.GetAsync(new RemoteAddress(sessionName)); if (session != null) { var notify = new KickPlayerNotify(); notify.reason = reason; session.Invoke(notify); } } } if (result.Item1) { return(ResponseResult(true)); } else { return(ResponseResult(false, result.Item2)); } }
/** * * @param notify {MsKickPlayerNotify//} */ private void kickPlayerNotifyInner(KickPlayerNotify notify) { }