|
|
@@ -1,82 +1,159 @@ |
|
|
|
|
|
|
|
using BPA.KitChen.GroupMealOrder.Core.Entity; |
|
|
|
using BPA.KitChen.GroupMealOrder.Core.Enum; |
|
|
|
using BPA.KitChen.GroupMealOrder.SqlSugar; |
|
|
|
using MySqlConnector; |
|
|
|
using Furion.JsonSerialization; |
|
|
|
using Newtonsoft.Json; |
|
|
|
using NPOI.POIFS.Crypt.Dsig; |
|
|
|
using NPOI.SS.Formula.Functions; |
|
|
|
using NPOI.Util.ArrayExtensions; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.ComponentModel.DataAnnotations; |
|
|
|
using System.Reflection; |
|
|
|
using System.Text; |
|
|
|
|
|
|
|
namespace BPA.KitChen.GroupMealOrder.Application.BaseDto |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// Dto参数验证 |
|
|
|
/// </summary> |
|
|
|
public class DtoValidator |
|
|
|
public static class DtoValidator |
|
|
|
{ |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 验证会员 |
|
|
|
/// </summary> |
|
|
|
/// <param name="id"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public static ValidationResult Member(string id) |
|
|
|
{ |
|
|
|
var data = SqlSugarDb.Db.Queryable<BPA_MemberInfo>().First(x => x.Id == id&&x.IsDeleted==0); |
|
|
|
return data == null ? new ValidationResult("会员不存在") : ValidationResult.Success; |
|
|
|
} |
|
|
|
///// <summary> |
|
|
|
///// 获取签名 |
|
|
|
///// </summary> |
|
|
|
///// <typeparam name="T"></typeparam> |
|
|
|
///// <param name="t"></param> |
|
|
|
///// <param name="otype">0-不排序 1-按名称ASCII排序</param> |
|
|
|
///// <returns></returns> |
|
|
|
//public static string GetSign<T>(T t, int otype = 1) |
|
|
|
//{ |
|
|
|
// string retstr = ""; |
|
|
|
// //定义PropertyInfo的List |
|
|
|
// List<PropertyInfo> proplist = new List<PropertyInfo>(); |
|
|
|
// //遍历泛型类的每个属性加入到List里面 |
|
|
|
// Array.ForEach<PropertyInfo>(typeof(T).GetProperties(), |
|
|
|
// p => proplist.Add(p)); |
|
|
|
// //根据参数进行排序 0-不排序 1-按名称ASCII码排序 |
|
|
|
// if (otype == 1) |
|
|
|
// proplist = proplist.OrderBy(k => k.Name).ToList(); |
|
|
|
|
|
|
|
// //遍历List泛型生成我们要签名的字符串 |
|
|
|
// proplist.ForEach(p => |
|
|
|
// { |
|
|
|
// if (p.Name.ToLower() != "sign".ToLower()) |
|
|
|
// { |
|
|
|
// if (p.GetValue(t, null) != null && p.GetValue(t, null).ToString() != "") |
|
|
|
// { |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 验证会员标签的合法性 |
|
|
|
/// </summary> |
|
|
|
/// <param name="id"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public static ValidationResult MemberTag(string id) |
|
|
|
{ |
|
|
|
var data = SqlSugarDb.Db.Queryable<BPA_MemberTag>().First(x=>x.Id==id); |
|
|
|
return data == null ? new ValidationResult("会员标签不存在") : ValidationResult.Success; |
|
|
|
} |
|
|
|
/// <summary> |
|
|
|
/// 验证会员标签的合法性 |
|
|
|
/// </summary> |
|
|
|
/// <param name="id"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public static ValidationResult MemberTagList(List<string> ids) |
|
|
|
{ |
|
|
|
var data = SqlSugarDb.Db.Queryable<BPA_MemberTag>().Where(x => ids.Contains(x.Id) && x.IsDeleted == 0&&x.Status== CommonStatus.ENABLE).ToList(); |
|
|
|
return data.Count<=0 ? new ValidationResult("会员标签不存在") : ValidationResult.Success; |
|
|
|
} |
|
|
|
// var type = p.GetValue(t, null).GetType().FullName; |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 会员平台 |
|
|
|
/// </summary> |
|
|
|
/// <param name="type"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public static ValidationResult MemberPlatformType(int type) |
|
|
|
{ |
|
|
|
return !System.Enum.IsDefined(typeof(PlatformType), type) ? new ValidationResult("平台类型不存在") : ValidationResult.Success; |
|
|
|
// if (type == "System.String" || type == "System.Boolean" || type == "System.Int32" || type == "System.DateTime") |
|
|
|
// { |
|
|
|
// retstr = retstr + p.Name + "=" + p.GetValue(t, null) + "&"; |
|
|
|
// } |
|
|
|
// else |
|
|
|
// { |
|
|
|
|
|
|
|
} |
|
|
|
// retstr = retstr + p.Name + "=" + JsonConvert.SerializeObject(p.GetValue(t, null)) + "&"; |
|
|
|
// } |
|
|
|
|
|
|
|
// } |
|
|
|
|
|
|
|
// } |
|
|
|
// }); |
|
|
|
// //把字符串最后一位截断 |
|
|
|
// retstr = retstr.Substring(0, retstr.Length - 1); |
|
|
|
// //输出字符串 |
|
|
|
// return retstr; |
|
|
|
//} |
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 会员平台 |
|
|
|
/// 获取签名 |
|
|
|
/// </summary> |
|
|
|
/// <param name="type"></param> |
|
|
|
/// <param name="t"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public static ValidationResult Status(int type) |
|
|
|
public static string GetSign(object t) |
|
|
|
{ |
|
|
|
return !System.Enum.IsDefined(typeof(CommonStatus), type) ? new ValidationResult("状态错误") : ValidationResult.Success; |
|
|
|
string retstr = ""; |
|
|
|
//定义PropertyInfo的List |
|
|
|
List<PropertyInfo> proplist = new List<PropertyInfo>(); |
|
|
|
//遍历泛型类的每个属性加入到List里面 |
|
|
|
Array.ForEach<PropertyInfo>(t.GetType().GetProperties(), |
|
|
|
p => proplist.Add(p)); |
|
|
|
//根据参数进行排序 0-不排序 1-按名称ASCII码排序 |
|
|
|
proplist = proplist.OrderBy(k => k.Name).ToList(); |
|
|
|
|
|
|
|
//遍历List泛型生成我们要签名的字符串 |
|
|
|
proplist.ForEach(p => |
|
|
|
{ |
|
|
|
if (p.Name.ToLower() != "sign".ToLower()) |
|
|
|
{ |
|
|
|
if (p.GetValue(t, null) != null && p.GetValue(t, null).ToString() != "") |
|
|
|
{ |
|
|
|
|
|
|
|
var type = p.GetValue(t, null).GetType().FullName; |
|
|
|
|
|
|
|
if (type == "System.String" || type == "System.Boolean" || type == "System.Int32" || type == "System.DateTime") |
|
|
|
{ |
|
|
|
retstr = retstr + p.Name + "=" + p.GetValue(t, null) + "&"; |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
var jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; |
|
|
|
|
|
|
|
retstr = retstr + p.Name + "=" + JsonConvert.SerializeObject(p.GetValue(t, null), Formatting.None, jsonSetting) + "&"; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
}); |
|
|
|
//把字符串最后一位截断 |
|
|
|
retstr = retstr.Substring(0, retstr.Length - 1); |
|
|
|
//输出字符串 |
|
|
|
return retstr; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
/// 优惠券使用 |
|
|
|
/// 获取属性值 |
|
|
|
/// </summary> |
|
|
|
/// <param name="type"></param> |
|
|
|
/// <param name="obj"></param> |
|
|
|
/// <param name="name"></param> |
|
|
|
/// <returns></returns> |
|
|
|
public static ValidationResult CouponUseType(int type) |
|
|
|
public static string GetAttributePrice(object obj, string name) |
|
|
|
{ |
|
|
|
return !System.Enum.IsDefined(typeof(CouponUseType), type) ? new ValidationResult("状态错误") : ValidationResult.Success; |
|
|
|
string retstr = ""; |
|
|
|
//定义PropertyInfo的List |
|
|
|
List<PropertyInfo> proplist = new List<PropertyInfo>(); |
|
|
|
//遍历泛型类的每个属性加入到List里面 |
|
|
|
Array.ForEach<PropertyInfo>(obj.GetType().GetProperties(), |
|
|
|
p => proplist.Add(p)); |
|
|
|
//根据参数进行排序 0-不排序 1-按名称ASCII码排序 |
|
|
|
proplist = proplist.OrderBy(k => k.Name).ToList(); |
|
|
|
|
|
|
|
//遍历List泛型生成我们要签名的字符串 |
|
|
|
proplist.ForEach(p => |
|
|
|
{ |
|
|
|
if (p.Name.ToLower() == name.ToLower()) |
|
|
|
{ |
|
|
|
if (p.GetValue(obj, null).GetType().FullName.Contains("System.Collections.Generic.List")) |
|
|
|
{ |
|
|
|
retstr = JsonConvert.SerializeObject(p.GetValue(obj, null)); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
retstr = p.GetValue(obj, null)?.ToString(); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
}); |
|
|
|
//输出字符串 |
|
|
|
return retstr; |
|
|
|
} |
|
|
|
} |
|
|
|
} |