@{
var orgField=@Model.TableFields.Any(it=>it.FieldName=="OrgId")?"OrgId":"CreateOrgId";//机构字段
var dataPermission=@Model.DataPermission=="Y";//是否有数据权限
var tableFieIds=@Model.TableFields;//获取字段
var isTreeList = @Model.ModuleType=="treeList";//是否是树表-列表
var isTreeTree = @Model.ModuleType=="treeTree"; //是否是树-树
var isMasterChild = @Model.ModuleType=="masterChild"; //是否是主子表
}
// Copyright (c) 2022-Now 少林寺驻北固山办事处大神父王喇嘛
//
// SimpleAdmin 基于 Apache License Version 2.0 协议发布,可用于商业项目,但必须遵守以下补充条款:
// 1.请不要删除和修改根目录下的LICENSE文件。
// 2.请不要删除和修改SimpleAdmin源码头部的版权声明。
// 3.分发源码时候,请注明软件出处 https://gitee.com/dotnetmoyu/SimpleAdmin
// 4.基于本软件的作品,只能使用 SimpleAdmin 作为后台服务,除外情况不可商用且不允许二次分发或开源。
// 5.请不得将本软件应用于危害国家安全、荣誉和利益的行为,不能以任何形式用于非法为目的的行为。
// 6.任何基于本软件而产生的一切法律纠纷和责任,均于我司无关。
using MoYu.FriendlyException;
using Mapster;
using SimpleAdmin.Core;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Mvc;
using SqlSugar;
namespace @(@Model.ServicePosition);
///
///
///
public class @(@Model.ServiceName) : DbRepository<@(@Model.EntityName)>, I@(@Model.ServiceName)
{
private readonly ILogger<@(@Model.ServiceName)> _logger;
private readonly ISysUserService _sysUserService;
@if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
@:private readonly IImportExportService _importExportService;
}
@if(@Model.FuncList.Contains("batchEdit")){
@:private readonly IBatchEditService _batchEditService;
}
@if(@Model.LeftTree=="org"){
@:private readonly ISysOrgService _sysOrgService;
}
public @(@Model.ServiceName)(ILogger<@(@Model.ServiceName)> logger,ISysUserService sysUserService
@if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
@:,IImportExportService importExportService
}
@if(@Model.FuncList.Contains("batchEdit")){
@:,IBatchEditService updateBatchService
}
@if(@Model.LeftTree=="org"){
@:,ISysOrgService sysOrgService
}
)
{
_sysUserService = sysUserService;
_logger = logger;
@if(@Model.FuncList.Contains("import")||@Model.FuncList.Contains("export")){
@:_importExportService = importExportService;
}
@if(@Model.FuncList.Contains("batchEdit")){
@: _batchEditService = updateBatchService;
}
@if(@Model.LeftTree=="org"){
@: _sysOrgService = sysOrgService;
}
}
#region 查询
///
public async Task> Page(@Model.PageInput input)
{
var query = await GetQuery(input);//获取查询条件
var pageInfo = await query.ToPagedListAsync(input.PageNum, input.PageSize);//分页
return pageInfo;
}
///
public async Task> List(@Model.PageInput input)
{
var query = await GetQuery(input);//获取查询条件
var list = await query.ToListAsync();
return list;
}
///
public async Task<@(@Model.EntityName)> Detail(BaseIdInput input)
{
var @Model.ClassNameFirstLower = await GetFirstAsync(it => it.Id == input.Id);
@if(dataPermission){
@:var errorMessage = $"您没有权限查看该数据";
@://获取数据范围
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
@:if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).@(orgField)) || @(@Model.ClassNameFirstLower).CreateUserId != UserManager.UserId))//判断机构ID是否在数据范围或者创建人是否为当前登录人
@:throw Oops.Bah(errorMessage);
}
@if(isMasterChild){
@:var child=await Context.Queryable<@Model.ChildTable>().Where(it => it.@(Model.ChildFk) == @(@Model.ClassNameFirstLower).Id).ToListAsync();
}
return @Model.ClassNameFirstLower ;
}
@if(isTreeList){
@:///
@:public async Task> Tree()
@:{
@://第三个参数为0 表示 : parentid为 0 设置成根目录, 正常情况下最顶层的parentid不是0就是null
@:var tree = Context.Queryable<@(@Model.EntityName)>().ToTree(it => it.Children, it => it.ParentId, 0);
@:return tree;
@:}
}
@if(isTreeTree){
@:///
@:public async Task> Tree(@Model.TreeInput input)
@:{
@://第三个参数为0 表示 : parentid为 0 设置成根目录, 正常情况下最顶层的parentid不是0就是null
@:var tree = Context.Queryable<@(@Model.EntityName)>()
@if(isTreeTree){
@{PageWhereIf();}//查询条件
}
@:.ToTree(it => it.Children, it => it.ParentId, 0);
@:return tree;
@:}
}
@{Fk();}//外键查询
#endregion
#region 新增
///
public async Task Add(@Model.AddInput input)
{
var @Model.ClassNameFirstLower = input.Adapt<@(@Model.EntityName)>();//实体转换
await CheckInput(@Model.ClassNameFirstLower);//检查参数
@if(dataPermission){
@://获取数据范围
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
@://判断机构ID是否在数据范围,这里只是简单示例,根据实际情况判断
@://if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).OrgId)))
@://throw Oops.Bah("您没有权限添加该数据");
}
await InsertAsync(@Model.ClassNameFirstLower);//插入数据
}
#endregion
#region 编辑
///
public async Task Edit(@Model.EditInput input)
{
var @Model.ClassNameFirstLower = input.Adapt<@(@Model.EntityName)>();//实体转换
await CheckInput(@Model.ClassNameFirstLower);//检查参数
@if(dataPermission){
@://判断机构ID是否在数据范围并且创建者是自己,这里只是简单示例,根据实际情况判断
@://if (dataScope!=null&&(!dataScope.Contains(@(@Model.ClassNameFirstLower).@(orgField)) || @(@Model.ClassNameFirstLower).CreateUserId != UserManager.UserId))
@://throw Oops.Bah("您没有权限编辑该数据");
}
await UpdateAsync(@Model.ClassNameFirstLower);//更新数据
}
@if(@Model.FuncList.Contains("batchEdit")){
@:///
@:public async Task Edits(BatchEditInput input)
@:{
Edits();
@:}
}
#endregion
#region 删除
///
public async Task Delete(BaseIdListInput input)
{
//获取所有ID
var ids = input.Ids.ToList();
if (ids.Count > 0)
{
@if(dataPermission){
@://获取数据范围
@:var dataScope = await _sysUserService.GetLoginUserApiDataScope();
@:var @(@Model.ClassNameFirstLower)s = await GetListAsync(it => ids.Contains(it.Id), it =>new @(@Model.EntityName){ @(orgField)=it.@(orgField),CreateUserId=it.CreateUserId });//根据ID获取机构ID和创建者ID
@:@(@Model.ClassNameFirstLower)s.ForEach(it =>
@:{
@: if (dataScope!=null&&!dataScope.Contains(it.@(orgField))&&it.CreateUserId != UserManager.UserId) throw Oops.Bah(ErrorCodeEnum.A0004);//如果不包含机构id并且不是自己创建的
@:});
}
@if(isMasterChild){
@://如果@(Model.FunctionName)下有下级数据则不允许删除
@:if (await Context.Queryable<@(@Model.ChildTable)>().AnyAsync(it => ids.Contains(it.@(Model.ChildFk))))
@:{
@:throw Oops.Bah($"有数据依赖@(Model.FunctionName),无法删除");
@:}
}
await DeleteByIdsAsync(ids.Cast