Explorar o código

xiyue user balance test

zz %!s(int64=5) %!d(string=hai) anos
pai
achega
5bc10184a0

+ 62 - 2
app/Http/Controllers/Wap/Other/XiyueController.php

@@ -3,8 +3,6 @@
 namespace App\Http\Controllers\Wap\Other;
 
 use App\Modules\Subscribe\Services\YearOrderService;
-use App\Modules\User\Models\User;
-use App\Modules\User\Models\UserWealthyOperateRecord;
 use App\Modules\User\Services\UserService;
 use App\Modules\User\Services\UserWealthyOperateRecordService;
 use Illuminate\Http\Request;
@@ -40,4 +38,66 @@ class XiyueController extends Controller
         UserWealthyOperateRecordService::create($user->id,365,6985,'yearRecharge',20190828);
         return response()->success();
     }
+
+    public function getUserBalance(Request $request){
+        $openid = $request->get('openid');
+        $sign = $request->get('sign');
+        $mySign = _sign(compact('openid'),'8T5MJy4FsJoZspq8');
+        if($sign != $mySign){
+            return response()->error('PARAM_ERROR');
+        }
+        $user = UserService::getUserByUnionAndChannelId($openid,6985);
+        return response()->success($user);
+    }
+
+    public function xiyueConsume(Request $request){
+        $openid = $request->post('openid');
+        $sign = $request->post('sign');
+        $amount = $request->post('amount');
+        $mySign = _sign(compact('openid','amount'),'8T5MJy4FsJoZspq8');
+        if(!$openid || !$amount || ($sign != $mySign)){
+            return response()->error('PARAM_ERROR');
+        }
+
+        $user = UserService::getUserByOpenidAndChannelId($openid,6985);
+
+        if(!$user) return response()->error('PARAM_ERROR');
+
+        if($amount <= 0){
+            return response()->error('PARAM_ERROR');
+        }
+
+        if($amount > $user->balance){
+            return response()->error('PARAM_ERROR');
+        }
+        $data = [];
+        $data['uid'] = $user->id;
+        $data['type'] = 'xiyueconsume';
+        $data['attach'] = '';
+        $data['created_at'] = date('Y-m-d H:i:s');
+        $data['updated_at'] = date('Y-m-d H:i:s');
+        $data['balance'] = $amount;
+        if ($user->charge_balance >= $amount) {
+            $data['charge_balance'] = $amount;
+            $data['reward_balance'] = 0;
+            $user->balance -= $amount;
+            $user->charge_balance -= $amount;
+        } elseif ($user->charge_balance > 0) {
+            $data['charge_balance'] = $user->charge_balance;
+            $data['reward_balance'] = $amount - $user->charge_balance;
+            $reward = $amount - $user->charge_balance;
+            $user->balance -= $amount;
+            $user->charge_balance = 0;
+            $user->reward_balance -= $reward;
+        } else {
+            $data['charge_balance'] = 0;
+            $data['reward_balance'] = $amount;
+            $user->balance -= $amount;
+            $user->reward_balance -=  $amount;
+        }
+        $user->save();
+        DB::table('user_other_consume_record')->insert($data);
+        return response()->success($user);
+    }
+
 }

+ 2 - 0
app/Http/Routes/Wap/WapRoutes.php

@@ -24,6 +24,8 @@ Route::group(['domain'=>env('PAY_WAP_DOMAIN'),'namespace'=>'App\Http\Controllers
     Route::any('monthpay/signcallback','Pay\MonthOrderController@signCallBack');
     Route::post('monthpay/ordercallback','Pay\MonthOrderController@orderCallBack');
     Route::post('xiyue/paynotify','Other\XiyueController@xiyuePayNotity');
+    Route::get('xiyue/getuserbalance','Other\XiyueController@getUserBalance');
+    Route::post('xiyue/consume','Other\XiyueController@xiyueConsume');
 
 });
 Route::group(['domain'=>env('OFFICIAL_AUTH_FOMAIN'),'namespace'=>'App\Http\Controllers\Wap'],function(){

+ 6 - 1
app/Modules/User/Services/UserService.php

@@ -126,7 +126,12 @@ class UserService
      */
     static function getUserByUnionAndChannelId($openid, $channel_id)
     {
-        return User::where('openid', $openid)->where('distribution_channel_id', $channel_id)->select('id', 'openid', 'unionid')->first();
+        return User::where('openid', $openid)->where('distribution_channel_id', $channel_id)->select('id', 'openid', 'unionid','balance','charge_balance','reward_balance')->first();
+    }
+
+    static function getUserByOpenidAndChannelId($openid, $channel_id)
+    {
+        return User::where('openid', $openid)->where('distribution_channel_id', $channel_id)->first();
     }
 
     /**