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 Api.Framework.Utils; using CsharpHttpHelper; namespace Api.Framework.Tools { /// /// 后端API /// public class YZCloudApiHelper { public static string ComputerFeature { get; set; } = "WdnHwv"; /// /// host /// public static readonly string host = "http://yzinterface.api.52cmg.cn/api/"; public static readonly string wshost = "ws://yzinterface.api.52cmg.cn/api/"; //public static readonly string wshost = "ws://127.0.0.1:7000/api/"; public static readonly int appkey = 334391396; public static readonly string appsecret = "b924f8b944694cb8891bcfc7834dedb533436a3776de472cbde99577337902b2"; private static T HttpT(string api, string method, object postdata = null) where T : class { try { var result = HttpResult(api, method, postdata); if (result.StatusCode == HttpStatusCode.OK) { LogHelper.GetSingleObj().Error("同步黑", result.Html); return Newtonsoft.Json.JsonConvert.DeserializeObject(result.Html); } return null; } catch (Exception e) { return null; } } /// /// http /// /// /// /// /// 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 = "Server", Accept = "text/html, application/xhtml+xml, */*", ContentType = "application/json", Referer = "", Allowautoredirect = false, AutoRedirectCookie = false, Postdata = data, PostEncoding = Encoding.UTF8 }; var timespan = GetTimespan(DateTime.Now); var sign = HttpExtend.GetMD5String(AesHelper.Encrypt(data + appkey + timespan, appsecret)).ToLower(); item.Header.Add("sign", sign); item.Header.Add("timestamp", timespan + ""); item.Header.Add("appkey", appkey + ""); item.Header.Add("UserToken", ComputerFeature); var result = http.GetHtml(item); return result; } public static Int64 GetTimespan(DateTime dateTime) { TimeSpan ts = dateTime - new DateTime(1970, 1, 1, 0, 0, 0, 0); return Convert.ToInt64(ts.TotalSeconds); } /// /// 生成签名 /// /// /// /// public static string CreateSign(string data, long timespan) { var sign = HttpExtend.GetMD5String(AesHelper.Encrypt(data + appkey + timespan, appsecret)); return sign; } 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>(result.Html); } return new ServiceResult(default(T)) { Ok = false, Message = result.Html, }; } catch (Exception e) { return new ServiceResult(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(result.Html); } return new ServiceResult() { Ok = false, Data = result.Html, }; } catch (Exception e) { return new ServiceResult() { Ok = false, Data = e.ToString(), }; } } /// /// 删除黑名单数据 /// /// /// public static ServiceResult RemoveBlacklist(List inputs) { inputs.ForEach(item => { if (string.IsNullOrWhiteSpace(item.UserToken)) { item.UserToken = ComputerFeature; } }); return Http("UserBlacklist/Remove", "post", inputs); } /// /// 获取黑名单列表 /// /// /// public static PageResult1 GetBlacklist(BlacklistSearchPagingInput input) { if (string.IsNullOrWhiteSpace(input.UserToken)) { input.UserToken = ComputerFeature; } return HttpT>("UserBlacklist/GetList", "post", input); } /// /// 获取商品黑名单列表 /// /// /// public static PageResult1 GetGoodsBlacklist(GoodsBlacklistSearchPagingInput input) { if (string.IsNullOrWhiteSpace(input.UserToken)) { input.UserToken = ComputerFeature; } return HttpT>("GoodsBlacklist/GetList", "post", input); } /// /// 获取商店黑名单列表 /// /// /// public static PageResult1 GetStoreBlacklist(StoreBlacklistSearchPagingInput input) { if (string.IsNullOrWhiteSpace(input.UserToken)) { input.UserToken = ComputerFeature; } return HttpT>("StoreBlacklist/GetList", "post", input); } /// /// 删除商品黑名单数据 /// /// /// public static ServiceResult RemoveGoodsBlacklist(List inputs) { inputs.ForEach(item => { if (string.IsNullOrWhiteSpace(item.UserToken)) { item.UserToken = ComputerFeature; } }); return Http("GoodsBlacklist/Remove", "post", inputs); } /// /// 删除商品黑名单数据 /// /// /// public static ServiceResult RemoveStoreBlacklist(List inputs) { inputs.ForEach(item => { if (string.IsNullOrWhiteSpace(item.UserToken)) { item.UserToken = ComputerFeature; } }); return Http("StoreBlacklist/Remove", "post", inputs); } /// /// 新增用户黑名单 /// /// /// public static ServiceResult AddUserBlacklist(List inputs) { inputs.ForEach(item => { if (string.IsNullOrWhiteSpace(item.UserToken)) { item.UserToken = ComputerFeature; } }); return Http("UserBlacklist/Add", "post", inputs); } /// /// 新增商品黑名单 /// /// /// public static ServiceResult AddGoodsBlacklist(List inputs) { inputs.ForEach(item => { if (string.IsNullOrWhiteSpace(item.UserToken)) { item.UserToken = ComputerFeature; } }); return Http("GoodsBlacklist/Add", "post", inputs); } /// /// 新增商店黑名单 /// /// /// public static ServiceResult AddStoreBlacklist(List inputs) { inputs.ForEach(item => { if (string.IsNullOrWhiteSpace(item.UserToken)) { item.UserToken = ComputerFeature; } }); return Http("StoreBlacklist/Add", "post", inputs); } /// /// 设置全局配置 /// /// /// public static ServiceResult SetGlobalConfig(Dictionary dic) { return Http("GlobalConfig/Set", "post", dic); } /// /// 获取全局配置 /// /// /// public static ServiceResult> GetGlobalConfig(params string[] keys) { var res = Http>("GlobalConfig/Get", "post", keys); if (res.Ok) { foreach (var key in keys) { if (!res.Data.ContainsKey(key)) { res.Data[key] = ""; } } } return res; } } /// /// 设置商店 /// public class SetStoerBlacklistInput { /// /// 平台 /// [Required] [DisplayName("平台")] public string Platform { get; set; } /// /// 商店名称 /// [DisplayName("商店名称")] public string StoreName { get; set; } /// /// 商店ID /// public string StoreId { get; set; } /// /// 备注 /// [DisplayName("备注")] public string Remark { get; set; } = string.Empty; /// /// 新增时间 /// [Required] [DisplayName("新增时间")] public DateTime AddDateTime { get; set; } /// /// 用户Token标示 /// [DisplayName("用户关联特征码")] public string UserToken { get; set; } } /// /// 设置商品 /// public class SetGoodsBlacklistInput { /// /// 平台 /// [Required] [DisplayName("平台")] public string Platform { get; set; } /// /// 商品ID /// [Required] [DisplayName("商品ID")] public string GoodsId { get; set; } /// /// 商店名称 /// [DisplayName("商店名称")] public string StoreName { get; set; } /// /// 备注 /// [DisplayName("备注")] public string Remark { get; set; } = string.Empty; /// /// 新增时间 /// [Required] [DisplayName("新增时间")] public DateTime AddDateTime { get; set; } /// /// 用户Token标示 /// [DisplayName("用户关联特征码")] public string UserToken { get; set; } } /// /// 新增黑名单 /// public class SetBlacklistInput { /// /// 0=微信 1=QQ /// public int Type { get; set; } /// /// 用户ID /// public string UserName { get; set; } /// /// 用户昵称 /// public string UserNick { get; set; } /// /// 分组类型 /// public BlacklistGroupType GroupType { get; set; } /// /// 头像 /// public string Avatar { get; set; } /// /// 备注 /// public string Remark { get; set; } = string.Empty; /// /// 新增时间 /// public DateTime AddDateTime { get; set; } /// /// 用户Token标示 /// public string UserToken { get; set; } } /// /// 删除商店黑名单 /// public class RemoveStoreBlacklistInput { /// /// 商店ID /// public string StoreId { get; set; } /// /// 平台 /// [Required] [DisplayName("平台")] public string Platform { get; set; } /// /// 用户标示 /// [Required] [DisplayName("用户标示")] public string UserToken { get; set; } } /// /// 删除商品黑名单 /// public class RemoveGoodsBlacklistInput { /// /// 商品ID /// [Required] [DisplayName("商品ID")] public string GoodsId { get; set; } /// /// 平台 /// [Required] [DisplayName("平台")] public string Platform { get; set; } /// /// 用户标示 /// [Required] [DisplayName("用户标示")] public string UserToken { get; set; } } /// /// 审核状态 /// public enum AuditStateEmun : int { /// /// 等待审核 /// Waiting = 0, /// /// 审核成功 /// Succee = 1, /// /// 审核失败 /// Failure = 2, } /// /// 云商品黑名单返回结果 /// public class CloudStoreBlacklistResult { /// /// ID /// public long Id { get; set; } /// /// 平台 /// public string Platform { get; set; } /// /// 商店ID /// public string StoreId { get; set; } /// /// 商店名称 /// public string StoreName { get; set; } /// /// 备注 /// public string Remark { get; set; } = string.Empty; /// /// 添加时间 /// public DateTime AddDateTime { get; set; } /// /// 用户Token标示 /// public string UserToken { get; set; } /// /// 更新时间 /// public DateTime UpdateDateTime { get; set; } /// /// 是否删除 /// public bool IsRemove { get; set; } } /// /// 商店黑名单搜索 /// public class StoreBlacklistSearchPagingInput : SearchPagingInput { /// /// 用户Token标示 /// public string UserToken { get; set; } /// /// 升序还是降序 /// public bool IsAsc { get; set; } /// /// 更新时间 /// public DateTime? UpdateDateTime { get; set; } /// /// 审核状态 /// public AuditStateEmun? AuditState { get; set; } } /// /// 云商品黑名单返回结果 /// public class CloudGoodsBlacklistResult { /// /// ID /// public long Id { get; set; } /// /// 商品ID /// public string GoodsId { get; set; } /// /// 平台 /// public string Platform { get; set; } /// /// 商店名称 /// public string StoreName { get; set; } /// /// 备注 /// public string Remark { get; set; } = string.Empty; /// /// 添加时间 /// public DateTime AddDateTime { get; set; } /// /// 用户Token标示 /// public string UserToken { get; set; } /// /// 更新时间 /// public DateTime UpdateDateTime { get; set; } /// /// 是否删除 /// public bool IsRemove { get; set; } } /// /// 商品黑名单搜索 /// public class GoodsBlacklistSearchPagingInput : SearchPagingInput { /// /// 用户Token标示 /// public string UserToken { get; set; } /// /// 升序还是降序 /// public bool IsAsc { get; set; } /// /// 更新时间 /// public DateTime? UpdateDateTime { get; set; } /// /// 审核状态 /// public AuditStateEmun? AuditState { get; set; } } /// /// 黑名单搜索 /// public class BlacklistSearchPagingInput : SearchPagingInput { /// /// 用户Token标示 /// [DisplayName("用户关联特征码")] public string UserToken { get; set; } /// /// 升序还是降序 /// public bool IsAsc { get; set; } /// /// 同步时间 /// public DateTime? UpdateDateTime { get; set; } /// /// 审核状态 /// public AuditStateEmun? AuditState { get; set; } } /// /// 云黑名单返回结果 /// public class CloudBlacklistResult { /// /// ID /// public long Id { get; set; } /// /// 0=微信 1=QQ /// public int Type { get; set; } /// /// 用户ID /// public string UserName { get; set; } /// /// 用户昵称 /// public string UserNick { get; set; } /// /// 分组类型 /// public BlacklistGroupType GroupType { get; set; } /// /// 头像 /// public string Avatar { get; set; } /// /// 备注 /// public string Remark { get; set; } = string.Empty; /// /// 添加时间 /// public DateTime AddDateTime { get; set; } /// /// 更新时间 /// public DateTime UpdateDateTime { get; set; } /// /// 用户Token标示 /// public string UserToken { get; set; } /// /// 是否删除 /// public bool IsRemove { get; set; } } /// /// 黑名单分组 /// public enum BlacklistGroupType : int { /// /// 未分组 /// 未分组 = 0, /// /// 薅羊毛党 /// 薅羊毛党 = 1, /// /// 恶意举报 /// 恶意举报 = 2 } /// /// 删除黑名单 /// public class RemoveBlacklistInput { /// /// 用户id /// [Required] [DisplayName("用户id")] public string Username { get; set; } /// /// 用户类型0微信 1QQ /// [Required] [DisplayName("类型")] public int Type { get; set; } /// /// 用户标示 /// [Required] [DisplayName("用户标示")] public string UserToken { get; set; } } /// /// 统一服务返回结果 /// public class ServiceResult { /// /// 请求是否成功 /// public bool Ok { get; set; } /// /// 数据 /// public object Data { get; set; } /// /// 错误信息 /// public string Message { get; set; } } /// /// 统一返回结果 /// /// public class ServiceResult : ServiceResult { /// /// 初始化 /// /// public ServiceResult(T data) { this.Data = data; } /// /// 返回数据 /// public new T Data { get; set; } } /// /// 分页数据 /// /// public class PageResult1 { /// /// 下一页 /// public bool IsNext { get; set; } /// /// 上一页 /// public bool IsBack { get; set; } /// /// 数据 /// public List Datas { get; set; } /// /// 总数量 /// public int TotalNumber { get; set; } /// /// 每页显示条数 /// public int PageSize { get; set; } /// /// 总页码 /// public int PageNumber { get; set; } /// /// 当前页码 /// public int PageIndex { get; set; } /// /// /// /// /// /// /// /// public PageResult1(List 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; } } /// /// 分页输入参数 /// public class PagingInput { /// /// 页码 /// public int PageIndex { get; set; } = 1; /// /// 限制条数 /// public int PageSize { get; set; } = 10; } /// /// 搜索输入 /// public class SearchPagingInput : PagingInput { /// /// 关键字 /// public string Keyword { get; set; } } }