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
}
}