This commit is contained in:
路 范
2021-09-24 14:33:10 +08:00
parent 0e82fb3156
commit c03092bc0c
432 changed files with 57806 additions and 4 deletions

View File

@@ -0,0 +1,14 @@
export default {
/* 自定义的接口名称 */
apiName: [
/* 接口地址 */
url,
/* 请求类型 [get | post] */
'get',
/* axios所需的设置参数 */
options,
],
/* 默认为get接口 */
apiPostName: getUrl
}

View File

@@ -0,0 +1,25 @@
import { api } from 'common/api'
api.apiName(params)
.then(res => {
/* ... */
})
.catch(error => {
/* catch */
})
.finally(() => {
/* finally */
})
// 或者采用异步
async function foo() {
try {
const res = await api.apiName(params)
/* ... */
} catch (error) {
/* catch */
} finally {
/* finally */
}
}

View File

@@ -0,0 +1,35 @@
using System.ComponentModel.DataAnnotations;
namespace Ewide.Application
{
// 继承PageInputBase,可以直接使用一些通用的查询和分页字段
public class DtoPageInput : Core.PageInputBase {}
// 可定义一个主键Dto
public class DtoKeyInput
{
public virtual string Id { get; set; }
}
// 可定义一个必传主键的Dto
public class DtoKeyRequiredInput : DtoKeyInput
{
[Required]
public override string Id { get; set; }
}
public class DtoAddInput
{
[MaxLength(100)]
[Required]
public string RequiredString { get; set; }
}
public class DtoUpdateInput : DtoAddInput
{
[Required]
public override string Id { get; set; }
}
public class DtoDeleteInput: DtoKeyInput {}
}

View File

@@ -0,0 +1,26 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace Ewide.Application
{
// Table特性设定表在数据库中的表名
[Table("bs_table_name")]
[Comment("表名")]
// 这里继承Core.DEntityBase,会自动添加Id及一些常用字段
public class BsTableName : Core.DEntityBase
{
// Comment特性用于生成字段说明
[Comment("字符字段")]
// MaxLength特性用于限定字段值长度,可以不设置
[MaxLength(50)]
// Required特性设置字段是否不为空
[Required]
public string StringField { get; set; }
[Comment("整形字段")]
[MaxLength(3)]
[Required]
public int IntField { get; set; }
}
}

View File

@@ -0,0 +1,15 @@
using System.Threading.Tasks;
namespace Ewide.Application.Service
{
public interface Interface
{
Task<dynamic> Page(DtoPageInput input);
Task Add(DtoAddInput input);
Task Update(DtoUpdateInput input);
Task Delete(DtoDeleteInput input);
}
}

View File

@@ -0,0 +1,90 @@
using Dapper;
using Ewide.Core;
using Ewide.Core.Extension;
using Furion.DatabaseAccessor;
using Furion.DependencyInjection;
using Furion.DynamicApiController;
namespace Ewide.Application.Service
{
[ApiDescriptionSettings(Name = "ServiceDoc")]
public class Service : Interface, IDynamicApiController, ITransient
{
// Dapper仓储
private readonly IDapperRepository _dapperRep;
// 用户信息
private readonly IUserManager _userManager;
// 数据(实体Entity)仓储
private readonly IRepository<Entity> _entityRep;
public Service(
IDapperRepository dapperRep,
IUserManager userManager,
IRepository<Entity> entityRep
)
{
_dapperRep = dapperRep;
_userManager = userManager;
_entityRep = entityRep;
}
/// <summary>
/// 查询 - EF方式
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<dynamic> Page(DtoPageInput input)
{
var data = await _entityRep.DetachedEntities.ToPageData(input);
return PageDataResult<Entity>.PageResult(data);
}
/// <summary>
/// 查询 - Dapper方式
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task<dynamic> Page(DtoPageInput input)
{
var sql = "...";
var data = await _dapperRep.QueryPageDataDynamic(sql, input);
return data;
}
/// <summary>
/// 新增
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task Add(DtoAddInput input)
{
}
/// <summary>
/// 编辑
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task Update(DtoUpdateInput input)
{
}
/// <summary>
/// 删除
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task Delete(DtoDeleteInput input)
{
}
}
}

View File

@@ -0,0 +1,51 @@
import { Auth } from 'components'
import auth from 'components/authorized/handler'
/**
* 简单的权限标识
*/
function foo1() {
return (
<Auth auth="permissions:name">
<a>连接</a>
</Auth>
)
}
/**
* 多个并且关系的权限标识
*/
function foo2() {
return (
<Auth auth={['permissions:name1', 'permissions:name2']}>
<a>连接</a>
</Auth>
)
}
/**
* 多个或者关系的权限标识
*/
function foo3() {
return (
<Auth auth={[['permissions:name1'], ['permissions:name2']]}>
<a>连接</a>
</Auth>
)
}
/**
* 前缀简化
*/
function foo4() {
return (
<Auth auth={{ permissions: ['name1', 'name2'] }}>
<a>连接</a>
</Auth>
)
}
/**
* 纯js
*/
const flag = auth('permissions:name') // => Boolean

View File

@@ -0,0 +1,10 @@
import getDictData from 'util/dic'
async function foo() {
const code = await getDictData('dic_code_one', 'dic_code_two')
// =>
// code = {
// dicCodeOne: [],
// dicCodeTwo: [],
// }
}

View File

@@ -0,0 +1,32 @@
import { QueryType, getSearchDateRange, getSearchInfo } from 'util/query'
getSearchInfo({
query: {
value: '123',
text: '123',
code: 'abc',
check: ['1', '2', '3'],
range: [1, 10],
dateRange: getSearchDateRange(['2021-01-01', '2021-01-10'])
},
queryType: {
text: QueryType.Equal,
code: QueryType.Like,
check: QueryType.Equal,
range: [QueryType.GreaterThanOrEqual, QueryType.LessThan],
dateRange: [QueryType.GreaterThanOrEqual, QueryType.LessThan]
}
})
// =>
[
{ field: 'value', value: ['123'] },
{ field: 'text', value: ['123'], type: '=' },
{ field: 'code', value: ['abc'], type: 'like' },
{ field: 'check', value: ['1', '2', '3'], type: '=' },
{ field: 'range', value: [1], type: '>=' },
{ field: 'range', value: [10], type: '<' },
{ field: 'dateRange', value: ['2021-01-01'], type: '>=' },
{ field: 'dateRange', value: ['2021-01-11'], type: '<' }
]