yz_server/Server/Utils/YZCloudApiHelper.cs

847 lines
24 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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