slivens / bigbigads

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bigbigads

Bigbigads WEB APP。

首次配置开发环境

进入Bigbigads工程根目录,先将工程的依赖库补全及生成目标文件,这些由于体积很大(依赖库)或者不适合仓库管理(自动生成的目标文件,每次变更都产生大量change,会导致merge冲突和增加审查成本)。

$composer update
$cp .env.example .env
$php artisan key:generate
$cd public
$npm install
$bower install
$npm run product

复制.env.example.env

.env:这里面主要包含AppID,数据库配置、SMTP配置、缓存配置、调试配置以及本项目需要的其他配置。在实践上.env通常包含敏感信息(AppID及数据库配置)以及跟本地环境强相关(每个机器的数据库可能都不一样),因此不会将它包含进仓库,而是提供.env.example作为范例。.env文件在Laravel 5.3下有详细的说法明,请自行了解。同时,本项目的配置说明直接查看**.env.example**,本项目独有的配置项均有说明。

然后配置nginx或者apache,将网站根目录定位到public/,同时允许URL rewrite。配置就完成了。

生产环境与开发环境

两个环境有很大的差异,开发时务必使用开发环境,以方便调试;实际上线则必须使用生产环境。 两者的区别:

  1. 开发环境下生成的目标文件都带sourcemap,同时不压缩,命名固定;
  2. 生产环境下生成的目标文件(HTML,CSS,JS)全部都是压缩处理的,同时每次命名都会改变,因此在生产环境下,只在有提交时才再次生成,不要定时生成;在没做修改的情况下,用户访问缓存文件会更快。

如何配置生产环境

public目录下,执行

$npm run product

然后在工程根目录下,修改.env文件,核对以下字段是否设置同样的值

APP_ENV=production
APP_DEBUG=false

如何配置开发环境

public目录下,执行

$npm run develop

然后在工程根目录下,修改.env文件,核对以下字段是否设置同样的值

APP_ENV=local
APP_DEBUG=true

如果要修改src目录下的文件,除了src/index.html之外,其他js,html以及scss都可以实时监听。修改前单独开一个窗口,执行如下命令:

$webpack -w

会方便调试。如果改的是src/index.html或者其他像json之类的文件,仍然需要执行npm run devleop重新生成。

如果出现eslint提示不符合排版要求的错误,可单独开个窗口先做下自动修复,执行:

npm run fixlint

在开发时,请一定配合Chrome Devtool做调试。

权限配置指南

参考对应WIKI:权限配置指南

Paypal的支持

项目已经集成了Paypal,目前只实现了Paypal帐号的循环扣款。基于信用卡的支付、一次性扣款、Webhook消息处理均未实现。

项目使用paypal/Paypal-PHP-SDK提供的包做Paypal开发,开发包用法、用例和Api说明请直接上该项目查看。

要使用Paypal,需要先修改.env修改(没有则在末尾增加)相关配置,主要配置项如下:

PAYPAL_APPID=bigbigads   # App ID,实际没用上                      
PAYPAL_CLIENT_ID=XXXXXXX # Paypal App ClientID
PAYPAL_CLIENT_SECRET=XXXXXXX # Paypal App Secret
PAYPAL_WEBHOOK=https://phenye.tunnel.2bdata.com/onPayWebhook # Webhook用于接收支付消息,比如支付成功,过期等。这个需要在Paypal开发者平台的webhook先做配置,然后再填到这里来,两者名称必须一致,同时要求必须是https协议。请将域名换成自己的,后面的onPayWebhook应保留不变                  
PAYPAL_RETURNURL=https://phenye.tunnel.2bdata.com/onPay # 回调接口,在支付的时候需要先跳到Paypal的网站上完成支付,然后Paypal将跳回该回调地址完成最后操作。请将域名换成自己的,onPay保持不变。
PAYPAL_MODE=sandbox

开发注意:Paypal的订阅一旦生效,不会自动取消。因此当用户切换升级计划,也就是切换不同的升级计划时,开发上必须主动将前一个订阅挂起或者取消,否则就会出现多个订阅同时在扣用户款的情况。

subscriptions配置

subscriptions原来在数据库中有残留,因此当执行数据库迁移时不一定能成功,这时手动检查下数据表:

  • subscriptions表格是否存在,有就删除:
drop table subscriptions
  • users表格的字段: stripe_id,braintree_id,subscription_id, paypal_email, card_brand, card_last_four, trial_ends_at,手动删除。

然后看下面一节。

plans(升级计划)配置指南

分三步:

  1. 迁移plans数据库
  2. 修改数据库填充文件PlansSeeder.php,该文件包含三部分:填充plans表格,将角色与plans绑定以及将plans同步到Paypal.
  3. 执行填充

迁移

迁移文件位于2017_03_18_230500_create_plans_table.php,执行下面这条命令即可完成迁移,同时查看下本地数据库是否多了张plans的表。

php artisan migrate

该命令只需要执行一次,作用是往数据库创建表,如果你需要修改迁移内容,请先阅读下Laravel的迁移教程: http://laravelacademy.org/post/6171.html

如果plans做了修改,需要重新迁移,那么需要先执行回滚将plans删除先做迁移。

php artisan migrate:rollback

修改PlansSeeder.php

数据库填充文件位于database/seeds/PlansSeeder.php

该文件包含三块内容:

  1. 填充plans,比如Free, Start,Standard,Advanced,VIP等升级计划的信息,主要有价格和收费周期等。

  2. 将角色与plans绑定。从业务角度上看,不同的plan应该对应到不同的权限上;但是在设计上,我们的权限模型是RBAC,所有的权限都分配到指定的角色上。因此不同的plan要对应不同的权限,就应该将不同的plan绑定到不同的role上。当userplan改变时,userrole也应该跟着改变。基于以上原因:plans表格都有一个role_id的字段,以便用户完成支付后获取该计划所属的角色,并做变更。但是roles表格也有一个plan的字段,这实际上是由于早期设计上通过第三方Braintree保存plans(也就是本地没有plans表格),所以需要通过roles去获取对应的plans导致的,在将来重新设计支付系统时这块将被完全抛弃

  3. 将升级计划信息同步到Paypal,以便在支付的时候Paypal能知道我们想各个升级计划的具体情况(价格,税收,有效期,循环周期等),以便实现循环支付。

执行填充

执行如下命令将初始化跟升级计划相关的数据,因此每次修改了该文件都应该重新执行这条命令。

php artisan db:seed --class=PlansSeeder

可对计划内容作任意修改,不会影响到已经支付的用户。

如果是在生产环境下,要重新填充初始化是不可逆的,出于安全性考虑,请务必备份好数据库

后台管理与博客

同步后,先执行composer update更新下包,然后执行下面命令重新填充权限:

php artisan db:seed --class=BigbigadsSeeder

后台配置便完成了。

后台地址:http://<你的域名>/admin

如何登陆?

请自己注册个帐号,然后执行下面命令该帐户提升为后台管理员

php artisan voyager:admin  <你的email帐号>

前后台的帐号不可混用,如果你在前台已经登陆了,进入后台会出错;所以必须先退出前台的帐户,然后再进后台。 反之,如果你登陆了后台,然后再去查看前台,就会得到各种错误,这块暂时没有好方法解决。

如何修改用户角色与激活用户?

后台可以修改用户的信息,包括是否激活用户,但是修改角色并不会重置使用资源,因此,不建议在后台修改用户角色与激活用户。为方便管理,使用以下方法修改角色和激活帐号。

进入项目根目录,

  • 修改用户角色
$php artisan bigbigads:change <email帐户> <角色key,如Free,Standard...>
  • 激活/反激活用户
$php artisan bigbigads:activate <email帐户> <激活为1,反激活为0>

php artisanLaravel的命令行机制,通过php artisan list可查看所有命令的描述,该项目专用的命令分类在bigbigads下面,要查看具体命令的参数说明(eg. bigbigads:change),可使用php artisan help bigbigads:change

如何发博客?

请找到Posts菜单,标准的发文章流程,看下就懂如何操作。然后进前台看下即可。

如何添加搜索项

参考对应WIKI:如何添加搜索项

配置QA

Q:升级源码后,权限配置没生效? A:

  1. 重新生成下权限php artisan db:seed --class=BigbigadsSeeder
  2. 登陆后,进入http://<服务器域名>/tester,重新将自己的权限提示到Pro级别,界面上有打出内容且不是错误提示就表示成功,这时重新登陆下权限即生效。
  3. 如果没有登陆,使用的是匿名用户的权限,没生效是因为匿名用户有缓存,要么等一天再试,要么修改app/Services/AnonymousUser.php,将user函数按下面说明修改:
    /**
     * 返回匿名帐户
     */
    public static function user($req)
    {
        $ip = $req->ip();
        $user = null;//Cache::get($ip);//将此修改为null即可
        if (!is_null($user) && !is_null($user->date) && $user->date->isToday()) {
            Log::debug("$ip is still valid");
        } else {
        	...省略无关代码
        }
        return $user;
    }

展示网站(Bigbigads根目录)

$npm run develop #开发环境单次编译
$npm run watch #开发环境监听
$npm run product #生产环境

开发配置

教程请参考Wiki

Design Documents

Bigbigads原型设计.rp bigbigads设计.asta bigbigads_plan_new.pdf

Admin Tutorial

Voyager Document

About


Languages

Language:JavaScript 84.8%Language:HTML 8.3%Language:PHP 6.4%Language:CoffeeScript 0.5%Language:CSS 0.0%Language:Shell 0.0%