Commit a3a1b55c by zry

v1

parent cb1b5c73
......@@ -21,16 +21,19 @@ public class AccountController : Controller
private RoleService _roleService;
private IMemoryCache _memoryCache;
private Application _options;
private ClaimService _claim;
public AccountController(UserService userService,
HospitalService hospitalService,
RoleService roleService,
IMemoryCache memoryCache,
IOptions<Application> options)
IOptions<Application> options,
ClaimService claim)
{
_userService = userService;
_roleService = roleService;
_memoryCache = memoryCache;
_options = options.Value;
_claim = claim;
}
/// <summary>
......@@ -69,11 +72,10 @@ public ApiResponse<UserIdentity> Login([FromBody]LoginRequest request)
/// <returns></returns>
[Route("insert")]
[HttpPost]
public ApiResponse Insert(
[CustomizeValidator(RuleSet = "Insert")]
[FromBody]UserRequest request)
public ApiResponse Insert([CustomizeValidator(RuleSet = "Insert"), FromBody]UserRequest request)
{
if (!_userService.Insert(request))
var userid = _claim.At(request.Token).UserID;
if (!_userService.Insert(request, userid))
return new ApiResponse(ResponseType.Fail);
return new ApiResponse(ResponseType.OK);
}
......@@ -85,9 +87,7 @@ public ApiResponse<UserIdentity> Login([FromBody]LoginRequest request)
/// <returns></returns>
[Route("update")]
[HttpPost]
public ApiResponse Update(
[CustomizeValidator(RuleSet = "Update")]
[FromBody]UserRequest request)
public ApiResponse Update([CustomizeValidator(RuleSet = "Update"), FromBody]UserRequest request)
{
if (!_userService.Update(request))
return new ApiResponse(ResponseType.Fail);
......
......@@ -14,17 +14,19 @@ namespace Performance.Api.Controllers
[Route("api/[controller]")]
public class HospitalController : Controller
{
HospitalService _hospitalService;
public HospitalController(HospitalService hospitalService)
private HospitalService _hospitalService;
private ClaimService _claim;
public HospitalController(HospitalService hospitalService,ClaimService claimService)
{
_hospitalService = hospitalService;
_claim = claimService;
}
[Route("hospitallist")]
[HttpPost]
public ApiResponse<List<HospitalResponse>> GetHospitalList([FromBody]ApiRequest request)
{
var hospitalList = _hospitalService.GetUserHopital(request.ActiveUID);
var hospitalList = _hospitalService.GetUserHopital(_claim.At(request.Token).UserID);
return new ApiResponse<List<HospitalResponse>>(ResponseType.OK, "ok", hospitalList);
}
......@@ -32,7 +34,8 @@ public ApiResponse<List<HospitalResponse>> GetHospitalList([FromBody]ApiRequest
[HttpPost]
public ApiResponse Insert([CustomizeValidator(RuleSet = "Insert"), FromBody]HospitalRequest request)
{
if (!_hospitalService.Insert(request))
var userid = _claim.At(request.Token).UserID;
if (!_hospitalService.Insert(request, userid))
return new ApiResponse(ResponseType.Fail);
return new ApiResponse(ResponseType.OK);
}
......
......@@ -18,9 +18,11 @@ namespace Performance.Api.Controllers
public class MenuController : Controller
{
private MenuService _menuService;
public MenuController(MenuService menuService)
private ClaimService _claim;
public MenuController(MenuService menuService, ClaimService claimService)
{
_menuService = menuService;
_claim = claimService;
}
/// <summary>
......@@ -32,7 +34,7 @@ public MenuController(MenuService menuService)
[HttpPost]
public ApiResponse MenuList([FromBody]ApiRequest request)
{
var menuList = _menuService.GetMenuList(request.ActiveUID);
var menuList = _menuService.GetMenuList(_claim.At(request.Token).UserID);
return new ApiResponse(ResponseType.OK, menuList);
}
}
......
......@@ -32,7 +32,7 @@ public SmsController(SmsService smsService)
[NoVerify]
public ApiResponse Code([FromBody]SmsCodeRequest request)
{
if (_smsService.SendCode(request.Type, request.Mobile))
if (!_smsService.SendCode(request.Type, request.Mobile))
return new ApiResponse(ResponseType.Fail);
return new ApiResponse(ResponseType.OK);
}
......@@ -47,7 +47,7 @@ public ApiResponse Code([FromBody]SmsCodeRequest request)
[NoVerify]
public ApiResponse Check([CustomizeValidator(RuleSet = "SmsCheck")][FromBody]SmsCodeRequest request)
{
if (_smsService.Check(request.Mobile, request.Code))
if (!_smsService.Check(request.Mobile, request.Code))
return new ApiResponse(ResponseType.Fail);
return new ApiResponse(ResponseType.OK);
}
......
......@@ -52,6 +52,13 @@ public ActionsFilter(ILoggerFactory factory, IMemoryCache cache, IHostingEnviron
context.Result = new ObjectResult(response);
return;
}
var activeuid = kv.GetValue<Nullable<int>>("activeuid");
if (!activeuid.HasValue)
{
var response = new ApiResponse(ResponseType.TokenError, "Token无效");
context.Result = new ObjectResult(response);
return;
}
}
}
......
......@@ -23,9 +23,9 @@ public static void Main(string[] args)
.ConfigureAppConfiguration((context, config) =>
{
var env = context.HostingEnvironment;
env.ConfigureNLog("nlog.config");
config.AddJsonFile("appsettings.json", true, true);
config.AddJsonFile($"appsettings.{env.EnvironmentName}.json", true, true);
env.ConfigureNLog("nlog.config");
})
.UseStartup<Startup>();
}
......
<?xml version="1.0" encoding="utf-8"?>
<!--
此文件由 Web 项目的发布/打包过程使用。可以通过编辑此 MSBuild 文件
自定义此过程的行为。为了解与此相关的更多内容,请访问 https://go.microsoft.com/fwlink/?LinkID=208121。
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<TargetFramework>netcoreapp2.2</TargetFramework>
<ProjectGuid>3ae00ff5-f0ba-4d72-a23b-770186309327</ProjectGuid>
<SelfContained>false</SelfContained>
<_IsPortable>true</_IsPortable>
<publishUrl>E:\release\jx.suvalue.com</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>
\ No newline at end of file
......@@ -96,6 +96,8 @@ public void ConfigureServices(IServiceCollection services)
//huyi短信发送注入
services.AddScoped<HuyiSmsNotify>();
//用户身份信息服务
services.AddScoped<ClaimService>();
//ef配置
var connection = services.BuildServiceProvider().GetService<IOptions<AppConnection>>();
......@@ -117,6 +119,7 @@ public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerF
{
app.UseStatusCodePagesWithReExecute("/error/{0}");
}
loggerFactory.CreateLogger<Startup>().LogDebug(env.EnvironmentName);
app.UseMvc();
}
}
......
......@@ -5,15 +5,16 @@
using System.Linq;
using System.Threading.Tasks;
namespace Performance.Api.Util
namespace Performance.Api
{
public class UserUtil
public class ClaimService
{
IMemoryCache _memoryCache;
public UserUtil(IMemoryCache memoryCache)
public ClaimService(IMemoryCache memoryCache)
{
_memoryCache = memoryCache;
}
public UserIdentity At(ApiRequest request)
{
return At(request.Token);
......@@ -23,7 +24,10 @@ public UserIdentity At(string token)
{
if (string.IsNullOrEmpty(token))
throw new PerformanceException("token is not null");
return _memoryCache.Get<UserIdentity>(token);
var user = _memoryCache.Get<UserIdentity>(token);
if (user == null)
throw new PerformanceException("当前用户未登录");
return user;
}
}
}
......@@ -8,10 +8,25 @@ namespace Performance.DtoModels
{
public class ApiRequest
{
/// <summary>
/// 登录后返回登录令牌
/// </summary>
public string Token { get; set; }
/// <summary>
/// 版本号 v1
/// </summary>
public string Version { get; set; }
/// <summary>
/// 设备号 1 苹果 2 安卓 3 网页
/// </summary>
public string Device { get; set; }
/// <summary>
/// App名称
/// </summary>
public string AppName { get; set; }
public int ActiveUID { get; set; }
///// <summary>
///// 操作用户
///// </summary>
//public Nullable<int> ActiveUID { get; set; }
}
}
......@@ -36,7 +36,11 @@ public AutoMapperConfigs()
CreateMap<sys_role, RoleResponse>()
.ForMember(dest => dest.RoleID, opt => opt.MapFrom(src => src.ID));
// 菜单 响应
CreateMap<MenuResponse, sys_menu>()
.ForMember(dest => dest.ID, opt => opt.MapFrom(src => src.MenuID));
CreateMap<sys_menu, MenuResponse>()
.ForMember(dest => dest.MenuID, opt => opt.MapFrom(src => src.ID));
}
}
}
......@@ -22,7 +22,7 @@ public class LoginRequestValidator : AbstractValidator<LoginRequest>
{
public LoginRequestValidator()
{
RuleFor(x => x.LoginType).InclusiveBetween(1, 2);
RuleFor(x => x.LoginType).NotNull().NotEmpty().InclusiveBetween(1, 2);
RuleFor(x => x.Account).NotEmpty().NotNull().Length(1, 200);
......
using System;
using System.Collections.Generic;
using System.Text;
namespace Performance.DtoModels
{
public class MenuResponse
{
public int MenuID { get; set; }
/// <summary>
/// 菜单名称
/// </summary>
public string MenuName { get; set; }
/// <summary>
/// 菜单Url
/// </summary>
public string MenuUrl { get; set; }
/// <summary>
/// 菜单图标
/// </summary>
public string MenuIcon { get; set; }
/// <summary>
/// 菜单类型 1 首页中出现 2 医院页中出现
/// </summary>
public int MenuType { get; set; }
/// <summary>
/// 菜单状态 1 启用 2禁用
/// </summary>
public int States { get; set; }
public List<MenuResponse> Children { get; set; }
}
}
......@@ -8,7 +8,7 @@ public class UserIdentity
{
public string Token { get; set; }
public int UserID { get; set; }
public DateTime CreatDate { get; set; }
public DateTime CreateDate { get; set; }
public int CreateUser { get; set; }
public string RealName { get; set; }
public string Login { get; set; }
......
......@@ -44,13 +44,13 @@ public List<HospitalResponse> GetUserHopital(int userid)
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public bool Insert(HospitalRequest request)
public bool Insert(HospitalRequest request, int userid)
{
if (null != _hospitalRepository.GetEntity(t => t.HosName == request.HosName))
throw new PerformanceException("医院名称重复");
var hospital = Mapper.Map<sys_hospital>(request);
hospital.CreateDate = DateTime.Now;
hospital.CreateUser = request.ActiveUID;
hospital.CreateUser = userid;
hospital.States = (int)States.Enabled;
return _hospitalRepository.Add(hospital);
......
using Performance.EntityModels;
using AutoMapper;
using Performance.DtoModels;
using Performance.EntityModels;
using Performance.Repository;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Performance.Services
......@@ -14,9 +17,27 @@ public MenuService(PerforMenuRepository menuRepository)
_menuRepository = menuRepository;
}
public List<sys_menu> GetMenuList(int userid)
public List<MenuResponse> GetMenuList(int userid)
{
return _menuRepository.GetMenuList(userid);
var menuList = _menuRepository.GetMenuList(userid);
return RecursionFill(menuList, 0);
}
private List<MenuResponse> RecursionFill(List<sys_menu> menuList, int parentId)
{
if (menuList.Any(t => t.ParentID == parentId))
{
var list = new List<MenuResponse>();
foreach (var item in menuList.Where(t => t.ParentID == parentId))
{
var menu = Mapper.Map<MenuResponse>(item);
menu.Children = RecursionFill(menuList, item.ID);
list.Add(menu);
}
return list;
}
return null;
}
}
}
......@@ -76,7 +76,7 @@ public bool Check(string mobile, string code)
if (string.IsNullOrEmpty(mobile) || string.IsNullOrEmpty(code))
throw new PerformanceException("参数无效");
var sms = _smsRepository.GetEntity(t => t.Mobile == mobile.Trim() && t.SmsCode == code.Trim());
return sms == null;
return (sms != null && sms.Expiration > DateTime.Now);
}
}
}
......@@ -69,7 +69,7 @@ public UserIdentity Login(LoginRequest request)
/// 新增用户
/// </summary>
/// <param name="request"></param>
public bool Insert(UserRequest request)
public bool Insert(UserRequest request, int userid)
{
if (null != _userRepository.GetEntity(t => t.Login == request.Login))
throw new PerformanceException("登录名重复");
......@@ -77,7 +77,7 @@ public bool Insert(UserRequest request)
throw new PerformanceException("手机号重复");
var user = Mapper.Map<sys_user>(request);
user.CreateDate = DateTime.Now;
user.CreateUser = request.ActiveUID;
user.CreateUser = userid;
user.States = (int)States.Enabled;
return _userRepository.Add(user);
......@@ -125,6 +125,15 @@ public bool Update(UserRequest request)
var user = _userRepository.GetEntity(t => t.ID == request.ID);
if (null == user)
throw new PerformanceException($"用户不存在 UserId:{request.ID}");
var vlist = _userRepository.GetEntities(t => t.ID != user.ID && t.Login == request.Login);
if (null != vlist && vlist.Count() > 0)
throw new PerformanceException("登录名重复");
vlist = _userRepository.GetEntities(t => t.ID != user.ID && t.Mobile == request.Mobile);
if (null != vlist && vlist.Count() > 0)
throw new PerformanceException("手机号重复");
user.Login = request.Login;
user.Mobile = request.Mobile;
user.RealName = request.RealName;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment