123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- using System;
- using System.Collections.Generic;
- using System.Diagnostics;
- using System.Linq;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore.Mvc;
- using YiSha.Business.OrganizationManage;
- using YiSha.Business.SystemManage;
- using YiSha.Entity.SystemManage;
- using YiSha.Enum;
- using YiSha.IdGenerator;
- using YiSha.Model.Result;
- using YiSha.Util.Extension;
- using YiSha.Web.Code;
- using YiSha.Util.Model;
- using YiSha.Util;
- using YiSha.Entity.OrganizationManage;
- using Microsoft.AspNetCore.Http;
- using Microsoft.Extensions.DependencyInjection;
- using YiSha.IBusiness.SystemManage;
- using YiSha.IBusiness.OrganizationManage;
- namespace YiSha.Admin.Web.Controllers
- {
- public class HomeController : BaseController
- {
- private IMenuBLL _menuBLL;
- private IUserBLL _userBLL;
- private ILogLoginBLL _logLoginBLL;
- private IMenuAuthorizeBLL _menuAuthorizeBLL;
- public HomeController(IMenuBLL menuBLL, IUserBLL userBLL, ILogLoginBLL logLoginBLL, IMenuAuthorizeBLL menuAuthorizeBLL)
- {
- _menuBLL = menuBLL;
- _userBLL = userBLL;
- _logLoginBLL = logLoginBLL;
- _menuAuthorizeBLL = menuAuthorizeBLL;
- }
- #region 视图功能
- [AuthorizeFilter("")]
- public async Task<IActionResult> Index()
- {
- OperatorInfo operatorInfo = await Operator.Instance.Current();
- TData<List<MenuEntity>> objMenu = await _menuBLL.GetListPartial(null);
- List<MenuEntity> menuList = objMenu.Data;
- menuList = menuList.Where(p => p.MenuStatus == StatusEnum.Yes.ParseToInt()).ToList();
- if (operatorInfo.IsSystem != 1)
- {
- TData<List<MenuAuthorizeInfo>> objMenuAuthorize = await _menuAuthorizeBLL.GetAuthorizeListPartial(operatorInfo);
- List<int> authorizeMenuIdList = objMenuAuthorize.Data.Select(p => p.MenuId).ToList();
- menuList = menuList.Where(p => authorizeMenuIdList.Contains(p.Id)).ToList();
- }
- ViewBag.MenuList = menuList;
- ViewBag.OperatorInfo = operatorInfo;
- return View();
- }
- [HttpGet]
- public IActionResult Welcome()
- {
- return View();
- }
- [HttpGet]
- public IActionResult Login()
- {
- if (GlobalContext.SystemConfig.Demo)
- {
- ViewBag.UserName = "admin";
- ViewBag.Password = "123456";
- }
- return View();
- }
- [HttpGet]
- public async Task<IActionResult> LoginOff()
- {
- #region 退出系统
- OperatorInfo user = await Operator.Instance.Current();
- if (user != null)
- {
- // 如果不允许同一个用户多次登录,当用户登出的时候,就不在线了
- if (!GlobalContext.SystemConfig.LoginMultiple)
- {
- await _userBLL.UpdateUserPartial(new UserEntity { Id = user.UserId, IsOnline = 0 });
- }
- // 登出日志
- await _logLoginBLL.SaveFormPartial(new LogLoginEntity
- {
- LogStatus = OperateStatusEnum.Success.ParseToInt(),
- Remark = "退出系统",
- IpAddress = NetHelper.Ip,
- IpLocation = string.Empty,
- Browser = NetHelper.Browser,
- OS = NetHelper.GetOSVersion(),
- ExtraRemark = NetHelper.UserAgent,
- BaseCreatorId = user.UserId
- });
- Operator.Instance.RemoveCurrent();
- new CookieHelper().RemoveCookie("RememberMe");
- }
- #endregion
- return View(nameof(Login));
- }
- [HttpGet]
- public IActionResult NoPermission()
- {
- return View();
- }
- [HttpGet]
- public IActionResult Error(string message)
- {
- ViewBag.Message = message;
- return View();
- }
- [HttpGet]
- public IActionResult Skin()
- {
- return View();
- }
- #endregion
- #region 获取数据
- public IActionResult GetCaptchaImage()
- {
- string sessionId = GlobalContext.ServiceProvider?.GetService<IHttpContextAccessor>().HttpContext.Session.Id;
- Tuple<string, int> captchaCode = CaptchaHelper.GetCaptchaCode();
- byte[] bytes = CaptchaHelper.CreateCaptchaImage(captchaCode.Item1);
- new SessionHelper().WriteSession("CaptchaCode", captchaCode.Item2);
- return File(bytes, @"image/jpeg");
- }
- #endregion
- #region 提交数据
- [HttpPost]
- public async Task<IActionResult> LoginJson(string userName, string password, string captchaCode)
- {
- TData obj = new TData();
- if (string.IsNullOrEmpty(captchaCode))
- {
- obj.Message = "验证码不能为空";
- return Json(obj);
- }
- if (captchaCode != new SessionHelper().GetSession("CaptchaCode").ParseToString())
- {
- obj.Message = "验证码错误,请重新输入";
- return Json(obj);
- }
- TData<UserEntity> userObj = await _userBLL.CheckLoginPartial(userName, password, (int)PlatformEnum.Web);
- if (userObj.Success)
- {
- await _userBLL.UpdateUserPartial(userObj.Data);
- await Operator.Instance.AddCurrent(userObj.Data.WebToken);
- }
- string ip = NetHelper.Ip;
- string browser = NetHelper.Browser;
- string os = NetHelper.GetOSVersion();
- string userAgent = NetHelper.UserAgent;
- Action taskAction = async () =>
- {
- LogLoginEntity logLoginEntity = new LogLoginEntity
- {
- LogStatus = userObj.Success ? OperateStatusEnum.Success.ParseToInt() : OperateStatusEnum.Fail.ParseToInt(),
- Remark = userObj.Message,
- IpAddress = ip,
- IpLocation = IpLocationHelper.GetIpLocation(ip),
- Browser = browser,
- OS = os,
- ExtraRemark = userAgent,
- BaseCreatorId = userObj.Data == null ? 0 : userObj.Data.Id
- };
- // 让底层不用获取HttpContext
- logLoginEntity.BaseCreatorId = logLoginEntity.BaseCreatorId;
- await _logLoginBLL.SaveFormPartial(logLoginEntity);
- };
- AsyncTaskHelper.StartTask(taskAction);
- obj.Tag = userObj.Tag;
- obj.Message = userObj.Message;
- return Json(obj);
- }
- #endregion
- }
- }
|