Bläddra i källkod

wesmiler 报恩寺项目提交

wesmiler 4 år sedan
förälder
incheckning
062ce44bd6

+ 18 - 0
app/Http/Controllers/Api/v1/MemberController.php

@@ -4,8 +4,10 @@ namespace App\Http\Controllers\Api\v1;
 
 use App\Http\Controllers\Api\BaseController;
 use App\Http\Validator\MemberValidator;
+use App\Http\Validator\WithdrawValidator;
 use App\Http\Validator\YigongValidator;
 use App\Services\MemberService;
+use App\Services\WithdrawService;
 use App\Services\YigongService;
 use Illuminate\Http\Request;
 
@@ -30,6 +32,7 @@ class MemberController extends BaseController
 
         $this->service = new MemberService();
         $this->yigongService = new YigongService();
+        $this->withdrawService = new WithdrawService();
     }
 
     /**
@@ -119,6 +122,21 @@ class MemberController extends BaseController
     }
 
     /**
+     * 工资提现
+     * @param Request $request
+     * @param WithdrawValidator $validate
+     * @return array
+     */
+    public function withdraw(Request $request, WithdrawValidator $validate){
+        $params = $validate->check($request->all(),'pay');
+        if(!is_array($params)){
+            return message($params, false);
+        }
+
+        return $this->withdrawService->withdraw($this->userId);
+    }
+
+    /**
      * 注销账号
      */
     public function logout(){

+ 36 - 0
app/Http/Controllers/WithdrawController.php

@@ -0,0 +1,36 @@
+<?php
+// +----------------------------------------------------------------------
+// | Laravel框架 [ Laravel ]
+// +----------------------------------------------------------------------
+// | 版权所有 2017~2021 Laravel研发中心
+// +----------------------------------------------------------------------
+// | 官方网站: http://www.laravel.cn
+// +----------------------------------------------------------------------
+// | Author: wesmiler <12345678@qq.com>
+// +----------------------------------------------------------------------
+
+namespace App\Http\Controllers;
+
+use App\Services\WithdrawService;
+
+/**
+ * 工资提现记录管理-控制器
+ * @author wesmiler
+ * @since 2020/11/11
+ * Class WithdrawController
+ * @package App\Http\Controllers
+ */
+class WithdrawController extends Backend
+{
+    /**
+     * 构造函数
+     * @author wesmiler
+     * @since 2020/11/11
+     * WithdrawController constructor.
+     */
+    public function __construct()
+    {
+        parent::__construct();
+        $this->service = new WithdrawService();
+    }
+}

+ 49 - 0
app/Http/Validator/WithdrawValidator.php

@@ -0,0 +1,49 @@
+<?php
+namespace App\Http\Validator;
+class WithdrawValidator extends BaseValidator
+{
+    // 当前模型所有验证规则
+    public static $rules = [
+        'id' => 'required',
+        'money' => 'required|min:0|max:1000000',
+        'realname' => 'required|string|min:2|max:20',
+        'account' => 'required|string|min:2|max:50',
+        'pay_type' => 'required|min:1|max:10',
+    ];
+
+    // 当前模型所有错误提示信息
+    public static $msgs = [
+        'required' => ':attribute不能为空',
+        'string' => ':attribute必须是字符串',
+        'min' => ':attribute长度不能小于:min位',
+        'max' => ':attribute长度不能大于:max位',
+        'exists' => ':attribute不存在',
+        'rule' => ':attribute格式不正确',
+    ];
+
+    // 当前模型所有验证字段
+    public static $fields = [
+        'id' => '活动ID',
+        'realname' => '收款姓名',
+        'account' => '收款账号',
+        'pay_type' => '支付方式',
+        'money' => '金额',
+    ];
+
+    // 当前模型所有验证场景
+    public static $scenes = [
+        'info'=> ['id'],
+        'pay'=> ['id','realname','account','pay_type','money'],
+    ];
+
+    /**
+     * 验证
+     * @param $request
+     * @param string $scene
+     * @return int|mixed
+     */
+    public static function check($request, $scene=''){
+        $validator = new BaseValidator(self::$rules, self::$msgs, self::$fields, self::$scenes);
+        return $validator->checkParams($request, $scene);
+    }
+}

+ 1 - 1
app/Services/TradeService.php

@@ -92,7 +92,7 @@ class TradeService extends BaseService
                 if ($status > 0) {
                     $query->where('a.status', $status);
                 } else {
-                    $query->whereIn('a.status', [1, 2]);
+                    $query->whereIn('a.status', [1, 2, 3]);
                 }
 
             })

+ 57 - 1
app/Services/WithdrawService.php

@@ -13,6 +13,7 @@ namespace App\Services;
 
 use App\Models\MemberModel;
 use App\Models\RechargeModel;
+use App\Models\WithdrawModel;
 
 /**
  * 提现记录管理-服务类
@@ -31,7 +32,7 @@ class WithdrawService extends BaseService
      */
     public function __construct()
     {
-        $this->model = new RechargeModel();
+        $this->model = new WithdrawModel();
     }
 
 
@@ -127,8 +128,63 @@ class WithdrawService extends BaseService
         return parent::edit($data); // TODO: Change the autogenerated stub
     }
 
+    /**
+     * 用户工资提现
+     * @param $userId
+     * @return array
+     */
     public function withdraw($userId){
         $params = request()->all();
+        $money = isset($params['money'])? $params['money'] : 0;
+        if($money<=0){
+            return message('提现金额错误', false);
+        }
+
+        // 验证提现限制
+        $limitMin = ConfigService::make()->getConfigByCode('withdraw_min');
+        if($money > $limitMin){
+            return message('最低提现金额为:'.$limitMin.'元', false);
+        }
+
+        // 验证账户
+        $memberInfo = MemberModel::where(['id'=> $userId,'mark'=> 1,'status'=> 1])
+            ->select(['id','openid','nickname','salary'])
+            ->first();
+
+        if(!$memberInfo){
+            return message('账户不可操作或已冻结,请联系客服', false);
+        }
+
+        if($memberInfo->salary < $money){
+            return message('可提现金额不足', false);
+        }
+
+        // 处理
+         $data = [
+             'order_sn'=> get_order_num('T'),
+             'user_id'=> $userId,
+             'pay_type'=> isset($params['pay_type'])? $params['pay_type'] : 1,
+             'money'=> $money,
+             'balance'=> $memberInfo->salary,
+             'realname'=> isset($params['realname'])? $params['realname'] : '',
+             'account'=> isset($params['account'])? $params['account'] : '',
+             'qrcode'=> isset($params['qrcode'])? $params['qrcode'] : '',
+             'remark'=> isset($params['remark'])? $params['remark'] : '',
+             'status'=> 2,
+         ];
+
+        \DB::beginTransaction();
+        if(!MemberModel::where(['id'=> $userId,'mark'=> 1])->descrement('salary', $money)){
+            \DB::rollBack();
+            return message('更新账户失败,请刷新后重试',false);
+        }
+
+        if(!$this->model::insertGetId($data)){
+            \DB::rollBack();
+            return message('提现处理失败,请刷新后重试',false);
+        }
 
+        \DB::commit();
+        return message('提现申请成功,请耐心等候审核打款',true);
     }
 }

BIN
public/uploads/img/20210809/6110f2922c5d6.jpg


+ 1 - 0
routes/api.php

@@ -55,6 +55,7 @@ Route::post('/member/gdList', [\App\Http\Controllers\Api\v1\MemberController::cl
 Route::post('/member/yigong', [\App\Http\Controllers\Api\v1\MemberController::class, 'yigong']);
 Route::post('/member/yigongApply', [\App\Http\Controllers\Api\v1\MemberController::class, 'yigongApply']);
 Route::post('/member/activity', [\App\Http\Controllers\Api\v1\ActivityController::class, 'bookList']);
+Route::post('/member/withdraw', [\App\Http\Controllers\Api\v1\MemberController::class, 'withdraw']);
 Route::post('/member/logout', [\App\Http\Controllers\Api\v1\MemberController::class, 'logout']);
 
 // 资讯收藏

+ 9 - 1
routes/web.php

@@ -488,7 +488,15 @@ Route::post('/recharge/edit', [\App\Http\Controllers\RechargeController::class,
 Route::post('/recharge/delete', [\App\Http\Controllers\RechargeController::class, 'delete']);
 Route::post('/recharge/status', [\App\Http\Controllers\RechargeController::class, 'status']);
 
-// 充值记录
+// 提现记录
+Route::get('/withdraw/index', [\App\Http\Controllers\WithdrawController::class, 'index']);
+Route::get('/withdraw/info', [\App\Http\Controllers\WithdrawController::class, 'info']);
+Route::post('/withdraw/edit', [\App\Http\Controllers\WithdrawController::class, 'edit']);
+Route::post('/withdraw/delete', [\App\Http\Controllers\WithdrawController::class, 'delete']);
+Route::post('/withdraw/status', [\App\Http\Controllers\WithdrawController::class, 'status']);
+
+
+// 供奉订单
 Route::get('/enshrineorders/index', [\App\Http\Controllers\EnshrineOrdersController::class, 'index']);
 Route::get('/enshrineorders/info', [\App\Http\Controllers\EnshrineOrdersController::class, 'info']);
 Route::post('/enshrineorders/edit', [\App\Http\Controllers\EnshrineOrdersController::class, 'edit']);