yingzi 1 year ago
parent
commit
d751a548fd

+ 41 - 73
Controller/NewCommission/ApiNewCommissionPartner.Class.php

@@ -96,86 +96,54 @@ class ApiNewCommissionPartner extends BaseController
         $pageParams = pageToOffset($params['page'] ?: 1, $params['pageSize'] ?: 10);
         $selectParams['limit'] = $pageParams['limit'];
         $selectParams['offset'] = $pageParams['offset'];
-        $data = $this->partnerTool->getCommissionBalanceDetail($this->customerData["id"],$selectParams);
+        $where=[];
+        if(!empty($params['status'])){
+            if($params['status']=="wait"){
+                $where["status"] = 0;
+            }
+            if($params['status']=="ok"){
+                $where["status"] = 1;
+            }
+            if($params['status']=="no"){
+                $where["status"] = -1;
+            }
+        }
+        $selectParams["where"] = $where;
+        $data = $this->partnerTool->getPartnerApplyCashList($this->customerData["id"],$selectParams);
+        parent::sendOutput($data);
+    }
+    public function getPartnerCashType(){
+        $data = $this->partnerTool->getBankType(1);
         parent::sendOutput($data);
+        
     }
     
     public function partnerApplyCash(){
-//        $cache = Factory::cache('systask');
-        //        $key = "partnercashcache".'::'.$this->enterpriseId;
-//        $result = $this->cache->get($key);
-//        if(!empty($result)){
-//            return ["code"=>-1,"msg"=>"操作频繁"];
-//        }
-//        $this->cache->set($key,1,10);
+        $params = $this->request->getRawJson();
+        if(empty($params)){
+            parent::sendOutput('参数为空', ErrorCode::$paramError);
+        }
         
         
+        $data=[];
+        $data["customerId"] = $this->customerData["id"];
+        $data["money"]     = empty($params["money"])    ? 0  : floatval($params["money"]);
+        $data["bank_type"] = empty($params["bank_type"])? "" : $params["bank_type"];
+        $data["bank_name"] = empty($params["bank_name"])? "" : $params["bank_name"];
+        $data["bank_num"]  = empty($params["bank_num"]) ? "" : $params["bank_num"];
+        $data["bank_ad"]   = empty($params["bank_ad"])  ? "" : $params["bank_ad"];
+ 
+        
+        
+        $res = $this->partnerTool->applyCash($data);
+        if(empty($res) || empty($res["code"])){
+            parent::sendOutput('系统繁忙,请稍后重试001', ErrorCode::$paramError);
+        }
+        if($res["code"]==-1){
+            parent::sendOutput($res["msg"], ErrorCode::$paramError);
+        }
+        parent::sendOutput("提现申请已提交,请耐心等待处理");
         
-//        [$money] = UtilService::getMore([
-//            ['money', 0, 'is_numeric', '请输入正确的提现金额'],
-//        ], $request, true);
-//        //缓存
-//        $redis = \think\facade\Cache::store('redis');
-//        $key   = 'user_tixian_' . $request->user['uid'];
-//        $bool  = $redis->handler()->exists($key);
-//        if ($bool) {
-//            return app('json')->fail('您的操作过于频繁,请稍等再重试!');
-//        }
-//        $redis->set($key,1,10);//30秒缓存
-//        $user = $request->user;
-//        if(empty($user["openid"])){
-//            return app('json')->fail('您还未绑定微信');
-//        }
-//        if(floatval($money)<=0){
-//            return app('json')->fail('请输入正确的提现金额');
-//        }
-//        if(floatval($money)>$user["money"]){
-//            return app('json')->fail('您的余额不足,无法提现');
-//        }
-//        if(empty($user["bank_type"]) || empty($user["bank_num"]) || empty($user["bank_name"])){
-//            return app('json')->fail('您还未绑定提现账户');
-//        }
-//        if($user["bank_type"]!="alipay" && empty($user["bank_ad"])){
-//            return app('json')->fail('您还未绑定提现开户行');
-//        }
-//        $sysData = (new SysModel)->where("id",1)->find();
-//        if(floatval($user["money"])<floatval($sysData["tx_limit_money"]) || floatval($money)<floatval($sysData["tx_limit_money"])){
-//            return app('json')->fail("满{$sysData['tx_limit_money']}元,才可提现");
-//        }
-//        //提现手续费
-//        $hand_money = $sysData["tx_process_per"] > 0 ? floatval($money) * $sysData["tx_process_per"] / 100 : 0;
-//        $hand_money = num_min_format($hand_money);
-//        $save=[];
-//        $save["uid"]        = $user["uid"];
-//        $save["bank_type"]  = $user["bank_type"];
-//        $save["bank_num"]   = $user["bank_num"];
-//        $save["bank_name"]  = $user["bank_name"];
-//        $save["bank_ad"]    = $user["bank_ad"];
-//        $save["money"]      = floatval($money);
-//        $save["hand_money"] = ($sysData["tx_process_max"] > 0 && $hand_money > $sysData["tx_process_max"]) ? $sysData["tx_process_max"] : $hand_money;
-//        $save["tx_money"]   = $save["money"] - $save["hand_money"];
-//        $save["status"]     = 0;
-//        $save["time"]       = time();
-//        try{
-//            Db::startTrans();
-//            //插入提现申请
-//            $tx_id = (new TxModel)->insertGetId($save);
-//            if(empty($tx_id)){
-//                return app('json')->fail('提交失败');
-//            }
-//            //更新提现账户余额并添加明细
-//            $r= (new UserDetailModel)->txApplyMoney($user["uid"],floatval($money),$tx_id);
-//            if(!$r){
-//                (new TxModel)->where("id",$tx_id)->delete();
-//                return app('json')->fail('提交失败');
-//            }
-//            Db::commit();
-//            $redis->delete($key);
-//            return app('json')->success('提交成功,等待客服处理');
-//        } catch (DbException $db){
-//            Db::rollback();
-//            return app('json')->fail("订单生成失败");
-//        }
     }
     
     

+ 143 - 1
Util/Common/PartnerTools.Class.php

@@ -37,6 +37,7 @@ class PartnerTools{
     private $codeAr = [
         "order_calc"=>"子级用户消费分佣",
         "partner_calc"=>"子级合伙人收益分佣",
+        "cash_balance"=>"合伙人余额提现",
     ];
     
     
@@ -586,14 +587,155 @@ class PartnerTools{
         return $return;
     }
     
+    /**
+     * 
+     * @param type $type 0返回标题数组,1范围完整数组
+     * @return type
+     */
+    public static function getBankType($type=0){
+        $data = [
+            ["title"=>"支付宝","code"=>"alipay","addefault"=>"支付宝"],
+            ["title"=>"微信钱包","code"=>"wxpay","addefault"=>"微信"],
+            ["title"=>"银行卡","code"=>"bank","addefault"=>""],
+        ];
+        if($type==1){
+            return $data;
+        }
+        $nameAr= [];
+        foreach($data as $k=>$v){
+            $nameAr[]=$v["title"];
+        }
+        return $nameAr;
+    }
+    
+    
     /**
      * 提现申请
      */
     public function applyCash($data){
-
+        if(empty($data) || empty($data["customerId"]) || empty($data["money"]) || empty($data["bank_type"]) || empty($data["bank_name"]) || empty($data["bank_num"]) || empty($data["bank_ad"])){
+            return ["code"=>-1,"msg"=>"请填写完整信息"];
+        }
+        //频繁操作限制
+        $key = "partnerCashCache_".$data["customerId"].'::'.$this->enterpriseId;
+        $result = $this->cache->get($key);
+        if(!empty($result)){
+            return ["code"=>-1,"msg"=>"操作频繁,请稍后尝试!"];
+        }
         
+        $count = $this->dbNewCommissionCash->count(["status"=>0,"customer_id"=>$data["customerId"]]);
+        if($count>0){
+            return ["code"=>-1,"msg"=>"上次申请还在处理中"];
+        }
         
+        $this->cache->set($key,1,5);
+        if(!in_array($data["bank_type"], self::getBankType())){
+            return ["code"=>-1,"msg"=>"提现方式不存在"];
+        }
+        if(!is_numeric($data["money"])){
+            return ["code"=>-1,"msg"=>"提现金额错误"];
+        }
+        $data["money"] = bcadd($data["money"],0,2);
+        if($data["money"]<=0){
+            return ["code"=>-1,"msg"=>"提现金额错误"];
+        }
+        $partnerData = $this->dbNewCommissionPartner->get(["customerId"=>$data["customerId"]]);
+        if(empty($partnerData) || empty($partnerData["id"])){
+            return ["code"=>-1,"msg"=>"合伙人不存在"];
+        }
+        if($data["money"]>$partnerData["balance"]  || $partnerData["balance"]<=0){
+            return ["code"=>-1,"msg"=>"提现金额不足"];
+        }
+        $nowTime = time();
+        $save=[
+            "customer_id"=>$partnerData["customerId"],
+            "user_center_id"=>$partnerData["userCenterId"],
+            "partner_id" => $partnerData["id"],
+            "bank_type"  => $data["bank_type"],
+            "bank_name"  => $data["bank_name"],
+            "bank_num"   => $data["bank_num"],
+            "bank_ad"    => $data["bank_ad"],
+            "money"      => $data["money"],
+            "status"     => 0,
+            "time"       => $nowTime
+        ];
         
+        try{
+            $this->dbNewCommissionPartner->beginTransaction();
+            //插入提现申请
+            $applyId = $this->dbNewCommissionCash->insert($save);
+            if(empty($applyId)){
+                return ["code"=>-1,"msg"=>"数据提交失败001"];
+            }
+            //更新提现账户余额并添加明细
+            $update = [
+                'balance'    => bcsub($partnerData["balance"], $save["money"], 2),//账户余额
+                'withdraw'   => bcadd($partnerData["withdraw"], $save["money"],2),//已提现金额
+                'updateTime' => $nowTime,
+            ];
+            if($update["balance"]<=0){
+                $this->dbNewCommissionPartner->rollBack();
+                return ["code"=>-1,"msg"=>"数据提交失败002"];
+            }
+            //添加账户余额明细记录
+            $dres = $this->dbNewCommissionBalanceDetail->insert([
+                "type"=>-1,
+                "title"=>"余额提现",
+                "code"=>"cash_balance",
+                "money"=>$save["money"],
+                "content"=>"合伙人余额提现",
+                "admin_id"=>0,
+                "customer_id"=>$partnerData["customerId"],
+                "partner_id"=>$partnerData["id"],
+                "user_center_id"=>$partnerData["userCenterId"],
+                "cash_id"=>$applyId,
+                "old_balance"=>$partnerData["balance"],
+                "now_balance"=>$update["balance"],
+                "time"=>$nowTime,
+                "expand"=>"",
+                "detail_id"=>0,
+            ]);
+            if(empty($dres)){
+                $this->dbNewCommissionPartner->rollBack();
+                return ["code"=>-1,"msg"=>"账户余额明细插入失败"];
+            }
+            //更新账户余额
+            $upRes = $this->dbNewCommissionPartner->update($update, ['id' => $partnerData["id"]]);
+            if(empty($upRes)){
+                $this->dbNewCommissionPartner->rollBack();
+                return ["code"=>-1,"msg"=>"更新账户余额失败"];
+            }
+            $this->dbNewCommissionPartner->commit();
+            $this->cache->set($key,null);
+            return ["code"=>1,"msg"=>"提现申请提交成功"];
+        } catch (\Exception $e){
+            $this->dbNewCommissionPartner->rollBack();
+            $this->cache->set($key,null);
+            return ["code"=>1,"msg"=>"提现申请提交失败"];
+        }
+        
+    }
+    /**
+     * 获取提现记录
+     * @param type $customerId
+     * @param type $parms
+     * @return type
+     */
+    public function getPartnerApplyCashList($customerId,$parms){
+        $where=[];
+        if(!empty($customerId)){
+            $where["customerId"] = $customerId;
+        }
+        $data = $this->dbNewCommissionCash->select(["customerId"=>$customerId], "*", "id desc", $parms["limit"], $parms["offset"]);
+        $total = $this->dbNewCommissionCash->count($where);
+        if(empty($data)){
+            $data = [];
+        }
+        $return = [
+            'data'   => $data,
+            'total'  => (isset($total)&&!empty($total)) ? intval($total) : 0,
+        ];
+        return $return;
     }