yingzi %!s(int64=2) %!d(string=hai) anos
pai
achega
2928ba2762

+ 58 - 2
Controller/NewCommission/NewCommissionPartner.Class.php

@@ -120,10 +120,34 @@ class NewCommissionPartner extends BaseController
         $pageParams = pageToOffset($params['page'], $params['pageSize']);
         $selectParams['limit'] = $pageParams['limit'];
         $selectParams['offset'] = $pageParams['offset'];
-
+        
         if(isset($params['search']) && !empty($params['search'])){
             $selectParams['search'] = $params['search'];
         }
+        if(isset($params['listStatus']) && in_array($params['listStatus'], ["ok","no","wait"])){
+            switch ($params['listStatus']) {
+                case "wait":
+                    $selectParams["status"] = 0;
+                    break;
+                case "ok":
+                    $selectParams["status"] = 1;
+                    break;
+                case "no":
+                    $selectParams["status"] = -1;
+                    break;
+                default:
+                    break;
+            }
+        }
+        if(isset($params['bank_type_code'])){
+            $selectParams["bank_type_code"] = $params['bank_type_code'];
+        }
+        if(isset($params['time']) && is_array($params['time'])){
+            $selectParams["start_time"] = (int)$params['time'][0] / 1000;
+            $selectParams["end_time"]   = (int)$params['time'][1] / 1000;
+        }
+        
+        
         $res = $this->partnerTool->getPartnerCashList($selectParams);
         $pageData = [
             'pageIndex' => $params['page'],
@@ -137,7 +161,39 @@ class NewCommissionPartner extends BaseController
      * 处理提现
      */
     public function partnerCashAudit(){
-        
+        $params = $this->request->getRawJson();
+        if(empty($params)){
+            $this->sendOutput('参数为空', ErrorCode::$paramError);
+        }
+        $selectParams = [];
+        if(empty($params["id"]) || empty($params["type"])){
+            $this->sendOutput('参数为空', ErrorCode::$paramError);
+        }
+        if(!in_array($params["type"],[1,-1])){
+            $this->sendOutput('参数错误', ErrorCode::$paramError);
+        }
+        if($params["type"]==-1 && empty($params["audit_mono"])){
+            $this->sendOutput('请输入驳回说明', ErrorCode::$paramError);
+        }
+        if($params["type"]==1 && empty($params["audit_mono"])){
+            $params["audit_mono"] = "打款成功";
+        }
+        $res = $this->partnerTool->partnerCashAudit($params["id"],$params["audit_mono"],$params["type"],$this->onlineUserId);
+        if(empty($res) || empty($res["code"])){
+            parent::sendOutput('系统繁忙,请稍后重试001', ErrorCode::$paramError);
+        }
+        if($res["code"]==-1){
+            parent::sendOutput($res["msg"], ErrorCode::$paramError);
+        }
+        parent::sendOutput("提现申请处理成功");
+    }
+    
+    /**
+     * 获取提现方式
+     */
+    public function getCashBankType(){
+        $data = $this->partnerTool->getBankType(1);
+        parent::sendOutput($data);
     }
     
     

+ 1 - 0
Dao/CommissionPartner/DNewCommissionCash.Class.php

@@ -19,6 +19,7 @@ class DNewCommissionCash extends BaseDao
             "customer_id",
             "user_center_id",
             "partner_id",
+            "bank_type_code",
             "bank_type",
             "bank_num",
             "bank_name",

+ 142 - 12
Util/Common/PartnerTools.Class.php

@@ -38,6 +38,7 @@ class PartnerTools{
         "order_calc"=>"子级用户消费分佣",
         "partner_calc"=>"子级合伙人收益分佣",
         "cash_balance"=>"合伙人余额提现",
+        "cash_no_balance"=>"提现驳回返还余额",
     ];
     
     
@@ -601,12 +602,21 @@ class PartnerTools{
      * @param type $type 0返回标题数组,1范围完整数组
      * @return type
      */
-    public static function getBankType($type=0){
+    public static function getBankType($type=0,$title=""){
         $data = [
             ["title"=>"支付宝","code"=>"alipay","icon"=>"ibonumidd17","addefault"=>"支付宝"],
             ["title"=>"微信钱包","code"=>"wxpay","icon"=>"ibonweixinzhifu","addefault"=>"微信"],
             ["title"=>"银行卡","code"=>"bank","icon"=>"ibonyinhangqia","addefault"=>""],
         ];
+        
+        if(!empty($title)){
+            foreach($data as $k=>$v){
+                if($v["title"]==$title){
+                    return $v;
+                }
+            }
+            return [];
+        }
         if($type==1){
             return $data;
         }
@@ -641,6 +651,10 @@ class PartnerTools{
         if(!in_array($data["bank_type"], self::getBankType())){
             return ["code"=>-1,"msg"=>"提现方式不存在"];
         }
+        $bankTypeData = self::getBankType(1, $data["bank_type"]);
+        if(empty($bankTypeData)){
+            return ["code"=>-1,"msg"=>"提现方式不存在"];
+        }
         if(!is_numeric($data["money"])){
             return ["code"=>-1,"msg"=>"提现金额错误"];
         }
@@ -657,16 +671,17 @@ class PartnerTools{
         }
         $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
+            "customer_id"    => $partnerData["customerId"],
+            "user_center_id" => $partnerData["userCenterId"],
+            "partner_id"     => $partnerData["id"],
+            "bank_type"      => $data["bank_type"],
+            "bank_type_code" => $bankTypeData["code"],
+            "bank_name"      => $data["bank_name"],
+            "bank_num"       => $data["bank_num"],
+            "bank_ad"        => $data["bank_ad"],
+            "money"          => $data["money"],
+            "status"         => 0,
+            "time"           => $nowTime
         ];
         
         try{
@@ -894,10 +909,20 @@ class PartnerTools{
         . "left join {$userCenterTableName} u on u.id = p.user_center_id "
         . "left join {$customerTableName} c on c.id = p.customer_id ";
         
-        $whereSql = ' where p.id>0 ';
+        $whereSql = ' where 1=1 ';
         if(isset($params['search'])){
             $whereSql .= ' and (u.mobile like "%'.$params['search'].'%" or c.name like "%'.$params['search'].'%") ';
         }
+        if(isset($params['status'])){
+            $whereSql .= ' and p.status = '.$params['status'];
+        }
+        if(!empty($params['bank_type_code'])){
+            $whereSql .= " and p.bank_type_code = '{$params['bank_type_code']}'";
+        }
+        if(!empty($params['start_time']) && !empty($params['end_time'])){
+            $whereSql .= " and p.time >= {$params['start_time']} and p.time < {$params['end_time']}";
+        }
+        
         $orderSql = ' order by p.id desc ';
         $limitSql = ' limit '.$params['offset'].','.$params['limit'];
         $querySql = $sql.$whereSql.$orderSql.$limitSql;
@@ -917,6 +942,111 @@ class PartnerTools{
         return ['data'=>$data,'total'=>($total) ? intval($total) : 0];
     }
     
+    /**
+     * 提现处理
+     * @param type $id
+     * @param type $mono
+     * @param type $type
+     */
+    public function partnerCashAudit($id,$mono,$type,$audit_id=0){
+        if(empty($id)|| empty($mono) || empty($type) || !in_array($type, [1,-1])){
+            return ["code"=>-1,"msg"=>"参数错误"];
+        }
+        
+        //频繁操作限制
+        $key = "partnerCashDealCache_".$id.'::'.$this->enterpriseId;
+        $result = $this->cache->get($key);
+        if(!empty($result)){
+            return ["code"=>-1,"msg"=>"处理中,请耐心等待!"];
+        }
+        $this->cache->set($key,1,5);
+        $where = ["id"=>$id,"status"=>0];
+        $data = $this->dbNewCommissionCash->get($where);
+        if(empty($data)){
+            $this->cache->set($key,null);
+            return ["code"=>-1,"msg"=>"数据不存在"];
+        }
+        //合伙人账户信息
+        $partnerData = $this->dbNewCommissionPartner->get(["id"=>$data["partner_id"]]);
+        if(empty($partnerData)){
+            $this->cache->set($key,null);
+            return ["code"=>-1,"msg"=>"合伙人账户不存在"];
+        }
+        //打款成功
+        if($type==1){
+            $res = $this->dbNewCommissionCash->update([
+                "status"=>1,
+                "audit_time"=>time(),
+                "audti_mono"=>$mono,
+                "audit_id"=>$audit_id
+            ], $where);
+            $this->cache->set($key,null);
+            if(empty($res )){
+                return ["code"=>-1,"msg"=>"系统繁忙,请稍后重试!"];
+            }
+            return ["code"=>1,"msg"=>"处理完成"];
+        }
+        //审核驳回
+        try{
+            $this->dbNewCommissionCash->beginTransaction();
+            $res = $this->dbNewCommissionCash->update([
+                "status"=>-1,
+                "audit_time"=>time(),
+                "audti_mono"=>$mono,
+                "audit_id"=>$audit_id
+            ], $where);
+            if(empty($res)){
+                $this->dbNewCommissionCash->rollBack();
+                $this->cache->set($key,null);
+                return ["code"=>-1,"msg"=>"操作失败001!"];
+            }
+            //添加账户余额明细记录
+            $dres = $this->dbNewCommissionBalanceDetail->insert([
+                "type"=>1,
+                "title"=>"提现驳回返还余额",
+                "code"=>"cash_no_balance",
+                "money"=>$data["money"],
+                "content"=>"提现驳回返还余额:".$mono,
+                "admin_id"=>$audit_id,
+                "customer_id"=>$partnerData["customerId"],
+                "partner_id"=>$partnerData["id"],
+                "user_center_id"=>$partnerData["userCenterId"],
+                "cash_id"=>$data["id"],
+                "old_balance"=>$partnerData["balance"],
+                "now_balance"=>$partnerData["balance"]+$data["money"],
+                "time"=>time(),
+                "expand"=>"",
+                "detail_id"=>0,
+            ]);
+            if(empty($dres)){
+                $this->dbNewCommissionCash->rollBack();
+                $this->cache->set($key,null);
+                return ["code"=>-1,"msg"=>"操作失败002!"];
+            }
+            //更新账户数据
+            $withdrawRes = $this->dbNewCommissionPartner->set_dec("withdraw", ["id"=>$partnerData["id"]], $data["money"]);
+            if(empty($withdrawRes)){
+                $this->dbNewCommissionCash->rollBack();
+                $this->cache->set($key,null);
+                return ["code"=>-1,"msg"=>"操作失败003"];
+            }
+            $balanceRes = $this->dbNewCommissionPartner->set_inc("balance", ["id"=>$partnerData["id"]], $data["money"]);
+            if(empty($balanceRes)){
+                $this->dbNewCommissionCash->rollBack();
+                $this->cache->set($key,null);
+                return ["code"=>-1,"msg"=>"操作失败004"];
+            }
+            //提交事务
+            $this->dbNewCommissionCash->commit();
+            $this->cache->set($key,null);
+            return ["code"=>1,"msg"=>"提现申请处理成功!"];
+        } catch (\Exception $e){
+            $this->dbNewCommissionCash->rollBack();
+            $this->cache->set($key,null);
+            return ["code"=>-1,"msg"=>"系统繁忙,请稍后重试!"];
+        }
+    }
+