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

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;
}
}
}