Kirin há 3 anos atrás
pai
commit
bdfd582794

+ 3 - 28
app/api/controller/PublicController.php

@@ -3,6 +3,7 @@
 namespace app\api\controller;
 
 use app\admin\model\system\SystemAttachment;
+use app\models\game\DayAward;
 use app\models\game\Lottery;
 use app\models\store\StoreCategory;
 use app\models\store\StoreCouponIssue;
@@ -44,34 +45,8 @@ class PublicController
 
     public function test(Request $request)
     {
-//        $list = User::where('spread_uid', '<>', 0)->select();
-//        foreach ($list as $v) {
-//            UserSpread::create([
-//                'uid' => $v['uid'],
-//                'spread_uid' => $v['spread_uid'],
-//                'spread_time' => $v['spread_time'],
-//                'lock' => 1
-//            ]);
-//        }
-//        User::sendBackOrderIntegral(StoreOrder::get(1));
-//        $uid = $request->post('uid');
-//        $way = $request->post('way');
-//        $sp = $request->post('spread_uid');
-//        $userInfo = User::getUserInfo($uid);
-//        BaseModel::beginTrans();
-//        try {
-//            self::addAchievement($uid);
-//            User::where('uid', $userInfo['uid'])->update(['integral' => bcadd($userInfo['integral'], 3000, 2)]);
-//            $res2 = false != UserBill::income('购买商品赠送积分', $uid, 'integral', 'gain', 3000, 0, $userInfo['integral'] + 3000, '购买商品赠送' . floatval(3000) . '积分');
-//            $res = $res2 && self::spreadIntegral($uid) && self::groupIntegral($uid);
-//            TreeRecommend::insertTree($uid, $sp, $way);
-//            self::pinkRecommend($uid);
-//            BaseModel::commitTrans();
-//            return app('json')->success('ok');
-//        } catch (\Exception $e) {
-//            BaseModel::rollbackTrans();
-//            return app('json')->fail($e->getMessage());
-//        }
+        DayAward::dayAward();
+        DayAward::dayAwardOut();
     }
 
     public static function spreadIntegral($uid)

+ 19 - 0
app/api/controller/activity/GameController.php

@@ -4,6 +4,7 @@
 namespace app\api\controller\activity;
 
 
+use app\models\game\DayAward;
 use app\models\game\Lottery;
 use app\models\game\LotteryLog;
 use app\Request;
@@ -58,4 +59,22 @@ class GameController
         }
         return app('json')->success('ok', compact('last_game', 'last_open', 'open_time', 'my'));
     }
+
+    public function getMyAward(Request $request)
+    {
+        $todayAward = DayAward::whereTime('add_time', 'today')->where('uid', $request->uid())->where('status', 0)->find();
+        $all_get = DayAward::where('uid', $request->uid())->where('status', 1)->sum('award');
+        $all_out = DayAward::where('uid', $request->uid())->where('status', 2)->sum('award');
+        return app('json')->success(compact('todayAward', 'all_get', 'all_out'));
+    }
+
+    public function getAward($id, Request $request)
+    {
+        $res = DayAward::getAward($request->uid(), $id);
+        if ($res) {
+            return app('json')->success('领取成功');
+        } else {
+            return app('json')->fail(DayAward::getErrorInfo());
+        }
+    }
 }

+ 1 - 0
app/api/controller/user/UserController.php

@@ -3,6 +3,7 @@
 namespace app\api\controller\user;
 
 use app\http\validates\user\AddressValidate;
+use app\models\game\DayAward;
 use app\models\system\SystemCity;
 use app\models\user\UserSpread;
 use app\models\user\UserVisit;

+ 142 - 0
app/models/game/DayAward.php

@@ -0,0 +1,142 @@
+<?php
+/**
+ * Created by CRMEB.
+ * Copyright (c) 2017~2019 http://www.crmeb.com All rights reserved.
+ * Author: liaofei <136327134@qq.com>
+ * Date: 2019/3/27 21:44
+ */
+
+namespace app\models\game;
+
+use app\admin\model\system\SystemConfig;
+use app\models\store\StoreOrder;
+use app\models\user\User;
+use app\models\user\UserBill;
+use crmeb\traits\ModelTrait;
+use crmeb\basic\BaseModel;
+
+/**
+ * TODO 用户消费新增金额明细 model
+ * Class UserBill
+ * @package app\models\user
+ */
+class DayAward extends BaseModel
+{
+    /**
+     * 数据表主键
+     * @var string
+     */
+    protected $pk = 'id';
+
+    /**
+     * 模型名称
+     * @var string
+     */
+    protected $name = 'day_award';
+
+    use ModelTrait;
+
+    public static function getAward($uid, $id)
+    {
+        $info = self::get($id);
+        if (!$info || $info['uid'] != $uid) return self::setErrorInfo('领取失败');
+        self::beginTrans();
+        try {
+            $get = bcmul($info['award'], 0.9, 2);
+            $left = bcsub($info['award'], $get, 2);
+            $res = self::where('id', $id)->update(['status' => 1]) &&
+                User::bcInc($uid, 'brokerage_price', $get, 'uid') &&
+                UserBill::income('天天领红包', $uid, 'now_money', 'brokerage', $get, $id, User::where('uid', $uid)->value('brokerage_price'), '今日领红包' . $info['award'] . '扣除公益池实际到账' . $get) &&
+                StoreOrder::addPublicLake($left, $id, 'award');
+            if ($res) {
+                self::commitTrans();
+                return true;
+            } else {
+                self::rollbackTrans();
+                return self::setErrorInfo('领取失败');
+            }
+        } catch (\Exception $e) {
+            self::rollbackTrans();
+            return self::setErrorInfo();
+        }
+    }
+
+    public static function dayAward()
+    {
+        if (self::whereTime('add_time', 'today')->find()) {
+            return true;
+        }
+        if (!Lottery::whereTime('add_time', 'yesterday')->where('status', 1)->find()) {
+            return true;
+        }
+        $all_point = Lottery::where('status', 1)->whereTime('open_time', 'yesterday')->sum('ticket');
+        $award_lake = sys_config('award_lake', 0, true);
+        $single_award = bcdiv($award_lake, bcmul($all_point, 2), 2);
+        if ($single_award < 0) {
+            return true;
+        }
+        $list = Lottery::whereTime('add_time', 'yesterday')->where('status', 1)
+            ->group('uid')->field('uid,SUM(ticket) as sum_ticket')->select();
+        self::beginTrans();
+        try {
+            $res = true;
+            foreach ($list as $v) {
+                $award = bcmul($single_award, $v['sum_ticket'], 2);
+                $res1 = self::create([
+                    'uid' => $v['uid'],
+                    'point' => $v['sum_ticket'],
+                    'add_time' => time(),
+                    'award' => $award
+                ]);
+                $res = $res && $res1 && self::expendAwardLake($award, $res1->id);
+            }
+            if ($res) {
+                self::commitTrans();
+                return true;
+            } else {
+                self::rollbackTrans();
+                return self::setErrorInfo('发放失败');
+            }
+        } catch (\Exception $e) {
+            self::rollbackTrans();
+            return self::setErrorInfo();
+        }
+    }
+
+
+    public static function dayAwardOut()
+    {
+        $all_award = self::whereTime('add_time', 'yesterday')->where('status', 0)->sum('award');
+        if ($all_award <= 0) {
+            return true;
+        }
+        self::beginTrans();
+        try {
+            $res = self::whereTime('add_time', 'yesterday')->where('status', 0)->update(['status' => 2]) &&
+                StoreOrder::addPublicLake($all_award, 0, 'award_out');
+            if ($res) {
+                self::commitTrans();
+                return true;
+            } else {
+                self::rollbackTrans();
+                return self::setErrorInfo('过期失败');
+            }
+        } catch (\Exception $e) {
+            self::rollbackTrans();
+            return self::setErrorInfo();
+        }
+    }
+
+    public static function expendAwardLake($num, $link_id, $type = 'award')
+    {
+        $old = sys_config('award_lake', 0, true);
+        $res = SystemConfig::where('menu_name', 'award_lake')->update(['value' => (float)$old - $num]);
+        $str = '';
+        switch ($type) {
+            case 'award':
+                $str = '每日奖金';
+                break;
+        }
+        return $res && UserBill::expend('奖池支出', 0, 'award_lake', 'expend', $num, $link_id, (float)$old - $num, $str ?: '奖池支出');
+    }
+}

+ 5 - 0
app/models/game/Lottery.php

@@ -136,4 +136,9 @@ class Lottery extends BaseModel
             return self::setErrorInfo($e->getMessage());
         }
     }
+
+    public static function dayAward()
+    {
+
+    }
 }

+ 3 - 0
crmeb/subscribes/TaskSubscribe.php

@@ -3,6 +3,7 @@
 namespace crmeb\subscribes;
 
 use app\admin\model\system\SystemAttachment;
+use app\models\game\DayAward;
 use app\models\game\Lottery;
 use app\models\store\StoreBargainUser;
 use app\models\store\StoreOrder;
@@ -42,6 +43,8 @@ class TaskSubscribe
      */
     public function onTask_10()
     {
+        DayAward::dayAward();
+        DayAward::dayAwardOut();
     }
 
     /**

+ 2 - 0
route/api/route.php

@@ -63,6 +63,8 @@ Route::group(function () {
     Route::post('game/join', 'activity.GameController/join')->name('joinGame');// 参加游戏
     Route::get('game/last', 'activity.GameController/lastGame')->name('lastGame');// 参加游戏
     Route::get('game', 'activity.GameController/index')->name('index');// 参加游戏
+    Route::get('game/my_award', 'activity.GameController/getMyAward')->name('index');// 参加游戏
+    Route::post('game/get_award/:id', 'activity.GameController/getAward')->name('index');// 参加游戏
     //产品类
     Route::get('product/code/:id', 'store.StoreProductController/code')->name('productCode');//产品分享二维码 推广员
     Route::post('product/poster', 'store.StoreProductController/poster')->name('productPost');//产品分享海报