123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- using Microsoft.AspNetCore.Mvc;
- using QM.AuthServer.IRepository;
- using QM.AuthServer.Models.Menus;
- using QM.AuthServer.Models.Menus.Views;
- using QM.AuthServer.Models.Roles;
- using QM.AuthServer.Models.Users;
- using QM.OrmSqlSugar;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using WS;
- using WS.AutoMapper;
- using WS.Orm;
- using WS.Security;
- using WS.Web.Auth;
- using WS.WebCore.Api;
- namespace QM.Gateway.Controllers
- {
- /// <summary>
- /// 用户
- /// </summary>
- public class UserController : BaseApiController
- {
- private readonly ISysUserRepository _ISysUserRepository;
- public UserController(
- ISysUserRepository ISysUserRepository
- )
- {
- _ISysUserRepository = ISysUserRepository;
- }
- #region 查询
- /// <summary>
- /// 分页查询
- /// </summary>
- /// <param name="input">查询条件</param>
- /// <returns></returns>
- [HttpGet]
- public async Task<PageData> GetPage([FromQuery] UserPageDto input)
- {
- var query = _ISysUserRepository.Query();
- if (!string.IsNullOrWhiteSpace(input.key))
- query.Where(t => t.uid.Contains(input.key) || t.name.Contains(input.key));
-
- var page = await query.OrderBy(t => t.name).ToPageAsync(input.page, input.limit);
- page.Data = (page.Data as List<SysUser>).MapTo<SysUser, SysUserListView>();
- return page;
- }
- /// <summary>
- /// 按编码获取
- /// </summary>
- /// <param name="id">用户编码</param>
- /// <param name="menu">返回菜单(-1不返回,0后台, 1前台)</param>
- /// <returns></returns>
- [HttpGet]
- public async Task<UserInfoView> GetById(string id, int menu = -1)
- {
- if (string.IsNullOrWhiteSpace(id))
- id = AuthUser.Uid;
- var user = _ISysUserRepository.Get(t => t.uid == id);
- if (user == null)
- throw new UseMassageException("未找到匹配的数据");
- var info = user.MapTo<UserInfoView>();
- //info.posts = _ISysUserRepository.DbClient().Queryable<SysUserPost>().Where(t => t.uid == id).Select(t => t.gid).ToList();
- info.departments = _ISysUserRepository.DbClient().Queryable<SysDepartment>().Where(t => t.bid == user.bid).First().name;
- //info.menus = (await _ISysUserRepository.GetUserMenu(new AuthoDto() { User = user.uid })).OrderBy(t => t.sort).OrderBy(t => t.lev).ToList().MapTo<SysMenu, MenuView>();
- if(menu == 0 || menu == 1)
- info.menus = (await _ISysUserRepository.GetUserMenu(user.uid, menu)).MapTo<SysMenu, MenuView>();
- return info;
- }
- /// <summary>
- /// 获取所有用户
- /// </summary>
- /// <returns></returns>
- [HttpGet]
- public async Task<List<SysUser>> GetAll()
- {
- var data = await _ISysUserRepository.GetListAsync(t => t.state == EnumState.Enable, new List<OrderByModel<SysUser>>() {
- new OrderByModel<SysUser>(){order= t=>t.name}
- });
- return data;
- }
- /// <summary>
- /// 获取当前用户
- /// </summary>
- /// <returns></returns>
- [HttpGet]
- public async Task<UserInfoView> GetUser()
- {
- var user = (await _ISysUserRepository.GetAsync(t => t.uid == AuthUser.Uid)).MapTo<SysUser, UserInfoView>();
- user.menus = (await _ISysUserRepository.GetUserMenu(AuthUser.Uid)).MapTo<SysMenu, MenuView>();
- return user;
- }
- #endregion
- #region 添加或修改
- /// <summary>
- /// 添加
- /// </summary>
- /// <returns></returns>
- [HttpPost]
- public async Task<bool> Create(UserInputDto input)
- {
- try
- {
- _ISysUserRepository.BeginTran();
- SysUser user = input.MapTo<SysUser>();
- var exi = _ISysUserRepository.Get(t => t.name == user.name);
- if (_ISysUserRepository.IsExist(t => t.uid == input.uid))
- throw new UseArgumentException("登录账号已经存在");
- user.cuser = AuthUser.Uid;
- user.pwd = Md5Crypt.Encrypt(user.pwd);
- //
- _ISysUserRepository.DbClient().Insertable(input.posts.Split(',').Select(t => new SysUserPost()
- {
- uid = user.uid,
- gid = t
- }).ToList());
- _ISysUserRepository.CommitTran();
- await _ISysUserRepository.InsertAsync(user);
- }
- catch (Exception ex)
- {
- _ISysUserRepository.RollbackTran();
- throw ex;
- }
- return true;
- }
- /// <summary>
- /// 修改
- /// </summary>
- /// <returns></returns>
- [HttpPost]
- public async Task<bool> Update(UserInputDto input)
- {
- try
- {
- _ISysUserRepository.BeginTran();
- SysUser user = input.MapTo<SysUser>();
- var ouser = _ISysUserRepository.Get(t => t.uid == user.uid);
- user.pwd = ouser.pwd;
- await _ISysUserRepository.UpdateAsync(user);
- //角色
- _ISysUserRepository.DbClient().Deleteable<SysUserPost>(t => t.uid == user.uid);
- _ISysUserRepository.DbClient().Insertable(input.posts.Split(',').Select(t => new SysUserPost()
- {
- uid = user.uid,
- gid = t
- }).ToList());
- _ISysUserRepository.CommitTran();
- }
- catch (Exception ex)
- {
- _ISysUserRepository.RollbackTran();
- throw ex;
- }
- return true;
- }
- #endregion
- #region 删除
- /// <summary>
- /// 删除
- /// </summary>
- /// <param name="id"></param>
- /// <returns></returns>
- [HttpPost]
- public async Task<bool> Delete(string id)
- {
- if (string.IsNullOrWhiteSpace(id))
- throw new UseMassageException("参数不能为空");
- try
- {
- await _ISysUserRepository.DeleteAsync(t => t.uid == id);
- return true;
- }
- catch (Exception ex)
- {
- _ISysUserRepository.RollbackTran();
- throw ex;
- }
- }
- /// <summary>
- /// 批量删除
- /// </summary>
- /// <param name="ids">编码集(逗号分割)</param>
- /// <returns></returns>
- [HttpPost]
- public async Task<bool> Deletes(string ids)
- {
- if (string.IsNullOrWhiteSpace(ids))
- throw new UseMassageException("参数不能为空");
- var idArray = ids.Split(',');
- if (idArray.Contains(AuthUser.Uid))
- throw new UseMassageException("不能自己删除自己");
- var list = _ISysUserRepository.GetList(t => idArray.Contains(t.uid));
- _ISysUserRepository.BeginTran();
- try
- {
- foreach (var user in list)
- {
- user.is_delete = 0;
- user.dtime = DateTime.Now;
- user.duser = AuthUser.Uid;
- await _ISysUserRepository.UpdateAsync(user);
- }
- _ISysUserRepository.CommitTran();
- return true;
- }
- catch (Exception ex)
- {
- _ISysUserRepository.RollbackTran();
- throw ex;
- }
- }
- #endregion
- #region 修改密码
- ///// <summary>
- ///// 修改密码
- ///// </summary>
- ///// <returns></returns>
- //[HttpPost]
- //public async Task<bool> UpdatePwd(EditPwd input)
- //{
- // input.uid = AuthUser.Uid;
- // if (string.IsNullOrWhiteSpace(input.uid) || string.IsNullOrWhiteSpace(input.opwd) || string.IsNullOrWhiteSpace(input.npwd))
- // throw new UseArgumentException("参数不能为空,请重新输入");
- // if (input.opwd == input.npwd)
- // throw new UseArgumentException("新密码与旧密码相同");
- // var entity = await _ISysUserRepository.GetAsync(t => t.uid == input.uid && t.state == EnumState.Enable && t.is_delete == EnumDelete.Normal);
- // if (entity == null)
- // throw new UseArgumentException("用户不存在或被禁用");
- // if (entity.pwd != Md5Crypt.Encrypt(input.opwd))
- // throw new UseArgumentException("原始密码错误,请确认后重新输入");
- // entity.pwd = Md5Crypt.Encrypt(input.npwd);
- // var res = await _ISysUserRepository.UpdateAsync(entity);
- // return res;
- //}
- ///// <summary>
- ///// 重置密码
- ///// </summary>
- ///// <returns></returns>
- //[HttpPost]
- //public async Task<bool> ResPwd(EditPwd input)
- //{
- // if (AuthUser.Uid != "admin")
- // throw new UseMassageException("您没有权限重置密码");
- // if (string.IsNullOrWhiteSpace(input.uid) || string.IsNullOrWhiteSpace(input.npwd))
- // throw new UseArgumentException("参数不能为空,请重新输入");
- // var entity = await _ISysUserRepository.GetAsync(t => t.uid == input.uid && t.is_delete == EnumDelete.Normal);
- // if (entity == null)
- // throw new UseArgumentException("用户不存在或被删除");
- // entity.pwd = Md5Crypt.Encrypt(input.npwd);
- // var res = await _ISysUserRepository.UpdateAsync(entity);
- // return res;
- //}
- #endregion
- }
- }
|