yz_server/Server/Utils/YZCloudApiHelper.cs

847 lines
24 KiB
C#
Raw Normal View History

2022-04-16 07:48:12 +00:00
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using Common.DbExtends.Extends;
using Common.Utils;
using CsharpHttpHelper;
namespace Server.Utils
{
/// <summary>
/// 后端API
/// </summary>
public class YZCloudApiHelper
{
/// <summary>
/// host
/// </summary>
private static readonly string host = "http://yzinterface.api.52cmg.cn/api/";
private static readonly int appkey = 334391396;
private static readonly string appsecret = "b924f8b944694cb8891bcfc7834dedb533436a3776de472cbde99577337902b2";
private static T HttpT<T>(string api, string method, object postdata = null) where T : class
{
try
{
var result = HttpResult(api,method,postdata);
if (result.StatusCode == HttpStatusCode.OK)
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<T>(result.Html);
}
return null;
}
catch (Exception e)
{
Client.SingleClient.Db.OnLog("请求出错", e);
return null;
}
}
/// <summary>
/// http
/// </summary>
/// <param name="api"></param>
/// <param name="method"></param>
/// <param name="postdata"></param>
/// <returns></returns>
private static HttpResult HttpResult(string api, string method, object postdata = null)
{
var data = Newtonsoft.Json.JsonConvert.SerializeObject(postdata);
var http = new HttpHelper();
HttpItem item = new HttpItem()
{
URL = host + api,
Method = method,
Timeout = 100000,
ReadWriteTimeout = 30000,
IsToLower = false,
Cookie = "",
UserAgent = "YZBlacklistCollect",
Accept = "text/html, application/xhtml+xml, */*",
ContentType = "application/json",
Referer = "",
Allowautoredirect = false,
AutoRedirectCookie = false,
Postdata = data,
PostEncoding = Encoding.UTF8
};
var timespan = Util.GetTimespan(DateTime.Now);
var sign = Util.GetMd5(AesHelper.Encrypt(data + appkey + timespan, appsecret));
item.Header.Add("sign", sign);
item.Header.Add("timestamp", timespan + "");
item.Header.Add("appkey", appkey + "");
var result = http.GetHtml(item);
return result;
}
private static ServiceResult<T> Http<T>(string api, string method, object postdata = null)
{
try
{
var result = HttpResult(api, method, postdata);
if (result.StatusCode == HttpStatusCode.OK)
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<ServiceResult<T>>(result.Html);
}
return new ServiceResult<T>(default(T))
{
Ok = false,
Message = result.Html,
};
}
catch (Exception e)
{
Client.SingleClient.Db.OnLog("请求出错", e);
return new ServiceResult<T>(default(T))
{
Ok = false,
Message = e.ToString(),
};
}
}
private static ServiceResult Http(string api, string method, object postdata = null)
{
try
{
var result = HttpResult(api, method, postdata);
if (result.StatusCode == HttpStatusCode.OK)
{
return Newtonsoft.Json.JsonConvert.DeserializeObject<ServiceResult>(result.Html);
}
return new ServiceResult()
{
Ok = false,
Data = result.Html,
};
}
catch (Exception e)
{
Client.SingleClient.Db.OnLog("请求出错", e);
return new ServiceResult()
{
Ok = false,
Data = e.ToString(),
};
}
}
/// <summary>
/// 删除黑名单数据
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
public static ServiceResult RemoveBlacklist(List<RemoveBlacklistInput> inputs)
{
inputs.ForEach(item =>
{
if (string.IsNullOrWhiteSpace(item.UserToken))
{
item.UserToken = DbExtend.ComputerFeature;
}
});
return Http("UserBlacklist/Remove", "post", inputs);
}
/// <summary>
/// 获取黑名单列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static PageResult<CloudBlacklistResult> GetBlacklist(BlacklistSearchPagingInput input)
{
if (string.IsNullOrWhiteSpace(input.UserToken))
{
input.UserToken = DbExtend.ComputerFeature;
}
return HttpT<PageResult<CloudBlacklistResult>>("UserBlacklist/GetList", "post", input);
}
/// <summary>
/// 获取商品黑名单列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static PageResult<CloudGoodsBlacklistResult> GetGoodsBlacklist(GoodsBlacklistSearchPagingInput input)
{
if (string.IsNullOrWhiteSpace(input.UserToken))
{
input.UserToken = DbExtend.ComputerFeature;
}
return HttpT<PageResult<CloudGoodsBlacklistResult>>("GoodsBlacklist/GetList", "post", input);
}
/// <summary>
/// 获取商店黑名单列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static PageResult<CloudStoreBlacklistResult> GetStoreBlacklist(StoreBlacklistSearchPagingInput input)
{
if (string.IsNullOrWhiteSpace(input.UserToken))
{
input.UserToken = DbExtend.ComputerFeature;
}
return HttpT<PageResult<CloudStoreBlacklistResult>>("StoreBlacklist/GetList", "post", input);
}
/// <summary>
/// 删除商品黑名单数据
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
public static ServiceResult RemoveGoodsBlacklist(List<RemoveGoodsBlacklistInput> inputs)
{
inputs.ForEach(item =>
{
if (string.IsNullOrWhiteSpace(item.UserToken))
{
item.UserToken = DbExtend.ComputerFeature;
}
});
return Http("GoodsBlacklist/Remove", "post", inputs);
}
/// <summary>
/// 删除商品黑名单数据
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
public static ServiceResult RemoveStoreBlacklist(List<RemoveStoreBlacklistInput> inputs)
{
inputs.ForEach(item =>
{
if (string.IsNullOrWhiteSpace(item.UserToken))
{
item.UserToken = DbExtend.ComputerFeature;
}
});
return Http("StoreBlacklist/Remove", "post", inputs);
}
/// <summary>
/// 新增用户黑名单
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
public static ServiceResult AddUserBlacklist(List<SetBlacklistInput> inputs)
{
inputs.ForEach(item =>
{
if (string.IsNullOrWhiteSpace(item.UserToken))
{
item.UserToken = DbExtend.ComputerFeature;
}
});
return Http("UserBlacklist/Add", "post", inputs);
}
/// <summary>
/// 新增商品黑名单
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
public static ServiceResult AddGoodsBlacklist(List<SetGoodsBlacklistInput> inputs)
{
inputs.ForEach(item =>
{
if (string.IsNullOrWhiteSpace(item.UserToken))
{
item.UserToken = DbExtend.ComputerFeature;
}
});
return Http("GoodsBlacklist/Add", "post", inputs);
}
/// <summary>
/// 新增商店黑名单
/// </summary>
/// <param name="inputs"></param>
/// <returns></returns>
public static ServiceResult AddStoreBlacklist(List<SetStoerBlacklistInput> inputs)
{
inputs.ForEach(item =>
{
if (string.IsNullOrWhiteSpace(item.UserToken))
{
item.UserToken = DbExtend.ComputerFeature;
}
});
return Http("StoreBlacklist/Add", "post", inputs);
}
}
/// <summary>
/// 设置商店
/// </summary>
public class SetStoerBlacklistInput
{
/// <summary>
/// 平台
/// </summary>
[Required]
[DisplayName("平台")]
public string Platform { get; set; }
/// <summary>
/// 商店名称
/// </summary>
[DisplayName("商店名称")]
public string StoreName { get; set; }
/// <summary>
/// 商店ID
/// </summary>
public string StoreId { get; set; }
/// <summary>
/// 备注
/// </summary>
[DisplayName("备注")]
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 新增时间
/// </summary>
[Required]
[DisplayName("新增时间")]
public DateTime AddDateTime { get; set; }
/// <summary>
/// 用户Token标示
/// </summary>
[DisplayName("用户关联特征码")]
public string UserToken { get; set; }
}
/// <summary>
/// 设置商品
/// </summary>
public class SetGoodsBlacklistInput
{
/// <summary>
/// 平台
/// </summary>
[Required]
[DisplayName("平台")]
public string Platform { get; set; }
/// <summary>
/// 商品ID
/// </summary>
[Required]
[DisplayName("商品ID")]
public string GoodsId { get; set; }
/// <summary>
/// 商店名称
/// </summary>
[DisplayName("商店名称")]
public string StoreName { get; set; }
/// <summary>
/// 备注
/// </summary>
[DisplayName("备注")]
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 新增时间
/// </summary>
[Required]
[DisplayName("新增时间")]
public DateTime AddDateTime { get; set; }
/// <summary>
/// 用户Token标示
/// </summary>
[DisplayName("用户关联特征码")]
public string UserToken { get; set; }
}
/// <summary>
/// 新增黑名单
/// </summary>
public class SetBlacklistInput
{
/// <summary>
/// 0=微信 1=QQ
/// </summary>
public int Type { get; set; }
/// <summary>
/// 用户ID
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 用户昵称
/// </summary>
public string UserNick { get; set; }
/// <summary>
/// 分组类型
/// </summary>
public BlacklistGroupType GroupType { get; set; }
/// <summary>
/// 头像
/// </summary>
public string Avatar { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 新增时间
/// </summary>
public DateTime AddDateTime { get; set; }
/// <summary>
/// 用户Token标示
/// </summary>
public string UserToken { get; set; }
}
/// <summary>
/// 删除商店黑名单
/// </summary>
public class RemoveStoreBlacklistInput
{
/// <summary>
/// 商店ID
/// </summary>
public string StoreId { get; set; }
/// <summary>
/// 平台
/// </summary>
[Required]
[DisplayName("平台")]
public string Platform { get; set; }
/// <summary>
/// 用户标示
/// </summary>
[Required]
[DisplayName("用户标示")]
public string UserToken { get; set; }
}
/// <summary>
/// 删除商品黑名单
/// </summary>
public class RemoveGoodsBlacklistInput
{
/// <summary>
/// 商品ID
/// </summary>
[Required]
[DisplayName("商品ID")]
public string GoodsId { get; set; }
/// <summary>
/// 平台
/// </summary>
[Required]
[DisplayName("平台")]
public string Platform { get; set; }
/// <summary>
/// 用户标示
/// </summary>
[Required]
[DisplayName("用户标示")]
public string UserToken { get; set; }
}
/// <summary>
/// 审核状态
/// </summary>
public enum AuditStateEmun : int
{
/// <summary>
/// 等待审核
/// </summary>
Waiting = 0,
/// <summary>
/// 审核成功
/// </summary>
Succee = 1,
/// <summary>
/// 审核失败
/// </summary>
Failure = 2,
}
/// <summary>
/// 云商品黑名单返回结果
/// </summary>
public class CloudStoreBlacklistResult
{
/// <summary>
/// ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 平台
/// </summary>
public string Platform { get; set; }
/// <summary>
/// 商店ID
/// </summary>
public string StoreId { get; set; }
/// <summary>
/// 商店名称
/// </summary>
public string StoreName { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 添加时间
/// </summary>
public DateTime AddDateTime { get; set; }
/// <summary>
/// 用户Token标示
/// </summary>
public string UserToken { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateDateTime { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public bool IsRemove { get; set; }
}
/// <summary>
/// 商店黑名单搜索
/// </summary>
public class StoreBlacklistSearchPagingInput : SearchPagingInput
{
/// <summary>
/// 用户Token标示
/// </summary>
public string UserToken { get; set; }
/// <summary>
/// 升序还是降序
/// </summary>
public bool IsAsc { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdateDateTime { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public AuditStateEmun? AuditState { get; set; }
}
/// <summary>
/// 云商品黑名单返回结果
/// </summary>
public class CloudGoodsBlacklistResult
{
/// <summary>
/// ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 商品ID
/// </summary>
public string GoodsId { get; set; }
/// <summary>
/// 平台
/// </summary>
public string Platform { get; set; }
/// <summary>
/// 商店名称
/// </summary>
public string StoreName { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 添加时间
/// </summary>
public DateTime AddDateTime { get; set; }
/// <summary>
/// 用户Token标示
/// </summary>
public string UserToken { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateDateTime { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public bool IsRemove { get; set; }
}
/// <summary>
/// 商品黑名单搜索
/// </summary>
public class GoodsBlacklistSearchPagingInput : SearchPagingInput
{
/// <summary>
/// 用户Token标示
/// </summary>
public string UserToken { get; set; }
/// <summary>
/// 升序还是降序
/// </summary>
public bool IsAsc { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime? UpdateDateTime { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public AuditStateEmun? AuditState { get; set; }
}
/// <summary>
/// 黑名单搜索
/// </summary>
public class BlacklistSearchPagingInput : SearchPagingInput
{
/// <summary>
/// 用户Token标示
/// </summary>
[DisplayName("用户关联特征码")]
public string UserToken { get; set; }
/// <summary>
/// 升序还是降序
/// </summary>
public bool IsAsc { get; set; }
/// <summary>
/// 同步时间
/// </summary>
public DateTime? UpdateDateTime { get; set; }
/// <summary>
/// 审核状态
/// </summary>
public AuditStateEmun? AuditState { get; set; }
}
/// <summary>
/// 云黑名单返回结果
/// </summary>
public class CloudBlacklistResult
{
/// <summary>
/// ID
/// </summary>
public long Id { get; set; }
/// <summary>
/// 0=微信 1=QQ
/// </summary>
public int Type { get; set; }
/// <summary>
/// 用户ID
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 用户昵称
/// </summary>
public string UserNick { get; set; }
/// <summary>
/// 分组类型
/// </summary>
public BlacklistGroupType GroupType { get; set; }
/// <summary>
/// 头像
/// </summary>
public string Avatar { get; set; }
/// <summary>
/// 备注
/// </summary>
public string Remark { get; set; } = string.Empty;
/// <summary>
/// 添加时间
/// </summary>
public DateTime AddDateTime { get; set; }
/// <summary>
/// 更新时间
/// </summary>
public DateTime UpdateDateTime { get; set; }
/// <summary>
/// 用户Token标示
/// </summary>
public string UserToken { get; set; }
/// <summary>
/// 是否删除
/// </summary>
public bool IsRemove { get; set; }
}
/// <summary>
/// 黑名单分组
/// </summary>
public enum BlacklistGroupType : int
{
/// <summary>
/// 未分组
/// </summary>
= 0,
/// <summary>
/// 薅羊毛党
/// </summary>
= 1,
/// <summary>
/// 恶意举报
/// </summary>
= 2
}
/// <summary>
/// 删除黑名单
/// </summary>
public class RemoveBlacklistInput
{
/// <summary>
/// 用户id
/// </summary>
[Required]
[DisplayName("用户id")]
public string Username { get; set; }
/// <summary>
/// 用户类型0微信 1QQ
/// </summary>
[Required]
[DisplayName("类型")]
public int Type { get; set; }
/// <summary>
/// 用户标示
/// </summary>
[Required]
[DisplayName("用户标示")]
public string UserToken { get; set; }
}
/// <summary>
/// 统一服务返回结果
/// </summary>
public class ServiceResult
{
/// <summary>
/// 请求是否成功
/// </summary>
public bool Ok { get; set; }
/// <summary>
/// 数据
/// </summary>
public object Data { get; set; }
/// <summary>
/// 错误信息
/// </summary>
public string Message { get; set; }
}
/// <summary>
/// 统一返回结果
/// </summary>
/// <typeparam name="T"></typeparam>
public class ServiceResult<T> : ServiceResult
{
/// <summary>
/// 初始化
/// </summary>
/// <param name="data"></param>
public ServiceResult(T data)
{
this.Data = data;
}
/// <summary>
/// 返回数据
/// </summary>
public new T Data { get; set; }
}
/// <summary>
/// 分页数据
/// </summary>
/// <typeparam name="T"></typeparam>
public class PageResult<T>
{
/// <summary>
/// 下一页
/// </summary>
public bool IsNext { get; set; }
/// <summary>
/// 上一页
/// </summary>
public bool IsBack { get; set; }
/// <summary>
/// 数据
/// </summary>
public List<T> Datas { get; set; }
/// <summary>
/// 总数量
/// </summary>
public int TotalNumber { get; set; }
/// <summary>
/// 每页显示条数
/// </summary>
public int PageSize { get; set; }
/// <summary>
/// 总页码
/// </summary>
public int PageNumber { get; set; }
/// <summary>
/// 当前页码
/// </summary>
public int PageIndex { get; set; }
/// <summary>
///
/// </summary>
/// <param name="Datas"></param>
/// <param name="TotalNumber"></param>
/// <param name="PageSize"></param>
/// <param name="PageIndex"></param>
/// <exception cref="Exception"></exception>
public PageResult(List<T> Datas, int TotalNumber, int PageSize, int PageIndex)
{
if (PageIndex <= 0 || PageSize <= 0) throw new Exception("Index或PageSize 有问题,请检查");
if (PageSize > 10000) throw new Exception("每页查询数量不能超过100");
PageNumber = 1;
if (TotalNumber != 0 && PageSize > 0)
{
PageNumber = TotalNumber / PageSize;
if (TotalNumber % PageSize != 0) PageNumber++;
}
this.Datas = Datas;
this.TotalNumber = TotalNumber;
this.PageNumber = PageNumber;
this.PageSize = PageSize;
this.PageIndex = PageIndex;
this.IsBack = PageIndex > 1;
this.IsNext = PageIndex < PageNumber;
}
}
/// <summary>
/// 分页输入参数
/// </summary>
public class PagingInput
{
/// <summary>
/// 页码
/// </summary>
public int PageIndex { get; set; } = 1;
/// <summary>
/// 限制条数
/// </summary>
public int PageSize { get; set; } = 10;
}
/// <summary>
/// 搜索输入
/// </summary>
public class SearchPagingInput : PagingInput
{
/// <summary>
/// 关键字
/// </summary>
public string Keyword { get; set; }
}
}