parent
4466400bc1
commit
35e2d9d621
@ -0,0 +1,65 @@
|
|||||||
|
<?php
|
||||||
|
namespace app\common;
|
||||||
|
|
||||||
|
use think\facade\Db;
|
||||||
|
|
||||||
|
class Affiliate{
|
||||||
|
public static function calculateProfitShare($order){
|
||||||
|
$affiliate = json_decode(getConfigValue('affiliate'),true);
|
||||||
|
|
||||||
|
//是否開啟分銷
|
||||||
|
if(!$affiliate['on']){
|
||||||
|
return ['code'=>-1,'msg'=>'未開啟分銷'];
|
||||||
|
}
|
||||||
|
|
||||||
|
//檢查是否已經計算過
|
||||||
|
$is_calculate = Db::name('affiliate_log')->where('order_id', $order['order_id'])->count();
|
||||||
|
if($is_calculate){
|
||||||
|
return ['code'=>-1,'msg'=>'已經計算過'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
//找出第一二三四層介紹人
|
||||||
|
$sso_user_id = Db::name('users')->where('user_id', $order['user_id'])->value('sso_user_id');
|
||||||
|
|
||||||
|
$parents = self::getAffiliate($sso_user_id, 1);
|
||||||
|
|
||||||
|
foreach ($parents as $key => $value) {
|
||||||
|
//計算分銷金額
|
||||||
|
$money[$key] = $order['order_amount'] * $affiliate['item'][$key]['level_money'] / 100;
|
||||||
|
|
||||||
|
//寫入affiliate_log
|
||||||
|
$affiliate_log = [
|
||||||
|
'user_id' => Db::name('users')->where('sso_user_id', $value)->value('user_id'),
|
||||||
|
'order_id' => $order['order_id'],
|
||||||
|
'time' => time(),
|
||||||
|
'user_name' => Db::name('users')->where('sso_user_id', $value)->value('real_name'),
|
||||||
|
'money' => $money[$key],
|
||||||
|
];
|
||||||
|
Db::name('affiliate_log')->insert($affiliate_log);
|
||||||
|
//增加介紹人的獎金
|
||||||
|
Db::name('users')->where('sso_user_id', $value)->inc('frozen_money', $money[$key])->update();
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
print_r($e->getMessage());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static function getAffiliate($sso_user_id, $level = 1)
|
||||||
|
{
|
||||||
|
$parents = [];
|
||||||
|
$parent_id = Db::name('users')->where('sso_user_id', $sso_user_id)->value('parent_id');
|
||||||
|
|
||||||
|
if ($parent_id) {
|
||||||
|
$parents[$level] = $parent_id;
|
||||||
|
$level++;
|
||||||
|
$return = self::getAffiliate($parent_id, $level);
|
||||||
|
$parents = array_merge($parents, $return);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $parents;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in new issue