This commit is contained in:
izory 2021-10-12 10:04:10 +08:00
commit 0137433f74
137 changed files with 3807 additions and 1412 deletions

View File

@ -21,11 +21,11 @@ namespace Infrastructure
int day = date.Day;
int hour = date.Hour;
string timeDir = $"{year}/{month}/{day}/{hour}";// date.ToString("yyyyMM/dd/HH/");
string timeDir = $"{year}{month}{day}";// date.ToString("yyyyMM/dd/HH/");
if (!string.IsNullOrEmpty(path))
{
timeDir = $"{path}/{timeDir}";
timeDir = $"{path}/{timeDir}/";
}
return timeDir;
}

View File

@ -0,0 +1,18 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Infrastructure.Model
{
public class SendEmailDto
{
public string FileUrl { get; set; } = "";
public string Subject { get; set; }
public string ToUser { get; set; }
public string Content { get; set; } = "";
public string HtmlContent { get; set; }
public DateTime AddTime { get; set; }
}
}

View File

@ -27,7 +27,7 @@ namespace Infrastructure
{
public string From { get; set; }
public string Password { get; set; }
public string Host { get; set; }
public string Smtp { get; set; }
public int Port { get; set; }
}
/// <summary>

View File

@ -74,10 +74,10 @@ Vue版前端技术栈 基于vue、vuex、vue-router 、vue-cli 、axios 和 e
```
## ⚡ 近期计划
- [ ] 参数管理
- [X] 参数管理
- [ ] 在线用户
- [ ] 文件管理
- [ ] 邮件发送
- [X] 邮件发送
- [ ] 集成微信开发
## 📖 帮助文档

View File

@ -22,7 +22,7 @@ namespace ZR.Admin.WebApi.Controllers
return Content(jsonStr, "application/json");
}
protected IActionResult ToRespose(ResultCode resultCode, object data = null)
protected IActionResult ToResponse(ResultCode resultCode, object data = null)
{
string jsonStr = GetJsonStr(GetApiResult(resultCode, data), "");
return Content(jsonStr, "application/json");
@ -34,13 +34,13 @@ namespace ZR.Admin.WebApi.Controllers
/// <param name="apiResult"></param>
/// <param name="timeFormatStr"></param>
/// <returns></returns>
protected IActionResult OutputJson(ApiResult apiResult, string timeFormatStr = "yyyy-MM-dd HH:mm:ss")
protected IActionResult ToResponse(ApiResult apiResult, string timeFormatStr = "yyyy-MM-dd HH:mm:ss")
{
string jsonStr = GetJsonStr(apiResult, timeFormatStr);
return Content(jsonStr, "application/json");
}
protected IActionResult OutputJson(long rows, string timeFormatStr = "yyyy-MM-dd HH:mm:ss")
protected IActionResult ToResponse(long rows, string timeFormatStr = "yyyy-MM-dd HH:mm:ss")
{
string jsonStr = GetJsonStr(ToJson(rows), timeFormatStr);
@ -97,7 +97,7 @@ namespace ZR.Admin.WebApi.Controllers
protected IActionResult CustomError(ResultCode resultCode, string msg = "")
{
return OutputJson(GetApiResult(resultCode, msg));
return ToResponse(GetApiResult(resultCode, msg));
}
}
}

View File

@ -5,6 +5,7 @@ using Mapster;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Hosting;
using Newtonsoft.Json;
using SqlSugar;
using System;
using System.Collections.Generic;
@ -89,7 +90,8 @@ namespace ZR.Admin.WebApi.Controllers
var genTableInfo = GenTableService.GetGenTableInfo(dto.TableId);
genTableInfo.Columns = GenTableColumnService.GenTableColumns(dto.TableId);
Dictionary<string, object> options = JsonConvert.DeserializeObject<Dictionary<string, object>>(genTableInfo.Options);
dto.ParentMenuId = (long)options.GetValueOrDefault("parentMenuId", 0);
dto.GenTable = genTableInfo;
//生成代码
CodeGeneratorTool.Generate(genTableInfo, dto);
@ -196,7 +198,7 @@ namespace ZR.Admin.WebApi.Controllers
}
}
return ToRespose(ResultCode.FAIL);
return ToResponse(ResultCode.FAIL);
}
/// <summary>
@ -211,6 +213,7 @@ namespace ZR.Admin.WebApi.Controllers
if (genTableDto == null) throw new CustomException("请求参数错误");
var genTable = genTableDto.Adapt<GenTable>().ToUpdate(HttpContext);
genTable.Options = JsonConvert.SerializeObject(new { parentMenuId = genTableDto.ParentMenuId });
int rows = GenTableService.UpdateGenTable(genTable);
if (rows > 0)
{

View File

@ -1,12 +1,25 @@
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Model;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System;
using ZR.Admin.WebApi.Filters;
using ZR.Common;
namespace ZR.Admin.WebApi.Controllers
{
public class HomeController : BaseController
{
private OptionsSetting OptionsSetting;
private NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
public HomeController(IOptions<OptionsSetting> options)
{
OptionsSetting = options.Value;
}
/// <summary>
/// 心跳
/// </summary>
@ -49,5 +62,30 @@ namespace ZR.Admin.WebApi.Controllers
string encryptTxt = NETCore.Encrypt.EncryptProvider.DESDecrypt(content, key);
return Ok(new { content, encryptTxt });
}
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="sendEmailVo">请求参数接收实体</param>
/// <returns></returns>
[ActionPermissionFilter(Permission = "tool:email:send")]
public IActionResult SendEmail([FromBody] SendEmailDto sendEmailVo)
{
if (sendEmailVo == null || string.IsNullOrEmpty(sendEmailVo.Subject) || string.IsNullOrEmpty(sendEmailVo.ToUser))
{
return ToResponse(ApiResult.Error($"请求参数不完整"));
}
if (string.IsNullOrEmpty(OptionsSetting.MailOptions.From) || string.IsNullOrEmpty(OptionsSetting.MailOptions.Password))
{
return ToResponse(ApiResult.Error($"请配置邮箱信息"));
}
MailHelper mailHelper = new MailHelper(OptionsSetting.MailOptions.From, OptionsSetting.MailOptions.Smtp, OptionsSetting.MailOptions.Port, OptionsSetting.MailOptions.Password);
mailHelper.SendMail(sendEmailVo.ToUser, sendEmailVo.Subject, sendEmailVo.Content, sendEmailVo.FileUrl, sendEmailVo.HtmlContent);
logger.Info($"发送邮件{JsonConvert.SerializeObject(sendEmailVo)}");
return SUCCESS(true);
}
}
}

View File

@ -147,7 +147,7 @@ namespace ZR.Admin.WebApi.Controllers
{
if (id <= 0)
{
return OutputJson(ApiResult.Error($"删除失败Id 不能为空"));
return ToResponse(ApiResult.Error($"删除失败Id 不能为空"));
}
// 删除文章

View File

@ -1,23 +1,169 @@
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using SqlSugar;
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Enums;
using Infrastructure.Model;
using Mapster;
using ZR.Model.Dto;
using ZR.Model.Models;
using ZR.Service.Business;
using ZR.Admin.WebApi.Extensions;
using ZR.Admin.WebApi.Filters;
using ZR.Common;
using ZR.Service.System;
using ZR.Model.System;
using Infrastructure.Extensions;
namespace ZR.Admin.WebApi.Controllers.System
namespace ZR.Admin.WebApi.Controllers
{
/// <summary>
/// 配置文件
/// 参数配置Controller
///
/// @author zhaorui
/// @date 2021-09-29
/// </summary>
[Verify]
[Route("system/config")]
public class SysConfigController : BaseController
{
[HttpGet("list")]
public IActionResult Index()
/// <summary>
/// 参数配置接口
/// </summary>
private readonly ISysConfigService _SysConfigService;
public SysConfigController(ISysConfigService SysConfigService)
{
return SUCCESS(1);
_SysConfigService = SysConfigService;
}
/// <summary>
/// 查询参数配置列表
/// </summary>
/// <returns></returns>
[HttpGet("list")]
[ActionPermissionFilter(Permission = "system:config:list")]
public IActionResult QuerySysConfig([FromQuery] SysConfigQueryDto parm)
{
//开始拼装查询条件
var predicate = Expressionable.Create<SysConfig>();
//TODO 搜索条件
predicate = predicate.AndIF(!parm.ConfigType.IsEmpty(),m => m.ConfigType == parm.ConfigType);
predicate = predicate.AndIF(!parm.ConfigName.IsEmpty(),m => m.ConfigName.Contains(parm.ConfigType));
predicate = predicate.AndIF(!parm.ConfigKey.IsEmpty(),m => m.ConfigKey.Contains(parm.ConfigKey));
predicate = predicate.AndIF(!parm.BeginTime.IsEmpty(),m => m.Create_time >= parm.BeginTime );
predicate = predicate.AndIF(!parm.BeginTime.IsEmpty(),m => m.Create_time <= parm.EndTime);
var response = _SysConfigService.GetPages(predicate.ToExpression(), parm);
return SUCCESS(response);
}
/// <summary>
/// 查询参数配置详情
/// </summary>
/// <param name="ConfigId"></param>
/// <returns></returns>
[HttpGet("{ConfigId}")]
[ActionPermissionFilter(Permission = "system:config:query")]
public IActionResult GetSysConfig(int ConfigId)
{
var response = _SysConfigService.GetId(ConfigId);
return SUCCESS(response);
}
/// <summary>
/// 根据参数键名查询参数值
/// </summary>
/// <param name="configKey"></param>
/// <returns></returns>
[HttpGet("configKey/{configKey}")]
public IActionResult GetConfigKey(string configKey)
{
//TODO 增加缓存
var response = _SysConfigService.Queryable().First(f=> f.ConfigKey == configKey);
return SUCCESS(response?.ConfigValue);
}
/// <summary>
/// 添加参数配置
/// </summary>
/// <returns></returns>
[HttpPost]
[ActionPermissionFilter(Permission = "system:config:add")]
[Log(Title = "参数配置添加", BusinessType = BusinessType.INSERT)]
public IActionResult AddSysConfig([FromBody] SysConfigDto parm)
{
if (parm == null)
{
throw new CustomException("请求参数错误");
}
//从 Dto 映射到 实体
var model = parm.Adapt<SysConfig>().ToCreate();
return SUCCESS(_SysConfigService.Add(model, it => new
{
it.ConfigName,
it.ConfigKey,
it.ConfigValue,
it.ConfigType,
it.Create_by,
it.Create_time,
it.Remark,
}));
}
/// <summary>
/// 更新参数配置
/// </summary>
/// <returns></returns>
[HttpPut]
[ActionPermissionFilter(Permission = "system:config:update")]
[Log(Title = "参数配置修改", BusinessType = BusinessType.UPDATE)]
public IActionResult UpdateSysConfig([FromBody] SysConfigDto parm)
{
if (parm == null)
{
throw new CustomException("请求实体不能为空");
}
//从 Dto 映射到 实体
var model = parm.Adapt<SysConfig>().ToUpdate(HttpContext);
var response = _SysConfigService.Update(w => w.ConfigId == model.ConfigId, it => new SysConfig()
{
//Update 字段映射
ConfigName = model.ConfigName,
ConfigKey = model.ConfigKey,
ConfigValue = model.ConfigValue,
ConfigType = model.ConfigType,
Update_by = model.Update_by,
Update_time = model.Update_time,
});
return SUCCESS(response);
}
/// <summary>
/// 删除参数配置
/// </summary>
/// <returns></returns>
[HttpDelete("{ids}")]
[ActionPermissionFilter(Permission = "system:config:remove")]
[Log(Title = "参数配置删除", BusinessType = BusinessType.DELETE)]
public IActionResult DeleteSysConfig(string ids)
{
int[] idsArr = Tools.SpitIntArrary(ids);
if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
var response = _SysConfigService.Delete(idsArr);
return SUCCESS(response);
}
}
}

View File

@ -97,10 +97,10 @@ namespace ZR.Admin.WebApi.Controllers.System
{
if (UserConstants.NOT_UNIQUE.Equals(DeptService.CheckDeptNameUnique(dept)))
{
return OutputJson(GetApiResult(ResultCode.CUSTOM_ERROR, $"新增部门{dept.DeptName}失败,部门名称已存在"));
return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"新增部门{dept.DeptName}失败,部门名称已存在"));
}
dept.Create_by = User.Identity.Name;
return OutputJson(ToJson(DeptService.InsertDept(dept)));
return ToResponse(ToJson(DeptService.InsertDept(dept)));
}
/// <summary>
@ -115,14 +115,14 @@ namespace ZR.Admin.WebApi.Controllers.System
{
if (UserConstants.NOT_UNIQUE.Equals(DeptService.CheckDeptNameUnique(dept)))
{
return OutputJson(GetApiResult(ResultCode.CUSTOM_ERROR, $"修改部门{dept.DeptName}失败,部门名称已存在"));
return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"修改部门{dept.DeptName}失败,部门名称已存在"));
}
else if (dept.ParentId.Equals(dept.DeptId))
{
return OutputJson(GetApiResult(ResultCode.CUSTOM_ERROR, $"修改部门{dept.DeptName}失败,上级部门不能是自己"));
return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"修改部门{dept.DeptName}失败,上级部门不能是自己"));
}
dept.Update_by = User.Identity.Name;
return OutputJson(ToJson(DeptService.UpdateDept(dept)));
return ToResponse(ToJson(DeptService.UpdateDept(dept)));
}
/// <summary>
@ -134,13 +134,13 @@ namespace ZR.Admin.WebApi.Controllers.System
[Log(Title = "部门管理", BusinessType = BusinessType.DELETE)]
public IActionResult Remove(long deptId)
{
if (DeptService.GetCount(it => it.ParentId == deptId && it.DelFlag == "0") > 0)
if (DeptService.Queryable().Count(it => it.ParentId == deptId && it.DelFlag == "0") > 0)
{
return OutputJson(GetApiResult(ResultCode.CUSTOM_ERROR, $"存在下级部门,不允许删除"));
return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"存在下级部门,不允许删除"));
}
if (UserService.GetCount(it => it.DeptId == deptId && it.DelFlag == "0") > 0)
if (DeptService.Queryable().Count(it => it.DeptId == deptId && it.DelFlag == "0") > 0)
{
return OutputJson(GetApiResult(ResultCode.CUSTOM_ERROR, $"部门存在用户,不允许删除"));
return ToResponse(GetApiResult(ResultCode.CUSTOM_ERROR, $"部门存在用户,不允许删除"));
}
return SUCCESS(DeptService.Delete(deptId));

View File

@ -51,7 +51,7 @@ namespace ZR.Admin.WebApi.Controllers.System
[ActionPermissionFilter(Permission = "system:dict:query")]
public IActionResult GetInfo(long dictId = 0)
{
return SUCCESS(SysDictService.GetFirst(f => f.DictId == dictId));
return SUCCESS(SysDictService.GetInfo(dictId));
}
/// <summary>
@ -66,7 +66,7 @@ namespace ZR.Admin.WebApi.Controllers.System
{
if (UserConstants.NOT_UNIQUE.Equals(SysDictService.CheckDictTypeUnique(dict)))
{
return OutputJson(ApiResult.Error($"新增字典'{dict.DictName}'失败,字典类型已存在"));
return ToResponse(ApiResult.Error($"新增字典'{dict.DictName}'失败,字典类型已存在"));
}
//设置添加人
dict.Create_by = HttpContext.User.Identity.Name;
@ -87,7 +87,7 @@ namespace ZR.Admin.WebApi.Controllers.System
{
if (UserConstants.NOT_UNIQUE.Equals(SysDictService.CheckDictTypeUnique(dict)))
{
return OutputJson(ApiResult.Error($"修改字典'{dict.DictName}'失败,字典类型已存在"));
return ToResponse(ApiResult.Error($"修改字典'{dict.DictName}'失败,字典类型已存在"));
}
//设置添加人
dict.Update_by = HttpContext.User.Identity.Name;

View File

@ -125,7 +125,7 @@ namespace ZR.Admin.WebApi.Controllers.System
long uid = HttpContext.GetUId();
var menus = sysMenuService.SelectMenuTreeByUserId(uid);
return OutputJson(ToJson(1, sysMenuService.BuildMenus(menus)));
return ToResponse(ToJson(1, sysMenuService.BuildMenus(menus)));
}
/// <summary>

View File

@ -94,23 +94,23 @@ namespace ZR.Admin.WebApi.Controllers.System
[ActionPermissionFilter(Permission = "system:menu:edit")]
public IActionResult MenuEdit([FromBody] SysMenu MenuDto)
{
if (MenuDto == null) { return OutputJson(ApiResult.Error(101, "请求参数错误")); }
if (MenuDto == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
//if (UserConstants.NOT_UNIQUE.Equals(sysMenuService.CheckMenuNameUnique(MenuDto)))
//{
// return OutputJson(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败,菜单名称已存在"));
// return ToResponse(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败,菜单名称已存在"));
//}
if (UserConstants.YES_FRAME.Equals(MenuDto.isFrame) && !MenuDto.path.StartsWith("http"))
{
return OutputJson(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败地址必须以http(s)://开头"));
return ToResponse(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败地址必须以http(s)://开头"));
}
if (MenuDto.menuId.Equals(MenuDto.parentId))
{
return OutputJson(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败,上级菜单不能选择自己"));
return ToResponse(ApiResult.Error($"修改菜单'{MenuDto.menuName}'失败,上级菜单不能选择自己"));
}
MenuDto.Update_by = User.Identity.Name;
int result = sysMenuService.EditMenu(MenuDto);
return OutputJson(result);
return ToResponse(result);
}
/// <summary>
@ -123,20 +123,20 @@ namespace ZR.Admin.WebApi.Controllers.System
[ActionPermissionFilter(Permission = "system:menu:add")]
public IActionResult MenuAdd([FromBody] SysMenu MenuDto)
{
if (MenuDto == null) { return OutputJson(ApiResult.Error(101, "请求参数错误")); }
if (MenuDto == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
if (UserConstants.NOT_UNIQUE.Equals(sysMenuService.CheckMenuNameUnique(MenuDto)))
{
return OutputJson(ApiResult.Error($"新增菜单'{MenuDto.menuName}'失败,菜单名称已存在"));
return ToResponse(ApiResult.Error($"新增菜单'{MenuDto.menuName}'失败,菜单名称已存在"));
}
if (UserConstants.YES_FRAME.Equals(MenuDto.isFrame) && !MenuDto.path.StartsWith("http"))
{
return OutputJson(ApiResult.Error($"新增菜单'{MenuDto.menuName}'失败地址必须以http(s)://开头"));
return ToResponse(ApiResult.Error($"新增菜单'{MenuDto.menuName}'失败地址必须以http(s)://开头"));
}
MenuDto.Create_by = User.Identity.Name;
int result = sysMenuService.AddMenu(MenuDto);
return OutputJson(result);
return ToResponse(result);
}
/// <summary>
@ -159,7 +159,7 @@ namespace ZR.Admin.WebApi.Controllers.System
}
int result = sysMenuService.DeleteMenuById(menuId);
return OutputJson(result);
return ToResponse(result);
}
/// <summary>
@ -172,10 +172,10 @@ namespace ZR.Admin.WebApi.Controllers.System
[Log(Title = "保存排序", BusinessType = BusinessType.UPDATE)]
public IActionResult ChangeSort([FromBody] MenuDto MenuDto)
{
if (MenuDto == null) { return OutputJson(ApiResult.Error(101, "请求参数错误")); }
if (MenuDto == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
int result = sysMenuService.ChangeSortMenu(MenuDto);
return OutputJson(result);
return ToResponse(result);
}
}
}

View File

@ -36,7 +36,7 @@ namespace ZR.Admin.WebApi.Controllers.System
//开始拼装查询条件
var predicate = Expressionable.Create<SysPost>();
predicate = predicate.AndIF(post.Status.IfNotEmpty(), it => it.Status == post.Status);
var list = PostService.GetPages(predicate.ToExpression(), pagerInfo);
var list = PostService.GetPages(predicate.ToExpression(), pagerInfo, s => new { s.PostSort });
return SUCCESS(list);
}
@ -71,8 +71,9 @@ namespace ZR.Admin.WebApi.Controllers.System
{
throw new CustomException($"修改岗位{post.PostName}失败,岗位编码已存在");
}
post.Update_by = User.Identity.Name;
return OutputJson(ToJson(PostService.Add(post)));
post.Create_by = User.Identity.Name;
return ToResponse(ToJson(PostService.Add(post)));
}
/// <summary>
@ -94,7 +95,7 @@ namespace ZR.Admin.WebApi.Controllers.System
throw new CustomException($"修改岗位{post.PostName}失败,岗位编码已存在");
}
post.Update_by = User.Identity.Name;
return OutputJson(ToJson(PostService.Update(post)));
return ToResponse(ToJson(PostService.Update(post) ? 1 : 0));
}
/// <summary>
@ -107,7 +108,7 @@ namespace ZR.Admin.WebApi.Controllers.System
[Log(Title = "岗位删除", BusinessType = BusinessType.DELETE)]
public IActionResult Delete(int id = 0)
{
return OutputJson(ToJson(PostService.Delete(id)));
return ToResponse(ToJson(PostService.Delete(id)));
}
/// <summary>

View File

@ -79,12 +79,10 @@ namespace ZR.Admin.WebApi.Controllers.System
throw new CustomException(ResultCode.PARAM_ERROR, "请求参数错误");
}
//从 Dto 映射到 实体
var user = userDto.Adapt<SysUser>();
user.Update_by = User.Identity.Name;
user.Update_time = DateTime.Now;
var user = userDto.Adapt<SysUser>().ToUpdate(HttpContext);
int result = UserService.ChangeUser(user);
return OutputJson(result);
return ToResponse(result);
}
/// <summary>
@ -103,11 +101,11 @@ namespace ZR.Admin.WebApi.Controllers.System
string newMd5 = NETCore.Encrypt.EncryptProvider.Md5(newPassword);
if (user.Password != oldMd5)
{
return OutputJson(ApiResult.Error("修改密码失败,旧密码错误"));
return ToResponse(ApiResult.Error("修改密码失败,旧密码错误"));
}
if (user.Password == newMd5)
{
return OutputJson(ApiResult.Error("新密码不能和旧密码相同"));
return ToResponse(ApiResult.Error("新密码不能和旧密码相同"));
}
if (UserService.ResetPwd(loginUser.UserId, newMd5) > 0)
{
@ -116,7 +114,7 @@ namespace ZR.Admin.WebApi.Controllers.System
return SUCCESS(1);
}
return OutputJson(ApiResult.Error("修改密码异常,请联系管理员"));
return ToResponse(ApiResult.Error("修改密码异常,请联系管理员"));
}
/// <summary>

View File

@ -69,17 +69,17 @@ namespace ZR.Admin.WebApi.Controllers.System
[Route("edit")]
public IActionResult RoleAdd([FromBody] SysRole sysRoleDto)
{
if (sysRoleDto == null) return OutputJson(ApiResult.Error(101, "请求参数错误"));
if (sysRoleDto == null) return ToResponse(ApiResult.Error(101, "请求参数错误"));
if (UserConstants.NOT_UNIQUE.Equals(sysRoleService.CheckRoleKeyUnique(sysRoleDto)))
{
return OutputJson(ApiResult.Error((int)ResultCode.CUSTOM_ERROR, $"新增角色'{sysRoleDto.RoleName}'失败,角色权限已存在"));
return ToResponse(ApiResult.Error((int)ResultCode.CUSTOM_ERROR, $"新增角色'{sysRoleDto.RoleName}'失败,角色权限已存在"));
}
sysRoleDto.Create_by = User.Identity.Name;
long roleId = sysRoleService.InsertRole(sysRoleDto);
return OutputJson(ToJson(roleId));
return ToResponse(ToJson(roleId));
}
/// <summary>
@ -95,7 +95,7 @@ namespace ZR.Admin.WebApi.Controllers.System
{
if (sysRoleDto == null || sysRoleDto.RoleId <= 0 || string.IsNullOrEmpty(sysRoleDto.RoleKey))
{
return OutputJson(ApiResult.Error(101, "请求参数错误"));
return ToResponse(ApiResult.Error(101, "请求参数错误"));
}
sysRoleService.CheckRoleAllowed(sysRoleDto);
var info = sysRoleService.SelectRoleById(sysRoleDto.RoleId);
@ -103,7 +103,7 @@ namespace ZR.Admin.WebApi.Controllers.System
{
if (UserConstants.NOT_UNIQUE.Equals(sysRoleService.CheckRoleKeyUnique(sysRoleDto)))
{
return OutputJson(ApiResult.Error($"编辑角色'{sysRoleDto.RoleName}'失败,角色权限已存在"));
return ToResponse(ApiResult.Error($"编辑角色'{sysRoleDto.RoleName}'失败,角色权限已存在"));
}
}
@ -115,7 +115,7 @@ namespace ZR.Admin.WebApi.Controllers.System
return SUCCESS(upResult);
}
return OutputJson(ApiResult.Error($"修改角色'{sysRoleDto.RoleName}'失败,请联系管理员"));
return ToResponse(ApiResult.Error($"修改角色'{sysRoleDto.RoleName}'失败,请联系管理员"));
}
/// <summary>
@ -128,7 +128,7 @@ namespace ZR.Admin.WebApi.Controllers.System
[Log(Title = "角色管理", BusinessType = BusinessType.UPDATE)]
public IActionResult DataScope([FromBody] SysRole sysRoleDto)
{
if (sysRoleDto == null || sysRoleDto.RoleId <= 0) return OutputJson(ApiResult.Error(101, "请求参数错误"));
if (sysRoleDto == null || sysRoleDto.RoleId <= 0) return ToResponse(ApiResult.Error(101, "请求参数错误"));
sysRoleDto.Create_by = HttpContextExtension.GetName(HttpContext);
//删除角色菜单
@ -151,7 +151,7 @@ namespace ZR.Admin.WebApi.Controllers.System
long[] roleIds = Tools.SpitLongArrary(roleId);
int result = sysRoleService.DeleteRoleByRoleId(roleIds);
return OutputJson(ToJson(result));
return ToResponse(ToJson(result));
}
/// <summary>
@ -166,7 +166,7 @@ namespace ZR.Admin.WebApi.Controllers.System
{
int result = sysRoleService.UpdateRoleStatus(roleDto);
return OutputJson(ToJson(result));
return ToResponse(ToJson(result));
}
}
}

View File

@ -75,7 +75,7 @@ namespace ZR.Admin.WebApi.Controllers.System
dic.Add("roleIds", RoleService.SelectUserRoles(userId));
}
return OutputJson(ApiResult.Success(dic));
return ToResponse(ApiResult.Success(dic));
}
/// <summary>
@ -88,16 +88,16 @@ namespace ZR.Admin.WebApi.Controllers.System
[ActionPermissionFilter(Permission = "system:user:add")]
public IActionResult AddUser([FromBody] SysUser user)
{
if (user == null) { return OutputJson(ApiResult.Error(101, "请求参数错误")); }
if (user == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
if (UserConstants.NOT_UNIQUE.Equals(UserService.CheckUserNameUnique(user.UserName)))
{
return OutputJson(ApiResult.Error($"新增用户 '{user.UserName}'失败,登录账号已存在"));
return ToResponse(ApiResult.Error($"新增用户 '{user.UserName}'失败,登录账号已存在"));
}
user.Create_by = User.Identity.Name;
user.Password = NETCore.Encrypt.EncryptProvider.Md5(user.Password);
return OutputJson(UserService.InsertUser(user));
return ToResponse(UserService.InsertUser(user));
}
/// <summary>
@ -110,12 +110,12 @@ namespace ZR.Admin.WebApi.Controllers.System
[ActionPermissionFilter(Permission = "system:user:edit")]
public IActionResult UpdateUser([FromBody] SysUser user)
{
if (user == null || user.UserId <= 0) { return OutputJson(ApiResult.Error(101, "请求参数错误")); }
if (user == null || user.UserId <= 0) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
user.Update_by = User.Identity.Name;
int upResult = UserService.UpdateUser(user);
return OutputJson(upResult);
return ToResponse(upResult);
}
/// <summary>
@ -128,10 +128,10 @@ namespace ZR.Admin.WebApi.Controllers.System
[ActionPermissionFilter(Permission = "system:user:update")]
public IActionResult ChangeStatus([FromBody] SysUser user)
{
if (user == null) { return OutputJson(ApiResult.Error(101, "请求参数错误")); }
if (user == null) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
int result = UserService.ChangeUserStatus(user);
return OutputJson(ToJson(result));
return ToResponse(ToJson(result));
}
/// <summary>
@ -144,11 +144,11 @@ namespace ZR.Admin.WebApi.Controllers.System
[ActionPermissionFilter(Permission = "system:user:remove")]
public IActionResult Remove(int userid = 0)
{
if (userid <= 0) { return OutputJson(ApiResult.Error(101, "请求参数错误")); }
if (userid <= 0) { return ToResponse(ApiResult.Error(101, "请求参数错误")); }
int result = UserService.DeleteUser(userid);
return OutputJson(ToJson(result));
return ToResponse(ToJson(result));
}
/// <summary>
@ -164,7 +164,7 @@ namespace ZR.Admin.WebApi.Controllers.System
sysUser.Password = NETCore.Encrypt.EncryptProvider.Md5(sysUser.Password);
int result = UserService.ResetPwd(sysUser.UserId, sysUser.Password);
return OutputJson(ToJson(result));
return ToResponse(ToJson(result));
}
/// <summary>

View File

@ -142,7 +142,7 @@ namespace ZR.Admin.WebApi.Controllers
Update_by = User.Identity.Name,
Update_time = DateTime.Now
});
if (response > 0)
if (response)
{
//先暂停原先的任务
var respon = await _schedulerServer.UpdateTaskScheduleAsync(tasksQz, tasksQz.JobGroup);
@ -177,7 +177,7 @@ namespace ZR.Admin.WebApi.Controllers
{
_tasksQzService.Delete(id);
}
return OutputJson(taskResult);
return ToResponse(taskResult);
}
/// <summary>
@ -208,7 +208,7 @@ namespace ZR.Admin.WebApi.Controllers
_tasksQzService.Update(tasksQz);
}
return OutputJson(taskResult);
return ToResponse(taskResult);
}
/// <summary>
@ -239,7 +239,7 @@ namespace ZR.Admin.WebApi.Controllers
_tasksQzService.Update(tasksQz);
}
return OutputJson(taskResult);
return ToResponse(taskResult);
}
/// <summary>
@ -264,7 +264,7 @@ namespace ZR.Admin.WebApi.Controllers
//_tasksQzService.Update(tasksQz);
}
return OutputJson(taskResult);
return ToResponse(taskResult);
}
}
}

View File

@ -61,7 +61,7 @@ namespace ZR.Admin.WebApi.Controllers.System
int result = tasksLogService.Delete(jobIdArr);
return OutputJson(ToJson(result, result));
return ToResponse(ToJson(result, result));
}
/// <summary>

View File

@ -36,7 +36,7 @@ namespace ZR.Admin.WebApi.Controllers.monitor
var list = sysLoginService.GetLoginLog(sysLogininfoDto, pagerInfo);
var vMPage = new VMPageResult<SysLogininfor>(list, pagerInfo);
return OutputJson(ToJson(vMPage.TotalNum, vMPage), TIME_FORMAT_FULL_2);
return ToResponse(ToJson(vMPage.TotalNum, vMPage), TIME_FORMAT_FULL_2);
}
/// <summary>

View File

@ -36,7 +36,7 @@ namespace ZR.Admin.WebApi.Controllers.monitor
var list = sysOperLogService.SelectOperLogList(sysOperLog, pagerInfo);
var vMPage = new VMPageResult<SysOperLog>(list, pagerInfo);
return OutputJson(ToJson(vMPage.TotalNum, vMPage), TIME_FORMAT_FULL_2);
return ToResponse(ToJson(vMPage.TotalNum, vMPage), TIME_FORMAT_FULL_2);
}
/// <summary>

View File

@ -5,6 +5,7 @@ using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using System;
using System.IO;
using ZR.Admin.WebApi.Filters;
using ZR.Common;
namespace ZR.Admin.WebApi.Controllers
@ -26,24 +27,28 @@ namespace ZR.Admin.WebApi.Controllers
/// <param name="formFile"></param>
/// <returns></returns>
[HttpPost]
[Verify]
[ActionPermissionFilter(Permission = "system")]
public IActionResult SaveFile([FromForm(Name = "file")] IFormFile formFile)
{
if (formFile == null) throw new CustomException(ResultCode.PARAM_ERROR, "上传图片不能为空");
string fileExt = Path.GetExtension(formFile.FileName);
string savePath = Path.Combine(WebHostEnvironment.WebRootPath, FileUtil.GetdirPath("uploads"));
if (!Directory.Exists(savePath)) { Directory.CreateDirectory(savePath); }
string fileName = FileUtil.HashFileName(Guid.NewGuid().ToString()).ToLower() + fileExt;
string finalFilePath = Path.Combine(savePath, fileName);
string finalFilePath = Path.Combine(WebHostEnvironment.WebRootPath, FileUtil.GetdirPath("uploads"), fileName);
finalFilePath = finalFilePath.Replace("\\", "/").Replace("//", "/");
if (!Directory.Exists(Path.GetDirectoryName(finalFilePath)))
{
Directory.CreateDirectory(Path.GetDirectoryName(finalFilePath));
}
using (var stream = new FileStream(finalFilePath, FileMode.Create))
{
formFile.CopyToAsync(stream);
}
string accessPath = $"{OptionsSetting.Upload.UploadUrl}/{finalFilePath.Replace("wwwroot", "").Replace("\\", "/")}";
return OutputJson(ToJson(1, accessPath));
string accessPath = $"{OptionsSetting.Upload.UploadUrl}/{FileUtil.GetdirPath("uploads").Replace("\\", " /")}{fileName}";
return ToResponse(ResultCode.SUCCESS, new { accessPath, fullPath = finalFilePath });
}
}
}

View File

@ -0,0 +1,146 @@
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SqlSugar;
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Enums;
using Infrastructure.Model;
using Mapster;
using ZR.Model.Dto;
using ZR.Model.Models;
using ZR.Service.Business;
using ZR.Admin.WebApi.Extensions;
using ZR.Admin.WebApi.Filters;
using ZR.Common;
using Infrastructure.Extensions;
namespace ZR.Admin.WebApi.Controllers
{
/// <summary>
/// 代码生成演示Controller
///
/// @author zr
/// @date 2021-10-10
/// </summary>
[Verify]
[Route("business/Gendemo")]
public class GendemoController : BaseController
{
/// <summary>
/// 代码生成演示接口
/// </summary>
private readonly IGendemoService _GendemoService;
public GendemoController(IGendemoService GendemoService)
{
_GendemoService = GendemoService;
}
/// <summary>
/// 查询代码生成演示列表
/// </summary>
/// <returns></returns>
[HttpGet("list")]
[ActionPermissionFilter(Permission = "business:gendemo:list")]
public IActionResult QueryGendemo([FromQuery] GendemoQueryDto parm)
{
//开始拼装查询条件
var predicate = Expressionable.Create<Gendemo>();
//TODO 搜索条件
//predicate = predicate.And(m => m.Name.Contains(parm.Name));
var response = _GendemoService.GetPages(predicate.ToExpression(), parm);
return SUCCESS(response);
}
/// <summary>
/// 查询代码生成演示详情
/// </summary>
/// <param name="Id"></param>
/// <returns></returns>
[HttpGet("{Id}")]
[ActionPermissionFilter(Permission = "business:gendemo:query")]
public IActionResult GetGendemo(int Id)
{
var response = _GendemoService.GetId(Id);
return SUCCESS(response);
}
/// <summary>
/// 添加代码生成演示
/// </summary>
/// <returns></returns>
[HttpPost]
[ActionPermissionFilter(Permission = "business:gendemo:add")]
[Log(Title = "代码生成演示添加", BusinessType = BusinessType.INSERT)]
public IActionResult AddGendemo([FromBody] GendemoDto parm)
{
if (parm == null)
{
throw new CustomException("请求参数错误");
}
//从 Dto 映射到 实体
var model = parm.Adapt<Gendemo>().ToCreate(HttpContext);
return SUCCESS(_GendemoService.Add(model, it => new
{
it.Name,
it.Icon,
it.ShowStatus,
it.Sex,
it.Sort,
}));
}
/// <summary>
/// 更新代码生成演示
/// </summary>
/// <returns></returns>
[HttpPut]
[ActionPermissionFilter(Permission = "business:gendemo:update")]
[Log(Title = "代码生成演示修改", BusinessType = BusinessType.UPDATE)]
public IActionResult UpdateGendemo([FromBody] GendemoDto parm)
{
if (parm == null)
{
throw new CustomException("请求实体不能为空");
}
//从 Dto 映射到 实体
var model = parm.Adapt<Gendemo>().ToUpdate(HttpContext);
var response = _GendemoService.Update(w => w.Id == model.Id, it => new Gendemo()
{
//Update 字段映射
Name = model.Name,
Icon = model.Icon,
ShowStatus = model.ShowStatus,
Sex = model.Sex,
Sort = model.Sort,
});
return SUCCESS(response);
}
/// <summary>
/// 删除代码生成演示
/// </summary>
/// <returns></returns>
[HttpDelete("{ids}")]
[ActionPermissionFilter(Permission = "business:gendemo:delete")]
[Log(Title = "代码生成演示删除", BusinessType = BusinessType.DELETE)]
public IActionResult DeleteGendemo(string ids)
{
int[] idsArr = Tools.SpitIntArrary(ids);
if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
var response = _GendemoService.Delete(idsArr);
return SUCCESS(response);
}
}
}

View File

@ -57,9 +57,9 @@ namespace ZR.Admin.WebApi.Extensions
{
types.GetProperty("UpdateTime").SetValue(source, DateTime.Now, null);
}
if (types.GetProperty("Update_Time") != null)
if (types.GetProperty("Update_time") != null)
{
types.GetProperty("Update_Time").SetValue(source, DateTime.Now, null);
types.GetProperty("Update_time").SetValue(source, DateTime.Now, null);
}
//if (types.GetProperty("UpdateID") != null)
//{

View File

@ -38,7 +38,7 @@ namespace ZR.Admin.WebApi.Extensions
//var _tasksQzService2 = (ISysTasksQzService)services.GetRequiredService(typeof(SysTasksQzService));
ITaskSchedulerServer _schedulerServer = App.GetRequiredService<ITaskSchedulerServer>();
var tasks = _tasksQzService.GetWhere(m => m.IsStart);
var tasks = _tasksQzService.QueryableToList(m => m.IsStart);
//程序启动后注册所有定时任务
foreach (var task in tasks)

View File

@ -54,12 +54,12 @@ namespace ZR.Admin.WebApi.Filters
bool isDemoMode = ConfigUtils.Instance.GetAppConfig("DemoMode", false);
//演示公开环境屏蔽权限
string[] denyPerms = new string[] { "update", "add", "remove", "add", "edit", "delete", "import", "run", "start", "stop", "clear" };
string[] denyPerms = new string[] { "update", "add", "remove", "add", "edit", "delete", "import", "run", "start", "stop", "clear", "send" };
if (isDemoMode && (denyPerms.Any(f => Permission.ToLower().Contains(f.ToLower())) || Permission.Equals("system")))
{
context.Result = new JsonResult(new { code = ResultCode.FORBIDDEN, msg = "演示模式 , 不允许操作" });
}
if (!HasPermi)
if (!HasPermi && !Permission.Equals("system"))
{
logger.Info($"用户{info.NickName}没有权限访问{context.HttpContext.Request.Path},当前权限[{Permission}]");
context.Result = new JsonResult(new { code = ResultCode.FORBIDDEN, msg = "你没有权限访问" });

View File

@ -22,7 +22,7 @@
"UploadDirectory": "/",
"UploadUrl": "http://localhost:8888"
},
"ALYUN_OCS": {
"QIQIU_OSS": {
"REGIONID": "cn-hangzhou",
"KEY": "XX",
"SECRET": "XX"
@ -33,5 +33,15 @@
"autoPre": true, //
"author": "zr",
"tablePrefix": "live_,sys_" //"表前缀(生成类名不会包含表前缀,多个用逗号分隔)",
},
//
"MailOptions": {
//
"From": "xxxx@qq.com",
//
"Password": "123456",
//
"Smtp": "smtp.qq.com",
"Port": 587
}
}

View File

@ -14,6 +14,7 @@ using {ServicesNamespace}.Business;
using {ApiControllerNamespace}.Extensions;
using {ApiControllerNamespace}.Filters;
using ZR.Common;
using Infrastructure.Extensions;
namespace {ApiControllerNamespace}.Controllers
{
@ -76,7 +77,7 @@ namespace {ApiControllerNamespace}.Controllers
/// <returns></returns>
[HttpPost]
[ActionPermissionFilter(Permission = "{Permission}:add")]
[Log(Title = "{TableDesc}添加", BusinessType = BusinessType.INSERT)]
[Log(Title = "{FunctionName}", BusinessType = BusinessType.INSERT)]
public IActionResult Add{ModelName}([FromBody] {ModelName}Dto parm)
{
if (parm == null)
@ -84,7 +85,7 @@ namespace {ApiControllerNamespace}.Controllers
throw new CustomException("请求参数错误");
}
//从 Dto 映射到 实体
var model = parm.Adapt<{ModelName}>().ToCreate();
var model = parm.Adapt<{ModelName}>().ToCreate(HttpContext);
return SUCCESS(_{ModelName}Service.Add(model, it => new
{
@ -98,7 +99,7 @@ namespace {ApiControllerNamespace}.Controllers
/// <returns></returns>
[HttpPut]
[ActionPermissionFilter(Permission = "{Permission}:update")]
[Log(Title = "{TableDesc}修改", BusinessType = BusinessType.UPDATE)]
[Log(Title = "{FunctionName}", BusinessType = BusinessType.UPDATE)]
public IActionResult Update{ModelName}([FromBody] {ModelName}Dto parm)
{
if (parm == null)
@ -106,7 +107,7 @@ namespace {ApiControllerNamespace}.Controllers
throw new CustomException("请求实体不能为空");
}
//从 Dto 映射到 实体
var model = parm.Adapt<{ModelName}>().ToUpdate();
var model = parm.Adapt<{ModelName}>().ToUpdate(HttpContext);
var response = _{ModelName}Service.Update(w => w.{PrimaryKey} == model.{PrimaryKey}, it => new {ModelName}()
{
@ -123,11 +124,11 @@ namespace {ApiControllerNamespace}.Controllers
/// <returns></returns>
[HttpDelete("{ids}")]
[ActionPermissionFilter(Permission = "{Permission}:delete")]
[Log(Title = "{TableDesc}删除", BusinessType = BusinessType.DELETE)]
[Log(Title = "{FunctionName}", BusinessType = BusinessType.DELETE)]
public IActionResult Delete{ModelName}(string ids)
{
int[] idsArr = Tools.SpitIntArrary(ids);
if (idsArr.Length <= 0) { return OutputJson(ApiResult.Error($"删除失败Id 不能为空")); }
if (idsArr.Length <= 0) { return ToResponse(ApiResult.Error($"删除失败Id 不能为空")); }
var response = _{ModelName}Service.Delete(idsArr);

View File

@ -1,6 +1,6 @@
-- 菜单
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time, update_by, update_time, remark)
VALUES ('{FunctionName}', 0, 1, '/{ModuleName}/{ModelTypeName}', '{ModuleName}/{ViewsFileName}/index', 0, 0, 'C', '0', '0', '{Permission}:list', '#', '', sysdate(), '', NULL, '{ModelTypeDesc}菜单');
VALUES ('{FunctionName}', 0, 1, '/{ModuleName}/{ModelTypeName}', '{ModuleName}/{ViewsFileName}/index', 0, 0, 'C', '0', '0', '{Permission}:list', '#', '', sysdate(), '', NULL, '{FunctionName}菜单');
-- 按钮父菜单id
SELECT @menuId := LAST_INSERT_ID();

View File

@ -12,7 +12,7 @@ namespace {RepositoriesNamespace}
/// @date {DateTime}
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class {ModelTypeName}Repository : BaseRepository
public class {ModelTypeName}Repository : BaseRepository<{ModelTypeName}>
{
#region 业务逻辑代码
#endregion

View File

@ -1,12 +1,5 @@
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Extensions;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZR.Common;
using {ModelsNamespace}.Models;
using {IRepositoriesNamespace};
@ -21,10 +14,10 @@ namespace {ServicesNamespace}.Business
[AppService(ServiceType = typeof(I{ModelTypeName}Service), ServiceLifetime = LifeTime.Transient)]
public class {ModelTypeName}Service: BaseService<{ModelTypeName}>, I{ModelTypeName}Service
{
private readonly {ModelTypeName}Repository _repository;
private readonly {ModelTypeName}Repository _{ModelTypeName}repository;
public {ModelTypeName}Service({ModelTypeName}Repository repository)
{
_repository = repository;
_{ModelTypeName}repository = repository;
}
#region 业务逻辑代码

View File

@ -1,6 +1,6 @@
-- 菜单
INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isCache, menuType, visible, status, perms, icon, create_by,create_time, update_by, update_time, remark)
VALUES ('{FunctionName}', 0, 1, '/{ModuleName}/{ModelTypeName}', '{ModuleName}/{ViewsFileName}/index', 0, 0, 'C', '0', '0', '{Permission}:list', '#', '', GETDATE(), '', NULL, '{ModelTypeDesc}');
VALUES ('{FunctionName}', {ParentId}, 1, '/{ModuleName}/{ModelTypeName}', '{ModuleName}/{ViewsFileName}/index', 0, 0, 'C', '0', '0', '{Permission}:list', '#', '', GETDATE(), '', NULL, '{FunctionName}');
-- 按钮父菜单id
declare @menuId int = @@identity
@ -19,5 +19,5 @@ INSERT INTO sys_menu(menuName, parentId, orderNum, path, component, isFrame, isC
VALUES ('修改', @menuId, 3, '#', NULL, 0, 0, 'F', '0', '0', '{Permission}:update', '', '', GETDATE(), '', NULL, NULL);
GO
SELECT * FROM sys_menu WHERE parentId = @menuId;
SELECT * FROM sys_menu WHERE parentId = {ParentId};
SELECT * FROM sys_menu WHERE menuId = @menuId;

View File

@ -38,7 +38,7 @@ export function update{ModelTypeName}(data) {
/**
* 获取{FunctionName}详情
* @param {Id} {ModelTypeDesc}Id
* @param {Id} {FunctionName}Id
*/
export function get{ModelTypeName}(id) {
return request({

View File

@ -53,7 +53,6 @@ namespace ZR.CodeGenerator
ReplaceDto replaceDto = new();
replaceDto.ModelTypeName = tableInfo.ClassName;//表名对应C# 实体类名
replaceDto.TableName = tableInfo.TableName;//表名
replaceDto.TableDesc = tableInfo.TableComment;//表说明描述
replaceDto.Permission = $"{tableInfo.ModuleName}:{tableInfo.ClassName.ToLower()}";//权限
replaceDto.ViewsFileName = FirstLowerCase(replaceDto.ModelTypeName);
replaceDto.Author = tableInfo.FunctionAuthor;
@ -78,12 +77,12 @@ namespace ZR.CodeGenerator
//编辑字段
if (dbFieldInfo.IsEdit)
{
replaceDto.UpdateColumn += $"{dbFieldInfo.CsharpField} = model.{dbFieldInfo.CsharpField}, ";
replaceDto.UpdateColumn += $" {dbFieldInfo.CsharpField} = model.{dbFieldInfo.CsharpField}, \n";
}
//新增字段
if (dbFieldInfo.IsInsert)
{
replaceDto.InsertColumn += $"it.{dbFieldInfo.CsharpField}, ";
replaceDto.InsertColumn += $" it.{dbFieldInfo.CsharpField}, \n";
}
//TODO 查询
//if (dbFieldInfo.IsQuery)
@ -310,8 +309,8 @@ namespace ZR.CodeGenerator
.Replace("{ModelName}", replaceDto.ModelTypeName)
.Replace("{Permission}", replaceDto.Permission)
.Replace("{PrimaryKey}", replaceDto.PKName)
.Replace("{UpdateColumn}", replaceDto.UpdateColumn)
.Replace("{InsertColumn}", replaceDto.InsertColumn)
.Replace("{UpdateColumn}", replaceDto.UpdateColumn.TrimEnd('\n'))
.Replace("{InsertColumn}", replaceDto.InsertColumn.TrimEnd('\n'))
.Replace("{ModuleName}", generateDto.GenTable.ModuleName)
.Replace("{PKCsharpType}", replaceDto.PKType)
.Replace("{Author}", replaceDto.Author)
@ -393,9 +392,9 @@ namespace ZR.CodeGenerator
var content = FileHelper.ReadTemplate($"{tempName}.txt")
.Replace("{ModelTypeName}", replaceDto.ModelTypeName)
.Replace("{Permission}", replaceDto.Permission)
.Replace("{ModelTypeDesc}", replaceDto.TableDesc)
.Replace("{ModuleName}", generateDto.GenTable.ModuleName)
.Replace("{ViewsFileName}", replaceDto.ViewsFileName)
.Replace("{ParentId}", generateDto.ParentMenuId.ToString())
.Replace("{FunctionName}", generateDto.GenTable.FunctionName);
generateDto.GenCodes.Add(new GenCode(8, "sql", fullPath, content));

View File

@ -45,6 +45,10 @@ namespace ZR.CodeGenerator.Model
/// 代码生成压缩包名称
/// </summary>
public string ZipFileName { get; set; }
/// <summary>
/// 父级菜单id
/// </summary>
public long ParentMenuId { get; set; }
#endregion
}

View File

@ -8,13 +8,6 @@ namespace ZR.CodeGenerator.Model
{
public class ReplaceDto
{
//public string ModelsNamespace { get; set; }
//public string DtosNamespace { get; set; }
//public string RepositoriesNamespace { get; set; }
//public string IRepositoriesNamespace { get; set; }
//public string IServicsNamespace { get; set; }
//public string ServicesNamespace { get; set; }
/// <summary>
/// 主键字段
/// </summary>
@ -36,10 +29,6 @@ namespace ZR.CodeGenerator.Model
/// </summary>
public string TableName { get; set; }
/// <summary>
/// 表描述、说明
/// </summary>
public string TableDesc { get; set; }
/// <summary>
/// 修改列
/// </summary>
public string UpdateColumn { get; set; }

View File

@ -33,7 +33,7 @@ namespace ZR.CodeGenerator.Service
{
tableList = tableList.Where(f => f.Name.ToLower().Contains(tableName.ToLower())).ToList();
}
tableList = tableList.Where(f => !new string[] { "gen", "sys_" }.Contains(f.Name)).ToList();
//tableList = tableList.Where(f => !new string[] { "gen", "sys_" }.Contains(f.Name)).ToList();
pager.TotalNum = tableList.Count;
return tableList.Skip(pager.PageSize * (pager.PageNum - 1)).Take(pager.PageSize).OrderBy(f => f.Name).ToList();
}

165
ZR.Common/MailHelper.cs Normal file
View File

@ -0,0 +1,165 @@
using MailKit.Net.Smtp;
using MimeKit;
using MimeKit.Text;
using System;
using System.Collections.Generic;
using System.IO;
namespace ZR.Common
{
public class MailHelper
{
/// <summary>
/// 发送人邮箱
/// </summary>
public string FromEmail { get; set; } = "";
/// <summary>
/// 发送人密码
/// </summary>
public string FromPwd { get; set; } = "";
/// <summary>
/// 发送协议
/// </summary>
public string Smtp { get; set; } = "smtp.qq.com";
/// <summary>
/// 协议端口
/// </summary>
public int Port { get; set; } = 587;
/// <summary>
/// 是否使用SSL协议
/// </summary>
public bool UseSsl { get; set; } = false;
public string mailSign = @"";
public MailHelper(string fromEmail, string smtp, int port, string fromPwd)
{
FromEmail = fromEmail;
Smtp = smtp;
FromPwd = fromPwd;
Port = port;
}
public MailHelper(string fromEmail, string fromPwd)
{
FromEmail = fromEmail;
FromPwd = fromPwd;
}
/// <summary>
/// 发送一个人
/// </summary>
/// <param name="toAddress"></param>
/// <param name="subject"></param>
/// <param name="text"></param>
/// <param name="path"></param>
public void SendMail(string toAddress, string subject, string text, string path = "", string html = "")
{
IEnumerable<MailboxAddress> mailboxes = new List<MailboxAddress>() {
new MailboxAddress(toAddress)
};
SendMail(mailboxes, subject, text, path, html);
}
/// <summary>
/// 发送多个邮箱
/// </summary>
/// <param name="toAddress"></param>
/// <param name="subject"></param>
/// <param name="text"></param>
/// <param name="path"></param>
public void SendMail(string[] toAddress, string subject, string text, string path = "", string html = "")
{
IList<MailboxAddress> mailboxes = new List<MailboxAddress>() { };
foreach (var item in toAddress)
{
mailboxes.Add(new MailboxAddress(item));
}
SendMail(mailboxes, subject, text, path, html);
}
/// <summary>
/// 发送邮件
/// </summary>
/// <param name="toName"></param>
/// <param name="toAddress"></param>
/// <param name="subject"></param>
/// <param name="text"></param>
/// <param name="path">附件url地址</param>
private void SendMail(IEnumerable<MailboxAddress> toAddress, string subject, string text, string path = "", string html = "")
{
MimeMessage message = new MimeMessage();
//发件人
message.From.Add(new MailboxAddress(FromEmail, FromEmail));
//收件人
//message.To.Add(new MailboxAddress(toAddress));
//IList<InternetAddress> internets = null;
//internets.Add(new MailboxAddress(toAddress));
message.To.AddRange(toAddress);
message.Subject = subject;
message.Date = DateTime.Now;
//创建附件Multipart
Multipart multipart = new Multipart("mixed");
//html内容
if (!string.IsNullOrEmpty(html))
{
var Html = new TextPart(TextFormat.Html)
{
Text = html
};
multipart.Add(Html);
}
//文本内容
if (!string.IsNullOrEmpty(text))
{
var plain = new TextPart(TextFormat.Plain)
{
Text = text + "\r\n\n\n" + mailSign
};
multipart.Add(plain);
}
//附件
if (!string.IsNullOrEmpty(path))
{
MimePart attachment = new MimePart()
{
Content = new MimeContent(File.OpenRead(path), ContentEncoding.Default),
//读取文件,只能用绝对路径
ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
ContentTransferEncoding = ContentEncoding.Base64,
//文件名字
FileName = Path.GetFileName(path)
};
multipart.Add(attachment);
}
//赋值邮件内容
message.Body = multipart;
//开始发送
using (var client = new SmtpClient())
{
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
//Smtp服务器
//client.Connect("smtp.qq.com", 587, false);
client.Connect(Smtp, Port, true);
//登录,发送
//特别说明对于服务器端的中文相应Exception中有编码问题显示乱码了
client.Authenticate(FromEmail, FromPwd);
client.Send(message);
//断开
client.Disconnect(true);
Console.WriteLine($"发送邮件成功{DateTime.Now}");
}
}
}
}

View File

@ -1,10 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="MailKit" Version="2.15.0" />
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="5.0.0" />
<PackageReference Include="Npoi.Mapper" Version="3.5.1" />
</ItemGroup>

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using ZR.Model.Dto;
using ZR.Model.Models;
namespace ZR.Model.Dto
{
/// <summary>
/// 代码生成演示输入对象模型
/// </summary>
public class GendemoDto
{
public int Id { get; set; }
public string Name { get; set; }
public string Icon { get; set; }
public int ShowStatus { get; set; }
public int? Sex { get; set; }
public int? Sort { get; set; }
}
/// <summary>
/// 代码生成演示查询对象模型
/// </summary>
public class GendemoQueryDto: PagerInfo
{
public string Name { get; set; }
public DateTime? BeginTime { get; set; }
public DateTime? EndTime { get; set; }
}
}

View File

@ -0,0 +1,53 @@
using System;
using System.Collections.Generic;
namespace ZR.Model.Models
{
/// <summary>
/// 代码生成演示,数据实体对象
///
/// @author zr
/// @date 2021-09-27
/// </summary>
[SqlSugar.SugarTable("gen_demo")]
public class Gendemo
{
/// <summary>
/// 描述 :自增id
/// 空值 :False
/// </summary>
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int Id { get; set; }
/// <summary>
/// 描述 :名称
/// 空值 :False
/// </summary>
public string Name { get; set; }
/// <summary>
/// 描述 :图片
/// 空值 :True
/// </summary>
public string Icon { get; set; }
/// <summary>
/// 描述 :显示状态
/// 空值 :False
/// </summary>
public int ShowStatus { get; set; }
/// <summary>
/// 描述 :添加时间
/// 空值 :True
/// </summary>
public DateTime? AddTime { get; set; }
/// <summary>
/// 描述 :用户性别
/// 空值 :True
/// </summary>
public int? Sex { get; set; }
/// <summary>
/// 描述 :排序
/// 空值 :True
/// </summary>
public int? Sort { get; set; }
}
}

View File

@ -21,6 +21,10 @@ namespace ZR.Model.System.Dto
public string FunctionAuthor { get; set; }
public string GenType { get; set; }
public string Options { get; set; }
/// <summary>
/// 上级菜单id
/// </summary>
public int ParentMenuId { get; set; }
public List<GenTableColumnDto> Columns { get; set; }
}

View File

@ -0,0 +1,32 @@
using System;
using System.Collections.Generic;
using ZR.Model.Dto;
using ZR.Model.Models;
namespace ZR.Model.Dto
{
/// <summary>
/// 参数配置输入对象模型
/// </summary>
public class SysConfigDto
{
public int ConfigId { get; set; }
public string ConfigName { get; set; }
public string ConfigKey { get; set; }
public string ConfigValue { get; set; }
public string ConfigType { get; set; }
}
/// <summary>
/// 参数配置查询对象模型
/// </summary>
public class SysConfigQueryDto: PagerInfo
{
public string ConfigName { get; set; }
public string ConfigKey { get; set; }
public string ConfigValue { get; set; }
public string ConfigType { get; set; }
public DateTime? BeginTime { get; set; }
public DateTime? EndTime { get; set; }
}
}

View File

@ -10,23 +10,64 @@ namespace ZR.Model.System.Generate
[SqlSugar.SugarTable("gen_table")]
public class GenTable: SysBase
{
/// <summary>
/// 表id
/// </summary>
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int TableId { get; set; }
/// <summary>
/// 表名
/// </summary>
public string TableName { get; set; }
/// <summary>
/// 表描述
/// </summary>
public string TableComment { get; set; }
/// <summary>
/// 关联父表的表名
/// </summary>
public string SubTableName { get; set; }
/// <summary>
/// 本表关联父表的外键名
/// </summary>
public string SubTableFkName { get; set; }
/// <summary>
/// csharp类名
/// </summary>
public string ClassName { get; set; }
/// <summary>
/// 使用的模板crud单表操作 tree树表操作 sub主子表操作
/// </summary>
public string TplCategory { get; set; }
/// <summary>
/// 基本命名空间前缀
/// </summary>
public string BaseNameSpace { get; set; }
/// <summary>
/// 生成模块名
/// </summary>
public string ModuleName { get; set; }
/// <summary>
/// 生成业务名
/// </summary>
public string BusinessName { get; set; }
/// <summary>
/// 生成功能名
/// </summary>
public string FunctionName { get; set; }
/// <summary>
/// 生成作者名
/// </summary>
public string FunctionAuthor { get; set; }
/// <summary>
/// 生成代码方式0zip压缩包 1自定义路径
/// </summary>
public string GenType { get; set; }
/// <summary>
/// 其他生成选项
/// </summary>
public string Options { get; set; }
/** 表列信息 */
[SqlSugar.SugarColumn(IsIgnore = true)]
public List<GenTableColumn> Columns { get; set; }

View File

@ -0,0 +1,44 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace ZR.Model.System
{
/// <summary>
/// 参数配置,数据实体对象
///
/// @author zhaorui
/// @date 2021-09-29
/// </summary>
[SqlSugar.SugarTable("sys_config")]
public class SysConfig: SysBase
{
/// <summary>
/// 描述 :
/// 空值 :False
/// </summary>
[SqlSugar.SugarColumn(IsPrimaryKey = true, IsIdentity = true)]
public int ConfigId { get; set; }
/// <summary>
/// 描述 :
/// 空值 :True
/// </summary>
public string ConfigName { get; set; }
/// <summary>
/// 描述 :
/// 空值 :True
/// </summary>
public string ConfigKey { get; set; }
/// <summary>
/// 描述 :
/// 空值 :True
/// </summary>
public string ConfigValue { get; set; }
/// <summary>
/// 描述 :
/// 空值 :True
/// </summary>
public string ConfigType { get; set; }
}
}

View File

@ -0,0 +1,462 @@
using Infrastructure;
using Infrastructure.Model;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Dynamic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
using ZR.Model;
namespace ZR.Repository
{
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
public class BaseRepository<T> : SimpleClient<T>, IBaseRepository<T> where T : class, new()
{
public BaseRepository(ISqlSugarClient dbContext = null, int configId = 0) : base(dbContext)
{
if (dbContext == null)
{
string connStr = ConfigUtils.Instance.GetConnectionStrings(OptionsSetting.ConnAdmin);
string dbKey = ConfigUtils.Instance.GetAppConfig<string>(OptionsSetting.DbKey);
int dbType = ConfigUtils.Instance.GetAppConfig<int>(OptionsSetting.ConnDbType);
if (!string.IsNullOrEmpty(dbKey))
{
connStr = NETCore.Encrypt.EncryptProvider.DESDecrypt(connStr, dbKey);
}
var Db = new SqlSugarClient(new List<ConnectionConfig>()
{
new ConnectionConfig(){
ConnectionString = connStr,
DbType = (DbType)dbType,
IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样
InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
ConfigId = 0
},
new ConnectionConfig(){
ConnectionString = "",
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
ConfigId = 1
},
});
//调式代码 用来打印SQL
Db.GetConnection(0).Aop.OnLogExecuting = (sql, pars) =>
{
Console.BackgroundColor = ConsoleColor.Yellow;
Console.WriteLine("【SQL语句】" + sql.ToLower() + "\r\n" + Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
};
//出错打印日志
Db.GetConnection(0).Aop.OnError = (e) =>
{
Console.WriteLine($"[执行Sql出错]{e.Message}SQL={e.Sql}");
Console.WriteLine();
};
Context = Db.GetConnection(configId);//根据类传入的ConfigId自动选择
}
}
#region add
/// <summary>
/// 插入指定列使用
/// </summary>
/// <param name="parm"></param>
/// <param name="iClumns"></param>
/// <param name="ignoreNull"></param>
/// <returns></returns>
public int Add(T parm, Expression<Func<T, object>> iClumns = null, bool ignoreNull = true)
{
return Context.Insertable(parm).InsertColumns(iClumns).IgnoreColumns(ignoreNullColumn: ignoreNull).ExecuteCommand();
}
/// <summary>
/// 插入实体
/// </summary>
/// <param name="t"></param>
/// <param name="IgnoreNullColumn">默认忽略null列</param>
/// <returns></returns>
public int Add(T t)
{
return Context.Insertable(t).ExecuteCommand();
}
public int InsertIgnoreNullColumn(T t)
{
return Context.Insertable(t).IgnoreColumns(true).ExecuteCommand();
}
public int InsertIgnoreNullColumn(T t, params string[] columns)
{
return Context.Insertable(t).IgnoreColumns(columns).ExecuteCommand();
}
//public int Insert(SqlSugarClient client, T t)
//{
// return client.Insertable(t).ExecuteCommand();
//}
public long InsertBigIdentity(T t)
{
return base.Context.Insertable(t).ExecuteReturnBigIdentity();
}
public int Insert(List<T> t)
{
return base.Context.Insertable(t).ExecuteCommand();
}
public int InsertIgnoreNullColumn(List<T> t)
{
return base.Context.Insertable(t).IgnoreColumns(true).ExecuteCommand();
}
public int InsertIgnoreNullColumn(List<T> t, params string[] columns)
{
return base.Context.Insertable(t).IgnoreColumns(columns).ExecuteCommand();
}
public int Insert(T parm, Expression<Func<T, object>> iClumns = null, bool ignoreNull = true)
{
return base.Context.Insertable(parm).InsertColumns(iClumns).IgnoreColumns(ignoreNullColumn: ignoreNull).ExecuteCommand();
}
public DbResult<bool> InsertTran(T t)
{
var result = base.Context.Ado.UseTran(() =>
{
base.Context.Insertable(t).ExecuteCommand();
});
return result;
}
public DbResult<bool> InsertTran(List<T> t)
{
var result = base.Context.Ado.UseTran(() =>
{
base.Context.Insertable(t).ExecuteCommand();
});
return result;
}
public T InsertReturnEntity(T t)
{
return base.Context.Insertable(t).ExecuteReturnEntity();
}
public T InsertReturnEntity(T t, string sqlWith = SqlWith.UpdLock)
{
return base.Context.Insertable(t).With(sqlWith).ExecuteReturnEntity();
}
public bool ExecuteCommand(string sql, object parameters)
{
return base.Context.Ado.ExecuteCommand(sql, parameters) > 0;
}
public bool ExecuteCommand(string sql, params SugarParameter[] parameters)
{
return base.Context.Ado.ExecuteCommand(sql, parameters) > 0;
}
public bool ExecuteCommand(string sql, List<SugarParameter> parameters)
{
return base.Context.Ado.ExecuteCommand(sql, parameters) > 0;
}
#endregion add
#region update
public bool UpdateEntity(T entity, bool ignoreNullColumns = false)
{
return base.Context.Updateable(entity).IgnoreColumns(ignoreNullColumns).ExecuteCommand() > 0;
}
public bool Update(T entity, Expression<Func<T, bool>> expression)
{
return base.Context.Updateable(entity).Where(expression).ExecuteCommand() > 0;
}
public bool Update(T entity, Expression<Func<T, object>> expression, bool ignoreAllNull = false)
{
return base.Context.Updateable(entity).UpdateColumns(expression).IgnoreColumns(ignoreAllNull).ExecuteCommand() > 0;
}
public bool Update(T entity, Expression<Func<T, object>> expression, Expression<Func<T, bool>> where)
{
return base.Context.Updateable(entity).UpdateColumns(expression).Where(where).ExecuteCommand() > 0;
}
public bool Update(SqlSugarClient client, T entity, Expression<Func<T, object>> expression, Expression<Func<T, bool>> where)
{
return client.Updateable(entity).UpdateColumns(expression).Where(where).ExecuteCommand() > 0;
}
/// <summary>
///
/// </summary>
/// <param name="entity"></param>
/// <param name="list"></param>
/// <param name="isNull">默认为true</param>
/// <returns></returns>
public bool Update(T entity, List<string> list = null, bool isNull = true)
{
if (list == null)
{
list = new List<string>()
{
"Create_By",
"Create_time"
};
}
//base.Context.Updateable(entity).IgnoreColumns(c => list.Contains(c)).Where(isNull).ExecuteCommand()
return base.Context.Updateable(entity).IgnoreColumns(isNull).IgnoreColumns(list.ToArray()).ExecuteCommand() > 0;
}
public bool Update(List<T> entity)
{
var result = base.Context.Ado.UseTran(() =>
{
base.Context.Updateable(entity).ExecuteCommand();
});
return result.IsSuccess;
}
public bool Update(Expression<Func<T, bool>> where, Expression<Func<T, T>> columns)
{
return base.Context.Updateable<T>().SetColumns(columns).Where(where).RemoveDataCache().ExecuteCommand() > 0;
}
#endregion update
//public DbResult<bool> UseTran(Action action)
//{
// var result = base.Context.Ado.UseTran(() => action());
// return result;
//}
//public DbResult<bool> UseTran(SqlSugarClient client, Action action)
//{
// var result = client.Ado.UseTran(() => action());
// return result;
//}
//public bool UseTran2(Action action)
//{
// var result = base.Context.Ado.UseTran(() => action());
// return result.IsSuccess;
//}
#region delete
public bool DeleteExp(Expression<Func<T, bool>> expression)
{
return Context.Deleteable<T>().Where(expression).ExecuteCommand() > 0;
}
//public bool Delete<PkType>(PkType[] primaryKeyValues)
//{
// return base.Context.Deleteable<T>().In(primaryKeyValues).ExecuteCommand() > 0;
//}
public int Delete(object[] obj)
{
return Context.Deleteable<T>().In(obj).ExecuteCommand();
}
public int Delete(object id)
{
return Context.Deleteable<T>(id).ExecuteCommand();
}
public bool DeleteTable()
{
return Context.Deleteable<T>().ExecuteCommand() > 0;
}
#endregion delete
#region query
public bool Any(Expression<Func<T, bool>> expression)
{
return Context.Queryable<T>().Where(expression).Any();
}
public ISugarQueryable<T> Queryable()
{
return Context.Queryable<T>();
}
public ISugarQueryable<ExpandoObject> Queryable(string tableName, string shortName)
{
return Context.Queryable(tableName, shortName);
}
public List<T> QueryableToList(Expression<Func<T, bool>> expression)
{
return Context.Queryable<T>().Where(expression).ToList();
}
public Task<List<T>> QueryableToListAsync(Expression<Func<T, bool>> expression)
{
return Context.Queryable<T>().Where(expression).ToListAsync();
}
//public string QueryableToJson(string select, Expression<Func<T, bool>> expressionWhere)
//{
// var query = base.Context.Queryable<T>().Select(select).Where(expressionWhere).ToList();
// return query.JilToJson();
//}
public List<T> QueryableToList(string tableName)
{
return Context.Queryable<T>(tableName).ToList();
}
public List<T> QueryableToList(string tableName, Expression<Func<T, bool>> expression)
{
return Context.Queryable<T>(tableName).Where(expression).ToList();
}
public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, int pageIndex = 0, int pageSize = 10)
{
int totalNumber = 0;
var list = Context.Queryable<T>().Where(expression).ToPageList(pageIndex, pageSize, ref totalNumber);
return (list, totalNumber);
}
public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, string order, int pageIndex = 0, int pageSize = 10)
{
int totalNumber = 0;
var list = Context.Queryable<T>().Where(expression).OrderBy(order).ToPageList(pageIndex, pageSize, ref totalNumber);
return (list, totalNumber);
}
public (List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, Expression<Func<T, object>> orderFiled, string orderBy, int pageIndex = 0, int pageSize = 10)
{
int totalNumber = 0;
if (orderBy.Equals("DESC", StringComparison.OrdinalIgnoreCase))
{
var list = Context.Queryable<T>().Where(expression).OrderBy(orderFiled, OrderByType.Desc).ToPageList(pageIndex, pageSize, ref totalNumber);
return (list, totalNumber);
}
else
{
var list = Context.Queryable<T>().Where(expression).OrderBy(orderFiled, OrderByType.Asc).ToPageList(pageIndex, pageSize, ref totalNumber);
return (list, totalNumber);
}
}
public List<T> SqlQueryToList(string sql, object obj = null)
{
return Context.Ado.SqlQuery<T>(sql, obj);
}
/// <summary>
/// 获得一条数据
/// </summary>
/// <param name="where">Expression<Func<T, bool>></param>
/// <returns></returns>
public T GetFirst(Expression<Func<T, bool>> where)
{
return Context.Queryable<T>().Where(where).First();
}
/// <summary>
/// 根据主值查询单条数据
/// </summary>
/// <param name="pkValue">主键值</param>
/// <returns>泛型实体</returns>
public T GetId(object pkValue)
{
return Context.Queryable<T>().InSingle(pkValue);
}
/// <summary>
/// 根据条件查询分页数据
/// </summary>
/// <param name="where"></param>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<T> GetPages(Expression<Func<T, bool>> where, PagerInfo parm)
{
var source = Context.Queryable<T>().Where(where);
return source.ToPage(parm);
}
public PagedInfo<T> GetPages(Expression<Func<T, bool>> where, PagerInfo parm, Expression<Func<T, object>> order, string orderEnum = "Asc")
{
var source = Context.Queryable<T>().Where(where).OrderByIF(orderEnum == "Asc", order, OrderByType.Asc).OrderByIF(orderEnum == "Desc", order, OrderByType.Desc);
return source.ToPage(parm);
}
/// <summary>
/// 查询所有数据(无分页,请慎用)
/// </summary>
/// <returns></returns>
public List<T> GetAll(bool useCache = false, int cacheSecond = 3600)
{
return Context.Queryable<T>().WithCacheIF(useCache, cacheSecond).ToList();
}
#endregion query
/// <summary>
/// 此方法不带output返回值
/// var list = new List<SugarParameter>();
/// list.Add(new SugarParameter(ParaName, ParaValue)); input
/// </summary>
/// <param name="procedureName"></param>
/// <param name="parameters"></param>
/// <returns></returns>
//public DataTable UseStoredProcedureToDataTable(string procedureName, List<SugarParameter> parameters)
//{
// return base.Context.Ado.UseStoredProcedure().GetDataTable(procedureName, parameters);
//}
/// <summary>
/// 带output返回值
/// var list = new List<SugarParameter>();
/// list.Add(new SugarParameter(ParaName, ParaValue, true)); output
/// list.Add(new SugarParameter(ParaName, ParaValue)); input
/// </summary>
/// <param name="procedureName"></param>
/// <param name="parameters"></param>
/// <returns></returns>
//public (DataTable, List<SugarParameter>) UseStoredProcedureToTuple(string procedureName, List<SugarParameter> parameters)
//{
// var result = (base.Context.Ado.UseStoredProcedure().GetDataTable(procedureName, parameters), parameters);
// return result;
//}
//public string QueryableToJson(string select, Expression<Func<T, bool>> expressionWhere)
//{
// throw new NotImplementedException();
//}
}
public static class QueryableExtension
{
/// <summary>
/// 读取列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="source"></param>
/// <param name="parm"></param>
/// <returns></returns>
public static PagedInfo<T> ToPage<T>(this ISugarQueryable<T> source, PagerInfo parm)
{
var page = new PagedInfo<T>();
var total = source.Count();
page.TotalCount = total;
page.PageSize = parm.PageSize;
page.PageIndex = parm.PageNum;
//page.DataSource = source.OrderByIF(!string.IsNullOrEmpty(parm.Sort), $"{parm.OrderBy} {(parm.Sort == "descending" ? "desc" : "asc")}").ToPageList(parm.PageNum, parm.PageSize);
page.Result = source.ToPageList(parm.PageNum, parm.PageSize);
return page;
}
}
}

View File

@ -1,56 +0,0 @@
using Infrastructure;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
namespace ZR.Repository.DbProvider
{
/// <summary>
/// SqlSugar ORM
/// </summary>
public class SugarDbContext
{
public SqlSugarClient Db; //用来处理事务多表查询和复杂的操作
/// <summary>
/// 使用SugarSql获取连接对象
/// 构造方法有问题
/// </summary>
/// <returns></returns>
public SugarDbContext()
{
string connStr = ConfigUtils.Instance.GetConnectionStrings(OptionsSetting.ConnAdmin);
string dbKey = ConfigUtils.Instance.GetAppConfig<string>(OptionsSetting.DbKey);
int dbType = ConfigUtils.Instance.GetAppConfig<int>(OptionsSetting.ConnDbType);
if (!string.IsNullOrEmpty(dbKey))
{
connStr = NETCore.Encrypt.EncryptProvider.DESDecrypt(connStr, dbKey);
}
Db = new SqlSugarClient(new List<ConnectionConfig>()
{
new ConnectionConfig(){
ConnectionString = connStr,
DbType = (DbType)dbType,
IsAutoCloseConnection = true,//开启自动释放模式和EF原理一样
InitKeyType = InitKeyType.Attribute,//从特性读取主键和自增列信息
ConfigId = 0
},
});
//调式代码 用来打印SQL
Db.Aop.OnLogExecuting = (sql, pars) =>
{
Console.BackgroundColor = ConsoleColor.Yellow;
Console.WriteLine("【SQL语句】" + sql.ToLower() + "\r\n" + Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
};
//出错打印日志
Db.Aop.OnError = (e) =>
{
Console.WriteLine($"[执行Sql出错]{e.Message}SQL={e.Sql}");
Console.WriteLine();
};
}
}
}

View File

@ -0,0 +1,165 @@
using Infrastructure.Model;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Data;
using System.Dynamic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;
using ZR.Model;
namespace ZR.Repository
{
public interface IBaseRepository<T> where T : class, new()
{
#region add
int Add(T parm, Expression<Func<T, object>> iClumns = null, bool ignoreNull = true);
int Add(T t);
int InsertIgnoreNullColumn(T t);
int InsertIgnoreNullColumn(T t, params string[] columns);
//int Insert(SqlSugarClient client, T t);
long InsertBigIdentity(T t);
int Insert(List<T> t);
int Insert(T parm, Expression<Func<T, object>> iClumns = null, bool ignoreNull = true);
int InsertIgnoreNullColumn(List<T> t);
int InsertIgnoreNullColumn(List<T> t, params string[] columns);
DbResult<bool> InsertTran(T t);
DbResult<bool> InsertTran(List<T> t);
T InsertReturnEntity(T t);
T InsertReturnEntity(T t, string sqlWith = SqlWith.UpdLock);
bool ExecuteCommand(string sql, object parameters);
bool ExecuteCommand(string sql, params SugarParameter[] parameters);
bool ExecuteCommand(string sql, List<SugarParameter> parameters);
#endregion add
#region update
bool UpdateEntity(T entity, bool ignoreNullColumns = false);
bool Update(T entity, Expression<Func<T, bool>> expression);
/// <summary>
/// 只更新表达式的值
/// </summary>
/// <param name="entity"></param>
/// <param name="expression"></param>
/// <returns></returns>
bool Update(T entity, Expression<Func<T, object>> expression, bool ignoreAllNull = false);
bool Update(T entity, Expression<Func<T, object>> expression, Expression<Func<T, bool>> where);
bool Update(SqlSugarClient client, T entity, Expression<Func<T, object>> expression, Expression<Func<T, bool>> where);
/// <summary>
///
/// </summary>
/// <param name="entity">T</param>
/// <param name="list">忽略更新</param>
/// <param name="isNull">Null不更新</param>
/// <returns></returns>
bool Update(T entity, List<string> list = null, bool isNull = true);
bool Update(List<T> entity);
bool Update(Expression<Func<T, bool>> where, Expression<Func<T, T>> columns);
#endregion update
//DbResult<bool> UseTran(Action action);
//DbResult<bool> UseTran(SqlSugarClient client, Action action);
//bool UseTran2(Action action);
#region delete
bool DeleteExp(Expression<Func<T, bool>> expression);
//bool Delete<PkType>(PkType[] primaryKeyValues);
int Delete(object[] obj);
int Delete(object id);
bool DeleteTable();
#endregion delete
#region query
/// <summary>
/// 根据条件查询分页数据
/// </summary>
/// <param name="where"></param>
/// <param name="parm"></param>
/// <returns></returns>
PagedInfo<T> GetPages(Expression<Func<T, bool>> where, PagerInfo parm);
PagedInfo<T> GetPages(Expression<Func<T, bool>> where, PagerInfo parm, Expression<Func<T, object>> order, string orderEnum = "Asc");
bool Any(Expression<Func<T, bool>> expression);
ISugarQueryable<T> Queryable();
List<T> GetAll(bool useCache = false, int cacheSecond = 3600);
//ISugarQueryable<ExpandoObject> Queryable(string tableName, string shortName);
//ISugarQueryable<T, T1, T2> Queryable<T1, T2>() where T1 : class where T2 : new();
List<T> QueryableToList(Expression<Func<T, bool>> expression);
Task<List<T>> QueryableToListAsync(Expression<Func<T, bool>> expression);
//string QueryableToJson(string select, Expression<Func<T, bool>> expressionWhere);
List<T> QueryableToList(string tableName);
List<T> QueryableToList(string tableName, Expression<Func<T, bool>> expression);
(List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, int pageIndex = 0, int pageSize = 10);
(List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, string order, int pageIndex = 0, int pageSize = 10);
(List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, Expression<Func<T, object>> orderFiled, string orderBy, int pageIndex = 0, int pageSize = 10);
//(List<T>, int) QueryableToPage(Expression<Func<T, bool>> expression, Bootstrap.BootstrapParams bootstrap);
List<T> SqlQueryToList(string sql, object obj = null);
/// <summary>
/// 获得一条数据
/// </summary>
/// <param name="where">Expression<Func<T, bool>></param>
/// <returns></returns>
T GetFirst(Expression<Func<T, bool>> where);
T GetId(object pkValue);
/// <summary>
/// 获得一条数据
/// </summary>
/// <param name="parm">string</param>
/// <returns></returns>
//T GetFirst(string parm);
#endregion query
#region Procedure
//DataTable UseStoredProcedureToDataTable(string procedureName, List<SugarParameter> parameters);
//(DataTable, List<SugarParameter>) UseStoredProcedureToTuple(string procedureName, List<SugarParameter> parameters);
#endregion Procedure
}
}

View File

@ -1,16 +0,0 @@
using AspectCore.DynamicProxy;
using System.Threading.Tasks;
using ZR.Repository.DbProvider;
namespace ZR.Repository.Interceptor
{
public class SqlLogInterceptorAttribute : AbstractInterceptorAttribute
{
public override Task Invoke(AspectContext context, AspectDelegate next)
{
global::System.Console.WriteLine("");
return next(context);
}
}
}

View File

@ -0,0 +1,20 @@
using System;
using Infrastructure.Attribute;
using ZR.Repository.System;
using ZR.Model.Models;
namespace ZR.Repository
{
/// <summary>
/// 代码生成演示仓储接口的实现
///
/// @author zr
/// @date 2021-09-27
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class GendemoRepository : BaseRepository<Gendemo>
{
#region
#endregion
}
}

View File

@ -1,21 +0,0 @@
using Infrastructure.Attribute;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZR.Repository.DbProvider;
namespace ZR.Repository.System
{
public class BaseRepository : SugarDbContext
{
protected void PrintLog()
{
//调式代码 用来打印SQL
Db.Aop.OnLogExecuting = (sql, pars) =>
{
Console.WriteLine("【SQL语句】" + sql.ToLower() + "\r\n" + Db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));
};
}
}
}

View File

@ -0,0 +1,93 @@
using Infrastructure.Attribute;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZR.Model.System.Generate;
namespace ZR.Repository.System
{
[AppService(ServiceLifetime = LifeTime.Transient)]
public class GenTableRepository : BaseRepository<GenTable>
{
}
[AppService(ServiceLifetime = LifeTime.Transient)]
public class GenTableColumnRepository : BaseRepository<GenTableColumn>
{
/// <summary>
/// 根据表id批量删除表字段
/// </summary>
/// <param name="tableId"></param>
/// <returns></returns>
public int DeleteGenTableColumn(long[] tableId)
{
return Context.Deleteable<GenTableColumn>().Where(f => tableId.Contains(f.TableId)).ExecuteCommand();
}
/// <summary>
/// 根据表名删除字段
/// </summary>
/// <param name="tableName"></param>
/// <returns></returns>
public int DeleteGenTableColumnByTableName(string tableName)
{
return Context.Deleteable<GenTableColumn>().Where(f => f.TableName == tableName).ExecuteCommand();
}
/// <summary>
/// 获取表所有字段
/// </summary>
/// <param name="tableId"></param>
/// <returns></returns>
public List<GenTableColumn> GenTableColumns(long tableId)
{
return Context.Queryable<GenTableColumn>().Where(f => f.TableId == tableId).OrderBy(x => x.Sort).ToList();
}
/// <summary>
/// 插入表字段
/// </summary>
/// <param name="tableColumn"></param>
/// <returns></returns>
public int InsertGenTableColumn(List<GenTableColumn> tableColumn)
{
return Context.Insertable(tableColumn).IgnoreColumns(x => new { x.Remark }).ExecuteCommand();
}
/// <summary>
/// 批量更新表字段
/// </summary>
/// <param name="tableColumn"></param>
/// <returns></returns>
public int UpdateGenTableColumn(List<GenTableColumn> tableColumn)
{
foreach (var item in tableColumn)
{
Context.Updateable<GenTableColumn>()
.Where(f => f.TableId == item.TableId)
.SetColumns(it => new GenTableColumn()
{
ColumnComment = item.ColumnComment,
CsharpField = item.CsharpField,
CsharpType = item.CsharpType,
IsQuery = item.IsQuery,
IsEdit = item.IsEdit,
IsInsert = item.IsInsert,
IsList = item.IsList,
QueryType = item.QueryType,
HtmlType = item.HtmlType,
IsRequired = item.IsRequired,
Sort = item.Sort,
Update_time = DateTime.Now,
DictType = item.DictType
})
.Where(f => f.ColumnId == item.ColumnId)
.ExecuteCommand();
}
return 1;
}
}
}

View File

@ -0,0 +1,21 @@
using System;
using Infrastructure.Attribute;
using ZR.Repository.System;
using ZR.Model.Models;
using ZR.Model.System;
namespace ZR.Repository
{
/// <summary>
/// 参数配置仓储接口的实现
///
/// @author zhaorui
/// @date 2021-09-29
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysConfigRepository : BaseRepository<SysConfig>
{
#region
#endregion
}
}

View File

@ -8,7 +8,7 @@ namespace ZR.Repository.System
/// 部门管理
/// </summary>
[AppService(ServiceLifetime= LifeTime.Transient)]
public class SysDeptRepository : BaseRepository
public class SysDeptRepository : BaseRepository<SysDept>
{
/// <summary>
///
@ -19,12 +19,12 @@ namespace ZR.Repository.System
{
string sql = "select * from sys_dept where find_in_set(@deptId, ancestors)";
return Db.SqlQueryable<SysDept>(sql).AddParameters(new { @deptId = deptId }).ToList();
return Context.SqlQueryable<SysDept>(sql).AddParameters(new { @deptId = deptId }).ToList();
}
public int UdateDeptChildren(SysDept dept)
{
return Db.Updateable(dept).UpdateColumns(it => new { it.Ancestors }).ExecuteCommand();
return Context.Updateable(dept).UpdateColumns(it => new { it.Ancestors }).ExecuteCommand();
}
}
}

View File

@ -9,7 +9,7 @@ namespace ZR.Repository.System
/// 字典数据
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysDictDataRepository : BaseRepository
public class SysDictDataRepository : BaseRepository<SysDictData>
{
/// <summary>
/// 字典类型数据搜索
@ -18,7 +18,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysDictData> SelectDictDataList(SysDictData dictData)
{
return Db.Queryable<SysDictData>()
return Context.Queryable<SysDictData>()
.WhereIF(!string.IsNullOrEmpty(dictData.DictLabel), it => it.DictLabel.Contains(dictData.DictLabel))
.WhereIF(!string.IsNullOrEmpty(dictData.Status), it => it.Status == dictData.Status)
.WhereIF(!string.IsNullOrEmpty(dictData.DictType), it => it.DictType == dictData.DictType)
@ -32,7 +32,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysDictData> SelectDictDataByType(string dictType)
{
return Db.Queryable<SysDictData>().Where(f => f.Status == "0" && f.DictType == dictType)
return Context.Queryable<SysDictData>().Where(f => f.Status == "0" && f.DictType == dictType)
.OrderBy(it => it.DictSort)
.ToList();
}
@ -44,8 +44,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public long InsertDictData(SysDictData dict)
{
var result = Db.Insertable(dict).IgnoreColumns(it => new { dict.Update_by })
.ExecuteReturnIdentity();
var result = InsertReturnBigIdentity(dict);
return result;
}
@ -56,7 +55,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public long UpdateDictData(SysDictData dict)
{
return Db.Updateable<SysDictData>()
return Context.Updateable<SysDictData>()
.SetColumns(t => new SysDictData()
{
Remark = dict.Remark,
@ -64,7 +63,9 @@ namespace ZR.Repository.System
DictSort = dict.DictSort,
DictLabel = dict.DictLabel,
DictValue = dict.DictValue,
Status = dict.Status
Status = dict.Status,
CssClass = dict.CssClass,
ListClass = dict.ListClass
})
.Where(f => f.DictCode == dict.DictCode).ExecuteCommand();
}
@ -76,7 +77,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteDictDataByIds(long[] dictCodes)
{
return Db.Deleteable<SysDictData>().In(dictCodes).ExecuteCommand();
return Delete(dictCodes);
}
/// <summary>
@ -88,7 +89,7 @@ namespace ZR.Repository.System
public int UpdateDictDataType(string old_dictType, string new_dictType)
{
//只更新DictType字段根据where条件
return Db.Updateable<SysDictData>()
return Context.Updateable<SysDictData>()
.SetColumns(t => new SysDictData() { DictType = new_dictType })
.Where(f => f.DictType == old_dictType)
.ExecuteCommand();

View File

@ -10,7 +10,7 @@ namespace ZR.Repository.System
/// 字典
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysDictRepository : BaseRepository
public class SysDictRepository : BaseRepository<SysDictType>
{
/// <summary>
/// 查询字段类型列表
@ -20,7 +20,7 @@ namespace ZR.Repository.System
public List<SysDictType> SelectDictTypeList(SysDictType dictType, Model.PagerInfo pager)
{
var totalNum = 0;
var list = Db
var list = Context
.Queryable<SysDictType>()
.WhereIF(!string.IsNullOrEmpty(dictType.DictName), it => it.DictName.Contains(dictType.DictName))
.WhereIF(!string.IsNullOrEmpty(dictType.Status), it => it.Status == dictType.Status)
@ -37,7 +37,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteDictTypeByIds(long[] id)
{
return Db.Deleteable<SysDictType>().In(id).ExecuteCommand();
return Context.Deleteable<SysDictType>().In(id).ExecuteCommand();
}
/// <summary>
@ -47,7 +47,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int UpdateDictType(SysDictType dictType)
{
return Db.Updateable(dictType).IgnoreColumns(it => new { dictType.Create_by }).ExecuteCommand();
return Context.Updateable(dictType).IgnoreColumns(it => new { dictType.Create_by }).ExecuteCommand();
}
}
}

View File

@ -8,7 +8,7 @@ using ZR.Model.System;
namespace ZR.Repository.System
{
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysLogininfoRepository : BaseRepository
public class SysLogininfoRepository : BaseRepository<SysLogininfor>
{
/// <summary>
/// 查询登录日志
@ -19,7 +19,7 @@ namespace ZR.Repository.System
public List<SysLogininfor> GetLoginLog(SysLogininfor logininfoDto, PagerInfo pager)
{
int totalCount = 0;
var list = Db.Queryable<SysLogininfor>()
var list = Context.Queryable<SysLogininfor>()
.Where(it => it.loginTime >= logininfoDto.BeginTime && it.loginTime <= logininfoDto.EndTime)
.WhereIF(logininfoDto.ipaddr.IfNotEmpty(), f => f.ipaddr == logininfoDto.ipaddr)
.WhereIF(logininfoDto.userName.IfNotEmpty(), f => f.userName.Contains(logininfoDto.userName))
@ -38,7 +38,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public void AddLoginInfo(SysLogininfor sysLogininfor)
{
int result = Db.Insertable(sysLogininfor)
int result = Context.Insertable(sysLogininfor)
.IgnoreColumns(it => new { it.Create_by, it.Create_time, it.Remark })
.ExecuteReturnIdentity();
}
@ -50,7 +50,7 @@ namespace ZR.Repository.System
{
string sql = "truncate table sys_logininfor";
Db.Ado.ExecuteCommand(sql);
Context.Ado.ExecuteCommand(sql);
}
/// <summary>
@ -60,7 +60,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteLogininforByIds(long[] ids)
{
return Db.Deleteable<SysLogininfor>().In(ids).ExecuteCommand();
return Context.Deleteable<SysLogininfor>().In(ids).ExecuteCommand();
}
/// <summary>
@ -70,7 +70,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public SysUser Login(LoginBodyDto user)
{
return Db.Queryable<SysUser>().First(it => it.UserName == user.Username && it.Password == user.Password);
return Context.Queryable<SysUser>().First(it => it.UserName == user.Username && it.Password == user.Password);
}
/// <summary>
@ -81,7 +81,8 @@ namespace ZR.Repository.System
/// <returns></returns>
public void UpdateLoginInfo(LoginBodyDto user, long userId)
{
Db.Updateable(new SysUser() { LoginIP = user.LoginIP, LoginDate = Db.GetDate(), UserId = userId })
var db = Context;
db.Updateable(new SysUser() { LoginIP = user.LoginIP, LoginDate = db.GetDate(), UserId = userId })
.UpdateColumns(it => new { it.LoginIP, it.LoginDate })
.ExecuteCommand();
}

View File

@ -12,7 +12,7 @@ namespace ZR.Repository.System
/// 系统菜单
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysMenuRepository : BaseRepository
public class SysMenuRepository : BaseRepository<SysMenu>
{
/// <summary>
/// 获取所有菜单(菜单管理)
@ -20,7 +20,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysMenu> SelectMenuList(SysMenu menu)
{
return Db.Queryable<SysMenu>()
return Context.Queryable<SysMenu>()
.WhereIF(!string.IsNullOrEmpty(menu.menuName), it => it.menuName.Contains(menu.menuName))
.WhereIF(!string.IsNullOrEmpty(menu.visible), it => it.visible == menu.visible)
.WhereIF(!string.IsNullOrEmpty(menu.status), it => it.status == menu.status)
@ -36,7 +36,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysMenu> SelectMenuListByUserId(SysMenu sysMenu, long userId)
{
return Db.Queryable<SysMenu, SysRoleMenu, SysUserRole, SysRole>((menu, roleMenu, userRole, role) => new JoinQueryInfos(
return Context.Queryable<SysMenu, SysRoleMenu, SysUserRole, SysRole>((menu, roleMenu, userRole, role) => new JoinQueryInfos(
JoinType.Left, menu.menuId == roleMenu.Menu_id,
JoinType.Left, roleMenu.Role_id == userRole.RoleId,
JoinType.Left, userRole.RoleId == role.RoleId
@ -60,7 +60,7 @@ namespace ZR.Repository.System
{
var menuTypes = new string[] { "M", "C" };
return Db.Queryable<SysMenu>()
return Context.Queryable<SysMenu>()
.Where(f => f.status == "0" && menuTypes.Contains(f.menuType))
.OrderBy(it => new { it.parentId, it.orderNum }).ToList();
}
@ -73,7 +73,7 @@ namespace ZR.Repository.System
public List<SysMenu> SelectMenuTreeByRoleIds(List<long> roleIds)
{
var menuTypes = new string[] { "M", "C"};
return Db.Queryable<SysMenu, SysRoleMenu>((menu, roleMenu) => new JoinQueryInfos(
return Context.Queryable<SysMenu, SysRoleMenu>((menu, roleMenu) => new JoinQueryInfos(
JoinType.Left, menu.menuId == roleMenu.Menu_id
))
.Where((menu, roleMenu) => roleIds.Contains(roleMenu.Role_id) && menuTypes.Contains(menu.menuType) && menu.status == "0")
@ -90,7 +90,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public SysMenu SelectMenuById(int menuId)
{
return Db.Queryable<SysMenu>().Where(it => it.menuId == menuId).Single();
return Context.Queryable<SysMenu>().Where(it => it.menuId == menuId).Single();
}
/// <summary>
@ -100,6 +100,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int AddMenu(SysMenu menu)
{
var Db = Context;
menu.Create_time = Db.GetDate();
menu.menuId = Db.Insertable(menu).ExecuteReturnIdentity();
return 1;
@ -112,7 +113,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int EditMenu(SysMenu menu)
{
return Db.Updateable(menu).ExecuteCommand();
return Context.Updateable(menu).ExecuteCommand();
}
/// <summary>
@ -122,7 +123,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteMenuById(int menuId)
{
return Db.Deleteable<SysMenu>().Where(it => it.menuId == menuId).ExecuteCommand();
return Context.Deleteable<SysMenu>().Where(it => it.menuId == menuId).ExecuteCommand();
}
/// <summary>
@ -132,7 +133,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int ChangeSortMenu(MenuDto menuDto)
{
var result = Db.Updateable(new SysMenu() { menuId = menuDto.MenuId, orderNum = menuDto.orderNum })
var result = Context.Updateable(new SysMenu() { menuId = menuDto.MenuId, orderNum = menuDto.orderNum })
.UpdateColumns(it => new { it.orderNum }).ExecuteCommand();
return result;
}
@ -144,7 +145,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysMenu> SelectMenuPermsByUserId(long userId)
{
return Db.Queryable<SysMenu, SysRoleMenu, SysUserRole, SysRole>((m, rm, ur, r) => new JoinQueryInfos(
return Context.Queryable<SysMenu, SysRoleMenu, SysUserRole, SysRole>((m, rm, ur, r) => new JoinQueryInfos(
JoinType.Left, m.menuId == rm.Menu_id,
JoinType.Left, rm.Role_id == ur.RoleId,
JoinType.Left, ur.RoleId == r.RoleId
@ -161,7 +162,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public SysMenu CheckMenuNameUnique(SysMenu menu)
{
return Db.Queryable<SysMenu>()
return Context.Queryable<SysMenu>()
.Where(it => it.menuName == menu.menuName && it.parentId == menu.parentId).Single();
}
@ -172,7 +173,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int HasChildByMenuId(long menuId)
{
return Db.Queryable<SysMenu>().Where(it => it.parentId == menuId).Count();
return Context.Queryable<SysMenu>().Where(it => it.parentId == menuId).Count();
}
#region RoleMenu
@ -184,7 +185,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int CheckMenuExistRole(long menuId)
{
return Db.Queryable<SysRoleMenu>().Where(it => it.Menu_id == menuId).Count();
return Context.Queryable<SysRoleMenu>().Where(it => it.Menu_id == menuId).Count();
}
#endregion

View File

@ -8,7 +8,7 @@ using ZR.Model.System;
namespace ZR.Repository.System
{
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysOperLogRepository : BaseRepository
public class SysOperLogRepository : BaseRepository<SysOperLog>
{
/// <summary>
/// 查询操作日志
@ -19,7 +19,7 @@ namespace ZR.Repository.System
public List<SysOperLog> GetSysOperLog(SysOperLogDto sysOper, PagerInfo pagerInfo)
{
int totalCount = 0;
var list = Db.Queryable<SysOperLog>()
var list = Context.Queryable<SysOperLog>()
.Where(it => it.operTime >= sysOper.BeginTime && it.operTime <= sysOper.EndTime)
.WhereIF(sysOper.Title.IfNotEmpty(), it => it.title.Contains(sysOper.Title))
.WhereIF(sysOper.operName.IfNotEmpty(), it => it.operName.Contains(sysOper.operName))
@ -38,7 +38,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public void AddSysOperLog(SysOperLog sysOperLog)
{
Db.Insertable(sysOperLog).ExecuteCommandAsync();
Context.Insertable(sysOperLog).ExecuteCommandAsync();
}
/// <summary>
@ -47,7 +47,7 @@ namespace ZR.Repository.System
public void ClearOperLog()
{
string sql = "truncate table sys_oper_log";
Db.Ado.ExecuteCommand(sql);
Context.Ado.ExecuteCommand(sql);
}
/// <summary>
@ -57,7 +57,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteOperLogByIds(long[] operIds)
{
return Db.Deleteable<SysOperLog>().In(operIds).ExecuteCommand();
return Context.Deleteable<SysOperLog>().In(operIds).ExecuteCommand();
}
/// <summary>
@ -67,7 +67,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public SysOperLog SelectOperLogById(long operId)
{
return Db.Queryable<SysOperLog>().InSingle(operId);
return Context.Queryable<SysOperLog>().InSingle(operId);
}
}
}

View File

@ -0,0 +1,15 @@
using Infrastructure.Attribute;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZR.Model.System;
namespace ZR.Repository.System
{
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysPostRepository : BaseRepository<SysPost>
{
}
}

View File

@ -9,7 +9,7 @@ namespace ZR.Repository.System
/// 角色操作类
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysRoleRepository : BaseRepository
public class SysRoleRepository : BaseRepository<SysRole>
{
/// <summary>
/// 根据条件分页查询角色数据
@ -17,7 +17,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysRole> SelectRoleList(SysRole sysRole)
{
return Db.Queryable<SysRole>()
return Context.Queryable<SysRole>()
.Where(role => role.DelFlag == "0")
.WhereIF(!string.IsNullOrEmpty(sysRole.RoleName), role => role.RoleName.Contains(sysRole.RoleName))
.WhereIF(!string.IsNullOrEmpty(sysRole.Status), role => role.Status == sysRole.Status)
@ -33,7 +33,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysRole> SelectRolePermissionByUserId(long userId)
{
return Db.Queryable<SysRole>()
return Context.Queryable<SysRole>()
.Where(role => role.DelFlag == "0")
.Where(it => SqlFunc.Subqueryable<SysUserRole>().Where(s => s.UserId == userId).Any())
.OrderBy(role => role.RoleSort)
@ -46,7 +46,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysRole> SelectRoleAll()
{
return Db.Queryable<SysRole>().OrderBy(it => it.RoleSort).ToList();
return Context.Queryable<SysRole>().OrderBy(it => it.RoleSort).ToList();
}
/// <summary>
@ -56,7 +56,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public SysRole SelectRoleById(long roleId)
{
return Db.Queryable<SysRole>().InSingle(roleId);
return Context.Queryable<SysRole>().InSingle(roleId);
}
/// <summary>
@ -66,7 +66,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteRoleByRoleIds(long[] roleId)
{
return Db.Deleteable<SysRole>().In(roleId).ExecuteCommand();
return Context.Deleteable<SysRole>().In(roleId).ExecuteCommand();
}
/// <summary>
@ -76,7 +76,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysRole> SelectUserRoleListByUserId(long userId)
{
return Db.Queryable<SysUserRole, SysRole>((ur, r) => new SqlSugar.JoinQueryInfos(
return Context.Queryable<SysUserRole, SysRole>((ur, r) => new SqlSugar.JoinQueryInfos(
SqlSugar.JoinType.Left, ur.RoleId == r.RoleId
)).Where((ur, r) => ur.UserId == userId)
.Select((ur, r) => r).ToList();
@ -91,7 +91,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysRoleMenu> SelectRoleMenuByRoleId(long roleId)
{
return Db.Queryable<SysRoleMenu>().Where(it => it.Role_id == roleId).ToList();
return Context.Queryable<SysRoleMenu>().Where(it => it.Role_id == roleId).ToList();
}
/// <summary>
@ -101,7 +101,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int AddRoleMenu(List<SysRoleMenu> sysRoleMenus)
{
return Db.Insertable(sysRoleMenus).ExecuteCommand();
return Context.Insertable(sysRoleMenus).ExecuteCommand();
}
/// <summary>
@ -111,7 +111,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteRoleMenuByRoleId(long roleId)
{
return Db.Deleteable<SysRoleMenu>().Where(it => it.Role_id == roleId).ExecuteCommand();
return Context.Deleteable<SysRoleMenu>().Where(it => it.Role_id == roleId).ExecuteCommand();
}
#endregion
@ -123,8 +123,8 @@ namespace ZR.Repository.System
/// <returns></returns>
public long InsertRole(SysRole sysRole)
{
sysRole.Create_time = Db.GetDate();
return Db.Insertable(sysRole).ExecuteReturnBigIdentity();
sysRole.Create_time = Context.GetDate();
return Context.Insertable(sysRole).ExecuteReturnBigIdentity();
}
/// <summary>
@ -134,7 +134,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int UpdateSysRole(SysRole sysRole)
{
var db = Db;
var db = Context;
sysRole.Update_time = db.GetDate();
return db.Updateable<SysRole>()
@ -156,7 +156,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int UpdateRoleStatus(SysRole role)
{
return Db.Updateable(role).UpdateColumns(t => new { t.Status }).ExecuteCommand();
return Context.Updateable(role).UpdateColumns(t => new { t.Status }).ExecuteCommand();
}
/// <summary>
@ -166,7 +166,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public SysRole CheckRoleKeyUnique(string roleKey)
{
return Db.Queryable<SysRole>().Where(it => it.RoleKey == roleKey).Single();
return Context.Queryable<SysRole>().Where(it => it.RoleKey == roleKey).Single();
}
/// <summary>
@ -176,7 +176,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public SysRole CheckRoleNameUnique(string roleName)
{
return Db.Queryable<SysRole>().Where(it => it.RoleName == roleName).Single();
return Context.Queryable<SysRole>().Where(it => it.RoleName == roleName).Single();
}
}
}

View File

@ -9,7 +9,7 @@ namespace ZR.Repository.System
/// 用户岗位
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysUserPostRepository : BaseRepository
public class SysUserPostRepository : BaseRepository<SysUserPost>
{
/// <summary>
/// 获取用户岗位
@ -18,7 +18,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysPost> SelectPostsByUserId(long userId)
{
return Db.Queryable<SysPost, SysUserPost>((p, up) => new JoinQueryInfos(
return Context.Queryable<SysPost, SysUserPost>((p, up) => new JoinQueryInfos(
JoinType.Left, up.PostId == p.PostId
)).Where((p, up) => up.UserId == userId)
.Select<SysPost>().ToList();

View File

@ -10,7 +10,7 @@ namespace ZR.Repository.System
/// 用户管理
/// </summary>
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysUserRepository : BaseRepository
public class SysUserRepository : BaseRepository<SysUser>
{
/// <summary>
/// 根据条件分页查询用户列表
@ -25,7 +25,7 @@ namespace ZR.Repository.System
left join sys_dept d on u.deptId = d.deptId
WHERE u.delFlag = '0' ";
int totalCount = 0;
var list = Db.SqlQueryable<SysUser>(sql)
var list = Context.SqlQueryable<SysUser>(sql)
.WhereIF(!string.IsNullOrEmpty(user.UserName), it => it.UserName.Contains(user.UserName))
.WhereIF(!string.IsNullOrEmpty(user.Status), it => it.Status == user.Status)
.WhereIF(user.BeginTime != DateTime.MinValue && user.BeginTime != null, it => it.Create_time >= user.BeginTime)
@ -44,7 +44,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public SysUser SelectUserById(long userId)
{
return Db.Queryable<SysUser>().Where(f => f.UserId == userId).First();
return Context.Queryable<SysUser>().Where(f => f.UserId == userId).First();
}
/// <summary>
@ -54,7 +54,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int CheckUserNameUnique(string userName)
{
return Db.Queryable<SysUser>().Where(it => it.UserName == userName).Count();
return Context.Queryable<SysUser>().Where(it => it.UserName == userName).Count();
}
/// <summary>
@ -65,7 +65,7 @@ namespace ZR.Repository.System
public int AddUser(SysUser sysUser)
{
sysUser.Create_time = DateTime.Now;
return Db.Insertable(sysUser).ExecuteReturnIdentity();
return Context.Insertable(sysUser).ExecuteReturnIdentity();
}
/// <summary>
@ -76,7 +76,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int ResetPwd(long userid, string password)
{
return Db.Updateable(new SysUser() { UserId = userid, Password = password })
return Context.Updateable(new SysUser() { UserId = userid, Password = password })
.UpdateColumns(it => new { it.Password }).ExecuteCommand();
}
@ -87,7 +87,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int ChangeUserStatus(SysUser user)
{
return Db.Updateable(user).UpdateColumns(t => new { t.Status })
return Context.Updateable(user).UpdateColumns(t => new { t.Status })
.ExecuteCommand();
}
@ -98,7 +98,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteUser(long userid)
{
return Db.Updateable(new SysUser() { UserId = userid, DelFlag = "2" })
return Context.Updateable(new SysUser() { UserId = userid, DelFlag = "2" })
.UpdateColumns(t => t.DelFlag)
.ExecuteCommand();
}
@ -110,7 +110,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int UpdateUser(SysUser user)
{
return Db.Updateable(user)
return Context.Updateable(user)
//.SetColumns(t => new SysUser()
//{
// UserName = user.UserName,
@ -136,7 +136,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int UpdatePhoto(SysUser user)
{
return Db.Updateable<SysUser>()
return Context.Updateable<SysUser>()
.SetColumns(t => new SysUser()
{
Avatar = user.Avatar

View File

@ -6,7 +6,7 @@ using ZR.Model.System;
namespace ZR.Repository.System
{
[AppService(ServiceLifetime = LifeTime.Transient)]
public class SysUserRoleRepository : BaseRepository
public class SysUserRoleRepository : BaseRepository<SysUserRole>
{
/// <summary>
/// 删除用户角色
@ -15,7 +15,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteUserRoleByUserId(int userId)
{
return Db.Deleteable<SysUserRole>().Where(it => it.UserId == userId).ExecuteCommand();
return Context.Deleteable<SysUserRole>().Where(it => it.UserId == userId).ExecuteCommand();
}
/// <summary>
@ -26,7 +26,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteRoleUserByUserIds(long roleId, List<long> userIds)
{
return Db.Deleteable<SysUserRole>().Where(it => it.RoleId == roleId && userIds.Contains(it.UserId))
return Context.Deleteable<SysUserRole>().Where(it => it.RoleId == roleId && userIds.Contains(it.UserId))
.ExecuteCommand();
}
@ -37,7 +37,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int AddUserRole(List<SysUserRole> sysUsers)
{
return Db.Insertable(sysUsers).ExecuteCommand();
return Context.Insertable(sysUsers).ExecuteCommand();
}
/// <summary>
@ -47,7 +47,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int DeleteUserRoleByRoleId(int roleId)
{
return Db.Deleteable<SysUserRole>().In(roleId).ExecuteCommand();
return Context.Deleteable<SysUserRole>().In(roleId).ExecuteCommand();
}
/// <summary>
@ -57,7 +57,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public int CountUserRoleByRoleId(long roleId)
{
return Db.Queryable<SysUserRole>().Where(it => it.RoleId == roleId).Count();
return Context.Queryable<SysUserRole>().Where(it => it.RoleId == roleId).Count();
}
/// <summary>
@ -67,7 +67,7 @@ namespace ZR.Repository.System
/// <returns></returns>
public List<SysUser> GetSysUsersByRoleId(long roleId)
{
return Db.Queryable<SysUserRole, SysUser>((t1, u) => new JoinQueryInfos(
return Context.Queryable<SysUserRole, SysUser>((t1, u) => new JoinQueryInfos(
JoinType.Left, t1.UserId == u.UserId))
.Where((t1, u) => t1.RoleId == roleId && u.DelFlag == "0")
.Select((t1, u) => u)

View File

@ -1,11 +1,4 @@
using Infrastructure.Attribute;
using Infrastructure.Model;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using ZR.Model;
using ZR.Repository.DbProvider;
using ZR.Repository;
namespace ZR.Service
{
@ -13,313 +6,284 @@ namespace ZR.Service
/// 基础服务定义
/// </summary>
/// <typeparam name="T"></typeparam>
public class BaseService<T> : SugarDbContext, IBaseService<T> where T : class, new()
public class BaseService<T> : BaseRepository<T>, IBaseService<T> where T : class, new()
{
#region
//#region 添加操作
///// <summary>
///// 添加一条数据
///// </summary>
///// <param name="parm">T</param>
///// <returns></returns>
//public int Add(T parm)
//{
// return Add(parm);// Context.Insertable(parm).RemoveDataCache().ExecuteCommand();
//}
/// <summary>
/// 启用事务
/// </summary>
public void BeginTran()
{
Db.Ado.BeginTran();
}
///// <summary>
///// 添加
///// </summary>
///// <param name="parm"></param>
///// <param name="iClumns">插入列</param>
///// <param name="ignoreNull">忽略null列</param>
///// <returns></returns>
//public int Add(T parm, Expression<Func<T, object>> iClumns = null, bool ignoreNull = true)
//{
// return Add(parm);
//}
/// <summary>
/// 提交事务
/// </summary>
public void CommitTran()
{
Db.Ado.CommitTran();
}
///// <summary>
///// 批量添加数据
///// </summary>
///// <param name="parm">List<T></param>
///// <returns></returns>
//public int Add(List<T> parm)
//{
// return 1;// Context.Insertable(parm).RemoveDataCache().ExecuteCommand();
//}
/// <summary>
/// 回滚事务
/// </summary>
public void RollbackTran()
{
Db.Ado.RollbackTran();
}
///// <summary>
///// 添加或更新数据,不推荐使用了
///// </summary>
///// <param name="parm">List<T></param>
///// <returns></returns>
//public T Saveable(T parm, Expression<Func<T, object>> uClumns = null, Expression<Func<T, object>> iColumns = null)
//{
// var command = Context.Saveable(parm);
#endregion
// if (uClumns != null)
// {
// command = command.UpdateIgnoreColumns(uClumns);
// }
#region
/// <summary>
/// 添加一条数据
/// </summary>
/// <param name="parm">T</param>
/// <returns></returns>
public int Add(T parm)
{
return Db.Insertable(parm).RemoveDataCache().ExecuteCommand();
}
// if (iColumns != null)
// {
// command = command.InsertIgnoreColumns(iColumns);
// }
/// <summary>
/// 添加
/// </summary>
/// <param name="parm"></param>
/// <param name="iClumns">插入列</param>
/// <param name="ignoreNull">忽略null列</param>
/// <returns></returns>
public int Add(T parm, Expression<Func<T, object>> iClumns = null, bool ignoreNull = true)
{
return Db.Insertable(parm).InsertColumns(iClumns).IgnoreColumns(ignoreNullColumn: ignoreNull).ExecuteCommand();
}
// return command.ExecuteReturnEntity();
//}
/// <summary>
/// 批量添加数据
/// </summary>
/// <param name="parm">List<T></param>
/// <returns></returns>
public int Add(List<T> parm)
{
return Db.Insertable(parm).RemoveDataCache().ExecuteCommand();
}
///// <summary>
///// 批量添加或更新数据
///// </summary>
///// <param name="parm">List<T></param>
///// <returns></returns>
//public List<T> Saveable(List<T> parm, Expression<Func<T, object>> uClumns = null, Expression<Func<T, object>> iColumns = null)
//{
// var command = Context.Saveable(parm);
/// <summary>
/// 添加或更新数据,不推荐使用了
/// </summary>
/// <param name="parm">List<T></param>
/// <returns></returns>
public T Saveable(T parm, Expression<Func<T, object>> uClumns = null, Expression<Func<T, object>> iColumns = null)
{
var command = Db.Saveable(parm);
// if (uClumns != null)
// {
// command = command.UpdateIgnoreColumns(uClumns);
// }
if (uClumns != null)
{
command = command.UpdateIgnoreColumns(uClumns);
}
// if (iColumns != null)
// {
// command = command.InsertIgnoreColumns(iColumns);
// }
if (iColumns != null)
{
command = command.InsertIgnoreColumns(iColumns);
}
// return command.ExecuteReturnList();
//}
//#endregion
return command.ExecuteReturnEntity();
}
//#region 查询操作
/// <summary>
/// 批量添加或更新数据
/// </summary>
/// <param name="parm">List<T></param>
/// <returns></returns>
public List<T> Saveable(List<T> parm, Expression<Func<T, object>> uClumns = null, Expression<Func<T, object>> iColumns = null)
{
var command = Db.Saveable(parm);
///// <summary>
///// 根据条件查询数据是否存在
///// </summary>
///// <param name="where">条件表达式树</param>
///// <returns></returns>
//public bool Any(Expression<Func<T, bool>> where)
//{
// return true;// base.Context.Any(where);
//}
if (uClumns != null)
{
command = command.UpdateIgnoreColumns(uClumns);
}
///// <summary>
///// 根据条件合计字段
///// </summary>
///// <param name="where">条件表达式树</param>
///// <returns></returns>
//public TResult Sum<TResult>(Expression<Func<T, bool>> where, Expression<Func<T, TResult>> field)
//{
// return base.Context.Queryable<T>().Where(where).Sum(field);
//}
if (iColumns != null)
{
command = command.InsertIgnoreColumns(iColumns);
}
///// <summary>
///// 根据主值查询单条数据
///// </summary>
///// <param name="pkValue">主键值</param>
///// <returns>泛型实体</returns>
////public T GetId(object pkValue)
////{
//// return base.Context.Queryable<T>().InSingle(pkValue);
////}
return command.ExecuteReturnList();
}
#endregion
///// <summary>
///// 根据主键查询多条数据
///// </summary>
///// <param name="ids"></param>
///// <returns></returns>
//public List<T> GetIn(object[] ids)
//{
// return Context.Queryable<T>().In(ids).ToList();
//}
#region
///// <summary>
///// 根据条件取条数
///// </summary>
///// <param name="where">条件表达式树</param>
///// <returns></returns>
//public int GetCount(Expression<Func<T, bool>> where)
//{
// return Context.Queryable<T>().Count(where);
/// <summary>
/// 根据条件查询数据是否存在
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
public bool Any(Expression<Func<T, bool>> where)
{
return Db.Queryable<T>().Any(where);
}
//}
/// <summary>
/// 根据条件合计字段
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
public TResult Sum<TResult>(Expression<Func<T, bool>> where, Expression<Func<T, TResult>> field)
{
return Db.Queryable<T>().Where(where).Sum(field);
}
///// <summary>
///// 查询所有数据(无分页,请慎用)
///// </summary>
///// <returns></returns>
//public List<T> GetAll(bool useCache = false, int cacheSecond = 3600)
//{
// return Context.Queryable<T>().WithCacheIF(useCache, cacheSecond).ToList();
//}
/// <summary>
/// 根据主值查询单条数据
/// </summary>
/// <param name="pkValue">主键值</param>
/// <returns>泛型实体</returns>
public T GetId(object pkValue)
{
return Db.Queryable<T>().InSingle(pkValue);
}
///// <summary>
///// 获得一条数据
///// </summary>
///// <param name="where">Expression<Func<T, bool>></param>
///// <returns></returns>
//public T GetFirst2(Expression<Func<T, bool>> where)
//{
// return base.GetFirst(where);// Context.Queryable<T>().Where(where).First();
//}
/// <summary>
/// 根据主键查询多条数据
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
public List<T> GetIn(object[] ids)
{
return Db.Queryable<T>().In(ids).ToList();
}
///// <summary>
///// 获得一条数据
///// </summary>
///// <param name="parm">string</param>
///// <returns></returns>
////public T GetFirst(string parm)
////{
//// return Context.Queryable<T>().Where(parm).First();
////}
/// <summary>
/// 根据条件取条数
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
public int GetCount(Expression<Func<T, bool>> where)
{
return Db.Queryable<T>().Count(where);
///// <summary>
///// 根据条件查询分页数据
///// </summary>
///// <param name="where"></param>
///// <param name="parm"></param>
///// <returns></returns>
//public PagedInfo<T> GetPages(Expression<Func<T, bool>> where, PagerInfo parm)
//{
// var source = Context.Queryable<T>().Where(where);
}
// return source.ToPage(parm);
//}
/// <summary>
/// 查询所有数据(无分页,请慎用)
/// </summary>
/// <returns></returns>
public List<T> GetAll(bool useCache = false, int cacheSecond = 3600)
{
return Db.Queryable<T>().WithCacheIF(useCache, cacheSecond).ToList();
}
//public PagedInfo<T> GetPages(Expression<Func<T, bool>> where, PagerInfo parm, Expression<Func<T, object>> order, string orderEnum = "Asc")
//{
// var source = Context.Queryable<T>().Where(where).OrderByIF(orderEnum == "Asc", order, OrderByType.Asc).OrderByIF(orderEnum == "Desc", order, OrderByType.Desc);
/// <summary>
/// 获得一条数据
/// </summary>
/// <param name="where">Expression<Func<T, bool>></param>
/// <returns></returns>
public T GetFirst(Expression<Func<T, bool>> where)
{
return Db.Queryable<T>().Where(where).First();
}
/// <summary>
/// 获得一条数据
/// </summary>
/// <param name="parm">string</param>
/// <returns></returns>
public T GetFirst(string parm)
{
return Db.Queryable<T>().Where(parm).First();
}
/// <summary>
/// 根据条件查询分页数据
/// </summary>
/// <param name="where"></param>
/// <param name="parm"></param>
/// <returns></returns>
public PagedInfo<T> GetPages(Expression<Func<T, bool>> where, PagerInfo parm)
{
var source = Db.Queryable<T>().Where(where);
return source.ToPage(parm);
}
public PagedInfo<T> GetPages(Expression<Func<T, bool>> where, PagerInfo parm, Expression<Func<T, object>> order, string orderEnum = "Asc")
{
var source = Db.Queryable<T>().Where(where).OrderByIF(orderEnum == "Asc", order, OrderByType.Asc).OrderByIF(orderEnum == "Desc", order, OrderByType.Desc);
return source.ToPage(parm);
}
// return source.ToPage(parm);
//}
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
public List<T> GetWhere(Expression<Func<T, bool>> where, bool useCache = false, int cacheSecond = 3600)
{
var query = Db.Queryable<T>().Where(where).WithCacheIF(useCache, cacheSecond);
return query.ToList();
}
// public List<T> GetWhere(Expression<Func<T, bool>> where, bool useCache = false, int cacheSecond = 3600)
// {
// var query = Context.Queryable<T>().Where(where).WithCacheIF(useCache, cacheSecond);
// return query.ToList();
// }
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
public List<T> GetWhere(Expression<Func<T, bool>> where, Expression<Func<T, object>> order, string orderEnum = "Asc", bool useCache = false, int cacheSecond = 3600)
{
var query = Db.Queryable<T>().Where(where).OrderByIF(orderEnum == "Asc", order, OrderByType.Asc).OrderByIF(orderEnum == "Desc", order, OrderByType.Desc).WithCacheIF(useCache, cacheSecond);
return query.ToList();
}
// /// <summary>
///// 根据条件查询数据
///// </summary>
///// <param name="where">条件表达式树</param>
///// <returns></returns>
// public List<T> GetWhere(Expression<Func<T, bool>> where, Expression<Func<T, object>> order, string orderEnum = "Asc", bool useCache = false, int cacheSecond = 3600)
// {
// var query = Context.Queryable<T>().Where(where).OrderByIF(orderEnum == "Asc", order, OrderByType.Asc).OrderByIF(orderEnum == "Desc", order, OrderByType.Desc).WithCacheIF(useCache, cacheSecond);
// return query.ToList();
// }
#endregion
// #endregion
#region
//#region 修改操作
/// <summary>
/// 修改一条数据
/// </summary>
/// <param name="parm">T</param>
/// <returns></returns>
public int Update(T parm)
{
return Db.Updateable(parm).RemoveDataCache().ExecuteCommand();
}
/////// <summary>
/////// 修改一条数据
/////// </summary>
/////// <param name="parm">T</param>
/////// <returns></returns>
////public int Update(T parm)
////{
//// return Context.Updateable(parm).RemoveDataCache().ExecuteCommand();
////}
/// <summary>
/// 批量修改
/// </summary>
/// <param name="parm">T</param>
/// <returns></returns>
public int Update(List<T> parm)
{
return Db.Updateable(parm).RemoveDataCache().ExecuteCommand();
}
/////// <summary>
/////// 批量修改
/////// </summary>
/////// <param name="parm">T</param>
/////// <returns></returns>
////public int Update(List<T> parm)
////{
//// return Context.Updateable(parm).RemoveDataCache().ExecuteCommand();
////}
/// <summary>
/// 按查询条件更新
/// </summary>
/// <param name="where"></param>
/// <param name="columns"></param>
/// <returns></returns>
public int Update(Expression<Func<T, bool>> where, Expression<Func<T, T>> columns)
{
return Db.Updateable<T>().SetColumns(columns).Where(where).RemoveDataCache().ExecuteCommand();
}
/////// <summary>
/////// 按查询条件更新
/////// </summary>
/////// <param name="where"></param>
/////// <param name="columns"></param>
/////// <returns></returns>
////public int Update(Expression<Func<T, bool>> where, Expression<Func<T, T>> columns)
////{
//// return Context.Updateable<T>().SetColumns(columns).Where(where).RemoveDataCache().ExecuteCommand();
////}
#endregion
//#endregion
#region
//#region 删除操
/// <summary>
/// 删除一条或多条数据
/// </summary>
/// <param name="parm">string</param>
/// <returns></returns>
public int Delete(object id)
{
return Db.Deleteable<T>(id).RemoveDataCache().ExecuteCommand();
}
/////// <summary>
/////// 删除一条或多条数据
/////// </summary>
/////// <param name="parm">string</param>
/////// <returns></returns>
////public int Delete(object id)
////{
//// return Context.Deleteable<T>(id).RemoveDataCache().ExecuteCommand();
////}
/// <summary>
/// 删除一条或多条数据
/// </summary>
/// <param name="parm">string</param>
/// <returns></returns>
public int Delete(object[] ids)
{
return Db.Deleteable<T>().In(ids).RemoveDataCache().ExecuteCommand();
}
/////// <summary>
/////// 删除一条或多条数据
/////// </summary>
/////// <param name="parm">string</param>
/////// <returns></returns>
////public int Delete(object[] ids)
////{
//// return Context.Deleteable<T>().In(ids).RemoveDataCache().ExecuteCommand();
////}
/// <summary>
/// 根据条件删除一条或多条数据
/// </summary>
/// <param name="where">过滤条件</param>
/// <returns></returns>
public int Delete(Expression<Func<T, bool>> where)
{
return Db.Deleteable<T>().Where(where).RemoveDataCache().ExecuteCommand();
}
/////// <summary>
/////// 根据条件删除一条或多条数据
/////// </summary>
/////// <param name="where">过滤条件</param>
/////// <returns></returns>
////public int Delete(Expression<Func<T, bool>> where)
////{
//// return Context.Deleteable<T>().Where(where).RemoveDataCache().ExecuteCommand();
////}
public int DeleteTable()
{
return Db.Deleteable<T>().RemoveDataCache().ExecuteCommand();
}
#endregion
//public int DeleteTable()
//{
// return Context.Deleteable<T>().RemoveDataCache().ExecuteCommand();
//}
//#endregion
}
}

View File

@ -0,0 +1,33 @@
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Extensions;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZR.Common;
using ZR.Model.Models;
using ZR.Repository;
namespace ZR.Service.Business
{
/// <summary>
/// 代码生成演示Service业务层处理
///
/// @author zr
/// @date 2021-09-27
/// </summary>
[AppService(ServiceType = typeof(IGendemoService), ServiceLifetime = LifeTime.Transient)]
public class GendemoService: BaseService<Gendemo>, IGendemoService
{
private readonly GendemoRepository _repository;
public GendemoService(GendemoRepository repository)
{
_repository = repository;
}
#region
#endregion
}
}

View File

@ -0,0 +1,15 @@
using System;
using ZR.Model.Models;
namespace ZR.Service.Business
{
/// <summary>
/// 代码生成演示service接口
///
/// @author zr
/// @date 2021-09-27
/// </summary>
public interface IGendemoService: IBaseService<Gendemo>
{
}
}

View File

@ -0,0 +1,16 @@
using System;
using ZR.Model.Models;
using ZR.Model.System;
namespace ZR.Service.System
{
/// <summary>
/// 参数配置service接口
///
/// @author zhaorui
/// @date 2021-09-29
/// </summary>
public interface ISysConfigService: IBaseService<SysConfig>
{
}
}

View File

@ -11,31 +11,6 @@ namespace ZR.Service
{
public static class QueryableExtension
{
/// <summary>
/// 读取列表
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="source"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
//public static async Task<PagedInfo<T>> ToPageAsync<T>(this ISugarQueryable<T> source, PageParm parm)
//{
// var page = new PagedInfo<T>();
// var total = await source.CountAsync();
// page.TotalCount = total;
// page.TotalPages = total / parm.PageSize;
// if (total % parm.PageSize > 0)
// page.TotalPages++;
// page.PageSize = parm.PageSize;
// page.PageIndex = parm.PageIndex;
// page.DataSource = await source.OrderByIF(!string.IsNullOrEmpty(parm.Sort), $"{parm.OrderBy} {(parm.Sort == "descending" ? "desc" : "asc")}").ToPageListAsync(parm.PageIndex, parm.PageSize);
// return page;
//}
/// <summary>
/// 读取列表
/// </summary>
@ -49,11 +24,6 @@ namespace ZR.Service
var page = new PagedInfo<T>();
var total = source.Count();
page.TotalCount = total;
//page.TotalPage = total / parm.PageSize;
//if (total % parm.PageSize > 0)
// page.TotalPages++;
page.PageSize = parm.PageSize;
page.PageIndex = parm.PageNum;

View File

@ -3,6 +3,7 @@ using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using ZR.Repository;
namespace ZR.Service
{
@ -10,221 +11,199 @@ namespace ZR.Service
/// 基础服务定义
/// </summary>
/// <typeparam name="T"></typeparam>
public interface IBaseService<T> where T : class
public interface IBaseService<T> : IBaseRepository<T> where T : class, new()
{
#region
/// <summary>
/// 启用事务
/// </summary>
void BeginTran();
/// <summary>
/// 提交事务
/// </summary>
void CommitTran();
/// <summary>
/// 回滚事务
/// </summary>
void RollbackTran();
#endregion
#region
/// <summary>
/// 添加一条数据
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
int Add(T parm);
//int Add(T parm);
int Add(T parm, Expression<Func<T, object>> iClumns = null, bool ignoreNull = false);
//int Add(T parm, Expression<Func<T, object>> iClumns = null, bool ignoreNull = false);
/// <summary>
/// 批量添加数据
/// </summary>
/// <param name="parm">List<T></param>
/// <returns></returns>
int Add(List<T> parm);
///// <summary>
///// 批量添加数据
///// </summary>
///// <param name="parm">List<T></param>
///// <returns></returns>
//int Add(List<T> parm);
/// <summary>
/// 添加或更新数据
/// </summary>
/// <param name="parm"><T></param>
/// <returns></returns>
T Saveable(T parm, Expression<Func<T, object>> uClumns = null, Expression<Func<T, object>> iColumns = null);
///// <summary>
///// 添加或更新数据
///// </summary>
///// <param name="parm"><T></param>
///// <returns></returns>
//T Saveable(T parm, Expression<Func<T, object>> uClumns = null, Expression<Func<T, object>> iColumns = null);
/// <summary>
/// 批量添加或更新数据
/// </summary>
/// <param name="parm">List<T></param>
/// <returns></returns>
List<T> Saveable(List<T> parm, Expression<Func<T, object>> uClumns = null, Expression<Func<T, object>> iColumns = null);
///// <summary>
///// 批量添加或更新数据
///// </summary>
///// <param name="parm">List<T></param>
///// <returns></returns>
//List<T> Saveable(List<T> parm, Expression<Func<T, object>> uClumns = null, Expression<Func<T, object>> iColumns = null);
#endregion
//#endregion
#region
//#region 查询操
/// <summary>
/// 根据条件查询数据是否存在
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
bool Any(Expression<Func<T, bool>> where);
///// <summary>
///// 根据条件查询数据是否存在
///// </summary>
///// <param name="where">条件表达式树</param>
///// <returns></returns>
//bool Any(Expression<Func<T, bool>> where);
/// <summary>
/// 根据条件合计字段
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
TResult Sum<TResult>(Expression<Func<T, bool>> where, Expression<Func<T, TResult>> field);
///// <summary>
///// 根据条件合计字段
///// </summary>
///// <param name="where">条件表达式树</param>
///// <returns></returns>
//TResult Sum<TResult>(Expression<Func<T, bool>> where, Expression<Func<T, TResult>> field);
/// <summary>
/// 根据主值查询单条数据
/// </summary>
/// <param name="pkValue">主键值</param>
/// <returns>泛型实体</returns>
T GetId(object pkValue);
///// <summary>
///// 根据主值查询单条数据
///// </summary>
///// <param name="pkValue">主键值</param>
///// <returns>泛型实体</returns>
//T GetId(object pkValue);
/// <summary>
/// 根据主键查询多条数据
/// </summary>
/// <param name="ids"></param>
/// <returns></returns>
List<T> GetIn(object[] ids);
///// <summary>
///// 根据主键查询多条数据
///// </summary>
///// <param name="ids"></param>
///// <returns></returns>
//List<T> GetIn(object[] ids);
/// <summary>
/// 根据条件取条数
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
int GetCount(Expression<Func<T, bool>> where);
///// <summary>
///// 根据条件取条数
///// </summary>
///// <param name="where">条件表达式树</param>
///// <returns></returns>
//int GetCount(Expression<Func<T, bool>> where);
/// <summary>
/// 查询所有数据(无分页,请慎用)
/// </summary>
/// <returns></returns>
List<T> GetAll(bool useCache = false, int cacheSecond = 3600);
///// <summary>
///// 查询所有数据(无分页,请慎用)
///// </summary>
///// <returns></returns>
//List<T> GetAll(bool useCache = false, int cacheSecond = 3600);
/// <summary>
/// 获得一条数据
/// </summary>
/// <param name="where">Expression<Func<T, bool>></param>
/// <returns></returns>
T GetFirst(Expression<Func<T, bool>> where);
///// <summary>
///// 获得一条数据
///// </summary>
///// <param name="where">Expression<Func<T, bool>></param>
///// <returns></returns>
//T GetFirst(Expression<Func<T, bool>> where);
/// <summary>
/// 获得一条数据
/// </summary>
/// <param name="parm">string</param>
/// <returns></returns>
T GetFirst(string parm);
///// <summary>
///// 获得一条数据
///// </summary>
///// <param name="parm">string</param>
///// <returns></returns>
//T GetFirst(string parm);
/// <summary>
/// 根据条件查询分页数据
/// </summary>
/// <param name="where"></param>
/// <param name="parm"></param>
/// <returns></returns>
PagedInfo<T> GetPages(Expression<Func<T, bool>> where, Model.PagerInfo parm);
///// <summary>
///// 根据条件查询分页数据
///// </summary>
///// <param name="where"></param>
///// <param name="parm"></param>
///// <returns></returns>
//PagedInfo<T> GetPages(Expression<Func<T, bool>> where, Model.PagerInfo parm);
/// <summary>
/// 根据条件查询分页
/// </summary>
/// <param name="where"></param>
/// <param name="parm"></param>
/// <param name="order"></param>
/// <param name="orderEnum"></param>
/// <returns></returns>
PagedInfo<T> GetPages(Expression<Func<T, bool>> where, Model.PagerInfo parm, Expression<Func<T, object>> order, string orderEnum = "Asc");
///// <summary>
///// 根据条件查询分页
///// </summary>
///// <param name="where"></param>
///// <param name="parm"></param>
///// <param name="order"></param>
///// <param name="orderEnum"></param>
///// <returns></returns>
//PagedInfo<T> GetPages(Expression<Func<T, bool>> where, Model.PagerInfo parm, Expression<Func<T, object>> order, string orderEnum = "Asc");
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
List<T> GetWhere(Expression<Func<T, bool>> where, bool useCache = false, int cacheSecond = 3600);
///// <summary>
///// 根据条件查询数据
///// </summary>
///// <param name="where">条件表达式树</param>
///// <returns></returns>
////List<T> GetWhere(Expression<Func<T, bool>> where, bool useCache = false, int cacheSecond = 3600);
/// <summary>
/// 根据条件查询数据
/// </summary>
/// <param name="where">条件表达式树</param>
/// <returns></returns>
List<T> GetWhere(Expression<Func<T, bool>> where, Expression<Func<T, object>> order, string orderEnum = "Asc", bool useCache = false, int cacheSecond = 3600);
/////// <summary>
/////// 根据条件查询数据
/////// </summary>
/////// <param name="where">条件表达式树</param>
/////// <returns></returns>
////List<T> GetWhere(Expression<Func<T, bool>> where, Expression<Func<T, object>> order, string orderEnum = "Asc", bool useCache = false, int cacheSecond = 3600);
#endregion
//#endregion
#region
//#region 修改操
/// <summary>
/// 修改一条数据
/// </summary>
/// <param name="parm">T</param>
/// <returns></returns>
int Update(T parm);
///// <summary>
///// 修改一条数据
///// </summary>
///// <param name="parm">T</param>
///// <returns></returns>
//int Update(T parm);
/// <summary>
/// 批量修改
/// </summary>
/// <param name="parm">T</param>
/// <returns></returns>
int Update(List<T> parm);
///// <summary>
///// 批量修改
///// </summary>
///// <param name="parm">T</param>
///// <returns></returns>
//int Update(List<T> parm);
/// <summary>
/// 按查询条件更新
/// </summary>
/// <param name="where"></param>
/// <param name="columns"></param>
/// <returns></returns>
int Update(Expression<Func<T, bool>> where, Expression<Func<T, T>> columns);
///// <summary>
///// 按查询条件更新
///// </summary>
///// <param name="where"></param>
///// <param name="columns"></param>
///// <returns></returns>
//int Update(Expression<Func<T, bool>> where, Expression<Func<T, T>> columns);
#endregion
//#endregion
#region
//#region 删除操
/// <summary>
/// 删除一条或多条数据
/// </summary>
/// <param name="parm">string</param>
/// <returns></returns>
int Delete(object id);
///// <summary>
///// 删除一条或多条数据
///// </summary>
///// <param name="parm">string</param>
///// <returns></returns>
//int Delete(object id);
/// <summary>
/// 删除一条或多条数据
/// </summary>
/// <param name="parm">string</param>
/// <returns></returns>
int Delete(object[] ids);
///// <summary>
///// 删除一条或多条数据
///// </summary>
///// <param name="parm">string</param>
///// <returns></returns>
//int Delete(object[] ids);
/// <summary>
/// 根据条件删除一条或多条数据
/// </summary>
/// <param name="where">过滤条件</param>
/// <returns></returns>
int Delete(Expression<Func<T, bool>> where);
///// <summary>
///// 根据条件删除一条或多条数据
///// </summary>
///// <param name="where">过滤条件</param>
///// <returns></returns>
//int Delete(Expression<Func<T, bool>> where);
/// <summary>
/// 清空表
/// </summary>
/// <returns></returns>
int DeleteTable();
///// <summary>
///// 清空表
///// </summary>
///// <returns></returns>
//int DeleteTable();
#endregion
}

View File

@ -1,11 +1,13 @@
using Infrastructure.Attribute;
using Infrastructure.Extensions;
using Infrastructure.Model;
using Newtonsoft.Json;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using ZR.Model.System.Generate;
using ZR.Repository.System;
using ZR.Service.System.IService;
namespace ZR.Service.System
@ -14,12 +16,14 @@ namespace ZR.Service.System
/// 代码生成表
/// </summary>
[AppService(ServiceType = typeof(IGenTableService), ServiceLifetime = LifeTime.Transient)]
public class GenTableService : BaseService<GenTable>, IGenTableService
public class GenTableService : IGenTableService
{
public IGenTableColumnService GenTableColumnService;
public GenTableService(IGenTableColumnService genTableColumnService)
private GenTableRepository GenTableRepository;
private IGenTableColumnService GenTableColumnService;
public GenTableService(IGenTableColumnService genTableColumnService, GenTableRepository genTableRepository)
{
GenTableColumnService = genTableColumnService;
GenTableRepository = genTableRepository;
}
/// <summary>
@ -29,7 +33,7 @@ namespace ZR.Service.System
/// <returns></returns>
public int DeleteGenTableByIds(long[] tableIds)
{
Db.Deleteable<GenTable>().Where(f => tableIds.Contains(f.TableId)).ExecuteCommand();
GenTableRepository.Delete(f => tableIds.Contains(f.TableId));
return GenTableColumnService.DeleteGenTableColumn(tableIds);
}
@ -40,7 +44,7 @@ namespace ZR.Service.System
/// <returns></returns>
public int DeleteGenTableByTbName(string tableName)
{
return Db.Deleteable<GenTable>().Where(f => f.TableName == tableName).ExecuteCommand();
return GenTableRepository.Delete(f => f.TableName == tableName) ? 1 : 0;
}
/// <summary>
@ -50,7 +54,7 @@ namespace ZR.Service.System
/// <returns></returns>
public GenTable GetGenTableInfo(long tableId)
{
return GetId(tableId);
return GenTableRepository.GetById(tableId);
}
/// <summary>
@ -64,7 +68,7 @@ namespace ZR.Service.System
var predicate = Expressionable.Create<GenTable>();
predicate = predicate.AndIF(genTable.TableName.IfNotEmpty(), it => it.TableName.Contains(genTable.TableName));
return GetPages(predicate.ToExpression(), pagerInfo);
return GenTableRepository.GetPages(predicate.ToExpression(), pagerInfo);
}
/// <summary>
@ -74,13 +78,12 @@ namespace ZR.Service.System
/// <returns></returns>
public int ImportGenTable(GenTable table)
{
var db = Db;
table.Create_time = db.GetDate();
table.Create_time = DateTime.Now;
//导入前删除现有表
//DeleteGenTableByIds(new long[] { table.TableId });
DeleteGenTableByTbName(table.TableName);
return db.Insertable(table).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnIdentity();
return GenTableRepository.Context.Insertable(table).IgnoreColumns(ignoreNullColumn: true).ExecuteReturnIdentity();
}
/// <summary>
@ -95,7 +98,7 @@ namespace ZR.Service.System
public int UpdateGenTable(GenTable genTable)
{
var db = Db;
var db = GenTableRepository.Context;
genTable.Update_time = db.GetDate();
return db.Updateable(genTable).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand();
}
@ -105,8 +108,14 @@ namespace ZR.Service.System
/// 代码生成表列
/// </summary>
[AppService(ServiceType = typeof(IGenTableColumnService), ServiceLifetime = LifeTime.Transient)]
public class GenTableColumnService : BaseService<GenTableColumn>, IGenTableColumnService
public class GenTableColumnService : IGenTableColumnService
{
private GenTableColumnRepository GetTableColumnRepository;
public GenTableColumnService(GenTableColumnRepository genTableColumnRepository)
{
GetTableColumnRepository = genTableColumnRepository;
}
/// <summary>
/// 删除表字段
/// </summary>
@ -114,7 +123,7 @@ namespace ZR.Service.System
/// <returns></returns>
public int DeleteGenTableColumn(long tableId)
{
return DeleteGenTableColumn(new long[] { tableId });
return GetTableColumnRepository.DeleteGenTableColumn(new long[] { tableId });
}
/// <summary>
/// 根据表id批量删除表字段
@ -123,7 +132,7 @@ namespace ZR.Service.System
/// <returns></returns>
public int DeleteGenTableColumn(long[] tableId)
{
return Db.Deleteable<GenTableColumn>().Where(f => tableId.Contains(f.TableId)).ExecuteCommand();
return GetTableColumnRepository.DeleteGenTableColumn(tableId);
}
/// <summary>
@ -133,7 +142,7 @@ namespace ZR.Service.System
/// <returns></returns>
public int DeleteGenTableColumnByTableName(string tableName)
{
return Db.Deleteable<GenTableColumn>().Where(f => f.TableName == tableName).ExecuteCommand();
return GetTableColumnRepository.DeleteGenTableColumnByTableName(tableName);
}
/// <summary>
@ -143,7 +152,7 @@ namespace ZR.Service.System
/// <returns></returns>
public List<GenTableColumn> GenTableColumns(long tableId)
{
return Db.Queryable<GenTableColumn>().Where(f => f.TableId == tableId).OrderBy(x => x.Sort).ToList();
return GetTableColumnRepository.GenTableColumns(tableId);
}
/// <summary>
@ -153,7 +162,7 @@ namespace ZR.Service.System
/// <returns></returns>
public int InsertGenTableColumn(List<GenTableColumn> tableColumn)
{
return Db.Insertable(tableColumn).IgnoreColumns(x => new { x.Remark }).ExecuteCommand();
return GetTableColumnRepository.InsertGenTableColumn(tableColumn);
}
/// <summary>
@ -163,31 +172,7 @@ namespace ZR.Service.System
/// <returns></returns>
public int UpdateGenTableColumn(List<GenTableColumn> tableColumn)
{
foreach (var item in tableColumn)
{
Db.Updateable<GenTableColumn>()
.Where(f => f.TableId == item.TableId)
.SetColumns(it => new GenTableColumn()
{
ColumnComment = item.ColumnComment,
CsharpField = item.CsharpField,
CsharpType = item.CsharpType,
IsQuery = item.IsQuery,
IsEdit = item.IsEdit,
IsInsert = item.IsInsert,
IsList = item.IsList,
QueryType = item.QueryType,
HtmlType = item.HtmlType,
IsRequired = item.IsRequired,
Sort = item.Sort,
Update_time = DateTime.Now,
DictType = item.DictType
})
.Where(f => f.ColumnId == item.ColumnId)
.ExecuteCommand();
}
return 1;
return GetTableColumnRepository.UpdateGenTableColumn(tableColumn);
}
}
}

View File

@ -8,13 +8,13 @@ namespace ZR.Service.System.IService
{
public interface ISysDeptService : IBaseService<SysDept>
{
public List<SysDept> GetSysDepts(SysDept dept);
public string CheckDeptNameUnique(SysDept dept);
public int InsertDept(SysDept dept);
public int UpdateDept(SysDept dept);
public void UpdateDeptChildren(long deptId, string newAncestors, string oldAncestors);
public List<SysDept> GetChildrenDepts(List<SysDept> depts, long deptId);
public List<SysDept> BuildDeptTree(List<SysDept> depts);
public List<TreeSelectVo> BuildDeptTreeSelect(List<SysDept> depts);
List<SysDept> GetSysDepts(SysDept dept);
string CheckDeptNameUnique(SysDept dept);
int InsertDept(SysDept dept);
int UpdateDept(SysDept dept);
void UpdateDeptChildren(long deptId, string newAncestors, string oldAncestors);
List<SysDept> GetChildrenDepts(List<SysDept> depts, long deptId);
List<SysDept> BuildDeptTree(List<SysDept> depts);
List<TreeSelectVo> BuildDeptTreeSelect(List<SysDept> depts);
}
}

View File

@ -5,7 +5,7 @@ using ZR.Model.System;
namespace ZR.Service.System.IService
{
public interface ISysDictDataService : IBaseService<SysDictData>
public interface ISysDictDataService
{
public List<SysDictData> SelectDictDataList(SysDictData dictData);
public List<SysDictData> SelectDictDataByType(string dictType);

View File

@ -8,7 +8,7 @@ namespace ZR.Service.System.IService
/// <summary>
///
/// </summary>
public interface ISysDictService: IBaseService<SysDictType>
public interface ISysDictService
{
public List<SysDictType> SelectDictTypeList(SysDictType dictType, Model.PagerInfo pager);
@ -39,5 +39,12 @@ namespace ZR.Service.System.IService
/// <param name="sysDictType"></param>
/// <returns></returns>
public int UpdateDictType(SysDictType sysDictType);
/// <summary>
/// 获取字典信息
/// </summary>
/// <param name="dictId"></param>
/// <returns></returns>
SysDictType GetInfo(long dictId);
}
}

View File

@ -3,7 +3,7 @@ using ZR.Model.System;
namespace ZR.Service.System.IService
{
public interface ISysFileService : IBaseService<SysFile>
public interface ISysFileService
{
}
}

View File

@ -6,7 +6,7 @@ using ZR.Model.Vo.System;
namespace ZR.Service.System.IService
{
public interface ISysMenuService: IBaseService<SysMenu>
public interface ISysMenuService
{
public List<SysMenu> SelectMenuList(long userId);

View File

@ -6,7 +6,7 @@ using ZR.Service.System;
namespace ZR.Service.System.IService
{
public interface ISysOperLogService : IBaseService<SysOperLog>
public interface ISysOperLogService
{
public void InsertOperlog(SysOperLog operLog);

View File

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Text;
using ZR.Model.System;
using ZR.Repository;
namespace ZR.Service.System.IService
{

View File

@ -6,7 +6,7 @@ using ZR.Model.System;
namespace ZR.Service.System.IService
{
public interface ISysRoleService: IBaseService<SysRole>
public interface ISysRoleService
{
/// <summary>
/// 根据条件分页查询角色数据

View File

@ -1,4 +1,5 @@
using ZR.Model.System;
using ZR.Repository;
namespace ZR.Service.System.IService
{

View File

@ -9,5 +9,6 @@ namespace ZR.Service.System.IService
{
public interface ISysTasksQzService : IBaseService<SysTasksQz>
{
//SysTasksQz GetId(object id);
}
}

View File

@ -3,12 +3,13 @@ using ZR.Model.System;
namespace ZR.Service.System.IService
{
public interface ISysUserPostService: IBaseService<SysUserPost>
public interface ISysUserPostService
{
public void InsertUserPost(SysUser user);
public List<long> GetUserPostsByUserId(long userId);
public string GetPostsStrByUserId(long userId);
int Delete(long userId);
}
}

View File

@ -8,7 +8,7 @@ using ZR.Model.System;
namespace ZR.Service.System.IService
{
public interface ISysUserService : IBaseService<SysUser>
public interface ISysUserService
{
public List<SysUser> SelectUserList(SysUser user, PagerInfo pager);

View File

@ -0,0 +1,35 @@
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.Extensions;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ZR.Common;
using ZR.Model.Models;
using ZR.Model.System;
using ZR.Repository;
namespace ZR.Service.System
{
/// <summary>
/// 参数配置Service业务层处理
///
/// @author zhaorui
/// @date 2021-09-29
/// </summary>
[AppService(ServiceType = typeof(ISysConfigService), ServiceLifetime = LifeTime.Transient)]
public class SysConfigService: BaseService<SysConfig>, ISysConfigService
{
private readonly SysConfigRepository _SysConfigrepository;
public SysConfigService(SysConfigRepository repository)
{
_SysConfigrepository = repository;
}
#region
#endregion
}
}

View File

@ -40,7 +40,7 @@ namespace ZR.Service.System
predicate = predicate.AndIF(dept.DeptName.IfNotEmpty(), it => it.DeptName.Contains(dept.DeptName));
predicate = predicate.AndIF(dept.Status.IfNotEmpty(), it => it.Status == dept.Status);
var response = GetWhere(predicate.ToExpression());
var response = DeptRepository.GetList(predicate.ToExpression());
return response;
}
@ -53,7 +53,7 @@ namespace ZR.Service.System
public string CheckDeptNameUnique(SysDept dept)
{
long deptId = dept.DeptId == 0 ? -1L : dept.DeptId;
SysDept info = GetFirst(it => it.DeptName == dept.DeptName && it.ParentId == dept.ParentId);
SysDept info = DeptRepository.GetFirst(it => it.DeptName == dept.DeptName && it.ParentId == dept.ParentId);
if (info != null && info.DeptId != deptId)
{
return UserConstants.NOT_UNIQUE;
@ -68,7 +68,7 @@ namespace ZR.Service.System
/// <returns></returns>
public int InsertDept(SysDept dept)
{
SysDept info = GetFirst(it => it.DeptId == dept.ParentId);
SysDept info = DeptRepository.GetSingle(it => it.DeptId == dept.ParentId);
//如果父节点不为正常状态,则不允许新增子节点
if (!UserConstants.DEPT_NORMAL.Equals(info.Status))
{
@ -76,7 +76,7 @@ namespace ZR.Service.System
}
dept.Ancestors = info.Ancestors + "," + dept.ParentId;
return Add(dept);
return DeptRepository.Add(dept);
}
/// <summary>
@ -86,8 +86,8 @@ namespace ZR.Service.System
/// <returns></returns>
public int UpdateDept(SysDept dept)
{
SysDept newParentDept = GetFirst(it => it.ParentId == dept.ParentId);
SysDept oldDept = GetFirst(m => m.DeptId == dept.DeptId);
SysDept newParentDept = DeptRepository.GetFirst(it => it.ParentId == dept.ParentId);
SysDept oldDept = DeptRepository.GetFirst(m => m.DeptId == dept.DeptId);
if (newParentDept != null && oldDept != null)
{
string newAncestors = newParentDept.Ancestors + "," + newParentDept.DeptId;
@ -95,7 +95,7 @@ namespace ZR.Service.System
dept.Ancestors = newAncestors;
UpdateDeptChildren(dept.DeptId, newAncestors, oldAncestors);
}
int result = Update(dept);
int result = DeptRepository.Context.Updateable(dept).ExecuteCommand();
if (UserConstants.DEPT_NORMAL.Equals(dept.Status))
{
// 如果该部门是启用状态,则启用该部门的所有上级部门
@ -111,7 +111,7 @@ namespace ZR.Service.System
private void UpdateParentDeptStatus(SysDept dept)
{
string updateBy = dept.Update_by;
dept = GetFirst(it => it.DeptId == dept.DeptId);
dept = DeptRepository.GetFirst(it => it.DeptId == dept.DeptId);
dept.Update_by = updateBy;
//DeptRepository.UpdateParentDeptStatus(dept);
}
@ -129,12 +129,10 @@ namespace ZR.Service.System
foreach (var child in children)
{
child.Ancestors = child.Ancestors.Replace(oldAncestors, newAncestors);
if (child.DeptId.Equals(deptId))
{
Saveable(child, it => new { it.Ancestors });
//DeptRepository.UdateDeptChildren(child);
}
if (children.Count > 0)
{
//DeptRepository.UdateDeptChildren(child);
}
}

View File

@ -10,7 +10,7 @@ using ZR.Service.System.IService;
namespace ZR.Service.System
{
[AppService(ServiceType = typeof(ISysDictDataService), ServiceLifetime = LifeTime.Transient)]
public class SysDictDataService: BaseService<SysDictData>, ISysDictDataService
public class SysDictDataService: ISysDictDataService
{
private readonly SysDictDataRepository SysDictDataRepository;
@ -37,7 +37,7 @@ namespace ZR.Service.System
public List<SysDictData> SelectDictDataByType(string dictType)
{
string CK = $"SelectDictDataByType_{dictType}";
if (!(CacheHelper.GetCache(CK) is List<SysDictData> list))
if (CacheHelper.GetCache(CK) is not List<SysDictData> list)
{
list = SysDictDataRepository.SelectDictDataByType(dictType);
CacheHelper.SetCache(CK, list, 30);
@ -55,7 +55,7 @@ namespace ZR.Service.System
string CK = $"SelectDictDataByCode_{dictCode}";
if (CacheHelper.GetCache(CK) is not SysDictData list)
{
list = GetFirst(f => f.DictCode == dictCode);
list = SysDictDataRepository.GetFirst(f => f.DictCode == dictCode);
CacheHelper.SetCache(CK, list, 5);
}
return list;
@ -78,7 +78,9 @@ namespace ZR.Service.System
/// <returns></returns>
public long UpdateDictData(SysDictData dict)
{
return SysDictDataRepository.UpdateDictData(dict);
var result = SysDictDataRepository.UpdateDictData(dict);
CacheHelper.Remove($"SelectDictDataByCode_{dict.DictCode}");
return result;
}
/// <summary>

View File

@ -13,14 +13,14 @@ namespace ZR.Service.System
/// 字典类型
/// </summary>
[AppService(ServiceType = typeof(ISysDictService), ServiceLifetime = LifeTime.Transient)]
public class SysDictService : BaseService<SysDictType>, ISysDictService
public class SysDictService : ISysDictService
{
private SysDictRepository sysDictRepository;
private SysDictRepository DictRepository;
private SysDictDataRepository DictDataRepository;
public SysDictService(SysDictRepository sysDictRepository, SysDictDataRepository dictDataRepository)
{
this.sysDictRepository = sysDictRepository;
this.DictRepository = sysDictRepository;
this.DictDataRepository = dictDataRepository;
}
@ -31,7 +31,7 @@ namespace ZR.Service.System
/// <returns></returns>
public List<SysDictType> SelectDictTypeList(SysDictType dictType, Model.PagerInfo pager)
{
return sysDictRepository.SelectDictTypeList(dictType, pager);
return DictRepository.SelectDictTypeList(dictType, pager);
}
/// <summary>
@ -41,7 +41,7 @@ namespace ZR.Service.System
/// <returns></returns>
public string CheckDictTypeUnique(SysDictType dictType)
{
SysDictType sysDictType = GetFirst(f => f.DictType == dictType.DictType);
SysDictType sysDictType = DictRepository.GetFirst(f => f.DictType == dictType.DictType);
if (sysDictType != null && sysDictType.DictId != dictType.DictId)
{
return UserConstants.NOT_UNIQUE;
@ -58,13 +58,13 @@ namespace ZR.Service.System
{
foreach (var dictId in dictIds)
{
SysDictType dictType = GetFirst(x => x.DictId == dictId);
if (GetCount(f => f.DictType == dictType.DictType) > 0)
SysDictType dictType = DictRepository.GetFirst(x => x.DictId == dictId);
if (DictRepository.Count(f => f.DictType == dictType.DictType) > 0)
{
throw new CustomException($"{dictType.DictName}已分配,不能删除");
}
}
int count = sysDictRepository.DeleteDictTypeByIds(dictIds);
int count = DictRepository.DeleteDictTypeByIds(dictIds);
//if (count > 0)
//{
// DictUtils.clearDictCache();
@ -79,7 +79,7 @@ namespace ZR.Service.System
/// <returns></returns>
public long InsertDictType(SysDictType sysDictType)
{
return Saveable(sysDictType, iColumns: it => new { sysDictType.Update_by }).DictId;
return DictRepository.InsertReturnBigIdentity(sysDictType);
}
/// <summary>
@ -89,13 +89,23 @@ namespace ZR.Service.System
/// <returns></returns>
public int UpdateDictType(SysDictType sysDictType)
{
SysDictType oldDict = GetFirst(x => x.DictId == sysDictType.DictId);
SysDictType oldDict = DictRepository.GetFirst(x => x.DictId == sysDictType.DictId);
if (sysDictType.DictType != oldDict.DictType)
{
//同步修改 dict_data表里面的DictType值
DictDataRepository.UpdateDictDataType(oldDict.DictType, sysDictType.DictType);
}
return sysDictRepository.UpdateDictType(sysDictType);
return DictRepository.UpdateDictType(sysDictType);
}
/// <summary>
/// 获取字典信息
/// </summary>
/// <param name="dictId"></param>
/// <returns></returns>
public SysDictType GetInfo(long dictId)
{
return DictRepository.GetFirst(f => f.DictId == dictId);
}
}
}

View File

@ -8,7 +8,7 @@ namespace ZR.Service.System
/// 文件管理
/// </summary>
[AppService(ServiceType = typeof(ISysFileService), ServiceLifetime = LifeTime.Transient)]
public class SysFileService: BaseService<SysFile>, ISysFileService
public class SysFileService : ISysFileService
{
}

View File

@ -15,7 +15,7 @@ namespace ZR.Service
/// 菜单
/// </summary>
[AppService(ServiceType = typeof(ISysMenuService), ServiceLifetime = LifeTime.Transient)]
public class SysMenuService: BaseService<SysMenu>, ISysMenuService
public class SysMenuService: ISysMenuService
{
public SysMenuRepository MenuRepository;
public ISysRoleService SysRoleService;

View File

@ -13,7 +13,7 @@ namespace ZR.Service.System
/// 操作日志
/// </summary>
[AppService(ServiceType = typeof(ISysOperLogService), ServiceLifetime = LifeTime.Transient)]
public class SysOperLogService: BaseService<SysOperLog>, ISysOperLogService
public class SysOperLogService : ISysOperLogService
{
public SysOperLogRepository sysOperLogRepository;

View File

@ -3,6 +3,8 @@ using System;
using System.Collections.Generic;
using System.Text;
using ZR.Model.System;
using ZR.Repository;
using ZR.Repository.System;
using ZR.Service.System.IService;
namespace ZR.Service.System
@ -13,6 +15,12 @@ namespace ZR.Service.System
[AppService(ServiceType = typeof(ISysPostService), ServiceLifetime = LifeTime.Transient)]
public class SysPostService : BaseService<SysPost>, ISysPostService
{
public SysPostRepository PostRepository;
public SysPostService(SysPostRepository postRepository)
{
PostRepository = postRepository;
}
/// <summary>
/// 校验岗位编码是否唯一
/// </summary>
@ -20,7 +28,7 @@ namespace ZR.Service.System
/// <returns></returns>
public string CheckPostCodeUnique(SysPost post)
{
SysPost info = GetFirst(it => it.PostCode.Equals(post.PostCode));
SysPost info = PostRepository.GetFirst(it => it.PostCode.Equals(post.PostCode));
if (info != null && info.PostId != post.PostId)
{
return UserConstants.NOT_UNIQUE;
@ -35,7 +43,7 @@ namespace ZR.Service.System
/// <returns></returns>
public string CheckPostNameUnique(SysPost post)
{
SysPost info = GetFirst(it => it.PostName.Equals(post.PostName));
SysPost info = PostRepository.GetFirst(it => it.PostName.Equals(post.PostName));
if (info != null && info.PostId != post.PostId)
{
return UserConstants.NOT_UNIQUE;

View File

@ -15,7 +15,7 @@ namespace ZR.Service
/// 角色
/// </summary>
[AppService(ServiceType = typeof(ISysRoleService), ServiceLifetime = LifeTime.Transient)]
public class SysRoleService: BaseService<SysRole>, ISysRoleService
public class SysRoleService: ISysRoleService
{
private SysRoleRepository SysRoleRepository;
private ISysUserRoleService SysUserRoleService;

View File

@ -1,12 +1,13 @@
using Infrastructure.Attribute;
using System;
using ZR.Model.System;
using ZR.Repository;
using ZR.Service.System.IService;
namespace ZR.Service.System
{
[AppService(ServiceLifetime = LifeTime.Transient, ServiceType = typeof(ISysTasksLogService))]
public class SysTasksLogService : BaseService<SysTasksLog>, ISysTasksLogService
public class SysTasksLogService : BaseRepository<SysTasksLog>, ISysTasksLogService
{
private ISysTasksQzService _tasksQzService;
public SysTasksLogService(ISysTasksQzService tasksQzService)

View File

@ -13,10 +13,9 @@ namespace ZR.Service.System
/// 用户岗位
/// </summary>
[AppService(ServiceType = typeof(ISysUserPostService), ServiceLifetime = LifeTime.Transient)]
public class SysUserPostService : BaseService<SysUserPost>, ISysUserPostService
public class SysUserPostService : ISysUserPostService
{
public SysUserPostRepository UserPostRepository;
private SysUserPostRepository UserPostRepository;
public SysUserPostService(SysUserPostRepository userPostRepository)
{
UserPostRepository = userPostRepository;
@ -34,7 +33,7 @@ namespace ZR.Service.System
{
list.Add(new SysUserPost() { PostId = item, UserId = user.UserId });
}
Add(list);
UserPostRepository.Insert(list);
}
@ -45,7 +44,7 @@ namespace ZR.Service.System
/// <returns></returns>
public List<long> GetUserPostsByUserId(long userId)
{
var list = GetWhere(f => f.UserId == userId);
var list = UserPostRepository.GetList(f => f.UserId == userId);
return list.Select(x => x.PostId).ToList();
}
@ -59,5 +58,10 @@ namespace ZR.Service.System
var list = UserPostRepository.SelectPostsByUserId(userId);
return string.Join(',', list.Select(x => x.PostName));
}
public int Delete(long userId)
{
return UserPostRepository.Delete(x => x.UserId == userId) ? 1: 0 ;
}
}
}

View File

@ -11,7 +11,7 @@ using ZR.Service.System.IService;
namespace ZR.Service
{
[AppService(ServiceType = typeof(ISysUserService), ServiceLifetime = LifeTime.Transient)]
public class SysUserService : BaseService<SysUser>, ISysUserService
public class SysUserService : ISysUserService
{
private readonly SysUserRepository UserRepository;
private readonly ISysRoleService RoleService;
@ -101,7 +101,7 @@ namespace ZR.Service
UserRoleService.InsertUserRole(user);
}
// 删除用户与岗位关联
UserPostService.Delete(it => it.UserId == user.UserId);
UserPostService.Delete(user.UserId);
// 新增用户与岗位管理
UserPostService.InsertUserPost(user);
return UserRepository.UpdateUser(user);

View File

@ -1,11 +1,9 @@
# 关于此文件说明 必须以VUE_APP开头
# 开发环境配置
ENV = 'development'
# ZR管理系统/开发环境
VUE_APP_BASE_API = 'http://localhost:8888/'
# 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true
# 路由前缀
VUE_ROUTER_PREFIX = '/'
VUE_APP_ROUTER_PREFIX = ''

View File

@ -5,4 +5,4 @@ ENV = 'production'
VUE_APP_BASE_API = '/prod-api'
# 路由前缀
VUE_ROUTER_PREFIX = '/'
VUE_APP_ROUTER_PREFIX = ''

View File

@ -44,7 +44,6 @@
"vue-count-to": "1.0.13",
"vue-cropper": "0.4.9",
"vue-router": "3.0.2",
"vue-splitpane": "1.0.4",
"vuedraggable": "2.20.0",
"vuex": "3.1.0"
},
@ -58,7 +57,7 @@
"babel-eslint": "10.1.0",
"babel-jest": "23.6.0",
"babel-plugin-dynamic-import-node": "2.3.3",
"chalk": "2.4.2",
"chalk": "4.1.0",
"chokidar": "2.1.5",
"connect": "3.6.6",
"eslint": "6.7.2",
@ -69,7 +68,6 @@
"lint-staged": "8.1.5",
"node-sass": "4.14.1",
"plop": "2.3.0",
"qs": "^6.9.4",
"runjs": "4.3.2",
"sass-loader": "8.0.2",
"script-ext-html-webpack-plugin": "2.1.3",

View File

@ -8,3 +8,16 @@ export function upload(data) {
headers: { "Content-Type": "multipart/form-data" },
})
}
/**
* 发送邮件
* @param {*} data
* @returns
*/
export function sendEmail(data) {
return request({
url: '/home/SendEmail',
method: 'POST',
data: data,
})
}

59
ZR.Vue/src/api/gendemo.js Normal file
View File

@ -0,0 +1,59 @@
import request from '@/utils/request'
/**
* 代码生成演示分页查询
* @param {查询条件} data
*/
export function listGendemo(query) {
return request({
url: 'business/Gendemo/list',
method: 'get',
params: query,
})
}
/**
* 新增代码生成演示
* @param data
*/
export function addGendemo(data) {
return request({
url: 'business/Gendemo',
method: 'post',
data: data,
})
}
/**
* 修改代码生成演示
* @param data
*/
export function updateGendemo(data) {
return request({
url: 'business/Gendemo',
method: 'PUT',
data: data,
})
}
/**
* 获取代码生成演示详情
* @param {Id} 代码生成演示Id
*/
export function getGendemo(id) {
return request({
url: 'business/Gendemo/' + id,
method: 'get'
})
}
/**
* 删除
* @param {主键} pid
*/
export function delGendemo(pid) {
return request({
url: 'business/Gendemo/' + pid,
method: 'delete'
})
}

Some files were not shown because too many files have changed in this diff Show More