简单的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

posted on 2009-08-18 18:22  henry  阅读(1126)  评论(2编辑  收藏  举报

导航