Commit b978ad7e authored by 黄奎's avatar 黄奎

页面修改

parent b62cf733
using Edu.CacheManager.Base;
using Edu.Common.Enum;
using Edu.Model.CacheModel;
using Edu.Repository.User;
using System;
using System.Linq;
namespace Edu.Cache.WeChat
{
......@@ -82,7 +78,7 @@ namespace Edu.Cache.WeChat
}
/// <summary>
/// redis缓存
/// redis缓存【用户获取商城端缓存】
/// </summary>
public class WeChatReidsCache2
{
......@@ -96,45 +92,20 @@ namespace Edu.Cache.WeChat
/// <summary>
/// 设置缓存
/// </summary>
/// <param name="cacheKey"></param>
/// <param name="token"></param>
/// <param name="JwtExpirTime"></param>
public static void TokenSet(string cacheKey, string token, int JwtExpirTime)
/// <param name="value"></param>
public static void Set(string cacheKey, string value)
{
try
{
TimeSpan ts = GetExpirTime(JwtExpirTime);
redis.StringSet(cacheKey, token, ts);
TimeSpan ts = DateTime.Now.AddSeconds(7000) - DateTime.Now;
redis.StringSet(cacheKey, value, ts);
}
catch (Exception ex)
{
Common.Plugin.LogHelper.Write(ex, "TokenSet缓存设置失败");
Common.Plugin.LogHelper.Write(ex, "WeChatReidsCache2_Set");
}
}
/// <summary>
/// 获取缓存时长
/// </summary>
/// <param name="JwtExpirTime"></param>
/// <returns></returns>
private static TimeSpan GetExpirTime(int JwtExpirTime)
{
DateTime dt = DateTime.Now;
DateTime dt2 = DateTime.Now;
TimeSpan ts = dt.AddSeconds(JwtExpirTime) - dt2;
return ts;
}
/// <summary>
/// 判断key是否存在
/// </summary>
/// <param name="cacheKey"></param>
/// <returns></returns>
public static bool Exists(string cacheKey)
{
return redis.KeyExists(cacheKey);
}
/// <summary>
/// 获取缓存
/// </summary>
......@@ -152,7 +123,6 @@ namespace Edu.Cache.WeChat
return "";
}
}
}
}
\ No newline at end of file
......@@ -762,5 +762,17 @@ namespace Edu.Common
{
get { return "https://api.weixin.qq.com/"; }
}
/// <summary>
/// 是否是本地服务器
/// </summary>
public static int IsLocal
{
get
{
Int32.TryParse(ReadConfigKey("IsLocal"), out int _IsLocal);
return _IsLocal;
}
}
}
}
\ No newline at end of file
......@@ -60,10 +60,13 @@ namespace Edu.Common.Plugin
/// 执行HTTP POST请求。
/// </summary>
/// <param name="url">请求地址</param>
/// <param name="postDataStr">请求地址</param>
/// <param name="postDataStr">请求地址</param>
/// <param name="path">生成文件路径</param>
/// <param name="resultType">返回类型(0-图片路径,1-base64图片)</param>
/// <returns>HTTP响应</returns>
public static string HttpPost_V2(string url, string postDataStr, string path)
public static string HttpPostImageToBase64(string url, string postDataStr, string path="",int resultType=0)
{
string imgString = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "POST";
req.ContentType = "application/octet-stream";
......@@ -80,18 +83,33 @@ namespace Edu.Common.Plugin
{
encoding = Encoding.GetEncoding(rsp.CharacterSet);
}
System.IO.Stream stream = null;
try
{
// 以字符流的方式读取HTTP响应
stream = rsp.GetResponseStream();
return ReadImageForStream_V2(stream, path);
System.Drawing.Image result = System.Drawing.Image.FromStream(stream);
System.Drawing.Bitmap bit = new System.Drawing.Bitmap(result);
//图片地址
if (resultType == 0)
{
bit.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);
imgString= path;
}
//base64
else if (resultType == 1)
{
MemoryStream memoryStream = new MemoryStream();
using MemoryStream ms1 = memoryStream;
bit.Save(ms1, System.Drawing.Imaging.ImageFormat.Png);
byte[] arr1 = ms1.ToArray();
imgString = Convert.ToBase64String(arr1);
}
}
catch (Exception ex)
{
LogHelper.Write(ex, "HttpPost_V2");
return "";
LogHelper.Write(ex, "HttpPostImageToBase64");
imgString = "";
}
finally
{
......@@ -99,20 +117,7 @@ namespace Edu.Common.Plugin
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
/// <summary>
/// 获取
/// </summary>
/// <param name="imgstream"></param>
/// <returns></returns>
public static string ReadImageForStream_V2(Stream imgstream, string path)
{
System.Drawing.Image result = System.Drawing.Image.FromStream(imgstream);
System.Drawing.Bitmap bit = new System.Drawing.Bitmap(result);
bit.Save(path, System.Drawing.Imaging.ImageFormat.Jpeg);
return path;
return imgString;
}
......@@ -123,30 +128,17 @@ namespace Edu.Common.Plugin
/// <returns>HTTP响应</returns>
public static string HttpGet(string url)
{
string result = "";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Method = "GET";
req.ContentType = "application/json";
HttpWebResponse rsp = (HttpWebResponse)req.GetResponse();
if (string.IsNullOrWhiteSpace(rsp.CharacterSet))
{
return GetResponseAsString(rsp, Encoding.UTF8);
}
else
Encoding encoding = Encoding.UTF8;
if (!string.IsNullOrWhiteSpace(rsp.CharacterSet))
{
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet);
return GetResponseAsString(rsp, encoding);
encoding = Encoding.GetEncoding(rsp.CharacterSet);
}
}
/// <summary>
/// 把响应流转换为文本。
/// </summary>
/// <param name="rsp">响应流对象</param>
/// <param name="encoding">编码方式</param>
/// <returns>响应文本</returns>
private static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)
{
System.IO.Stream stream = null;
StreamReader reader = null;
try
......@@ -154,7 +146,12 @@ namespace Edu.Common.Plugin
// 以字符流的方式读取HTTP响应
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
return reader.ReadToEnd();
result = reader.ReadToEnd();
}
catch(Exception ex)
{
Common.Plugin.LogHelper.Write(ex, string.Format("HttpGet:url=={0}", url));
result = "";
}
finally
{
......@@ -163,34 +160,7 @@ namespace Edu.Common.Plugin
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
/// <summary>
/// bitmap转 base64
/// </summary>
/// <param name="bmp1"></param>
/// <param name="imageFormat"></param>
/// <returns></returns>
public static string BitmapToBase64(System.Drawing.Bitmap bmp1, System.Drawing.Imaging.ImageFormat imageFormat)
{
string UserPhoto = "";
try
{
MemoryStream memoryStream = new MemoryStream();
using MemoryStream ms1 = memoryStream;
bmp1.Save(ms1, imageFormat);
byte[] arr1 = ms1.ToArray();
UserPhoto = Convert.ToBase64String(arr1);
}
catch (Exception ex)
{
UserPhoto = "";
LogHelper.Write(ex, string.Format("bitmapToBase64:"));
}
return UserPhoto;
return result;
}
}
}
\ No newline at end of file
......@@ -16,15 +16,17 @@ namespace Edu.Common.Plugin
/// <summary>
/// 获取access_token
/// </summary>
/// <param name="AppID"></param>
/// <param name="AppSecret"></param>
/// <returns></returns>
public static string GetAccessToken()
public static string GetAccessToken(string AppID,string AppSecret)
{
string token = string.Empty;
try
{
string wechatapi = Config.WechatApi;
string appID = Config.AppID;
string appSecret = Config.AppSecret;
string appID = AppID;
string appSecret = AppSecret;
//获取微信token
string token_url = wechatapi+"cgi-bin/token?grant_type=client_credential&appid=" + appID + "&secret=" + appSecret;
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(token_url);
......@@ -50,33 +52,33 @@ namespace Edu.Common.Plugin
/// <summary>
/// 生成小程序码
/// </summary>
/// <param name="path"></param>
/// <param name="width"></param>
/// <param name="mallBaseId"></param>
/// <param name="token"></param>
/// <param name="url">跳转地址</param>
/// <param name="width">宽度</param>
/// <returns></returns>
public static string GetWeiXinQRCode(string token, string path, int width)
public static string GetWeChatQRCode(string token,string url, int width)
{
string result = "";
string tempPath = "\\upfile\\temporary\\" + DateTime.Now.ToString("yyyyMMdd") + "\\";
string basepath = AppContext.BaseDirectory+ tempPath;
string fileName = DateTime.Now.Ticks + ".jpg";
if (!Directory.Exists(basepath))
{
Directory.CreateDirectory(basepath);
}
if (!string.IsNullOrEmpty(token))
{
string GetImageUrl = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + token;//获取小程序码
//获取小程序码
string apiurl = "https://api.weixin.qq.com/wxa/getwxacode?access_token=" + token;
var postData = new
{
path,
path= url,
width
};
string pathName = DateTime.Now.Ticks + ".jpg";
string basepath = AppContext.BaseDirectory;
string tempPath = basepath + "\\upfile\\temporary\\" ;
if (!Directory.Exists(tempPath))
{
Directory.CreateDirectory(tempPath);
}
var Robj = HttpHelper.HttpPost_V2(GetImageUrl, JsonHelper.Serialize(postData), tempPath + pathName);
return "/upfile/temporary/" + pathName;
var Robj = HttpHelper.HttpPostImageToBase64(apiurl, JsonHelper.Serialize(postData),path: basepath + fileName, resultType:0);
result= tempPath + fileName;
}
return "";
return result;
}
}
}
......@@ -511,5 +511,36 @@ namespace Edu.WebApi.Controllers.Course
var flag = educationContractModule.SetBackClassProtocolSureModule(Id, IsSure);
return flag ? ApiResult.Success() : ApiResult.Failed();
}
/// <summary>
/// 生成小程序二维码
/// </summary>
/// <returns></returns>
public ApiResult CreateWeChatCode()
{
string url = base.ParmJObj.GetStringValue("url");
if (string.IsNullOrEmpty(url))
{
url = "/pages/index/index";
}
int width = base.ParmJObj.GetInt("width");
if (width <= 0)
{
width = 430;
}
string tokenKey = "DATA_WeiXinToken_" + Common.Config.AppID;
string token = Cache.WeChat.WeChatReidsCache2.GetToken(tokenKey);
if (Config.IsLocal == 1)
{
token = "47___nany1N0KvmJYZNkOJmXN6iVEddis5VdBGSBnQst6SLKe_3liKbSDe4mqBQMB6ReW4QfjDLVv5lCALF15mC618pRIkcxbbNTmvNh_ExRgYoK4euIkZBqubz8YHQe9se3FQ8L8q3Kgk9dDmUNREhACAEIV";
}
if (string.IsNullOrEmpty(token))
{
token = Common.Plugin.WeChatHelper.GetAccessToken(Common.Config.AppID, Common.Config.AppSecret);
Cache.WeChat.WeChatReidsCache2.Set(tokenKey, token);
}
string filePath = Common.Plugin.WeChatHelper.GetWeChatQRCode(token,url, width);
return ApiResult.Success(data: filePath);
}
}
}
......@@ -68,31 +68,6 @@ namespace Edu.WebApi.Controllers.User
// SendType = 0,
// Title = "HKHK"
//});
string tokenKey = "DATA_WeiXinToken_" + Common.Config.AppID;
string cacheToken = Cache.WeChat.WeChatReidsCache2.GetToken(tokenKey);
string token = "47_9obW5f9I6EO6kguMoFDQs8xl4R3GInLj1zjCVXejcGrRuOQAirkTi8almOQhbImZEdXiZM5EZmuQXXzDrvWgy8kvz5VJCqVG82TsdOXBWda6fkPerionkQwJj1aG6rsSKhrza-7KLuKudkbXMMJdAIASSP";
//token = Common.Plugin.WeChatHelper.GetAccessToken();
//if (!string.IsNullOrEmpty(cacheToken))
//{
// token = cacheToken;
//}
//else
//{
//}
Console.WriteLine(string.Format("Token::: {0}", token));
if (!string.IsNullOrEmpty(token))
{
// Cache.WeChat.WeChatReidsCache2.TokenSet(tokenKey, token, 100000);
string filePath = Common.Plugin.WeChatHelper.GetWeiXinQRCode(token, "/pages/index/index", 430);
Console.WriteLine(filePath);
Console.WriteLine(string.Format("filePath::: {0}", filePath));
}
Console.ReadKey();
return ApiResult.Success();
}
......
{
"ConnectionStrings": {
"DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
"LogConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"LogConnectionPName": "MySql.Data.MySqlClient",
"MallConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=test_reborn_mall;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"MallConnectionPName": "MySql.Data.MySqlClient"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"SettlementRate": "0.60",
"SellCommissionFFBL": "0.15",
"JwtSecretKey": "@VIITTOREBORN*2018",
"MallJwtSecretKey": "@VIITTOREBORN*2018123",
"JwtExpirTime": 86400,
"IsSendMsg": 2,
"AllowedHosts": "*",
"OpenValidation": "False",
"UploadSiteUrl": "http://192.168.1.36:8120",
"ViewFileSiteUrl": "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com",
"ErpViewFileSiteUrl": "http://imgfile.oytour.com",
"Mongo": "mongodb://47.96.25.130:27017",
"MongoDBName": "Edu",
"WkHtmlToPdfPath": "D:/wkhtmltopdf/bin/",
"FinanceKey": "FinanceMallInsertToERPViitto2020",
"PaymentFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallOut",
"IncomeFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallIn",
"sTenpayNotifyUrl": "http://eduapi.oytour.com/api/WeChatPay/WxPayCallback", //下单回调地址
"sTenpayNotifyRefundUrl": "http://eduapi.oytour.com/api/WeChatPay/Refunds", //退款回调地址
"FinanceDateBase": "reborn_finance",
"EduDateBase": "uat_reborn_edu",
"JHTenantId": "15",
"JHMallBaseId": "5",
"Notice_BaseKey": "Notice_BaseKey",
"EducationContractSchool": "EducationContractSchool",
"EducationContractAdmin": "EducationContractAdmin",
"RabbitMqConfig": {
"HostName": "47.96.25.130",
"VirtualHost": "/",
"Port": 5672,
"UserName": "guest",
"Password": "viitto2019",
"QueenName": "vt_sys_message_test"
},
"RedisSetting": {
"RedisServer": "47.96.23.199",
"RedisPort": "6379",
"RedisPwd": "Viitto2018"
},
"VirtualDirectory": "WebFile",
//未填写 未打分 下降比例
"OKRMatterValue": "30,100,100",
//是否是线上环境
"IsOnline": false,
//退课流程编号
"BackClassFlowId": 1,
//分区校长岗位编号
"SchoolPostId": 3,
//教务长
"JiaoWuZhang": 8,
//留学就业部门主管审核编号[王涛]
"StudyAbroadDirectorId": 64,
//留学就业部门负责人审核编号[姚顺先]
"StudyAbroadManagerId": 52,
//合同默认抬头
"ContractDefaultTitle": "JH-DZ-CD-",
//消息推送AppId
"PushAppId": "JiaHeJiaoYu",
//是否推送消息
"IsPushMessage": "1",
//超过下班时间60分钟不能打卡
"MoreThanMinutes": 60,
//连续缺课课时
"AbsentHours": 12,
//值班时间验证日期
"DutyDate": "2021-06-30",
//调课流程编号
"ChangeClassFlowId": 2,
//停课流程编号
"StopClassFlowId": 3,
//临时上课邀请流程编号
"TempInvitationClassFlowId": 4,
//订单转班流程编号
"OrderTransClassFlowId": 5,
//订单分拆流程编号
"OrderSplitClassFlowId": 6,
"ErpUrl": "http://localhost:8181/#",
//是否开启调课数据验证
"IsOpenChangeClassVerify":1
"ConnectionStrings": {
"DefaultConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_edu;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DefaultConnectionPName": "MySql.Data.MySqlClient",
"FinanceConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_finance;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"FinanceConnectionPName": "MySql.Data.MySqlClient",
"DataStatisticsConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_datastatistics;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"DataStatisticsConnectionPName": "MySql.Data.MySqlClient",
"LogConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=reborn_sys;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"LogConnectionPName": "MySql.Data.MySqlClient",
"MallConnection": "server=192.168.20.214;user id=reborn;password=Reborn@2018;database=test_reborn_mall;CharSet=utf8mb4; Convert Zero Datetime=true; ",
"MallConnectionPName": "MySql.Data.MySqlClient"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"SettlementRate": "0.60",
"SellCommissionFFBL": "0.15",
"JwtSecretKey": "@VIITTOREBORN*2018",
"MallJwtSecretKey": "@VIITTOREBORN*2018123",
"JwtExpirTime": 86400,
"IsSendMsg": 2,
"AllowedHosts": "*",
"OpenValidation": "False",
"UploadSiteUrl": "http://192.168.1.36:8120",
"ViewFileSiteUrl": "https://viitto-1301420277.cos.ap-chengdu.myqcloud.com",
"ErpViewFileSiteUrl": "http://imgfile.oytour.com",
"Mongo": "mongodb://47.96.25.130:27017",
"MongoDBName": "Edu",
"WkHtmlToPdfPath": "D:/wkhtmltopdf/bin/",
"FinanceKey": "FinanceMallInsertToERPViitto2020",
"PaymentFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallOut",
"IncomeFinanceApi": "http://192.168.20.7:8083/api/Mall/InsertFinanceBatchForMallIn",
"sTenpayNotifyUrl": "http://eduapi.oytour.com/api/WeChatPay/WxPayCallback", //下单回调地址
"sTenpayNotifyRefundUrl": "http://eduapi.oytour.com/api/WeChatPay/Refunds", //退款回调地址
"FinanceDateBase": "reborn_finance",
"EduDateBase": "uat_reborn_edu",
"JHTenantId": "15",
"JHMallBaseId": "5",
"Notice_BaseKey": "Notice_BaseKey",
"EducationContractSchool": "EducationContractSchool",
"EducationContractAdmin": "EducationContractAdmin",
"RabbitMqConfig": {
"HostName": "47.96.25.130",
"VirtualHost": "/",
"Port": 5672,
"UserName": "guest",
"Password": "viitto2019",
"QueenName": "vt_sys_message_test"
},
"RedisSetting": {
"RedisServer": "47.96.23.199",
"RedisPort": "6379",
"RedisPwd": "Viitto2018"
},
"VirtualDirectory": "WebFile",
//未填写 未打分 下降比例
"OKRMatterValue": "30,100,100",
//是否是线上环境
"IsOnline": false,
//退课流程编号
"BackClassFlowId": 1,
//分区校长岗位编号
"SchoolPostId": 3,
//教务长
"JiaoWuZhang": 8,
//留学就业部门主管审核编号[王涛]
"StudyAbroadDirectorId": 64,
//留学就业部门负责人审核编号[姚顺先]
"StudyAbroadManagerId": 52,
//合同默认抬头
"ContractDefaultTitle": "JH-DZ-CD-",
//消息推送AppId
"PushAppId": "JiaHeJiaoYu",
//是否推送消息
"IsPushMessage": "1",
//超过下班时间60分钟不能打卡
"MoreThanMinutes": 60,
//连续缺课课时
"AbsentHours": 12,
//值班时间验证日期
"DutyDate": "2021-06-30",
//调课流程编号
"ChangeClassFlowId": 2,
//停课流程编号
"StopClassFlowId": 3,
//临时上课邀请流程编号
"TempInvitationClassFlowId": 4,
//订单转班流程编号
"OrderTransClassFlowId": 5,
//订单分拆流程编号
"OrderSplitClassFlowId": 6,
"ErpUrl": "http://localhost:8181/#",
//是否开启调课数据验证
"IsOpenChangeClassVerify": 1,
//是否是本地服务
"IsLocal": 1
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment