帮酷LOGO
0 0 评论
文章标签:Discount  rails  disco  Coupon  
Coupons is a Rails engine for creating discount coupons.

  • 源代码名称:coupons
  • 源代码网址:http://www.github.com/fnando/coupons
  • coupons源代码文档
  • coupons源代码下载
  • Git URL:
    git://www.github.com/fnando/coupons.git
  • Git Clone代码到本地:
    git clone http://www.github.com/fnando/coupons
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/fnando/coupons
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • 优惠券

    Build StatusCode ClimateTest CoverageGem VersionDependencies

    优惠券是一个 Rails 引擎,用于创建折扣优惠券。

    安装

    将此行添加到你的应用程序的Gemfile中:

    gem 'coupons'

    你还需要一个分页库。 你可以在 paginate或者 kaminari 之间选择,所以要确保其中一个库也被添加到你的包中。

    gem 'paginate'# orgem 'kaminari'

    然后执行:

     
    $ bundle
    
    
    
     

    或者将它的自己安装为:

    
    $ gem install coupons
    
    
    
    

    用法

    安装 Coupons 后,在 config/routes.rb 文件中添加以下行。

    mount Coupons::Engine => '/', as:'coupons_engine'

    你可以访问 /coupons 访问仪表板。

    创建优惠券

    优惠券有两种类型: 百分比或者金额。

    • 百分比: 将百分比折扣应用于总金额。
    • 金额: 将金额折扣应用于总金额。

    定义优惠券代码格式

    优惠券代码是用 Coupons.configuration.generator 生成的。 默认情况下,它创建一个 6-chars 长uppercased数字代码。 你可以使用任何实现 call 方法的对象并返回字符串。 以下实现生成像 AWESOME-B7CB 这样的优惠券代码。

    Coupons.configure do |config|
     config.generator =procdo token =SecureRandom.hex[0, 4].upcase
     "AWESOME-#{token}"endend

    你总是可以通过仪表板或者 ruby 覆盖生成的优惠券代码。

    使用优惠券

    假设你创建了优惠券 RAILSCONF15 作为 $100折扣;你可以使用 Coupons.apply 方法将它的应用到任何金额。 注意,这里方法不会补偿优惠券代码,并且应该在签出页面上使用。

    Coupons.apply('RAILSCONF15', amount:600.00)#=> {:amount => 600.0, :discount => 100.0, :total => 500.0}

    当优惠券无效/不可赎回时,它将折扣金额返回为 0

    Coupons.apply('invalid', amount:100.00)#=> {:amount => 100.0, :discount => 0, :total => 100.0}

    你可以用 Coupon.redeem 兑换优惠券。

    Coupons.redeem('RAILSCONF15', amount:600.00)#=> {:amount => 600.0, :discount => 100.0, :total => 500.0}coupon =Coupons::Models::Coupon.last
    coupon.redemptions_count#=> 1coupon.redemptions#=> [#<Coupons::Models::CouponRedemption:0x0000010e388290>]

    定义优惠券查找策略

    缺省情况下,使用第一个可以赎回的优惠券。 你可以设置以下任何策略。

    • Coupons::Finders::FirstAvailable: 返回可用的第一个可以赎回优惠券。
    • Coupons::Finders::SmallerDiscount: 返回可用的更小的可以赎回折扣。
    • Coupons::Finders::LargerDiscount: 返回可用的较大可以赎回折扣。

    要定义不同的策略,请设置 Coupons.configurable.finder 属性。

    Coupons.configure do |config|
     config.finder =Coupons::Finders::SmallerDiscountend

    查找器可以是接收优惠券代码和选项( 它必须包含 amount 键)的任何对象。 下面是小型折扣查找器的实现方法。

    moduleCouponsmoduleFindersSmallerDiscount=procdo |code, options= {}|
     coupons =Models::Coupon.where(code: code).all.select(&:redeemable?)
     coupons.min do |a, b|
     a = a.apply(options)
     b = b.apply(options)
     a[:discount] <=> b[:discount]
     endendendend
    注入 helper-方法

    整个优惠券的交互可以通过一些辅助方法来完成。 你可以使用 Coupons::Helpers MODULE 扩展任何对象。 在你的初始化文件或者你的控制器中,无论你用什么。

    coupons =Object.new.extend(Coupons::Helpers)

    现在你可以通过 Coupons 变量完成所有的交互。

    授权访问仪表板

    优惠券有灵活的授权系统,这意味着你可以做任何你想要的。 你所要做的就是通过设置 Coupons.configuration.authorizer 来定义授权策略。 默认情况下,它禁用对 production 环境的访问,如下所示。

    Coupons.configure do |config|
     config.authorizer =procdo |controller|
     ifRails.env.production?
     controller.render(
     text:'Coupons: not enabled in production environments',
     status:403 )
     endendend

    要定义自己的策略,如执行基本身份验证,你可以执行如下操作:

    Coupons.configure do |config|
     config.authorizer =procdo |controller|
     controller.authenticate_or_request_with_http_basic do |user, password|
     user =='admin'&& password =='sekret'endendend

    将优惠券附加到给定记录

    要写。

    创建复杂的折扣规则

    要写。

    JSON端点

    你可能希望使用AJAX应用折扣,因此你可以提供即时反馈。 在本例中,你将发现 /coupons/apply 端点有用。

    var response =$.get('/coupons/apply', {amount:600.0, coupon:'RAILSCONF15'});response.done(function(options)) {
     console.log(options);
     //=> {amount: 600.0, discount: 100.0, total: 500.0}});

    如果你提供无效的金额/优惠券,那么它将返回零值,如 {amount: 0, discount: 0, total: 0}

    i18n-支持

    优惠券使用 i18n。 它支持 enpt-BR。 你可以通过翻译文件配置/en来贡献你的语言。

    屏幕截图

    Viewing existing coupons

    Creating coupon

    • 在实现任何东西之前,创建一个问题来讨论你的想法。 这只适用于大变化和新特性。
    • fork ( https://github.com/fnando/coupons/fork )
    • 创建你的特征分支( git checkout -b my-new-feature )
    • 提交你的更改( git commit -am 'Add some feature' )
    • 推送到分支( git push origin my-new-feature )
    • 创建新的拉请求


    文章标签:rails  disco  Discount  Coupon  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语