894 lines
26 KiB
C#
894 lines
26 KiB
C#
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
|
||
{
|
||
/// <summary>
|
||
/// 后端API
|
||
/// </summary>
|
||
public class YZCloudApiHelper
|
||
{
|
||
public static string ComputerFeature { get; set; } = "WdnHwv";
|
||
|
||
/// <summary>
|
||
/// host
|
||
/// </summary>
|
||
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<T>(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<T>(result.Html);
|
||
}
|
||
return null;
|
||
}
|
||
catch (Exception 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 = "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);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 生成签名
|
||
/// </summary>
|
||
/// <param name="data"></param>
|
||
/// <param name="timespan"></param>
|
||
/// <returns></returns>
|
||
public static string CreateSign(string data, long timespan)
|
||
{
|
||
var sign = HttpExtend.GetMD5String(AesHelper.Encrypt(data + appkey + timespan, appsecret));
|
||
return sign;
|
||
}
|
||
|
||
|
||
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)
|
||
{
|
||
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)
|
||
{
|
||
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 = ComputerFeature;
|
||
}
|
||
});
|
||
return Http("UserBlacklist/Remove", "post", inputs);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 获取黑名单列表
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
public static PageResult1<CloudBlacklistResult> GetBlacklist(BlacklistSearchPagingInput input)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(input.UserToken))
|
||
{
|
||
input.UserToken = ComputerFeature;
|
||
}
|
||
return HttpT<PageResult1<CloudBlacklistResult>>("UserBlacklist/GetList", "post", input);
|
||
}
|
||
/// <summary>
|
||
/// 获取商品黑名单列表
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
public static PageResult1<CloudGoodsBlacklistResult> GetGoodsBlacklist(GoodsBlacklistSearchPagingInput input)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(input.UserToken))
|
||
{
|
||
input.UserToken = ComputerFeature;
|
||
}
|
||
return HttpT<PageResult1<CloudGoodsBlacklistResult>>("GoodsBlacklist/GetList", "post", input);
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 获取商店黑名单列表
|
||
/// </summary>
|
||
/// <param name="input"></param>
|
||
/// <returns></returns>
|
||
public static PageResult1<CloudStoreBlacklistResult> GetStoreBlacklist(StoreBlacklistSearchPagingInput input)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(input.UserToken))
|
||
{
|
||
input.UserToken = ComputerFeature;
|
||
}
|
||
return HttpT<PageResult1<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 = 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 = 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 = 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 = 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 = ComputerFeature;
|
||
}
|
||
});
|
||
return Http("StoreBlacklist/Add", "post", inputs);
|
||
}
|
||
/// <summary>
|
||
/// 设置全局配置
|
||
/// </summary>
|
||
/// <param name="dic"></param>
|
||
/// <returns></returns>
|
||
public static ServiceResult SetGlobalConfig(Dictionary<string, string> dic)
|
||
{
|
||
return Http("GlobalConfig/Set", "post", dic);
|
||
}
|
||
/// <summary>
|
||
/// 获取全局配置
|
||
/// </summary>
|
||
/// <param name="keys"></param>
|
||
/// <returns></returns>
|
||
public static ServiceResult<Dictionary<string, string>> GetGlobalConfig(params string[] keys)
|
||
{
|
||
var res = Http<Dictionary<string, string>>("GlobalConfig/Get", "post", keys);
|
||
if (res.Ok)
|
||
{
|
||
foreach (var key in keys)
|
||
{
|
||
if (!res.Data.ContainsKey(key))
|
||
{
|
||
res.Data[key] = "";
|
||
}
|
||
}
|
||
}
|
||
return res;
|
||
}
|
||
}
|
||
/// <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 PageResult1<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 PageResult1(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; }
|
||
}
|
||
}
|