olaf/clock

本包的最新版本(v1.0.12)没有可用的许可信息。

每天打卡并赚取现金

v1.0.12 2021-04-07 08:31 UTC

This package is auto-updated.

Last update: 2024-09-07 15:33:20 UTC


README

1.参与活动流程图

2.包安装

2.1 项目composer更新

2.1.1 执行composer

composer require "olaf/clock": "dev-master"

2.2 Provider配置文件

    2.2.1 打开你的 config/app.php 并将以下内容添加到 providers 数组中

Happy\Clock\ClockServiceProvider::class

2.1.2 运行以下命令以发布包配置文件 config/clock.php

php artisan vendor:publish --provider="Happy\Clock\ClockServiceProvider"

2.3 Clock配置更新

2.3.1 检测项目Migrate状态

➜ php artisan migrate:status
Migration table not found.

2.3.2 如果未初始化,需要先初始化Migrate服务,否则,跳过该步骤

➜ php artisan migrate:install
Migration table created successfully.

2.3.3 再次检测Migrate状态

➜ php artisan migrate:status
+------+------------------------------------------------+-------+
| Ran? | Migration                                      | Batch |
+------+------------------------------------------------+-------+
| No   | 2014_10_12_000000_create_users_table           |       |
| No   | 2014_10_12_100000_create_password_resets_table |       |
| No   | 2019_08_19_000000_create_failed_jobs_table     |       |
+------+------------------------------------------------+-------+

2.3.4 生成Clock的数据库迁移信息

➜ php artisan clock:migration
/Users/wangxionghao/Server/package/clock/src/views
Table: pay_clock, pay_clock_day, pay_clock_order, pay_clock_setting,
            pay_clock_user, pay_clock_user_error_log, pay_clock_user_log
A migration that creates 'pay_clock', 'pay_clock_day', 'pay_clock_order',
         'pay_clock_setting', 'pay_clock_user', 'pay_clock_user_error_log', 'pay_clock_user_log' tables will be created in database/migrations directory

 Proceed with the migration creation? [Yes|no] (yes/no) [yes]:
 > yes


Creating migration...
Migration successfully created!

执行此命令后,将生成 <timestamp>_clock_setup_tables.php 文件 2.3.5 数据库迁移

➜  php artisan migrate
Migrating: 2021_02_07_074236_clock_setup_tables
Migrated:  2021_02_07_074236_clock_setup_tables (274.25ms)

OR

➜  php artisan migrate --path=./database/migrations/<timestamp>_clock_setup_tables.php

2.3.6 配置日志文件 config/logging.php 中在 channels 数组中添加如下内容

'clock-server' => [
            'driver' => 'daily',
            'path' => storage_path('logs/clock/info.log'),
            'level' => env('LOG_LEVEL', 'debug'),
            'days' => 14,
 ],

3.接口服务

3.1 获取参与打卡首页信息

请求参数:

响应参数模板:

响应参数:

3.2 参与打卡活动支付

活动支付流程为clock服务提供生成订单号,订单号及相关的业务参数初始化后,向渠道发起支付请求 请求地址:

use Happy\Clock\CashClock;
use Happy\Clock\Service\ClockService;

public function prepay(Request $request, ClockService $service)
{
    $extra = [
        'nickname' => 'JasonABCDE',
        'mobile' => '18986299292',
        'openId' => 'oq_pO5XHsq87Z3LLBc7p0',
    ];
    $uid = 6;

    $cashClockSer = new CashClock($service);

    $result = $cashClockSer->generateClockOrder($uid, $extra);

    return Response::json($result);
}

请求参数:

响应参数:

3.3 异步回调通知

接受渠道的回调通知,根据业务需求处理打卡订单逻辑及用户参与信息 请求地址:

use Happy\Clock\CashClock;
use Happy\Clock\Service\ClockService;

public function notify(Request $request, ClockService $service)
    {
        $cashClockSer = new CashClock($service);

        $orderNo = "TTC202102155324302";
        $extra = [
            'amount' => 100 / 100,
            'buyerId' => 'oq_pO5XHsq87Z3LLBc7p0',
            'notify_time' => date('Y-m-d H:i:s'),
            'transactionId' => "Wx2394446280110126",
            'content' => "<xml>
                          <return_code><![CDATA[SUCCESS]]></return_code>
                          <result_code><![CDATA[SUCCESS]]></result_code>
                          <sign><![CDATA[C380BEC2BFD727A4B6845133519F3AD6]]></sign>
                          <mch_id>10010404</mch_id>
                          <contract_code>100001256</contract_code>
                          <openid><![CDATA[oAubD08j8Y4GU6YNyq_aGWC8h2OA]]></openid>
                          <plan_id><![CDATA[1000888]]></plan_id>
                          <change_type><![CDATA[DELETE]]></change_type>
                          <operate_time><![CDATA[2015-07-01 10:00:00]]></operate_time>
                          <contract_id><![CDATA[Wx15463511252015071056489715]]></contract_id>
													</xml>",
            "nickname" => "JasonABCDE",
            "mobile" => "18986299292"
        ];


        $result = $cashClockSer->notifyClockOrder($orderNo, $extra);

        return Response::json($result);
    }

请求参数:

响应参数:

3.4 检测用户的打卡状态

该接口服务用于用户在打卡前的检测,防止已打卡的用户再次发起打卡操作; 请求地址:

ClockCenter/checkUserClock

请求参数:

响应参数:

3.5 用户参与打卡

请求地址:

use Happy\Clock\ClockCenter;
use Happy\Clock\Service\ClockService;

public function clock(Request $request, ClockService $service)
{
    $clockCenterSer = new ClockCenter($service);

    $uid = 4;

    $result = $clockCenterSer->clock($uid);

    return Response::json($result);
}

请求参数:

响应参数:

3.6 系统定时任务红包瓜分

打卡活动在早上8点结束,系统开始定时任务,将总奖池的红包进行拆分业务,红包总额 = 参与活动报名的总奖金池 - 已成功打卡的总额;然后把瓜分的红包放入缓存中; 请求地址:

Commands/ClockRedInit/fire

php artisan clock:init-red

3.7 用户领取红包

定时任务将参与活动未打卡的金额转为奖金,瓜分到每个用户奖金,用户获得的金额为参与打卡费用+红包; 请求地址:

use Happy\Clock\CashClock;
use Happy\Clock\Service\ClockService;

public function openRed(Request $request, ClockService $service)
{
    $cashClockSer = new CashClock($service);

    $uid = 4;
	  // $handler闭包用于处理 各渠道(微信/支付宝)的转账/打款到用户的逻辑逻辑
    $handler = function ($orderNo, $uid) {
        return [
            'return_code' => 'SUCCESS',
            'result_code' => "SUCCESS",
            'order_no' => $orderNo,
            'uid' => $uid
        ];
    };
    $result = $cashClockSer->userOpenRed($uid, $handler);

    return Response::json($result);
}

请求参数:

响应参数:

4.系统定时任务

4.1 瓜分红包定时任务

每天早上8:05分执行,用于将未打卡的参与用户的活动金额瓜分;

php artisan clock:init-red

php artisan clock:push-red

php artisan clock:push-red