Files
2026-07-10 15:25:05 +08:00

123 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using Zhaizj.Framework.Web;
using Zhaizj.Framework.Drawing;
using Zhaizj.Framework.Web.Utils;
using Zhaizj.Framework.DI;
using Zhaizj.Framework.Members.Interface;
namespace Zhaizj.Framework.Members {
/// <summary>
/// 继承自IMember对象的帮助方法,用于logo的保存,缩略图路径、皮肤路径等的获取
/// </summary>
public class MemberHelper {
private static Dictionary<Type, String> Types = getMemberTypes();
private static Dictionary<Type, string> getMemberTypes() {
Dictionary<Type, String> map = new Dictionary<Type, string>();
foreach (KeyValuePair<String, Type> kv in ObjectContext.Instance.TypeList) {
if (rft.IsInterface( kv.Value, typeof( IMember ) ) == false) continue;
IMember obj = rft.GetInstance( kv.Value ) as IMember;
map.Add( kv.Value, obj.GetUrl() );
}
return map;
}
public static Dictionary<Type, String> GetMemberTypes() {
return MemberHelper.Types;
}
private int _logoWidth = 120;
private int _logoHeight = 120;
private String _picExt = ".jpg";
/// <summary>
/// logo的宽度,默认是120px
/// </summary>
public int LogoWidth {
get { return _logoWidth; }
set { _logoWidth = value; }
}
/// <summary>
/// logo的高度,默认是120px
/// </summary>
public int LogoHeight {
get { return _logoHeight; }
set { _logoHeight = value; }
}
/// <summary>
/// logo图片的后缀名,包括点号,默认是.jpg
/// </summary>
public String PicExt {
get { return _picExt; }
set { _picExt = value; }
}
protected String memberPath { get; set; }
public String GetLogoOriginal( String relativeUrl ) {
relativeUrl = processEmptyLogo( relativeUrl );
return Zhaizj.Framework.Drawing.Img.GetOriginalPath( LogoPath + relativeUrl );
}
public String GetLogoThumb( String relativeUrl ) {
return GetLogoThumb( relativeUrl, ThumbnailType.Small );
}
public String GetLogoThumb( String relativeUrl, ThumbnailType ttype ) {
String original = GetLogoOriginal( relativeUrl );
return Zhaizj.Framework.Drawing.Img.GetThumbPath( original, ttype );
}
private String LogoPath {
get { return strUtil.Join( sys.Path.Upload, memberPath + "/" ); }
}
private String LogoDiskPath {
get { return strUtil.Join( sys.Path.DiskUpload, memberPath + "/" ); }
}
public String SkinDiskPath {
get { return strUtil.Join( sys.Path.DiskStatic, "skin/" + memberPath + "/" ); }
}
public Result SaveLogo( HttpFile afile, String url ) {
return Uploader.SaveImg( this.LogoDiskPath, afile, url, this.LogoWidth, this.LogoHeight );
}
//------------------------------------------------------
private String processEmptyLogo( String relativeUrl ) {
if (strUtil.IsNullOrEmpty( relativeUrl )) return logoPicName;
return relativeUrl;
}
private String logoPicName {
get { return memberPath + this.PicExt; }
}
public String SkinPath {
get { return strUtil.Join( sys.Path.Skin, memberPath + "/" ); }
}
}
}