我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
--------------------------------------------------------------------------------------------------------------
PasteForm的升级版PasteApeart,享受极致简洁的框架的魅力,点击查看文档
--------------------------------------------------------------------------------------------------------------
地区模块可以说很常见,也不太常见,如果是商城系统,这一块就免不了的!
首先要知道地区是有层级概念的,比如省-市-区等
1.如果勾选了省的,包含对应的市,甚至是区等,也就是向下包含
2.如果勾选的时候选择了市,然后又勾选了他的上级省,则这个市应该取消勾选,基于1
3.需要支持编辑和新增,也就是编辑的时候,需要能直接显示之前的选择
我们以邮费模板为例
点击编辑看看
如果有多条规则,我们还可以点击添加
上面是配置一条邮费模板,看下详细的时候是咋样的
看到上面的功能,有点多,一起来看看Dto中是如何配置特性的
///<summary>
///邮费模板
///</summary>
[Description("邮费模板")]
public class PostModelAddDto
{
///<summary>
///名称 示例:三角区包邮
///</summary>
[MaxLength(16)]
[Required]
[PasteMark("post", "name")]
[Description("名称 示例:三角区包邮")]
public string Name { get; set; }
/// <summary>
/// 说明 示例:三角区包邮,其他地区8元,偏远12元
/// </summary>
[MaxLength(512)]
[Description("说明 示例:三角区包邮,其他地区8元,偏远12元")]
public string AreaMark { get; set; } = "";
///<summary>
///排序 排序大的权重比较高,命中后终止
///</summary>
[Description("排序 排序大的权重比较高,命中后终止")]
public int Sort { get; set; }
///<summary>
///状态
///</summary>
[Description("状态")]
public bool IsEnable { get; set; } = true;
/// <summary>
/// 邮费规则
/// </summary>
[Description("邮费规则")]
[PasteDirectsun]
[PasteMark("post", "route")]
public List<PostModelItemAddDto> Models { get; set; } = new List<PostModelItemAddDto>() { new PostModelItemAddDto { } };
}
上面主要看邮费规则这个字段,注意PasteDirectsun有一个特性,如果当前字段有注释(title),后面版本改成从特性Description读取了,则在UI中会以分组的形式展示,否则就以默认字段的模式显示!
只有分组模式显示,你才可以添加更多(list一般是这种模式)!
再来看看地区和相关配置的Dto配置
/// <summary>
///
/// </summary>
public class PostModelItemBase
{
/// <summary>
/// 名称 示例:偏远地区加邮费 最大32字符
/// </summary>
[MaxLength(32)]
[PasteRequired]
[PasteMark("post","itemname")]
[Description("名称 示例:偏远地区加邮费")]
public string Name { get; set; } = "";
///<summary>
///基础件数 表示多少件内
///</summary>
[Description("基础件数 表示多少件内")]
[PasteMark]
public int FirstNumber { get; set; }
///<summary>
///基础邮费 基础件数内多少钱
///</summary>
[PasteFenToYuan]
[Description("基础邮费 基础件数内多少钱")]
[PasteMark]
public int BasicPrice { get; set; }
///<summary>
///增量数量
///</summary>
[Description("增量数量")]
[PasteMark]
public int AddSliceNum { get; set; }
///<summary>
///增量的邮费
///</summary>
[PasteFenToYuan]
[Description("增量的邮费")]
[PasteMark]
public int AddSlicePrice { get; set; }
}
///<summary>
///
///</summary>
public class PostModelItemAddDto : PostModelItemBase
{
/// <summary>
/// 地区
/// </summary>
[PasteSunform("./area/index.html?atype=code", 420)]
[PasteSort(10)]
[Description("地区")]
public List<AddressShort> address_infos { get; set; }
}
上面关键在于PasteSunform,表示引入一个页面,这个页面是非PasteApeart的,也就是需要自行实现!
上面已经是数据格式了,我们一起来看看编辑的时候,返回的数据格式是咋样的
对于PasteDirectsun特性,在信息上返回的一般是拆解后的格式,
比如
注意看PasteDirectsun的内项addressinfos,这个返回是一个obj,也就是自定义页面中,系统会传入一个obj,实际前端获得信息后,会写入一个session本次存储,然后会给配置的页面一个session_key,用于读取这个缓存的信息!
对于PasteDirectsun则是会解析成\_划分的多层级格式
比如上面的models__0__id,起始表示的就是第一个list的id字段!
对于地区选择等,你只要在pasteform文件夹下,找一下area这个文件夹就是了!
将妓就计
不用选,后面都是PasteApeart,他们其实是一个东西
看版本,PasteApeart.Helper 26.9.2之后,就按照基类前面的顺序了,也符合阅读顺序,当然你可以使用PasteSort再次改变他!
1.语言吧,这本身只是一个开发思想,其实其他语言也可以用,不过最优雅实现的还是.NET
2.特别适用于需要表单,表格的系统,所以哪些EMS,CRM,ERP等都合适
3.扩展,比如这个思想,你也可以应用于C/S,理论上也是可以的
4.这个主要针对的是管理端,附带UI的CRUD,也就是说对于业务代码,是没影响的!
5.可能入门会麻烦点,毕竟有接近100个PasteXXXX特性要了解,幸运的是都是Paste开头,官方的也支持,比如MaxLength,Required等!