忽略dll文件git

This commit is contained in:
“wanyongkang”
2023-07-29 10:19:42 +08:00
parent 7f97317bcc
commit b562aba2b1
3868 changed files with 63608 additions and 385427 deletions

View File

@@ -1,15 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Hncore.Wx.Open
{
public class SendResult
{
public int errcode { get; set; }
public string errmsg { get; set; }
public long msgid { get; set; }
}
}

View File

@@ -1,266 +0,0 @@
using Hncore.Infrastructure.Common;
using Hncore.Infrastructure.Extension;
using Hncore.Infrastructure.Serializer;
using Hncore.Pass.MsgCenter.Constant;
using Hncore.Pass.MsgCenter.Util;
using Hncore.Wx.Open.Enums;
using System.Net.Http;
using System.Threading.Tasks;
namespace Hncore.Wx.Open
{
public static class TemplateApi
{
private static IHttpClientFactory _HttpClientFactory;
public static void Init(IHttpClientFactory HttpClientFactory)
{
_HttpClientFactory = HttpClientFactory;
}
private static HttpClient GetHttpClient()
{
return _HttpClientFactory.CreateClient("WxOpen");
}
/// <summary>
/// 开放平台或者公众平台或者小程序发送模板消息
/// </summary>
/// <param name="appId">公众号appid</param>
/// <param name="templateId">模板id</param>
/// <param name="to">openid ,号分割</param>
/// <param name="tData">数据</param>
/// <returns></returns>
public static async Task<SendResult> SendTemplateMessageAsync(string appId, string to, ChannelType chennel, TemplateBaseModel tData)
{
var wxAppSecret = WxOpenApi.GetWxAppSecret(appId);
var access_token = "";
if (!string.IsNullOrWhiteSpace(wxAppSecret))//公众平台或者小程序直接发送模板消息
{
access_token = await WxOpenApi.GetAccessToken(appId, wxAppSecret);
}
else//开放平台代公众平台发送模板消息
{
access_token = await WxOpenApi.GetAuthorizerAccessToken(appId);
}
var tplId =await GetTemplateIdAsync(appId, tData.template_id);
if (string.IsNullOrWhiteSpace(tplId))
{
LogHelper.Error("没有找到对应的模板Id", $"appid={appId},tpl={tData.template_id}");
return new SendResult()
{
errcode = 10001,
errmsg = "没有对应的模板"
};
}
tData.template_id = tplId;
var userList = to.Split(',');
foreach (var touser in userList)
{
tData.touser = touser;
var reqData = tData.ToData();
if (chennel == ChannelType.MP)
{
mp_send(access_token, reqData);
}
else if (chennel == ChannelType.MiniApp)
{
miniapp_send(access_token, reqData);
}
}
return new SendResult();
}
/// <summary>
/// 发送小程序订阅消息
/// </summary>
/// <param name="appId">小程序appid</param>
/// <param name="templateId">模板id</param>
/// <param name="to">openid ,号分割</param>
/// <param name="tData">数据</param>
/// <returns></returns>
public static async Task<SendResult> SendSubscribeMessageAsync(string appId, string to, TemplateBaseModel tData)
{
var wxAppSecret = WxOpenApi.GetWxAppSecret(appId);
var access_token = await WxOpenApi.GetAccessToken(appId, wxAppSecret);
var userList = to.Split(',');
foreach (var touser in userList)
{
tData.touser = touser;
var reqData = tData.ToData();
miniapp_subscribe_send(access_token, reqData);
}
return new SendResult();
}
/// <summary>
/// 根据短模板编号得到对应的模板id
/// </summary>
/// <param name="appId"></param>
/// <param name="short_tpl_id"></param>
/// <returns></returns>
public static async Task<string> GetTemplateIdAsync(string appId, string short_tpl_id)
{
if (!short_tpl_id.StartsWith("OPENTM") && !short_tpl_id.StartsWith("TM")&& !short_tpl_id.StartsWith("ETOR"))
{
return short_tpl_id;
}
var key = string.Format(ConstantConfig.Redis_TempleteId_Key, appId, short_tpl_id);
var templete_id = await RedisHelper.GetAsync(key);
if (!string.IsNullOrWhiteSpace(templete_id))
{
return templete_id;
}
var access_token = await WxOpenApi.GetAuthorizerAccessToken(appId);
var ret = await get_tpl(access_token, short_tpl_id);
if (ret.errcode == 0)
{
await RedisHelper.SetAsync(key, ret.template_id);
return ret.template_id;
}
return "";
}
public static async Task<SendResult> mp_send(string access_token, object reqData)
{
if (string.IsNullOrWhiteSpace(access_token))
{
return new SendResult()
{
errcode = 1000,
errmsg = "access_token 不存在"
};
}
string urlFormat = $"cgi-bin/message/template/send?access_token={access_token}";
LogHelper.Debug("mp_send_req", reqData.ToJson());
var respJson = await GetHttpClient().PostAsJsonGetString(urlFormat, reqData);
var response = respJson.FromJsonToOrDefault<SendResult>();
if (response.errcode > 0)
{
LogHelper.Error("mp_send_respJson", respJson);
return response;
}
return response;
}
public static async Task<SendResult> miniapp_send(string access_token, object reqData)
{
if (string.IsNullOrWhiteSpace(access_token))
{
return new SendResult()
{
errcode = 1000,
errmsg = "access_token 不存在"
};
}
string urlFormat = $"cgi-bin/message/wxopen/template/send?access_token={access_token}";
LogHelper.Debug("mp_send_req", reqData.ToJson());
var respJson = await GetHttpClient().PostAsJsonGetString(urlFormat, reqData);
var response = respJson.FromJsonToOrDefault<SendResult>();
if (response.errcode > 0)
{
LogHelper.Error("miniapp_send_respJson", respJson);
return response;
}
return response;
}
//小程序订阅消息
public static async Task<SendResult> miniapp_subscribe_send(string access_token, object reqData)
{
if (string.IsNullOrWhiteSpace(access_token))
{
return new SendResult()
{
errcode = 1000,
errmsg = "access_token 不存在"
};
}
string urlFormat = $"cgi-bin/message/subscribe/send?access_token={access_token}";
LogHelper.Debug("miniapp_subscribe_send", reqData.ToJson());
var respJson = await GetHttpClient().PostAsJsonGetString(urlFormat, reqData);
var response = respJson.FromJsonToOrDefault<SendResult>();
if (response.errcode > 0)
{
LogHelper.Error("miniapp_subscribe_send", respJson);
return response;
}
return response;
}
public static async Task<SendResult> uniform_send(string access_token, object reqData)
{
if (string.IsNullOrWhiteSpace(access_token))
{
return new SendResult()
{
errcode = 1000,
errmsg = "access_token 不存在"
};
}
string urlFormat = $"cgi-bin/message/wxopen/template/uniform_send?access_token={access_token}";
LogHelper.Debug("SendTemplateMessageAsync_Req", reqData.ToJson());
var respJson = await GetHttpClient().PostAsJsonGetString(urlFormat, reqData);
var response = respJson.FromJsonToOrDefault<SendResult>();
if (response.errcode > 0)
{
LogHelper.Debug("SendTemplateMessageAsync_respJson", respJson);
return response;
}
return new SendResult();
}
public static async Task<GetTemplateResponse> get_tpl(string access_token, string short_tpl_id)
{
if (string.IsNullOrWhiteSpace(access_token))
{
return new GetTemplateResponse()
{
errcode = 1000,
errmsg = "access_token 不存在"
};
}
var reqData = new
{
template_id_short = short_tpl_id
};
string urlFormat = $"cgi-bin/template/api_add_template?access_token={access_token}";
LogHelper.Debug("get_tpl", reqData.ToJson());
var respJson = await GetHttpClient().PostAsJsonGetString(urlFormat, reqData);
var response = respJson.FromJsonToOrDefault<GetTemplateResponse>();
if (response.errcode > 0)
{
LogHelper.Error("get_tpl_respJson", respJson);
return response;
}
return response;
}
private static async Task<GetTempleteListResponse> get_tpl_list(string access_token)
{
if (string.IsNullOrWhiteSpace(access_token))
{
return new GetTempleteListResponse()
{
errcode = 1000,
errmsg = "access_token 不存在"
};
}
string urlFormat = $"cgi-bin/template/get_all_private_template?access_token={access_token}";
var respJson = await GetHttpClient().GetStringAsync(urlFormat);
var response = respJson.FromJsonToOrDefault<GetTempleteListResponse>();
if (response.errcode > 0)
{
LogHelper.Error("get_tpl_respJson", respJson);
return response;
}
return response;
}
}
}

View File

@@ -1,129 +0,0 @@
using System;
using System.Collections.Generic;
namespace Hncore.Wx.Open
{
public class TemplateBaseModel
{
public string touser { get; set; }
public string template_id { get; set; }
public List<TemplateDataItem> Items { get; set; } = new List<TemplateDataItem>();
//{
// "touser":"touser",
// "template_id": "TEMPLATE_ID",
// "data": {
// "keyword1": {
// "value": "339208499"
// },
// "keyword2": {
// "value": "2015年01月05日 12:30"
// },
// "keyword3": {
// "value": "腾讯微信总部"
// } ,
// "keyword4": {
// "value": "广州市海珠区新港中路397号"
// }
// }
//}
public virtual Dictionary<string, Object> ToData()
{
var data = new Dictionary<string, Object>() {
{ "touser",touser},
{"template_id",template_id}
};
var index = 1;
var dataItems = new Dictionary<string, Object>() { };
Items.ForEach(m =>
{
dataItems[$"keyword{index}"] = m;
index++;
});
data["data"] = dataItems;
return data;
}
}
public class TemplateMPModel: TemplateBaseModel
{
public string Url { get; set; }
public string MiniAppId { get; set; }
public TemplateDataItem first { get; set; }
public TemplateDataItem remark { get; set; }
public override Dictionary<string, Object> ToData()
{
var ret = base.ToData();
var data = ret ["data"] as Dictionary<string, Object>;
if (first != null) data["first"] = first;
if (remark != null) data["remark"] = remark;
if (!string.IsNullOrWhiteSpace(Url)) ret["url"] = Url;
if (!string.IsNullOrWhiteSpace(MiniAppId)) ret["miniprogram"] = new
{
appid = MiniAppId,
pagepath = Url
};
return ret;
}
}
public class TemplateMiniAppModel : TemplateBaseModel
{
public string page { get; set; }
public string form_id { get; set; }
public string emphasis_keyword { get; set; }
public override Dictionary<string, Object> ToData()
{
var ret = base.ToData();
if (!string.IsNullOrWhiteSpace(page)) ret["page"] = page;
if (!string.IsNullOrWhiteSpace(form_id)) ret["form_id"] = form_id;
if (!string.IsNullOrWhiteSpace(emphasis_keyword)) ret["emphasis_keyword"] = emphasis_keyword;
return ret;
}
}
public class TemplateDataItem
{
public TemplateDataItem(string v, string c = "#173177")
{
value = v;
color = c;
}
public string name { get; set; }
public string value { get; set; }
//
// 摘要:
// 16进制颜色代码#FF0000
public string color { get; set; }
}
/// <summary>
/// 小程序订阅消息
/// </summary>
public class SubscribeMiniAppModel : TemplateBaseModel
{
public string page { get; set; }
public override Dictionary<string, Object> ToData()
{
var ret = base.ToData();
var data = new Dictionary<string, Object>() {
{ "touser",touser},
{"template_id",template_id}
};
var index = 1;
var dataItems = new Dictionary<string, Object>() { };
Items.ForEach(m =>
{
var num = index.ToString().PadLeft(2, '0');
dataItems[m.name] = new { value = m.value };
index++;
});
data["data"] = dataItems;
if (!string.IsNullOrWhiteSpace(page)) ret["page"] = page;
return data;
}
}
}