You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
361 lines
13 KiB
361 lines
13 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using LitJson;
|
|
using ProtoCSStruct;
|
|
using SimpleHttpServer;
|
|
using Sog;
|
|
|
|
namespace Operation
|
|
{
|
|
[MenuMapping(refc = typeof(OperationLog))]
|
|
public static class Admin
|
|
{
|
|
|
|
[RequestMapping("当前账号菜单", PermissionCode.SELF_MENUS)]
|
|
public static int OnSelectMenuHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request, HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var token = query.GetValue("token");
|
|
var version = query.GetValue("version").Toint32();
|
|
var account = OperationServerUtils.GetAccount(token);
|
|
var menus = AdminSvc.GetMenuList(account);
|
|
jsonData["ret"] = 0;
|
|
|
|
int oldVersion = version;
|
|
JsonData data = new JsonData();
|
|
|
|
if (menus != null && menus.Count() > 0)
|
|
{
|
|
var list = menus.OrderBy(item => item.Order).ToList();
|
|
foreach (var menu in list)
|
|
{
|
|
var exist = Resolver.AllRequestList.Contains(menu.Url);
|
|
if (menu.ParentId != 0 && !exist)
|
|
{
|
|
continue;
|
|
}
|
|
version = menu.Version;
|
|
data.Add(menu.ToJson());
|
|
}
|
|
}
|
|
|
|
if (menus != null && (oldVersion == 0 || version != oldVersion) && menus.Any())
|
|
{
|
|
jsonData["data"] = data;
|
|
}
|
|
|
|
if (version == 0)
|
|
{
|
|
version = 1;
|
|
}
|
|
|
|
jsonData["version"] = version;
|
|
return 0;
|
|
}
|
|
|
|
|
|
[RequestMapping("菜单管理", PermissionCode.SYSTEM_MENUS, true)]
|
|
public static int OnSelectAllMenuHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request, HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var menus = AdminSvc.GetAllMenus();
|
|
jsonData["ret"] = 0;
|
|
JsonData data = new JsonData();
|
|
var list = menus.OrderBy(item => item.Order).ToList();
|
|
foreach (var menu in list)
|
|
{
|
|
data.Add(menu.ToJson());
|
|
}
|
|
|
|
jsonData["data"] = data;
|
|
return 0;
|
|
}
|
|
|
|
[RequestMapping("角色管理", PermissionCode.SYSTEM_ROLE, true)]
|
|
public static int OnSelectAllRoleHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request, HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var roles = AdminSvc.GetAllRoles();
|
|
var menus = AdminSvc.GetAllMenus();
|
|
var permissions = AdminSvc.GetAllPermission();
|
|
jsonData["ret"] = 0;
|
|
JsonData data = new JsonData();
|
|
foreach (var role in roles)
|
|
{
|
|
if (role.Name == AdminSvc.Administrator)
|
|
{
|
|
menus.ForEach(item =>
|
|
{
|
|
role.Menus.Add(item.MenuId);
|
|
item.subMenus.ForEach(sub => { role.Menus.Add(sub.MenuId); });
|
|
});
|
|
permissions.ForEach(item =>
|
|
{
|
|
role.Permissions.Add(item.Id);
|
|
item.SubPermissions.ForEach(sub => { role.Permissions.Add(sub.Id); });
|
|
});
|
|
}
|
|
|
|
data.Add(role.ToJson());
|
|
}
|
|
|
|
jsonData["data"] = data;
|
|
return 0;
|
|
}
|
|
|
|
[RequestMapping("权限管理", PermissionCode.SYSTEM_PERMISSION, true)]
|
|
public static int OnSelectAllPermissionHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request, HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var permissios = AdminSvc.GetAllPermission();
|
|
jsonData["ret"] = 0;
|
|
JsonData data = new JsonData();
|
|
foreach (var permissio in permissios)
|
|
{
|
|
data.Add(permissio.ToJson());
|
|
}
|
|
|
|
jsonData["data"] = data;
|
|
return 0;
|
|
}
|
|
|
|
[RequestMapping("账号管理", PermissionCode.SYSTEM_ACCOUNT_MANAGER, true)]
|
|
public static int OnSelectAllAccountHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request, HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var name = query.GetValue("name")??"";
|
|
RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10();
|
|
data.Add(name);
|
|
HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data);
|
|
|
|
rsp.IsWaitFor = true;
|
|
return 0;
|
|
}
|
|
public static int DoSelectAllAccount(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator)
|
|
{
|
|
HttpRequestInfo m_request = null;
|
|
LitJson.JsonData builder = new LitJson.JsonData();
|
|
try
|
|
{
|
|
var httpContextId = req.HttpContextId;
|
|
builder["ret"] = 0;
|
|
dbOperator.SelectAccount(builder,req.Data[0].ToString());
|
|
m_request = OperationServer.m_httpService.m_requestList.Find(f => f.Http.id == httpContextId);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
finally
|
|
{
|
|
if (m_request != null)
|
|
{
|
|
m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson();
|
|
m_request.ProcessEnd = true;
|
|
}
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
[RequestMapping("创建账号", PermissionCode.CREATE_ACCOUNT, toLog: true)]
|
|
public static int OnCreateAccountHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request, HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var account = query.GetValue("account")??"";
|
|
var name = query.GetValue("name")??"";
|
|
var password = query.GetValue("password")??"";
|
|
var roles = query.GetValue("roles")??"";
|
|
RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10();
|
|
data.Add(account);
|
|
data.Add(name);
|
|
data.Add(password);
|
|
data.Add(roles);
|
|
HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data);
|
|
|
|
rsp.IsWaitFor = true;
|
|
return 0;
|
|
}
|
|
|
|
public static int OnRegisterAccountHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request, HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var account = query.GetValue("account")??"";
|
|
var name = query.GetValue("account")??"";
|
|
var password = query.GetValue("password")??"";
|
|
var roles = query.GetValue("roles")??"";
|
|
RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10();
|
|
data.Add(account);
|
|
data.Add(name);
|
|
data.Add(password);
|
|
data.Add(roles);
|
|
HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data);
|
|
|
|
rsp.IsWaitFor = true;
|
|
return 0;
|
|
}
|
|
|
|
public static int DoCreateAccount(string httpApiCmd, SSHttpApiDbReq req, DBOperator dbOperator)
|
|
{
|
|
HttpRequestInfo m_request = null;
|
|
LitJson.JsonData builder = new LitJson.JsonData();
|
|
try
|
|
{
|
|
var httpContextId = req.HttpContextId;
|
|
builder["ret"] = 0;
|
|
dbOperator.CreateAccount(builder,req.Data[0].ToString(),req.Data[1].ToString(),req.Data[2].ToString());
|
|
if ((int)builder["ret"] == 0)
|
|
{
|
|
var role = req.Data[3].ToString();
|
|
var config = OperationServerUtils.GetServerConfig();
|
|
if(!config.isOnline)
|
|
{
|
|
//线下默认账号都管理员
|
|
if (string.IsNullOrEmpty(role))
|
|
{
|
|
role = "1";
|
|
}
|
|
}
|
|
AdminSvc.UpdateAccountRole(req.Data[0].ToString(),role);
|
|
}
|
|
|
|
|
|
m_request = OperationServer.m_httpService.m_requestList.Find(f => f.Http.id == httpContextId);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
finally
|
|
{
|
|
if (m_request != null)
|
|
{
|
|
m_request.Http.httpResponse.ContentAsUTF8 = builder.ToJson();
|
|
m_request.ProcessEnd = true;
|
|
}
|
|
}
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
[RequestMapping("创建角色", PermissionCode.SYSTEM_CREATE_ROLE, toLog: true)]
|
|
public static int OnCreateRoleHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request,
|
|
HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var name = query.GetValue("name");
|
|
if (name == null)
|
|
{
|
|
jsonData["ret"] = -1;
|
|
jsonData["msg"] = "name is required";
|
|
}
|
|
|
|
AdminSvc.CreateRole(name);
|
|
|
|
return 0;
|
|
}
|
|
|
|
[RequestMapping("更新角色", PermissionCode.SYSTEM_CREATE_ROLE, toLog: true)]
|
|
public static int OnUpdateRoleHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request,
|
|
HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var name = query.GetValue("name");
|
|
var id = query.GetValue("id").Toint32();
|
|
var menus = query.GetValue("menus");
|
|
var permissions = query.GetValue("permissions");
|
|
if (name == null)
|
|
{
|
|
jsonData["ret"] = -1;
|
|
jsonData["msg"] = "name is required";
|
|
return -1;
|
|
}
|
|
AdminSvc.UpdateRole(id,name,menus,permissions);
|
|
return 0;
|
|
}
|
|
|
|
[RequestMapping("删除角色", PermissionCode.DELETE_ROLE, toLog: true)]
|
|
public static int OnDeleteRoleHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request,
|
|
HttpQueryParams query, uint httpContextId)
|
|
{
|
|
var roleId = query.GetValue("roleId").Toint32();
|
|
var menus = query.GetValue("menus");
|
|
var permissions = query.GetValue("permissions");
|
|
if (roleId==0)
|
|
{
|
|
jsonData["ret"] = -1;
|
|
jsonData["msg"] = "id is required";
|
|
return -1;
|
|
}
|
|
AdminSvc.DeleteRole(roleId);
|
|
return 0;
|
|
}
|
|
|
|
|
|
[RequestMapping("更新账号角色", PermissionCode.UPDATE_ACCOUNT_ROLE, toLog: true)]
|
|
public static int OnUpdateAccountRoleHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request,
|
|
HttpQueryParams query, uint httpContextId)
|
|
{
|
|
|
|
var account = query.GetValue("account");
|
|
var roles = query.GetValue("roles");
|
|
|
|
RepeatedFixedStructString128_10 data = new RepeatedFixedStructString128_10();
|
|
data.Add(account);
|
|
data.Add(roles);
|
|
HttpApiRootHandler.FillHttpApiDbReq2MessageTaskDistributor(httpApiCmd, httpContextId, ref data);
|
|
|
|
AdminSvc.UpdateAccountRole(account, roles);
|
|
return 0;
|
|
}
|
|
|
|
[RequestMapping("主页", PermissionCode.INDEX, toLog: false)]
|
|
public static int IndexHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request,
|
|
HttpQueryParams query, uint httpContextId)
|
|
{
|
|
jsonData["ret"] = 0;
|
|
//系统时间
|
|
jsonData["currentTime"] = OperationServerUtils.GetTimeSecond();
|
|
return 0;
|
|
}
|
|
|
|
|
|
|
|
[RequestMapping("api列表查询", PermissionCode.API_LIST, toLog: false, ignored: true)]
|
|
public static int OnApiListHttpReq(string httpApiCmd, JsonData jsonData, HttpResponse rsp,
|
|
HttpRequest request, HttpQueryParams query, uint httpContextId)
|
|
{
|
|
TraceLog.Trace("Admin.OnApiListHttpReq url {0} ,param count {1} ,httpContextId {2}", request.Url,
|
|
query.Count, httpContextId);
|
|
var json = new JsonData();
|
|
var list = new List<string>();
|
|
list.Add("login");//无需对外的
|
|
list.Add("logout");
|
|
list.Add("register");
|
|
list.Add("install");
|
|
list.Add("server_api_list");
|
|
list.Add("check_token");
|
|
list.Add("auth");
|
|
list.Add("gate_push");
|
|
Resolver.Ignored.ForEach(item =>
|
|
{
|
|
if (list.Contains(item.Key)) return;
|
|
var api = new JsonData
|
|
{
|
|
["api"] = item.Key,
|
|
["desc"] = item.Value
|
|
};
|
|
json.Add(api);
|
|
});
|
|
jsonData["data"] = json;
|
|
return 0;
|
|
}
|
|
}
|
|
}
|