一、积分说明

 

积分名称、积分规则可以在后台直接修改:


   


对应的代码在


   

数据保存在

   

这个系统将用户的收入按照货币类型的不同,分成中心货币收入和其他币种收入,在后台“积分规则”部分,站长可以自定义用户的每种操作的收入额。
 

比如用户发了一个帖子,系统根据“积分规则”,依次给用户增加中心货币收入若干、威望币若干、阅读权限币若干、下载币若干等等。其中中心货币就是积分。目前没有计算用户的所有收入,如果要计算,应该是各类货币收入按照汇率兑换成中心货币,然后汇总。 

积分仅仅是一个名称,在程序概念中,我把它叫做“中心货币(KeyCurrency),虽然在存储的时候,是存储在User对象的Credit属性中的。站长也可以直接在后台修改名称,比如将积分改成“越南盾”。另外,站长还可以发行新的货币,发行之后,需要设置这种货币的收入规则,让它和用户的各类操作行为挂钩。

 

来源:http://www.wojilu.com/Forum1/Topic/497  

 

二、给用户添加积分

 

调用 UserIncomeService 对象的AddIncome方法:

 

           void AddIncome( User user, int currencyId, int income );

           void AddIncome( User user, int actionId );

           void AddIncomeReverse( User user, int actionId );

           void AddKeyIncome( User user, int income );

           void AddKeyIncome( int userId, int income );

 

最常使用的是第二个方法。

 

三、积分扩展

 

1、操作扩展

 

网站目前已经内置了若干种操作(action),见 /framework/data/wojilu.Common.Money.Domain.UserAction.config

     

如果你需要扩展,想增加新的操作(action),其实不算复杂,只需要三个步骤:

第一步:
将新的操作注册到 wojilu.Common.Money.Domain.UserAction.config

第二步:在需要增加收入的那部分代码中,使用 UserIncomeService 对象的AddIncome方法
             void AddIncome( User user, int actionId );
另外,获取收入规则的服务是 CurrencyService,它的使用方法见下面的示例代码。

【代码示例】比如用户上传头像之后,需要给他增加积分,我们可以在上传头像的代码中增加如下 
addIncomeAndSendMsg 一段:

        public virtual void UpdateAvatar( User user, String newPic ) {

            Boolean isFirst = (user.HasUploadPic()==false);

            user.Pic = newPic;

            db.update( user, "Pic" );

            if (isFirst) {

                addIncomeAndSendMsg( user );

            }

        }


        private void addIncomeAndSendMsg( User user ) {


            int actionId = 17; // 就是第一步增加的UserAction的Id

            KeyIncomeRule rule = currencyService.GetKeyIncomeRulesByAction( actionId ); // 获取当前操作action收入规则。这里获取的是中心货币,你也可以使用 GetRulesByAction(actionId) 获取其他所有货币的收入规则

            int creditValue = rule.Income; // 收入的值

            String creditName = rule.CurrencyName; // 货币的名称。这里是获取的中心货币。


            userIncomeService.AddIncome( user, actionId ); // 给用户增加收入


            String msgTitle = "感谢您上传头像";

            String msgBody = string.Format( "{0}:<br/>您好!<br/>感谢您上传头像,您因此获得{1}奖励,共{2}分。<br/>欢迎继续参与,谢谢。", user.Name, creditName, creditValue );

            MessageService msgService = new MessageService();

            msgService.SiteSend( msgTitle, msgBody, user ); // 给用户发送站内私信

        }



第三步:重启网站到后台的“货币与积分”->修改“积分规则”,你刚刚新增的action应该已经在下表中了,请点击它设置它对应的值:


   


 

2、发行新的货币

 

很简单,在后台“货币体系”里“添加货币”,然后设置此货币的“积分规则”即可。 

 

四、得到用户的积分

 

1、得到中心货币的值

      中心货币的值存放在用户的 Credit    属性中,所以可以通过 user.Credit     得到

 

2、得到其他货币的值

      UserIncome     GetUserIncome( int     userId, int currencyId )

  你必须提供货币的Id,然后得到一个 UserIncome 对象,这个对象相当于用户的银行账号,它的属性包括:

           public int UserId { get; set; } // 用户Id

           public int CurrencyId { get; set; } // 货币种类

           public int Income { get; set; } // 货币的值

 

五、积分兑换

 

1)目前不支持兑换

 

2)但你可以扩展出此功能,因为每种货币都和“中心货币”挂钩。在后台可以修改其他货币和“中心货币”的兑换比率