init: import production code mss.nahaichuan.com (exclude Runtime/Uploads/backups/logs)
这个提交包含在:
@@ -0,0 +1,185 @@
|
||||
<?php
|
||||
|
||||
namespace Pay\Controller;
|
||||
|
||||
use Common\Model\RetailAdminModel;
|
||||
use Common\Model\RetailAgentModel;
|
||||
use Common\Model\RetailContinentCashModel;
|
||||
use Common\Model\RetailContinentConfigModel;
|
||||
use Common\Model\RetailMerchantModel;
|
||||
use Common\Model\SystemConfigModel;
|
||||
use Think\Controller;
|
||||
|
||||
//[1.9.5]
|
||||
class BaseController extends Controller
|
||||
{
|
||||
/**
|
||||
* 计算分润
|
||||
* @param $trade_no 订单号
|
||||
* @param $rateData 支付信息
|
||||
* @param $type 1:支付宝服务商 2:微信服务商 3:新大陆 4云闪付
|
||||
*/
|
||||
public function doAddRate($trade_no, $rateData, $type)
|
||||
{
|
||||
$AdminModel = new RetailAdminModel();
|
||||
$AgentModel = new RetailAgentModel();
|
||||
$MerchantModel = new RetailMerchantModel();
|
||||
$RCCModel = new RetailContinentCashModel();
|
||||
$merInfo = $MerchantModel->getFind(['id' => $rateData['merchant_id']]); //商户信息
|
||||
if (!empty($merInfo)) {
|
||||
$adminInfo = $AdminModel->getFind(['id' => $merInfo['partnerid']]);//合作伙伴信息
|
||||
$agentInfo = $AgentModel->getFind(['id' => $merInfo['agentid']]);//代理商信息
|
||||
switch ($type) {
|
||||
case 1:
|
||||
//支付宝服务商
|
||||
$partner_rate = $adminInfo['ali_rate'];
|
||||
$agent_rate = $agentInfo['ali_rate'];
|
||||
$mer_rate = $merInfo['ali_rate'];
|
||||
$Add['type'] = 1; //直联分润
|
||||
break;
|
||||
case 2:
|
||||
//微信服务商
|
||||
$partner_rate = $adminInfo['wx_rate'];
|
||||
$agent_rate = $agentInfo['wx_rate'];
|
||||
$mer_rate = $merInfo['wx_rate'];
|
||||
$Add['type'] = 1; //直联分润
|
||||
break;
|
||||
case 3:
|
||||
//新大陆
|
||||
$RCConfigModel = new RetailContinentConfigModel();
|
||||
$continent_config = $RCConfigModel->getFind();
|
||||
$partner_rate = $continent_config['partner_rate'];
|
||||
$agent_rate = $agentInfo['agent_rate'];
|
||||
$mer_rate = $merInfo['merchant_rate'];
|
||||
$Add['type'] = 2; //新大陆分润
|
||||
break;
|
||||
case 4:
|
||||
//云闪付
|
||||
$SystemModel = new SystemConfigModel();
|
||||
$partner_rate = $SystemModel->getFindField([
|
||||
'partnerid' => $merInfo['partnerid'],
|
||||
'status' => 1
|
||||
], 'union_pay_rate');
|
||||
$agent_rate = $agentInfo['union_pay_rate'];
|
||||
$mer_rate = $merInfo['union_pay_rate'];
|
||||
$Add['type'] = 3; //云闪付分润
|
||||
break;
|
||||
case 5:
|
||||
//乐返
|
||||
$SystemModel = new SystemConfigModel();
|
||||
$partner_rate = $SystemModel->getFindField([
|
||||
'partnerid' => $merInfo['partnerid'],
|
||||
'status' => 1
|
||||
], 'happy_rate');
|
||||
$agent_rate = $agentInfo['happy_rate'];//代理商乐返费率
|
||||
$mer_rate = $merInfo['happy_rate'];//合伙人乐返费率
|
||||
$Add['type'] = 4; //乐返分润
|
||||
break;
|
||||
case 6:
|
||||
//拉卡拉
|
||||
$SystemModel = new SystemConfigModel();
|
||||
$partner_rate = $SystemModel->getFindField([
|
||||
'partnerid' => $merInfo['partnerid'],
|
||||
'status' => 1
|
||||
], 'lakala_rate');
|
||||
$agent_rate = $agentInfo['lakala_rate'];//代理商拉卡拉费率
|
||||
$mer_rate = $merInfo['lakala_rate'];//合伙人拉卡拉费率
|
||||
$Add['type'] = 5; //拉卡拉分润
|
||||
break;
|
||||
case 7:
|
||||
//钱客云
|
||||
$SystemModel = new SystemConfigModel();
|
||||
$partner_rate = $SystemModel->getFindField([
|
||||
'partnerid' => $merInfo['partnerid'],
|
||||
'status' => 1
|
||||
], 'qian_ke_rate');
|
||||
$agent_rate = $agentInfo['qian_ke_rate'];//代理商钱客云费率
|
||||
$mer_rate = $merInfo['qian_ke_rate'];//合伙人钱客云费率
|
||||
$Add['type'] = 6; //钱客云分润
|
||||
break;
|
||||
}
|
||||
if (!empty($partner_rate) && !empty($agent_rate) && !empty($mer_rate) && ($partner_rate <= $agent_rate) && ($agent_rate <= $mer_rate)) {
|
||||
$serverMoney = round(($partner_rate / 100) * $rateData['trade_amount'], 2); //服务平台扣除
|
||||
$merMoney = round(($mer_rate / 100) * $rateData['trade_amount'], 2); //商户总扣除
|
||||
if ($partner_rate == $agent_rate) {
|
||||
$partner_profit = 0;
|
||||
$agent_money = round(($merMoney - $serverMoney), 2);
|
||||
} else {
|
||||
$agent_money = round(($mer_rate / 100 - $agent_rate / 100) * $rateData['trade_amount'], 2); //代理商分润 代理商净分润
|
||||
$partner_profit = round(($merMoney - $serverMoney - $agent_money), 2); //合伙人净分润
|
||||
}
|
||||
$partner_money = round(($merMoney - $serverMoney), 2); //合伙人分润
|
||||
$Add[$RCCModel::TRADE_NO] = $trade_no;
|
||||
$Add[$RCCModel::PARTNER_RATE] = $partner_rate; //合作伙伴
|
||||
$Add[$RCCModel::PARTNER_MONEY] = $partner_money;
|
||||
$Add[$RCCModel::PARTNER_PROFIT] = $partner_profit;
|
||||
$Add[$RCCModel::AGENT_RATE] = $agent_rate;
|
||||
$Add[$RCCModel::AGENT_MONEY] = $agent_money;
|
||||
$Add[$RCCModel::AGENT_PROFIT] = $agent_money;
|
||||
$Add[$RCCModel::MERCHANT_MONEY] = $rateData['trade_amount'] - $merMoney;//商家实收入
|
||||
$Add[$RCCModel::OUT_TRADE_NO] = $rateData['out_trade_no']; //生成的订单号
|
||||
$Add[$RCCModel::C_DATE] = time();
|
||||
$Add[$RCCModel::STORE_ID] = $rateData['store_id'];
|
||||
$Add[$RCCModel::MERCHANT_ID] = $rateData['merchant_id'];
|
||||
$Add[$RCCModel::AGENT_ID] = $merInfo[$MerchantModel::AGENT_ID];
|
||||
$Add[$RCCModel::PARTNER_ID] = $merInfo[$MerchantModel::PARTNER_ID];
|
||||
$Add[$RCCModel::MERCHANT_RATE] = $mer_rate;
|
||||
switch ($rateData['pay_type']) {
|
||||
case 1:
|
||||
case 4:
|
||||
//1微信 4小程序微信
|
||||
$Add[$RCCModel::PAY_TYPE] = 1;
|
||||
break;
|
||||
default:
|
||||
$Add[$RCCModel::PAY_TYPE] = 2;
|
||||
break;
|
||||
}
|
||||
$Add[$RCCModel::TRADE_AMOUNT] = $rateData['trade_amount'];
|
||||
$flow = $RCCModel->addOrder($Add);
|
||||
if (!empty($flow)) {
|
||||
$AdminModel->updateOrder(array($AdminModel::ID => $adminInfo[$AdminModel::ID]), array($AdminModel::BALANCE => round($adminInfo[$AdminModel::BALANCE] + $Add[$RCCModel::PARTNER_PROFIT], 2)));
|
||||
$AgentModel->updateOrder(array($AgentModel::ID => $agentInfo[$AgentModel::ID]), array($AgentModel::BALANCE => round($agentInfo[$AgentModel::BALANCE] + $Add[$RCCModel::AGENT_PROFIT], 2)));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款分润
|
||||
* @param $request
|
||||
* @param $pay_order
|
||||
*/
|
||||
public function doRefundRate($trade_no, $refundMoney, $type)
|
||||
{
|
||||
$RCCModel = D('RetailContinentCash');
|
||||
$where[$RCCModel::TRADE_NO] = $trade_no;
|
||||
$where[$RCCModel::STATE] = 0;
|
||||
$where[$RCCModel::TYPE] = $type;
|
||||
$info = $RCCModel->getFind($where);
|
||||
if (!empty($info)) {
|
||||
$AdminModel = D('RetailAdmin');
|
||||
$AgentModel = D('RetailAgent');
|
||||
if ((floatval($refundMoney) < round($info[$RCCModel::TRADE_AMOUNT] + $info[$RCCModel::REFUND_AMOUNT], 2))) { //部分退款
|
||||
$partner_refund_profit = round(($info[$RCCModel::AGENT_RATE] - $info[$RCCModel::PARTNER_RATE]) / 100 * $refundMoney, 2);
|
||||
$agent_refund_profit = round(($info[$RCCModel::MERCHANT_RATE] - $info[$RCCModel::AGENT_RATE]) / 100 * $refundMoney, 2);
|
||||
} else { //全部退款
|
||||
$partner_refund_profit = $info[$RCCModel::PARTNER_PROFIT];
|
||||
$agent_refund_profit = $info[$RCCModel::AGENT_PROFIT];
|
||||
}
|
||||
$save[$RCCModel::PARTNER_REFUND_PROFIT] = round($info[$RCCModel::PARTNER_REFUND_PROFIT] + $partner_refund_profit, 2);
|
||||
$save[$RCCModel::AGENT_REFUND_PROFIT] = round($info[$RCCModel::AGENT_REFUND_PROFIT] + $agent_refund_profit, 2);
|
||||
if ($save[$RCCModel::PARTNER_REFUND_PROFIT] > $info[$RCCModel::PARTNER_PROFIT]) {
|
||||
$partner_refund_profit = round($info[$RCCModel::PARTNER_PROFIT] - $info[$RCCModel::PARTNER_REFUND_PROFIT], 2);
|
||||
$save[$RCCModel::PARTNER_REFUND_PROFIT] = $info[$RCCModel::PARTNER_PROFIT];
|
||||
}
|
||||
if ($agent_refund_profit > $info[$RCCModel::AGENT_PROFIT]) {
|
||||
$agent_refund_profit = round($info[$RCCModel::AGENT_PROFIT] - $info[$RCCModel::AGENT_REFUND_PROFIT], 2);
|
||||
$save[$RCCModel::AGENT_REFUND_PROFIT] = $info[$RCCModel::AGENT_PROFIT];
|
||||
}
|
||||
$save[$RCCModel::REFUND_AMOUNT] = round($refundMoney + $info[$RCCModel::REFUND_AMOUNT], 2);
|
||||
$AdminModel->toSetDec(array($AdminModel::ID => $info[$RCCModel::PARTNER_ID]), $AdminModel::BALANCE, $partner_refund_profit);
|
||||
$AgentModel->toSetDec(array($AgentModel::ID => $info[$RCCModel::AGENT_ID]), $AgentModel::BALANCE, $agent_refund_profit);
|
||||
$RCCModel->updateOrder($where, $save);
|
||||
}
|
||||
}
|
||||
}
|
||||
在新工单中引用
屏蔽一个用户