From cc09b6fe6ffac34a4eeeb26d313b187713cae0de Mon Sep 17 00:00:00 2001 From: heyuntao <heyuntao@LAPTOP-MP4HD5NS> Date: 星期五, 05 五月 2023 09:43:29 +0800 Subject: [PATCH] no message --- Api.Operater/Controllers/TkUserinfoController.cs | 157 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 107 insertions(+), 50 deletions(-) diff --git a/Api.Operater/Controllers/TkUserinfoController.cs b/Api.Operater/Controllers/TkUserinfoController.cs index 9d2dbf9..f77836a 100644 --- a/Api.Operater/Controllers/TkUserinfoController.cs +++ b/Api.Operater/Controllers/TkUserinfoController.cs @@ -30,6 +30,7 @@ using CommonUtil.Security; using CommonUtil.Top; using CommonUtil.Db; +using System.Text; namespace Api.Operater.Controllers { @@ -336,35 +337,6 @@ } /// <summary> - /// 鏌ヨ鎴戠殑璁㈠崟鏄庣粏鎺ュ彛 - /// </summary> - /// <param name="request"></param> - /// <returns></returns> - [HttpPost] - [ProducesDefaultResponseType(typeof(GetTkTradeListResponse))] - public IActionResult GetTkTradeList([FromBody] GetTkTradeListRequest request) - { - //鍒嗛〉鎸夋椂闂存煡璇㈣处鍗曟槑缁� - var whereexpress = Expressionable.Create<TkTrade>() - .And(t => t.Memberid == request.Id.ToString()) - .AndIF(!request.stime.IsNull() && request.stime > DateTime.Parse("1900-01-01 00:00:00"), t => t.Created >= request.stime) - .AndIF(!request.etime.IsNull() && request.etime > DateTime.Parse("1900-01-01 00:00:00"), t => t.Created <= request.etime) - .AndIF(!request.tid.IsNullOrEmpty(), t => t.Tid == request.tid) - .ToExpression(); - int totalcount = 0; - var orderlist = new TkTradeDAL().ListPageGet(whereexpress, t => t.Created, DbEnum.OrderType.Desc, request.PageNo, request.PageSize, ref totalcount); - GetTkTradeListResponse getTkOrderRecord = new GetTkTradeListResponse(); - if (orderlist.Count > 0) - { - getTkOrderRecord.TkTrades = orderlist; - getTkOrderRecord.PageNo = request.PageNo; - getTkOrderRecord.PageSize = request.PageSize; - getTkOrderRecord.TotalCount = totalcount; - } - return Success(getTkOrderRecord); - } - - /// <summary> /// 鐢熸垚娴锋姤浜岀淮鐮� /// </summary> /// <param name="request"></param> @@ -372,35 +344,57 @@ [HttpPost] public IActionResult CreateQrCode([FromBody] CreateQrCodeRequest request) { - int x = 231; int y = 474; int width = 305; int height=336; - string posterPath = Path.Combine("", @"D:\poster.png"); // 鏇挎崲涓轰綘鐨勫疄闄呮捣鎶ョ殑缁濆璺緞 - // 鐢熸垚浜岀淮鐮� - QRCodeGenerator qrGenerator = new QRCodeGenerator(); - QRCodeData qrCodeData = qrGenerator.CreateQrCode(request.url, QRCodeGenerator.ECCLevel.Q); - QRCode qrCode = new QRCode(qrCodeData); - Bitmap qrCodeImage = qrCode.GetGraphic(20); // 璋冩暣 20 浠ユ帶鍒朵簩缁寸爜鐨勫ぇ灏� - - // 鍦ㄦ捣鎶ヤ腑缁樺埗浜岀淮鐮� - using (var posterImage = new Bitmap(posterPath)) - using (var graphics = Graphics.FromImage(posterImage)) + //鑾峰彇access_token + string access_token = string.Empty; + MySqlHelper dbmain = new MySqlHelper(); + DataTable dt = dbmain.ExecuteDataTable("select fx_wx_token from appset"); + if (dt != null && dt.Rows.Count > 0) { - // 灏嗕簩缁寸爜缁樺埗鍦ㄦ寚瀹氬尯鍩� - RectangleF qrCodeArea = new RectangleF(x, y, width, height); - graphics.DrawImage(qrCodeImage, qrCodeArea); + access_token = dt.Rows[0]["fx_wx_token"].ToString(); + string url = $"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={access_token}"; + WebUtil util = new WebUtil(); + Dictionary<string, string> dic = new Dictionary<string, string>(); + dic.Add("scene", $"invite_code={request.invite_code}"); + // var result = Newtonsoft.Json.JsonConvert.DeserializeObject<GetwxacodeunlimitResponse>(PostJson(url, dic)); + var result = Post4Download(url, dic); - // 灏嗙粯鍒跺悗鐨勬捣鎶ヤ繚瀛樹负鍐呭瓨娴� - using (var memoryStream = new MemoryStream()) + + //if (result.errcode != "0") + //{ + // return Error(result.errmsg); + //} + byte[] imagebytes =result.Item3; + Bitmap qrCodeImage = new Bitmap(new MemoryStream(imagebytes)); + int x = 430; int y = 1513; int width = 361; int height = 365; + string posterPath = Path.Combine("", @"D:\poster.png"); // 鏇挎崲涓轰綘鐨勫疄闄呮捣鎶ョ殑缁濆璺緞 + // 鍦ㄦ捣鎶ヤ腑缁樺埗浜岀淮鐮� + using (var posterImage = new Bitmap(posterPath)) + using (var graphics = Graphics.FromImage(posterImage)) { - posterImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png); + // 灏嗕簩缁寸爜缁樺埗鍦ㄦ寚瀹氬尯鍩� + RectangleF qrCodeArea = new RectangleF(x, y, width, height); + graphics.DrawImage(qrCodeImage, qrCodeArea); - // 灏嗗唴瀛樻祦杞崲涓哄瓧鑺傛暟缁� - byte[] imageBytes = memoryStream.ToArray(); + // 灏嗙粯鍒跺悗鐨勬捣鎶ヤ繚瀛樹负鍐呭瓨娴� + using (var memoryStream = new MemoryStream()) + { + posterImage.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png); - // 杩斿洖鍥惧儚缁欏墠绔� - return File(imageBytes, "image/png"); + // 灏嗗唴瀛樻祦杞崲涓哄瓧鑺傛暟缁� + byte[] imageBytes = memoryStream.ToArray(); + + // 杩斿洖鍥惧儚缁欏墠绔� + return File(imageBytes, "image/png"); + } } + } + else + { + return Error("鑾峰彇access_token澶辫触"); + } + } /// <summary> @@ -428,5 +422,68 @@ return result; } } + + public static Tuple<bool, string, byte[]> Post4Download(string postUrl, object dataObj) + { + try + { + var json = JsonConvert.SerializeObject(dataObj, new JsonSerializerSettings { DefaultValueHandling = DefaultValueHandling.Ignore, NullValueHandling = NullValueHandling.Ignore }); + var byteArray = Encoding.UTF8.GetBytes(json); + + var request = (HttpWebRequest)WebRequest.Create(postUrl); + request.Method = "POST"; + request.KeepAlive = false; + request.ProtocolVersion = HttpVersion.Version11; + request.Timeout = -1; + request.ReadWriteTimeout = -1; + request.ContentType = "application/json;charset=utf-8"; + request.ContentLength = byteArray.Length; + request.ServicePoint.Expect100Continue = false; + + using (var stream = request.GetRequestStream()) + { + stream.Write(byteArray, 0, byteArray.Length); + stream.Flush(); + } + + //鎺ユ敹杩斿洖淇℃伅 + var message = ""; + byte[] buf = null; + using (var response = (HttpWebResponse)request.GetResponse()) + { + if (response.StatusCode == HttpStatusCode.OK) + { + buf = new byte[response.ContentLength]; + var responseStream = response.GetResponseStream(); + if (responseStream != null) + { + var offset = 0; + do + { + var count = responseStream.Read(buf, offset, buf.Length - offset); + offset += count; + } while (offset < buf.Length); + } + else + { + message = "fail, responseStream is null."; + } + } + else + { + message = $"fail, response.StatusCode is {response.StatusCode}."; + } + } + + request.Abort(); + + return new Tuple<bool, string, byte[]>(!message.StartsWith("fail, "), message, buf); + } + catch (Exception ex) + { + return new Tuple<bool, string, byte[]>(false, $"fail, {ex.Message}", null); + } + } + } } -- Gitblit v1.9.3