old_flsystem/应用/UserFission/Tools.cs

248 lines
9.1 KiB
C#
Raw Permalink Normal View History

2022-09-20 03:10:29 +00:00
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
{
/// <summary>
/// 背景图片地址
/// </summary>
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文件
/// <summary>
/// 通过FileStream 来打开文件这样就可以实现不锁定Image文件到时可以让多用户同时访问Image文件
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
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
/// <summary>
/// 获取底图的地址
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static void GetBaseIco()
{
if (!File.Exists(PosterPathImgUrl))
{
Bitmap bit = Resources.;
bit.Save(PosterPathImgUrl);
}
}
#endregion
#region LogoLogo
/// <summary>
/// 生成二维码如果有Logo则在二维码中添加Logo
/// </summary>
/// <param name="content">生成二维码的内容</param>
/// <param name="logoImagepath">logo</param>
/// <param name="logoSize">Logo的尺寸</param>
/// <param name="version">二维码版本</param>
/// <returns></returns>
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
/// <summary>
/// 判断用户数据库中,是否存在邀请码.不存在生成并返回.存在直接返回
/// </summary>
/// <param name="member_info_id"></param>
/// <returns></returns>
public static string FindInvitationCode(long member_info_id)
{
var session = ApiClient.GetSession();
var invitation_code = session.Find<fl_plugin_userfission_user_invitation_code>($"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);
}
}
/// <summary>
/// 检测邀请码是否存在,返回true邀请码没使用过,false邀请码已存在
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
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;
}
/// <summary>
/// 获得下级满足条件,上级奖励列表
/// </summary>
/// <param name="session"></param>
/// <param name="type"></param>
/// <param name="refresh">是否刷新缓存</param>
/// <returns></returns>
public static List<fl_plugin_userfission_superior_reward> FindRewards(bool refresh = false)
{
var key = $"fl_plugin_userfission_superior_reward";
var fl_plugin_userfission_superior_rewards = ApiClient.Cache.Get<List<fl_plugin_userfission_superior_reward>>(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<fl_plugin_userfission_superior_reward>("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;
}
}
/// <summary>
/// 充值方式
/// </summary>
public enum RechargeType
{
= 1,
= 2,
= 3,
= 4
}
/// <summary>
/// 发送红包方式
/// </summary>
public enum TransferType
{
= 0,
= 1
}
/// <summary>
/// 推荐下线奖励方式
/// </summary>
public enum ReferralJackpotType
{
= 1,
= 2,
= 3
}
/// <summary>
/// 推荐下线奖励方式
/// </summary>
public enum NewcomerAwardType
{
= 1,
= 2
}
/// <summary>
/// 新用户首单奖励方式
/// </summary>
public enum NewcomerInitialAwardType
{
= 1,
= 2
}
/// <summary>
/// 首单奖励新用户类型
/// </summary>
public enum InitialAwardNewcomerType
{
= 1,
= 2,
= 3
}
}