恒石成品库WCS
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.

186 lines
5.5 KiB

using System;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web.Http;
using WcfControlMonitorLib;
namespace WcfControlMonitorWebLib.Controllers
{
/// <summary>
/// 账户资源
/// </summary>
[RoutePrefix("api/users")]
public class UsersController : ControllerBase
{
#region 对于当前用户操作
/// <summary>
/// 获取当前用户
/// </summary>
[HttpGet]
[Route("current")]
public IHttpActionResult GetProfile(HttpRequestMessage request)
{
return Ok(new
{
name = CStaticClass.dbo.ExceSQL($"SELECT F_USERNAME FROM T_BASE_USERS WHERE F_USERID='{Identity}'").Tables[0].DefaultView.Table.Rows[0]["F_USERNAME"]
});
}
/// <summary>
/// 修改当前用户的密码
/// </summary>
[HttpPut]
[Route("current/password")]
public IHttpActionResult ModifyPassword(HttpRequestMessage request)
{
dynamic data = request.Data();
string current = data.current;
string replacement = data.replacement;
var password = Convert.ToString(CStaticClass.dbo.ExceSQL($"SELECT F_PASSWORD FROM T_BASE_USERS WHERE F_USERID='{Identity}'").Tables[0].DefaultView.Table.Rows[0]["F_PASSWORD"]);
if (password != current)
{
return BadRequest("current");
}
CStaticClass.dbo.ExceSQL($"UPDATE T_BASE_USERS SET F_PASSWORD='{replacement}' WHERE F_USERID='{Identity}'");
return Ok();
}
/// <summary>
/// 获取当前用户菜单
/// </summary>
[HttpGet]
[Route("current/routes")]
public IHttpActionResult GetMenu(HttpRequestMessage request)
{
// 可以结合用户权限,从数据库中取,格式如下:
var menu = new dynamic[]
{
new { id = 1, parent = 0, header = "系统管理", url = "", icon = "settings" },
new { id = 11, parent = 1, header = "用户管理", url = "/basic/user", icon = "" }
};
return Ok(menu);
}
/// <summary>
/// 当前用户对指定路由的访问权限
/// </summary>
[HttpGet,Anonymous]
[Route("current/routes/{url}")]
public IHttpActionResult CheckPermission(HttpRequestMessage request)
{
dynamic data = request.Data();
string url = data.url;
url = Encoding.ASCII.GetString(Convert.FromBase64String(url));
// 可以将用户权限存储在数据库中,检查是否有数据匹配
// 用户账号:this.Identity
// 当前访问的界面路由: url,就是上面那个方法的 url 参数
if (true)
{
// 有权限
return Ok();
}
else
{
// 没权限
return StatusCode(HttpStatusCode.Forbidden);
}
}
#endregion
#region 对于用户管理操作
/// <summary>
/// 获取角色列表
/// </summary>
/// <response code="200">成功</response>
[HttpGet]
public IHttpActionResult GetList(HttpRequestMessage request)
{
dynamic data = request.Data();
string name = data.name; // 用户名
string account = data.account; // 账号
string sort = data.sort; // 排序属性
int? offset = data.offset; // 分页相关:跳过多少条记录
int? limit = data.limit; // 分页相关:取多少条记录
// 根据条件从数据库中查询,VO 如下:
return Ok(new
{
total = 1,
items = new dynamic[]
{
new{ id = 1, name = "管理员", account = "admin" }
}
});
}
/// <summary>
/// 创建用户
/// </summary>
[HttpPost]
public IHttpActionResult Create(HttpRequestMessage request)
{
dynamic data = request.Data();
string name = data.name; // 用户名
string account = data.account; // 账号
// 写入数据库
return Ok();
}
/// <summary>
/// 修改用户
/// </summary>
[HttpPut]
[Route("{id}")]
public IHttpActionResult Modify(HttpRequestMessage request)
{
dynamic data = request.Data();
int id = data.id; // ID
string name = data.name; // 用户名
string account = data.account; // 账号
// 写入数据库
return Ok();
}
/// <summary>
/// 批量处理用户
/// </summary>
[HttpPost]
[Route("batch")]
public IHttpActionResult Batch(HttpRequestMessage request)
{
dynamic data = request.Data();
string method = data.method;
int[] id = data.data.ToObject<int[]>();
// 写入数据库
return Ok();
}
/// <summary>
/// 重置密码
/// </summary>
[HttpDelete]
[Route("{id}/password")]
public IHttpActionResult ResetPassword(HttpRequestMessage request)
{
dynamic data = request.Data();
int id = data.id;
// 写入数据库
return Ok();
}
#endregion
}
}