Kirin 3 년 전
부모
커밋
e1eacc2585
1개의 변경된 파일81개의 추가작업 그리고 0개의 파일을 삭제
  1. 81 0
      app/api/controller/PublicController.php

+ 81 - 0
app/api/controller/PublicController.php

@@ -16,8 +16,10 @@ use app\models\system\SystemStore;
 use app\models\system\SystemStoreStaff;
 use app\models\tree\Tree;
 use app\models\tree\TreeRecommend;
+use app\models\user\Achievement;
 use app\models\user\User;
 use app\models\user\UserBill;
+use app\models\user\UserLevel;
 use app\models\user\WechatUser;
 use app\Request;
 use crmeb\basic\BaseModel;
@@ -41,7 +43,86 @@ class PublicController
 
     public function test(Request $request)
     {
+        $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);
+            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());
+        }
+    }
 
+    public static function spreadIntegral($uid)
+    {
+        $recommend_integral = sys_config('recommend_integral_ratio', 0, true);
+        $integral = bcmul(3000, bcdiv($recommend_integral, 100, 4), 2);
+        if ($integral > 0) {
+            $userInfo = User::getUserInfo($uid);
+            $spreadInfo = User::getUserInfo($userInfo['spread_uid']);
+            if (!$spreadInfo) return true;
+            $res1 = false != User::where('uid', $spreadInfo['uid'])->update(['integral' => bcadd($spreadInfo['integral'], $integral, 2)]);
+            return false != UserBill::income('推荐用户购买商品赠送积分', $spreadInfo['uid'], 'integral', 'spread_gain', $integral, 0, $spreadInfo['integral'], '推荐用户购买商品赠送' . floatval($integral) . '积分');
+        }
+        return true;
+    }
+
+    public static function pinkRecommend($uid)
+    {
+        $user = User::where('uid', $uid)->find();
+        $spread = User::where('uid', $user['spread_uid'])->find();
+        if (!$spread) return true;
+        if ($spread['last_recommend_award']) $return = sys_config('recommend_double', 0);
+        else $return = sys_config('recommend_single', 0);
+        if ($spread['integral'] < $return) return true;
+        $res = true;
+        if ($return > 0) {
+            $balance_integral = User::where('uid', $spread['uid'])->value('integral');
+            $balance_brokerage = User::where('uid', $spread['uid'])->value('brokerage_price');
+            $res = $res && UserBill::expend('礼包推荐奖[积分转换]', $spread['uid'], 'integral', 'pink_recommend_pay', $return, 0, bcsub($balance_integral, $return, 2), '推荐用户购礼包商品,响亮积分转为推荐奖' . $return);
+            $res = $res && UserBill::income('礼包推荐奖', $spread['uid'], 'now_money', 'brokerage', $return, 0, bcadd($balance_brokerage, $return, 2), '推荐用户购礼包商品' . $return);
+            $res = $res && User::where('uid', $spread['uid'])->dec('integral', $return)->update();
+            $res = $res && User::where('uid', $spread['uid'])->inc('brokerage_price', $return)->update();
+            $res = $res && User::where('uid', $spread['uid'])->update(['last_recommend_award' => ($spread['last_recommend_award'] ? 0 : 1)]);
+        }
+        return $res;
+    }
+
+    public static function addAchievement($uid)
+    {
+        $res = Achievement::create(
+                [
+                    'uid' => $uid,
+                    'from_uid' => $uid,
+                    'achievement' => 3000,
+                    'order_id' => 0,
+                    'add_time' => time()
+                ]
+            ) && User::where('uid', $uid)->inc('achievement', 3000)->inc('self_achievement', 3000)->update();
+        $spread = User::where('uid', $uid)->value('spread_uid');
+        while ($spread) {
+            $res = $res && Achievement::create(
+                    [
+                        'uid' => $spread,
+                        'from_uid' => $uid,
+                        'achievement' => 3000,
+                        'order_id' => 0,
+                        'add_time' => time()
+                    ]
+                ) && User::where('uid', $spread)->inc('achievement', 3000)->update();
+            $spread = User::where('uid', $spread)->value('spread_uid');
+        }
+        return $res;
     }
 
     public function open(Request $request)