我们在开发中经常遇到对方的接口请求有频率限制,比如当前接口每秒的请求不能大于100,不能大于1000,对于这样的,我们作为请求方,如何做限定?
地区模块可以说很常见,也不太常见,如果是商城系统,这一块就免不了的!
首先要知道地区是有层级概念的,比如省-市-区等
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,表示引入一个页面,这个页面是非PasteForm的,也就是需要自行实现!
上面已经是数据格式了,我们一起来看看编辑的时候,返回的数据格式是咋样的
对于PasteDirectsun特性,在信息上返回的一般是拆解后的格式,
比如
注意看PasteDirectsun的内项addressinfos,这个返回是一个obj,也就是自定义页面中,系统会传入一个obj,实际前端获得信息后,会写入一个session本次存储,然后会给配置的页面一个session_key,用于读取这个缓存的信息!
对于PasteDirectsun则是会解析成\_划分的多层级格式
比如上面的models__0__id,起始表示的就是第一个list的id字段!
对于地区选择等,你只要在pasteform文件夹下,找一下area这个文件夹就是了!
已经升级了,主要是left join的查询的时候没有过滤,其实这个问题,多租户也是一样的!
b不难吧,就几个地址!