|
@@ -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;
|
|
|
}
|
|
|
|
|
|
|