update&add 增加了选房及片区service
This commit is contained in:
@@ -2,21 +2,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Entity
|
||||
{
|
||||
public class BsHouseInfo : Core.DEntityBase
|
||||
[Table("bs_house_info")]
|
||||
[Comment("房屋信息表")]
|
||||
public class BsHouseInfo : Core.DEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// HouseCode主键ID
|
||||
/// </summary>
|
||||
[Comment("HouseCode主键ID")]
|
||||
[Comment("bs_house_code主键Id")]
|
||||
[MaxLength(36)]
|
||||
[Required]
|
||||
public string NumberId { get; set; }
|
||||
public string HouseCodeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 幢名称
|
||||
|
||||
26
Api/Ewide.Application/Entity/BsHouseMemberRelation.cs
Normal file
26
Api/Ewide.Application/Entity/BsHouseMemberRelation.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Entity
|
||||
{
|
||||
[Table("bs_house_member_relation")]
|
||||
[Comment("房屋与人员关联表")]
|
||||
public class BsHouseMemberRelation : Core.DEntityBase
|
||||
{
|
||||
[Comment("sys_user主键Id")]
|
||||
[MaxLength(36)]
|
||||
[Required]
|
||||
public string SysUserId { get; set; }
|
||||
|
||||
[Comment("bs_house_code主键Id")]
|
||||
[MaxLength(36)]
|
||||
[Required]
|
||||
public string CodeId { get; set; }
|
||||
}
|
||||
}
|
||||
21
Api/Ewide.Application/Enum/ZoneRole.cs
Normal file
21
Api/Ewide.Application/Enum/ZoneRole.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application
|
||||
{
|
||||
public enum ZoneRole
|
||||
{
|
||||
/// <summary>
|
||||
/// 片区监管员
|
||||
/// </summary>
|
||||
ZoneManager,
|
||||
|
||||
/// <summary>
|
||||
/// 房屋安全管理员
|
||||
/// </summary>
|
||||
HouseSecurityManager
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@
|
||||
<name>Ewide.Application</name>
|
||||
</assembly>
|
||||
<members>
|
||||
<member name="P:Ewide.Application.Entity.BsHouseInfo.NumberId">
|
||||
<member name="P:Ewide.Application.Entity.BsHouseInfo.HouseCodeId">
|
||||
<summary>
|
||||
HouseCode主键ID
|
||||
</summary>
|
||||
@@ -359,6 +359,16 @@
|
||||
单位联系人电话
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:Ewide.Application.ZoneRole.ZoneManager">
|
||||
<summary>
|
||||
片区监管员
|
||||
</summary>
|
||||
</member>
|
||||
<member name="F:Ewide.Application.ZoneRole.HouseSecurityManager">
|
||||
<summary>
|
||||
房屋安全管理员
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Ewide.Application.Service.HouseCode.HouseCodeService">
|
||||
<summary>
|
||||
房屋编码相关
|
||||
@@ -371,6 +381,90 @@
|
||||
<param name="projectId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.QueryMemberPageList(Ewide.Core.Service.UserInput)">
|
||||
<summary>
|
||||
分页查询用户
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.AddUser(Ewide.Application.Service.AddHouseMemberInput)">
|
||||
<summary>
|
||||
增加用户
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.DefaultRole(System.String)">
|
||||
<summary>
|
||||
获取角色
|
||||
</summary>
|
||||
<param name="orgId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.GetUserOwnRole(Ewide.Core.Service.QueryUserInput)">
|
||||
<summary>
|
||||
获取用户拥有角色
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.DeleteUser(Ewide.Core.Service.DeleteUserInput)">
|
||||
<summary>
|
||||
删除用户
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.UpdateUser(Ewide.Core.Service.UpdateUserInput)">
|
||||
<summary>
|
||||
更新用户
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.GetUser(Ewide.Core.Service.QueryUserInput)">
|
||||
<summary>
|
||||
查看用户
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.ChangeUserStatus(Ewide.Core.Service.UpdateUserInput)">
|
||||
<summary>
|
||||
修改用户状态
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.GrantUserData(Ewide.Core.Service.UpdateUserInput)">
|
||||
<summary>
|
||||
授权用户数据范围
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.GetUserOwnData(Ewide.Core.Service.QueryUserInput)">
|
||||
<summary>
|
||||
获取用户拥有数据
|
||||
</summary>
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.GetDefaultRole(System.String)">
|
||||
<summary>
|
||||
获取当前机构中所创建的默认角色
|
||||
片区中的第一个帐号必定为片区监管员
|
||||
</summary>
|
||||
<param name="orgId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:Ewide.Application.Service.HouseMemberService.GetRoleRange">
|
||||
<summary>
|
||||
获取可创建的角色列表
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Ewide.Application.Service.HouseProjectInfo.HouseProjectInfoService">
|
||||
<summary>
|
||||
项目管理相关服务
|
||||
@@ -425,5 +519,15 @@
|
||||
<param name="input"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="T:Ewide.Application.Service.HouseSelectorService">
|
||||
<summary>
|
||||
选房相关
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:Ewide.Application.Service.HouseZoneService">
|
||||
<summary>
|
||||
片区相关
|
||||
</summary>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service.HouseMember.Dto
|
||||
{
|
||||
class HouseMemberInput
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -64,17 +64,14 @@ namespace Ewide.Application.Service.HouseCode
|
||||
}
|
||||
|
||||
[HttpPost("/houseCode/page")]
|
||||
[Microsoft.AspNetCore.Authorization.AllowAnonymous]
|
||||
public async Task<dynamic> QueryPage([FromBody] QueryHouseCodeInput input)
|
||||
{
|
||||
var sql = @"SELECT HC.*,AA.Name AreaName,RA.Name RoadName,CA.Name CommName,Proj.AreaCode,Proj.Note,Proj.Name+'('+Proj.Note+')' FullProjName FROM bs_house_code HC
|
||||
LEFT JOIN bs_house_projectinfo Proj ON Proj.Id=HC.ProjectId
|
||||
LEFT JOIN sys_area_code CA ON CA.Code = Proj.AreaCode
|
||||
LEFT JOIN sys_area_code RA ON RA.AdCode = SUBSTR(CA.AdCode,1,9)
|
||||
LEFT JOIN sys_area_code AA ON AA.AdCode = SUBSTR(CA.AdCode,1,6) ";
|
||||
//WHERE HC.Address LIKE @Address AND HC.HouseCode LIKE @HouseCode";
|
||||
//return await _dapperRepository.QueryPageData(sql, input, param: new { Address = '%' + input.Address + '%', HouseCode = '%' + input.HouseCode + '%'});
|
||||
return await _dapperRepository.QueryPageDataDynamic(sql, input);
|
||||
LEFT JOIN sys_area_code AA ON AA.AdCode = SUBSTR(CA.AdCode,1,6) WHERE HC.Address LIKE @Address AND HC.HouseCode LIKE @HouseCode";
|
||||
return await _dapperRepository.QueryPageData(sql, input, param: new { Address = '%' + input.Address + '%', HouseCode = '%' + input.HouseCode + '%'});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -0,0 +1,16 @@
|
||||
using Ewide.Core.Service;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service
|
||||
{
|
||||
public class AddHouseMemberInput : AddUserInput
|
||||
{
|
||||
[Required(ErrorMessage = "角色不能为空")]
|
||||
public string RoleId { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,13 @@
|
||||
using System;
|
||||
using Ewide.Core.Service;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service.HouseMember.Dto
|
||||
namespace Ewide.Application.Service
|
||||
{
|
||||
class HouseMemberOutput
|
||||
public class HouseMemberOutput
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,302 @@
|
||||
using Dapper;
|
||||
using Ewide.Core;
|
||||
using Ewide.Core.Extension;
|
||||
using Ewide.Core.Service;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DataEncryption;
|
||||
using Furion.DependencyInjection;
|
||||
using Furion.DynamicApiController;
|
||||
using Furion.FriendlyException;
|
||||
using Mapster;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service
|
||||
{
|
||||
[ApiDescriptionSettings(Name = "HouseMember")]
|
||||
public class HouseMemberService : IHouseMemberService, IDynamicApiController, ITransient
|
||||
{
|
||||
private readonly IDapperRepository _dapperRepository;
|
||||
|
||||
private readonly IRepository<SysUser> _sysUserRep; // 用户表仓储
|
||||
private readonly IUserManager _userManager;
|
||||
private readonly ISysUserService _sysUserService;
|
||||
private readonly ISysEmpService _sysEmpService;
|
||||
|
||||
public HouseMemberService(
|
||||
IDapperRepository dapperRepository,
|
||||
IRepository<SysUser> sysUserRep,
|
||||
IUserManager userManager,
|
||||
ISysUserService sysUserService,
|
||||
ISysEmpService sysEmpService
|
||||
)
|
||||
{
|
||||
_dapperRepository = dapperRepository;
|
||||
_sysUserRep = sysUserRep;
|
||||
_userManager = userManager;
|
||||
_sysUserService = sysUserService;
|
||||
_sysEmpService = sysEmpService;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 分页查询用户
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("/houseMember/page")]
|
||||
public async Task<dynamic> QueryMemberPageList([FromBody] UserInput input)
|
||||
{
|
||||
var dataScopes = await _sysUserService.GetUserDataScopeIdList(_userManager.UserId);
|
||||
|
||||
var sql = @"SELECT
|
||||
SU.*,
|
||||
SO.Name OrgName,
|
||||
SUR.RoleName,
|
||||
SUR.RoleCode
|
||||
FROM sys_user SU
|
||||
LEFT JOIN sys_emp SE ON SU.Id = SE.Id
|
||||
LEFT JOIN sys_org SO ON SE.OrgId = SO.Id
|
||||
LEFT JOIN (
|
||||
SELECT
|
||||
SUR.SysUserId,
|
||||
GROUP_CONCAT(SR.Name) RoleName,
|
||||
GROUP_CONCAT(SR.Code) RoleCode
|
||||
FROM sys_user_role SUR
|
||||
LEFT JOIN sys_role SR ON SUR.SysRoleId = SR.Id
|
||||
GROUP BY SUR.SysUserId
|
||||
) SUR ON SU.Id = SUR.SysUserId
|
||||
WHERE 1=1";
|
||||
var param = new DynamicParameters();
|
||||
|
||||
if (!string.IsNullOrEmpty(input.SearchValue))
|
||||
{
|
||||
sql += @" AND (SU.Account Like @SearchValue
|
||||
OR SU.Name Like @SearchValue
|
||||
OR SU.Phone Like @SearchValue)";
|
||||
param.Add("SearchValue", "%" + input.SearchValue + "%");
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(input.SysEmpParam.OrgId))
|
||||
{
|
||||
sql += " AND (SO.Id = @OrgId OR SO.Pids Like CONCAT('%[', @OrgId, ']%'))";
|
||||
param.Add("OrgId", input.SysEmpParam.OrgId);
|
||||
}
|
||||
|
||||
if (input.SearchStatus >= 0)
|
||||
{
|
||||
sql += " AND SU.Status = @Status";
|
||||
param.Add("Status", input.SearchStatus);
|
||||
}
|
||||
|
||||
if (!_userManager.SuperAdmin)
|
||||
{
|
||||
sql += " AND SU.AdminType <> @AdminType";
|
||||
param.Add("AdminType", AdminType.SuperAdmin);
|
||||
|
||||
sql += " AND SU.Id <> @UserId";
|
||||
param.Add("UserId", _userManager.UserId);
|
||||
|
||||
if (dataScopes.Count > 0)
|
||||
{
|
||||
sql += " AND SO.Id IN @OrgIds";
|
||||
param.Add("OrgIds", dataScopes.ToArray());
|
||||
}
|
||||
}
|
||||
|
||||
var users = await _dapperRepository.QueryPageData<UserOutput>(sql, input, param);
|
||||
|
||||
foreach (var user in users.Items)
|
||||
{
|
||||
user.SysEmpInfo = await _sysEmpService.GetEmpInfo(user.Id);
|
||||
}
|
||||
return PageDataResult<UserOutput>.PageResult(users);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 增加用户
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("/houseMember/add")]
|
||||
[UnitOfWork]
|
||||
public async Task AddUser(AddHouseMemberInput input)
|
||||
{
|
||||
var id = await _sysUserService.AddUser(input);
|
||||
var grantRoleInput = input.Adapt<UpdateUserInput>();
|
||||
grantRoleInput.Id = id;
|
||||
|
||||
// 添加角色
|
||||
grantRoleInput.GrantRoleIdList.Add(input.RoleId);
|
||||
await _sysUserService.GrantUserRole(grantRoleInput);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取角色
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("/houseMember/defaultRole")]
|
||||
public async Task<dynamic> DefaultRole([FromQuery] string orgId)
|
||||
{
|
||||
return (await GetDefaultRole(orgId)).Adapt<RoleOutput>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户拥有角色
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("/houseMember/ownRole")]
|
||||
public async Task<dynamic> GetUserOwnRole([FromQuery] QueryUserInput input)
|
||||
{
|
||||
return await _sysUserService.GetUserOwnRole(input);
|
||||
}
|
||||
|
||||
[HttpGet("/houseMember/defaultRoleRange")]
|
||||
public async Task<dynamic> DefaultRoleRange()
|
||||
{
|
||||
return (await GetRoleRange()).Select(p => p.Adapt<RoleOutput>()).ToList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 删除用户
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("/houseMember/delete")]
|
||||
[UnitOfWork]
|
||||
public async Task DeleteUser(DeleteUserInput input)
|
||||
{
|
||||
// 片区监管员在本片区已有安全员的情况下无法删除
|
||||
|
||||
await _sysUserService.DeleteUser(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新用户
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("/houseMember/edit")]
|
||||
[UnitOfWork]
|
||||
public async Task UpdateUser(UpdateUserInput input)
|
||||
{
|
||||
/*
|
||||
* 如果移动组织架构,会产生以下几种逻辑
|
||||
* 片区1监管员(无安全员或有其他监管员)=>片区2,直接成功
|
||||
* 片区1监管员(有安全员并且无其他监管员)=>片区2,无法移动
|
||||
* 片区1安全员=>片区2(有监管员),直接成功
|
||||
* 片区1安全员=>片区2(无监管员),无法移动,需要创建监管员
|
||||
*/
|
||||
|
||||
await _sysUserService.UpdateUser(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 查看用户
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("/houseMember/detail")]
|
||||
public async Task<dynamic> GetUser([FromQuery] QueryUserInput input)
|
||||
{
|
||||
return await _sysUserService.GetUser(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 修改用户状态
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("/houseMember/changeStatus")]
|
||||
public async Task ChangeUserStatus(UpdateUserInput input)
|
||||
{
|
||||
await _sysUserService.ChangeUserStatus(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 授权用户数据范围
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost("/houseMember/grantData")]
|
||||
public async Task GrantUserData(UpdateUserInput input)
|
||||
{
|
||||
await _sysUserService.GrantUserData(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户拥有数据
|
||||
/// </summary>
|
||||
/// <param name="input"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet("/houseMember/ownData")]
|
||||
public async Task<dynamic> GetUserOwnData([FromQuery] QueryUserInput input)
|
||||
{
|
||||
return await _sysUserService.GetUserOwnData(input);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取当前机构中所创建的默认角色
|
||||
/// 片区中的第一个帐号必定为片区监管员
|
||||
/// </summary>
|
||||
/// <param name="orgId"></param>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
private async Task<SysRole> GetDefaultRole(string orgId)
|
||||
{
|
||||
var roles = await GetRoleRange();
|
||||
if (roles.Count < 2) throw Oops.Oh("未配置正确的角色");
|
||||
|
||||
var _sysOrgRep = Db.GetRepository<SysOrg>();
|
||||
var org = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(p => p.Id == orgId);
|
||||
// 如果当前组织为街道, 则直接返回安全员
|
||||
if (org == null || org.Type <= 30)
|
||||
{
|
||||
return roles.LastOrDefault();
|
||||
}
|
||||
|
||||
var _sysEmpRep = Db.GetRepository<SysEmp>();
|
||||
var _sysUserRoleRep = Db.GetRepository<SysUserRole>();
|
||||
var userIds = await _sysEmpRep.DetachedEntities.Where(p => p.OrgId == orgId).Select(p => p.Id).ToListAsync();
|
||||
var roleIds = await _sysUserRoleRep.DetachedEntities.Where(p => userIds.Contains(p.SysUserId)).Select(p => p.SysRoleId).ToListAsync();
|
||||
|
||||
var _sysRoleRep = Db.GetRepository<SysRole>();
|
||||
var isExistZoneManager = await _sysRoleRep.DetachedEntities.AnyAsync(p => roleIds.Contains(p.Id) && p.Code == System.Enum.GetName(ZoneRole.ZoneManager).ToUnderScoreCase());
|
||||
// 存在片区监管员,返回安全员, 否则返回监管员
|
||||
if (isExistZoneManager)
|
||||
{
|
||||
return roles.LastOrDefault();
|
||||
}
|
||||
|
||||
return roles.FirstOrDefault();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取可创建的角色列表
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
[NonAction]
|
||||
private async Task<List<SysRole>> GetRoleRange()
|
||||
{
|
||||
var codes = System.Enum.GetNames(typeof(ZoneRole)).Select(p => p.ToUnderScoreCase());
|
||||
|
||||
var _sysRoleRep = Db.GetRepository<SysRole>();
|
||||
var roles = await _sysRoleRep.DetachedEntities.Where(p => codes.Contains(p.Code)).ToListAsync();
|
||||
|
||||
return roles;
|
||||
}
|
||||
|
||||
[HttpGet("/houseMember/test")]
|
||||
[Microsoft.AspNetCore.Authorization.AllowAnonymous]
|
||||
public async Task<dynamic> Test([FromQuery] string str)
|
||||
{
|
||||
var result1 = str.ToCamelCase();
|
||||
var result2 = str.ToUnderScoreCase();
|
||||
return result1 + "," + result2;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using Ewide.Core.Service;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service
|
||||
{
|
||||
public interface IHouseMemberService
|
||||
{
|
||||
Task<dynamic> QueryMemberPageList([FromBody] UserInput input);
|
||||
Task AddUser(AddHouseMemberInput input);
|
||||
Task<dynamic> DefaultRole([FromQuery] string orgId);
|
||||
Task DeleteUser(DeleteUserInput input);
|
||||
Task UpdateUser(UpdateUserInput input);
|
||||
Task<dynamic> GetUser([FromQuery] QueryUserInput input);
|
||||
Task ChangeUserStatus(UpdateUserInput input);
|
||||
Task<dynamic> GetUserOwnRole([FromQuery] QueryUserInput input);
|
||||
Task GrantUserData(UpdateUserInput input);
|
||||
Task<dynamic> GetUserOwnData([FromQuery] QueryUserInput input);
|
||||
Task<dynamic> DefaultRoleRange();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application
|
||||
{
|
||||
public class HouseSelectorInput
|
||||
{
|
||||
[Required(ErrorMessage = "区域编码不可为空")]
|
||||
[MinLength(9, ErrorMessage = "区域编码长度必须为9位及以上")]
|
||||
public string AreaCode { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,9 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service.HouseMember
|
||||
namespace Ewide.Application
|
||||
{
|
||||
class HouseMemberService
|
||||
public class HouseSelectorOutput
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
using Ewide.Core;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DependencyInjection;
|
||||
using Furion.DynamicApiController;
|
||||
using Furion.FriendlyException;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service
|
||||
{
|
||||
/// <summary>
|
||||
/// 选房相关
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings(Name = "HouseSelector", Order = 180)]
|
||||
public class HouseSelectorService : IHouseSelectorService, IDynamicApiController, ITransient
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service
|
||||
{
|
||||
public interface IHouseSelectorService
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application
|
||||
{
|
||||
public class HouseZoneInput
|
||||
{
|
||||
[Required(ErrorMessage = "区域编码不可为空")]
|
||||
[MinLength(9, ErrorMessage = "区域编码长度必须为9位及以上")]
|
||||
public string AreaCode { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -4,9 +4,9 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service.HouseMember
|
||||
namespace Ewide.Application
|
||||
{
|
||||
class IHouseMemberService
|
||||
class HouseZoneOutput
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using Ewide.Core;
|
||||
using Furion.DatabaseAccessor;
|
||||
using Furion.DependencyInjection;
|
||||
using Furion.DynamicApiController;
|
||||
using Furion.FriendlyException;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service
|
||||
{
|
||||
/// <summary>
|
||||
/// 片区相关
|
||||
/// </summary>
|
||||
[ApiDescriptionSettings(Name = "HouseZone", Order = 180)]
|
||||
public class HouseZoneService : IHouseZoneService, IDynamicApiController, ITransient
|
||||
{
|
||||
[HttpGet("/houseZone/list")]
|
||||
public async Task<dynamic> GetHouseZoneList([FromQuery] HouseZoneInput input)
|
||||
{
|
||||
var areaCode = input.AreaCode.Substring(0, 9);
|
||||
var _sysOrgRep = Db.GetRepository<SysOrg>();
|
||||
var road = await _sysOrgRep.DetachedEntities.FirstOrDefaultAsync(p => p.AreaCode == areaCode);
|
||||
if (road == null) throw Oops.Oh("街道编码错误");
|
||||
return await _sysOrgRep.DetachedEntities
|
||||
.Where(p => p.Pid == road.Id)
|
||||
.Where(p => p.Type == (int)OrgType.片区)
|
||||
.OrderBy(p => p.Sort)
|
||||
.Select(p => new
|
||||
{
|
||||
p.Id,
|
||||
p.Name
|
||||
})
|
||||
.ToListAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Application.Service
|
||||
{
|
||||
public interface IHouseZoneService
|
||||
{
|
||||
Task<dynamic> GetHouseZoneList([FromQuery] HouseZoneInput input);
|
||||
}
|
||||
}
|
||||
19
Api/Ewide.Core/Enum/OrgType.cs
Normal file
19
Api/Ewide.Core/Enum/OrgType.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Ewide.Core
|
||||
{
|
||||
public enum OrgType
|
||||
{
|
||||
市住建部门 = 1,
|
||||
|
||||
区住建部门 = 11,
|
||||
|
||||
乡镇街道办事处 = 21,
|
||||
|
||||
片区 = 31
|
||||
}
|
||||
}
|
||||
@@ -6794,6 +6794,11 @@
|
||||
所在机构名称
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Ewide.Core.Service.UserOutput.RoleCode">
|
||||
<summary>
|
||||
角色编号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:Ewide.Core.Service.UserOutput.RoleName">
|
||||
<summary>
|
||||
角色名称
|
||||
@@ -7282,5 +7287,20 @@
|
||||
<param name="node"></param>
|
||||
<param name="childNodeLists"></param>
|
||||
</member>
|
||||
<member name="M:StringExtensions.ToCamelCase(System.String,System.Char,System.Boolean)">
|
||||
<summary>
|
||||
下划线转为驼峰
|
||||
</summary>
|
||||
<param name="str"></param>
|
||||
<param name="initialsUppder"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:StringExtensions.ToUnderScoreCase(System.String)">
|
||||
<summary>
|
||||
驼峰转为下划线
|
||||
</summary>
|
||||
<param name="str"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
</members>
|
||||
</doc>
|
||||
|
||||
@@ -67,6 +67,11 @@ namespace Ewide.Core.Service
|
||||
/// </summary>
|
||||
public virtual string OrgName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 角色编号
|
||||
/// </summary>
|
||||
public virtual string RoleCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 角色名称
|
||||
/// </summary>
|
||||
|
||||
@@ -104,7 +104,7 @@ namespace Ewide.Core.Service
|
||||
if (string.IsNullOrEmpty(user.Name))
|
||||
user.Name = user.Account;
|
||||
if (string.IsNullOrEmpty(user.NickName))
|
||||
user.NickName = user.Account;
|
||||
user.NickName = user.Name;
|
||||
var id = Guid.NewGuid().ToString();
|
||||
user.Id = id;
|
||||
await _sysUserRep.InsertAsync(user);
|
||||
|
||||
48
Api/Ewide.Core/Util/StringExtensions.cs
Normal file
48
Api/Ewide.Core/Util/StringExtensions.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
public static class StringExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// 下划线转为驼峰
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <param name="initialsUppder"></param>
|
||||
/// <returns></returns>
|
||||
public static string ToCamelCase(this string str, char split = '_', bool initialsUppder = true)
|
||||
{
|
||||
var _ = string.Join("",
|
||||
str.Split(split).Select(p => p.Length > 1 ?
|
||||
p.First().ToString().ToUpper() + p[1..] : p.ToUpper()
|
||||
)
|
||||
);
|
||||
|
||||
if (!initialsUppder && _.Length > 1)
|
||||
{
|
||||
_ = _.First().ToString().ToUpper() + _[1..];
|
||||
}
|
||||
|
||||
return _;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驼峰转为下划线
|
||||
/// </summary>
|
||||
/// <param name="str"></param>
|
||||
/// <returns></returns>
|
||||
public static string ToUnderScoreCase(this string str)
|
||||
{
|
||||
var _ = new Regex(@"[A-Z]").Replace(str, "_$0");
|
||||
|
||||
if (_.Length > str.Length)
|
||||
{
|
||||
_ = _[1..];
|
||||
}
|
||||
|
||||
return _.ToLower();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user