Browse Source

提交

master
gwbvipvip 9 months ago
parent
commit
dbffe328df
4 changed files with 145 additions and 66 deletions
  1. +129
    -52
      BPA.KitChen.GroupMealOrder.Application/BaseDto/DtoValidator.cs
  2. +1
    -1
      BPA.KitChen.GroupMealOrder.Application/Service/AExternalPlatform/Service/WeighOrder/WeighOrderServices.cs
  3. +14
    -13
      BPA.KitChen.GroupMealOrder/Handlers/RequestAuditFiltercs.cs
  4. +1
    -0
      BPA.KitChen.GroupMealOrder/Program.cs

+ 129
- 52
BPA.KitChen.GroupMealOrder.Application/BaseDto/DtoValidator.cs View File

@@ -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;
}
}
}

+ 1
- 1
BPA.KitChen.GroupMealOrder.Application/Service/AExternalPlatform/Service/WeighOrder/WeighOrderServices.cs View File

@@ -79,7 +79,7 @@ namespace BPA.KitChen.GroupMealOrder.Application.Service.AExternalPlatform.Servi
/// 更具openid获取称重订单
/// </summary>
/// <returns></returns>
[HttpPost("/api/WeighOrder/GetWeighOrderByOpenId")]
[HttpPost("/api/ExternalPlatform/WeighOrder/GetWeighOrderByOpenId")]
public async Task<PageUtil> GetWeighOrderByOpenId(GetWeighOrderByOpenIdInputDto inputDto)
{
return await _weighOrderService.GetWeighOrderByOpenId(inputDto);


+ 14
- 13
BPA.KitChen.GroupMealOrder/Handlers/RequestAuditFiltercs.cs View File

@@ -1,4 +1,5 @@
using BPA.KitChen.GroupMealOrder.Application.Service.AExternalPlatform.Service.CheckService.Services;
using BPA.KitChen.GroupMealOrder.Application.BaseDto;
using BPA.KitChen.GroupMealOrder.Application.Service.AExternalPlatform.Service.CheckService.Services;
using BPA.KitChen.GroupMealOrder.Core;
using Microsoft.AspNetCore.Mvc.Controllers;
using Microsoft.AspNetCore.Mvc.Filters;
@@ -52,19 +53,19 @@ namespace BPA.KitChen.GroupMealOrder.Handlers
//}


//if (requestUrl.ToUpper().Contains("ExternalPlatform".ToUpper()))
//{
if (requestUrl.ToUpper().Contains("ExternalPlatform".ToUpper()))
{

// var key = httpRequest.Headers["key"];
// var sign = httpRequest.Headers["sign"];
// List<PropertyInfo> proplist = new List<PropertyInfo>();
// foreach (var parameter in parameters)
// {
// var stingA = DtoValidator.GetSign(parameter.Value);
// //var sign = DtoValidator.GetAttributePrice(parameter.Value, "sign");
// await _checkServices.CheckSign(key, stingA, sign);
// }
//}
var key = httpRequest.Headers["key"];
var sign = httpRequest.Headers["sign"];
List<PropertyInfo> proplist = new List<PropertyInfo>();
foreach (var parameter in parameters)
{
var stingA = DtoValidator.GetSign(parameter.Value);
//var sign = DtoValidator.GetAttributePrice(parameter.Value, "sign");
await _checkServices.CheckSign(key, stingA, sign);
}
}

//============== 这里是执行方法之后获取数据 ====================
var actionContext = await next();


+ 1
- 0
BPA.KitChen.GroupMealOrder/Program.cs View File

@@ -12,6 +12,7 @@ builder.Services.AddUnifyResult();

builder.Services.AddControllers().AddInject();
builder.Services.AddSqlsugarSetup();
builder.Services.AddMvcFilter<RequestAuditFiltercs>();

var app = builder.Build();



Loading…
Cancel
Save