using Mini.Common;
using Mini.Model;
using Mini.Model.Entity;
using Mini.Model.Enum;
using Mini.Services.Bas;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ThoughtWorks.QRCode.Codec;
using ThoughtWorks.QRCode.Codec.Data;
namespace Mini.Web.WebHelper
{
///
/// 是否显示二维码
///
public class MangerEWM
{
private static IBasConfigService config = new BasConfigService(new EfAdminRepository(new crmContext()));
///
/// 是否隐藏图片中的二维码
///
///
///
public static string GetIsHiddenEWM(string[] role)
{
var ewmconfig = config.GetConfig(BasConfigEnums.HiddenEWM);//获取配置信息
if (ewmconfig == "1" && !role.Contains("XSTPEWM"))
return "1";
else
return "0";
}
///
/// 识别图片二唯码
///
/// 图片本地存储路径
/// 返回为空,图片不含二唯码,不空则为二唯码图片
public static string QcodeString(string file)
{
string decoderStr = "";
try
{
QRCodeDecoder decoder = new QRCodeDecoder();
Bitmap bitmap = new Bitmap(file);
//将文件流写到byte数组中
decoderStr = decoder.decode(new QRCodeBitmapImage(bitmap));
//LogHelper.Error($"地址:{file} 二维码识别:{decoderStr}");
bitmap.Dispose();
}
catch (Exception e)
{
//LogHelper.Error(e.ToString()+",错误地址:"+ file);
if (e.Message.ToString().IndexOf("Give up decoding") >= 0)
{
decoderStr = "unknow";
}
}
return decoderStr;
}
public static MediaResult GetNoQcodeImg(string url)
{
MediaResult result = new MediaResult();
try
{
string newurl = url.Replace("mediafile", "mediafilepath");
string wocha = Utility.GetData(newurl, "", Encoding.UTF8);//获取json数据
var mediapaths = Newtonsoft.Json.JsonConvert.DeserializeObject(wocha);
if (mediapaths == null)
{
result.code = 3;
}
result.local = mediapaths.local;
if (!string.IsNullOrEmpty(QcodeString(mediapaths.local)))//不为空,找到了是二维码图片
{
result.code = 2;
}
else
{
result.code = 1;//正常的图片,然后对图片url进行处理
result.returnrul = url.Replace("http://","").Substring(0, url.IndexOf("/")) + mediapaths.url;
}
}
catch (Exception e)
{
result.code = 3;
LogHelper.Error("错误:" + url + "**" + e.ToString());
}
return result;
}
}
public class mediapath
{
public string local { get; set; }
public string url { get; set; }
}
public class MediaResult
{
///
/// 1:正常
/// 2:二维码图片
/// 3:发生了错误
///
public int code { get; set; }
public string returnrul { get; set; }
public string local { get; set; }
}
}