简单的WOW DKP系统
由于公会需要用到DKP,但会长说网上的比较难用,所以我干脆给公会写一个,现在他们用起来感觉还是挺方便的;数据服务端用asp.net +Smark组件,前台用AIR来做。
实体类代码:
[Table]
interface IWowUser
{
[ID]
[UID]
string UserID { get; set; }
[Column]
[NotNull("请输入会员名字!")]
[Unique("已经存在相同名字的会员!")]
string UserName { get; set; }
[Column("UserType")]
[EnumToString]
WowUserType Type { get; set; }
[Column]
string Remark { get; set; }
[Column]
int DKP { get; set; }
[Column]
[NowDate]
DateTime DKPModifyDate { get; set; }
}
[Table]
interface IWowGroup
{
[ID]
[UID]
string GroupID { get; set; }
[Column]
[NotNull("请输入团队名称!")]
[Unique("同一名称的团队已经存在!")]
string GroupName { get; set; }
[Column]
string Remark { get; set; }
}
[Table]
interface IDKPHistory
{
[ID]
[UID]
string DKPHistoryID { get; set; }
[Column]
string UserID { get; set; }
[Column]
int DKP { get; set; }
[Column]
string Remark { get; set; }
[Column]
[NowDate]
DateTime CreateDate { get; set; }
}
[Table]
interface IUserLinkGroup
{
[ID]
[UID]
string ULGID { get; set; }
[Column]
string UserID { get; set; }
[Column]
string GroupID { get; set; }
}
[Table("WowUser inner join DKPHistory on wowuser.userid=DKPHistory.userid")]
interface IDKPDetail
{
[Column]
string DKPHistoryID { get; set; }
[Column("WowUser.UserID")]
string UserID { get; set; }
[Column("DKPHistory.DKP")]
int DKP { get; set; }
[Column("DKPHistory.Remark")]
string Remark { get; set; }
[Column]
[NowDate]
DateTime CreateDate { get; set; }
[Column]
string UserName { get; set; }
[Column("UserType")]
[EnumToString]
WowUserType Type { get; set; }
}
逻辑方法代码:
[Smark.Service.Service]
public class LogicService
{
public void NewGroup(WowGroup item)
{
item.EntityState._Loaded = false;
DBContext.Save(item);
}
public void DeleteGroup(params string[] groupid)
{
(WowGroup.groupID == groupid).Delete<WowGroup>();
}
public IList<WowGroup> ListGroup()
{
Expression exp = new Expression();
return exp.List<WowGroup>();
}
public void NewUser(WowUser user)
{
user.EntityState._Loaded = false;
DBContext.Save(user);
}
public void DeleteUser(params string[] userid)
{
(WowUser.userID == userid).Delete<WowUser>();
}
public IList<WowUser> ListUser(string username)
{
Expression exp = new Expression();
if (!string.IsNullOrEmpty(username))
exp &= WowUser.userName.Match(username);
return exp.List<WowUser>(null,WowUser.dKP.Desc);
}
public IList<DKPDetail> ListDetail(string userid,string name,DateTime? from, DateTime? to, [Smark.Service.Binders.Output]NClay.DataPage datapage)
{
Expression exp = new Expression();
if (!string.IsNullOrEmpty(userid))
exp &= DKPHistory.userID.At("DKPHistory") == userid;
if (!string.IsNullOrEmpty(name))
exp &= WowUser.userName.Match(name);
if (from != null)
exp &= DKPHistory.createDate >= from;
if (to != null)
exp &= DKPHistory.createDate <= to;
datapage.RecordCount = exp.Count<DKPDetail>();
return exp.List<DKPDetail>(new Region(datapage.PageIndex, datapage.PageSize), DKPHistory.createDate.Desc);
}
public IList<WowUser> ListUserByGroup(string group)
{
Expression exp = new Expression();
exp &= WowUser.userID.In(UserLinkGroup.userID, UserLinkGroup.groupID == group);
return exp.List<WowUser>();
}
public void AddUserInGroup(string group, params string[] userid)
{
foreach (string item in userid)
{
Expression exp = UserLinkGroup.groupID == group & UserLinkGroup.userID == item;
if (exp.Count<UserLinkGroup>() == 0)
{
UserLinkGroup ulg = new UserLinkGroup();
ulg.UserID = item;
ulg.GroupID = group;
DBContext.Save(ulg);
}
}
}
public void RemoveUserInGroup(string group, params string[] userid)
{
Expression exp = UserLinkGroup.groupID == group & UserLinkGroup.userID == userid;
exp.Delete<UserLinkGroup>();
}
public void ChangeDKP(int dkp,string remark ,params string[] users)
{
foreach (string item in users)
{
WowUser user = DBContext.Load<WowUser>(item);
user.DKP += dkp;
user.DKPModifyDate = DateTime.Now;
DKPHistory history = new DKPHistory();
history.DKP = dkp;
history.UserID = item;
history.Remark = remark;
DBContext.Save(user,history);
}
}
}
下载源码可以到项目的google code