Bladeren bron

'新增添加用户书币接口'

lh 3 jaren geleden
bovenliggende
commit
b1c495502b
1 gewijzigde bestanden met toevoegingen van 93 en 0 verwijderingen
  1. 93 0
      src/Controllers/CompanyAuth/AppController.php

+ 93 - 0
src/Controllers/CompanyAuth/AppController.php

@@ -234,6 +234,99 @@ class AppController extends Controller
     }
 
     /**
+     * @api {post} company/auth/addBookCoin 增加用户书币
+     * @apiVersion 1.0.0
+     * @apiName addBookCoin
+     * @apiGroup CompanyAuth
+     * @apiParam {String} channel_id 站点id
+     * @apiParam {String} uid 用户id
+     * @apiParam {String} amount 书币
+     * @apiParam {String} app_id 分配好的{app_id}
+     * @apiParam {String} nonce_str 随机字符串
+     * @apiParam {String} timestamp 时间戳
+     * @apiParam {String} sign 签名 规则同微信支付签名MD5(排序好的请求字符串&key=分配好的{app_secret})
+     * @apiSuccess {int}         code 状态码
+     * @apiSuccess {String}      msg  信息
+     * @apiSuccess {Object}      data 结果集
+     *     HTTP/1.1 200 OK
+     *   {
+     *       "code": 0,
+     *       "msg": "",
+     *       "data": {
+     *           "success": 1
+     *       }
+     *  }
+     */
+    public function addBookCoin(ChannelQueryRequest $request)
+    {
+        $channel_id = $request->get('channel_id');
+        $uid = $request->get('uid');
+        $openid = $request->get('openid');
+        $amount = (int)$request->get('amount');
+
+        // 参数判断
+        if ((empty($openid) && empty($uid)) || empty($channel_id) || empty($amount) || $amount < 0 || $amount > 2000) {
+            return response()->json(['code'=>-1, 'msg'=>'传参有误!']);
+        }
+
+        // 获取当前用户信息
+        $user_info = '';
+        if (!empty($uid)) {
+            $user_info = $prev_coin = DB::connection('mysql')->table('users')->where(['id'=>$uid])
+                ->select('id', 'distribution_channel_id', 'balance', 'reward_balance')->first();
+        }else if(!empty($openid)) {
+            $user_info = $prev_coin = DB::connection('mysql')->table('users')
+                ->where(['distribution_channel_id'=>$channel_id, 'openid'=>$openid])
+                ->select('id', 'distribution_channel_id', 'balance', 'reward_balance')->first();
+        }
+        $user_info = (array)$user_info;
+        if (!$user_info) return response()->json(['code'=>-1, 'msg'=>'用户不存在!']);
+
+        // 当日该站点该用户获得的总书币
+        $sum = DB::connection('mysql')->table('user_coin_logs')->where(['distribution_channel_id'=>$channel_id, 'uid'=>$user_info['id'], 'day'=>date('Y-m-d')])->sum('amount');
+
+        $limit_amount = 2000;
+        if ($sum + $amount > $limit_amount) {
+            return response()->json(['code' => -1, 'msg' => '每个用户每个站点每日加书币的总额不得超过'.$limit_amount.'!']);
+        }
+
+        try {
+            DB::connection('mysql')->beginTransaction();
+            $result = DB::connection('mysql')->table('users')->where(['id'=>$user_info['id']])->update([
+                'balance' => $user_info['balance'] + $amount,
+                'reward_balance' => $user_info['reward_balance'] + $amount,
+            ]);
+
+            if (!$result) {
+                DB::connection('mysql')->rollback();
+                return response()->json(['code'=>-1, 'msg'=>'数据库异常!']);
+            }
+
+            $boolen = DB::connection('mysql')->table('user_coin_logs')->insert([
+                'distribution_channel_id'   => $user_info['distribution_channel_id'],
+                'uid'                       => $user_info['id'],
+                'day'                       => date('Y-m-d'),
+                'before'                    => $user_info['balance'],
+                'amount'                    => $amount,
+                'after'                     => $user_info['balance'] + $amount,
+                'created_at'                => date('Y-m-d H:i:s'),
+                'updated_at'                => date('Y-m-d H:i:s'),
+            ]);
+
+            if (!$boolen) {
+                DB::connection('mysql')->rollback();
+                return response()->json(['code'=>-1, 'msg'=>'数据库异常!']);
+            }
+
+            DB::connection('mysql')->commit();
+        }catch(\Exception $e) {
+            DB::connection('mysql')->rollback();
+            return response()->json(['code'=>-1, 'msg'=>$e->getMessage()]);
+        }
+        return response()->json(['code'=>1, 'msg'=>'', 'data'=>['success' => $result]]);
+    }
+
+    /**
      * @api {post} company/auth/sendOrders 派单信息列表
      * @apiVersion 1.0.0
      * @apiName sendOrders