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