WIN-2308041133\Administrator 4 달 전
부모
커밋
2d92e97754
3개의 변경된 파일235개의 추가작업 그리고 0개의 파일을 삭제
  1. 128 0
      app/api/controller/user/UserExtractController.php
  2. 100 0
      app/models/user/UserBank.php
  3. 7 0
      route/api/route.php

+ 128 - 0
app/api/controller/user/UserExtractController.php

@@ -3,12 +3,18 @@
 namespace app\api\controller\user;
 
 use app\admin\model\system\SystemConfig;
+use app\http\validates\user\AddressValidate;
 use app\models\store\StoreOrder;
+use app\models\system\SystemCity;
+use app\models\user\UserBank;
 use app\models\user\UserBill;
 use app\models\user\UserExtract;
 use app\Request;
 use crmeb\services\UtilService;
 use crmeb\services\CacheService;
+use think\db\exception\DataNotFoundException;
+use think\db\exception\ModelNotFoundException;
+use think\exception\ValidateException;
 
 /**
  * 提现类
@@ -104,4 +110,126 @@ class UserExtractController
         else
             return app('json')->fail(UserExtract::getErrorInfo('提现失败'));
     }
+    /**
+     * 银行卡 获取单个
+     * @param Request $request
+     * @param $id
+     * @return mixed
+     * @throws DataNotFoundException
+     * @throws ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public function bank_info(Request $request, $id)
+    {
+        $bankInfo = [];
+        if ($id && is_numeric($id) && UserBank::be(['is_del' => 0, 'id' => $id, 'uid' => $request->uid()])) {
+            $bankInfo = UserBank::find($id)->toArray();
+        }
+        return app('json')->successful($bankInfo);
+    }
+
+    /**
+     * 银行卡列表
+     * @param Request $request
+     * @param $page
+     * @param $limit
+     * @return mixed
+     */
+    public function bank_list(Request $request)
+    {
+        list($page, $limit) = UtilService::getMore([['page', 0], ['limit', 20]], $request, true);
+        $list = UserBank::getUserValidAddressList($request->uid(), $page, $limit, 'id,bank_code,bank_address,is_default');
+        return app('json')->successful($list);
+    }
+
+    /**
+     * 设置默认银行卡
+     *
+     * @param Request $request
+     * @return mixed
+     */
+    public function bank_default_set(Request $request)
+    {
+        list($id) = UtilService::getMore([['id', 0]], $request, true);
+        if (!$id || !is_numeric($id)) return app('json')->fail('参数错误!');
+        if (!UserBank::be(['is_del' => 0, 'id' => $id, 'uid' => $request->uid()]))
+            return app('json')->fail('银行卡不存在!');
+        $res = UserBank::setDefaultAddress($id, $request->uid());
+        if (!$res)
+            return app('json')->fail('银行卡不存在!');
+        else
+            return app('json')->successful();
+    }
+
+    /**
+     * 获取默认银行卡
+     * @param Request $request
+     * @return mixed
+     */
+    public function bank_default(Request $request)
+    {
+        $defaultAddress = UserBank::getUserDefaultAddress($request->uid(), 'id,bank_code,bank_address,is_default');
+        if ($defaultAddress) {
+            $defaultAddress = $defaultAddress->toArray();
+            return app('json')->successful('ok', $defaultAddress);
+        }
+        return app('json')->successful('empty', []);
+    }
+
+    /**
+     * 修改 添加银行卡
+     * @param Request $request
+     * @return mixed
+     */
+    public function bank_edit(Request $request)
+    {
+        $bankInfo = UtilService::postMore([
+            ['bank_code', ''],
+            ['is_default', false],
+            ['bank_address', ''],
+            ['id', 0],
+        ], $request);
+        if (!$bankInfo['bank_code'] == '')
+            if (!preg_match('/^([1-9]{1})(\d{14}|\d{18}|\d{15})$/', $bankInfo['cardnum']))
+                return app('json')->fail('银行卡号输入有误');
+
+        if ($bankInfo['id'] && UserBank::be(['id' => $bankInfo['id'], 'uid' => $request->uid(), 'is_del' => 0])) {
+            $id = $bankInfo['id'];
+            unset($bankInfo['id']);
+            if (UserBank::edit($bankInfo, $id, 'id')) {
+                if ($bankInfo['is_default'])
+                    UserBank::setDefaultAddress($id, $request->uid());
+                return app('json')->successful();
+            } else
+                return app('json')->fail('编辑银行卡失败!');
+        } else {
+            $bankInfo['add_time'] = time();
+            if ($bank = UserBank::create($bankInfo)) {
+                if ($bankInfo['is_default']) {
+                    UserBank::setDefaultAddress($bank->id, $request->uid());
+                }
+                return app('json')->successful(['id' => $bank->id]);
+            } else {
+                return app('json')->fail('添加银行卡失败!');
+            }
+        }
+    }
+
+    /**
+     * 删除银行卡
+     *
+     * @param Request $request
+     * @return mixed
+     */
+    public function bank_del(Request $request)
+    {
+        list($id) = UtilService::postMore([['id', 0]], $request, true);
+        if (!$id || !is_numeric($id)) return app('json')->fail('参数错误!');
+        if (!UserBank::be(['is_del' => 0, 'id' => $id, 'uid' => $request->uid()]))
+            return app('json')->fail('银行卡不存在!');
+        if (UserBank::edit(['is_del' => '1'], $id, 'id'))
+            return app('json')->successful();
+        else
+            return app('json')->fail('删除银行卡失败!');
+    }
 }

+ 100 - 0
app/models/user/UserBank.php

@@ -0,0 +1,100 @@
+<?php
+/**
+ *
+ * @author: xaboy<365615158@qq.com>
+ * @day: 2017/12/25
+ */
+
+namespace app\models\user;
+
+use crmeb\basic\BaseModel;
+use crmeb\traits\ModelTrait;
+
+/**
+ * TODO 用户收货银行卡
+ * Class UserAddress
+ * @package app\models\user
+ */
+class UserBank extends BaseModel
+{
+    /**
+     * 数据表主键
+     * @var string
+     */
+    protected $pk = 'id';
+
+    /**
+     * 模型名称
+     * @var string
+     */
+    protected $name = 'user_bank';
+
+    use ModelTrait;
+
+    protected $insert = ['add_time'];
+
+    protected $hidden = ['add_time', 'uid'];
+
+    protected function setAddTimeAttr()
+    {
+        return time();
+    }
+
+    /**
+     * 设置默认收货银行卡
+     * @return bool
+     */
+    public static function setDefaultAddress($id,$uid)
+    {
+        self::beginTrans();
+        $res1 = self::where('uid',$uid)->update(['is_default'=>0]);
+        $res2 = self::where('id',$id)->where('uid',$uid)->update(['is_default'=>1]);
+        $res =$res1 !== false && $res2 !== false;
+        self::checkTrans($res);
+        return $res;
+    }
+
+    /**
+     * 设置用户银行卡查询初始条件
+     * @param null $model
+     * @param string $prefix
+     * @return \think\Model
+     */
+    public static function userValidAddressWhere($model=null,$prefix = '')
+    {
+        if($prefix) $prefix .='.';
+        $model = self::getSelfModel($model);
+        return $model->where("{$prefix}is_del",0);
+    }
+
+    /**
+     * 获取用户收货银行卡并分页
+     * @param $uid 用户uid
+     * @param int $page 页码
+     * @param int $limit 展示条数
+     * @param string $field 展示字段
+     * @return array
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public static function getUserValidAddressList($uid,$page=1,$limit=8,$field = '*')
+    {
+        if($page) return self::userValidAddressWhere()->where('uid',$uid)->order('add_time DESC')->field($field)->page((int)$page,(int)$limit)->select()->toArray()?:[];
+        else return self::userValidAddressWhere()->where('uid',$uid)->order('add_time DESC')->field($field)->select()->toArray()?:[];
+    }
+
+    /**
+     * 获取用户默认收货银行卡
+     * @param $uid 用户uid
+     * @param string $field 展示字段
+     * @return array|\think\Model|null
+     * @throws \think\db\exception\DataNotFoundException
+     * @throws \think\db\exception\ModelNotFoundException
+     * @throws \think\exception\DbException
+     */
+    public static function getUserDefaultAddress($uid,$field = '*')
+    {
+        return self::userValidAddressWhere()->where('uid',$uid)->where('is_default',1)->field($field)->find();
+    }
+}

+ 7 - 0
route/api/route.php

@@ -80,6 +80,13 @@ Route::group(function () {
     Route::get('address/default', 'user.UserController/address_default')->name('addressDefault');//获取默认地址
     Route::post('address/edit', 'user.UserController/address_edit')->name('addressEdit');//修改 添加 地址
     Route::post('address/del', 'user.UserController/address_del')->name('addressDel');//删除地址
+    //用户类  银行卡
+    Route::get('bank/detail/:id', 'user.UserController/bank_info')->name('bankInfo');//获取单个银行卡
+    Route::get('bank/list', 'user.UserController/bank_list')->name('bankList');//银行卡列表
+    Route::post('bank/default/set', 'user.UserController/bank_default_set')->name('bankDefaultSet');//设置默认银行卡
+    Route::get('bank/default', 'user.UserController/bank_default')->name('bankDefault');//获取默认银行卡
+    Route::post('bank/edit', 'user.UserController/bank_edit')->name('bankEdit');//修改 添加 银行卡
+    Route::post('bank/del', 'user.UserController/bank_del')->name('bankDel');//删除银行卡
     //用户类 收藏
     Route::get('collect/user', 'user.UserController/collect_user')->name('collectUser');//收藏产品列表
     Route::post('collect/add', 'user.UserController/collect_add')->name('collectAdd');//添加收藏