using Api.Framework; using Api.Framework.Tools; using Chat.Framework; using System; using System.Collections.Generic; using System.Drawing; using System.IO; using System.Linq; using System.Text; using ThoughtWorks.QRCode.Codec; using UserFission.Entitys; using UserFission.Properties; namespace UserFission { public static class Tools { /// /// 背景图片地址 /// public static string PosterPathImgUrl { get; private set; } public const string Rex_Code = @"^([A-Za-z0-9]{6})$"; static Tools() { PosterPathImgUrl = Util.MapFile("背景.jpg", "File\\Image"); } #region 通过FileStream 来打开文件,这样就可以实现不锁定Image文件,到时可以让多用户同时访问Image文件 /// /// 通过FileStream 来打开文件,这样就可以实现不锁定Image文件,到时可以让多用户同时访问Image文件 /// /// /// public static Bitmap ReadImageFile(string path) { FileStream fs = File.OpenRead(path); //OpenRead int filelength = 0; filelength = (int)fs.Length; //获得文件长度 Byte[] image = new Byte[filelength]; //建立一个字节数组 fs.Read(image, 0, filelength); //按字节流读取 Image result = Image.FromStream(fs); fs.Close(); Bitmap bit = new Bitmap(result); return bit; } #endregion #region 获取底图的地址 /// /// 获取底图的地址 /// /// /// public static void GetBaseIco() { if (!File.Exists(PosterPathImgUrl)) { Bitmap bit = Resources.背景; bit.Save(PosterPathImgUrl); } } #endregion #region 生成二维码,如果有Logo,则在二维码中添加Logo /// /// 生成二维码,如果有Logo,则在二维码中添加Logo /// /// 生成二维码的内容 /// logo /// Logo的尺寸 /// 二维码版本 /// public static Bitmap CreateQRCode(string content, string logoImagepath = "", int logoSize = 35, int version = 7) { string _image = string.Empty; try { QRCodeEncoder qrEncoder = new QRCodeEncoder(); qrEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; qrEncoder.QRCodeScale = 4; qrEncoder.QRCodeVersion = Convert.ToInt32(version); qrEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; Bitmap qrcode = qrEncoder.Encode(content, Encoding.UTF8); if (!string.IsNullOrEmpty(logoImagepath)) { using (Graphics g = Graphics.FromImage(qrcode)) { if (logoImagepath.IndexOf("http") != -1) { _image = Util.MapFile(Guid.NewGuid().ToString() + ".jpg", "Cache\\Image"); FileTools.DownloadImage(logoImagepath, _image); } else { _image = Util.MapFile(Guid.NewGuid().ToString() + ".jpg", "Cache\\Image"); File.Copy(logoImagepath, _image, true); } var bitmapLogo = new Bitmap(ReadImageFile(_image), new Size(logoSize, logoSize)); var point = new PointF(qrcode.Width / 2.00f - logoSize / 2.00f, qrcode.Height / 2.00f - logoSize / 2.00f); g.DrawImage(bitmapLogo, point); } } return qrcode; } catch (IndexOutOfRangeException ex) { throw new Exception("超出当前二维码版本的容量上限,请选择更高的二维码版本!" + ex.Message); } catch (Exception ex) { throw new Exception("生成二维码出错!" + ex.Message); } finally { if (!string.IsNullOrEmpty(_image) && File.Exists(_image)) File.Delete(_image); } } #endregion /// /// 判断用户数据库中,是否存在邀请码.不存在生成并返回.存在直接返回 /// /// /// public static string FindInvitationCode(long member_info_id) { var session = ApiClient.GetSession(); var invitation_code = session.Find($"select * from fl_plugin_userfission_user_invitation_code where member_info_id = @id", new { id = member_info_id }).FirstOrDefault(); if (invitation_code != null) return invitation_code.code; else { string invitationCode = string.Empty; do { //invitationCode = Util.InvitationCode(long.Parse(CsharpHttpHelper.HttpExtend.GetTimeStamp())); invitationCode = new Random().Next(100000, 999999).ToString(); var num = long.Parse(session.FindTable($"select count(*) as num from fl_plugin_userfission_user_invitation_code where code = @code", new { code = invitationCode }).Rows[0]["num"].ToString()); if (num == 0) { session.Insertable(new fl_plugin_userfission_user_invitation_code() { member_info_id = member_info_id, code = invitationCode, crt_time = DateTime.Now }).ExecuteCommand(); return invitationCode; } } while (true); } } /// /// 检测邀请码是否存在,返回true邀请码没使用过,false邀请码已存在 /// /// /// public static bool CheckInvitationCode(string code) { var session = ApiClient.GetSession(); var num = long.Parse(session.FindTable($"select count(*) as num from fl_plugin_userfission_user_invitation_code where code = @code", new { code = code }).Rows[0]["num"].ToString()); if (num != 0) return false; else return true; } /// /// 获得下级满足条件,上级奖励列表 /// /// /// /// 是否刷新缓存 /// public static List FindRewards(bool refresh = false) { var key = $"fl_plugin_userfission_superior_reward"; var fl_plugin_userfission_superior_rewards = ApiClient.Cache.Get>(key); var session = ApiClient.GetSession(); if (!refresh && fl_plugin_userfission_superior_rewards != null) return fl_plugin_userfission_superior_rewards; fl_plugin_userfission_superior_rewards = session.Find("select * from fl_plugin_userfission_superior_reward order by subordinate_order_totle asc"); ApiClient.Cache.Set(key, fl_plugin_userfission_superior_rewards, 60); return fl_plugin_userfission_superior_rewards; } } /// /// 充值方式 /// public enum RechargeType { 增加余额 = 1, 发送红包 = 2, 商户付款 = 3, 微信转账 = 4 } /// /// 发送红包方式 /// public enum TransferType { 转账 = 0, 红包 = 1 } /// /// 推荐下线奖励方式 /// public enum ReferralJackpotType { 推荐新人立马奖励 = 1, 新人完成首单奖励 = 2, 新人首单满足付款金额奖励 = 3 } /// /// 推荐下线奖励方式 /// public enum NewcomerAwardType { 通过立即奖励 = 1, 首次查券奖励 = 2 } /// /// 新用户首单奖励方式 /// public enum NewcomerInitialAwardType { 订单付款后奖励 = 1, 订单结算后奖励 = 2 } /// /// 首单奖励新用户类型 /// public enum InitialAwardNewcomerType { 所有新用户 = 1, 被邀请用户 = 2, 非邀请用户 = 3 } }