初始化项目:添加后端代码、ThinkPHP框架、前端资源
This commit is contained in:
@@ -0,0 +1,192 @@
|
||||
<?php
|
||||
|
||||
namespace app\common\behavior\app\agent;
|
||||
use app\common\model\order\Item;
|
||||
use app\common\model\app\agent\Goods;
|
||||
use app\common\model\app\agent\Order as AgentOrder;
|
||||
/**
|
||||
* 分销等级
|
||||
*/
|
||||
class Commission
|
||||
{
|
||||
/**
|
||||
* 分佣金 创建订单
|
||||
* @param $order 订单
|
||||
* @return bool
|
||||
*/
|
||||
public function run($orderNo)
|
||||
{
|
||||
|
||||
$agentConfig = \app\common\model\app\Config::getConfig('agent');
|
||||
|
||||
if(!$agentConfig){
|
||||
return false;
|
||||
}
|
||||
|
||||
//未开启分销
|
||||
if($agentConfig['status'] != 1){
|
||||
return false;
|
||||
}
|
||||
|
||||
$order = \app\common\model\order\Order::where([
|
||||
'order_no'=>$orderNo
|
||||
])->find();
|
||||
|
||||
if(!$order){
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->addLog($order);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 添加记录
|
||||
* @param $order
|
||||
* @return false|void
|
||||
*/
|
||||
public function addLog($order){
|
||||
|
||||
$agentConfig = \app\common\model\app\Config::getConfig('agent');
|
||||
|
||||
$orderUserRelation = [
|
||||
'parent'=>false,
|
||||
'grandpa'=>false
|
||||
];
|
||||
|
||||
if($order->source == 'channels'){
|
||||
//获取视频号分享员信息
|
||||
if(!\app\admin\library\project\App::isInstall('channels')){
|
||||
return false;
|
||||
}
|
||||
$channelsOrder = (new \app\admin\model\app\channels\Order())->getOrderDetail($order->order_no);
|
||||
if(!$channelsOrder || !$channelsOrder->member || !$channelsOrder->member->user_id || $channelsOrder->member->status != 1){
|
||||
return false;
|
||||
}
|
||||
|
||||
$orderUserRelation['parent']['parent_id'] = $channelsOrder->member->user_id;
|
||||
if($orderUserRelation['parent']['parent_id']){
|
||||
$orderUserRelation['grandpa'] = \app\common\model\app\agent\Relation::getParentUser($channelsOrder->member->user_id);
|
||||
}
|
||||
|
||||
}else{
|
||||
//找该下单用户的上级关系
|
||||
$orderUserRelation = \app\common\model\app\agent\Relation::getUserRelation($order->user_id);
|
||||
if(!$orderUserRelation['parent'] && !$orderUserRelation['grandpa']){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
//计算佣金
|
||||
$orderItemList = (new Item())->getItemList($order->order_no);
|
||||
|
||||
if(!empty($orderItemList)){
|
||||
|
||||
foreach ($orderItemList as $orderItem){
|
||||
//找该下单用户的上级 商品佣金
|
||||
try{
|
||||
if($orderUserRelation['parent']){
|
||||
$parentProp = Goods::getUserGoodsProp($orderUserRelation['parent']['parent_id'],$orderItem['item_id'],$orderItem['goods_type'],$orderItem['total_price']);
|
||||
if($parentProp){
|
||||
$data = [
|
||||
'uniacid'=>UNIACID,
|
||||
'order_user_id'=>$order->user_id,
|
||||
'beneficiary_user_id'=>$orderUserRelation['parent']['parent_id'],
|
||||
'order_no'=>$order->order_no,
|
||||
'goods_id'=>$orderItem['item_id'],
|
||||
'goods_type'=>$orderItem['goods_type'],
|
||||
'price'=>$orderItem['real_price'],
|
||||
'order_item_id'=>$orderItem['id'],
|
||||
'brokerage_price'=>$parentProp['price']['goods'],//
|
||||
'brokerage_prop'=>$parentProp['prop']['goods'],
|
||||
'type'=>'commission',
|
||||
'mode'=>$parentProp['mode'],
|
||||
'status'=>0,
|
||||
'createtime'=>time()
|
||||
];
|
||||
AgentOrder::insert($data);
|
||||
}
|
||||
}
|
||||
|
||||
if($agentConfig['mode'] == 2 && $orderUserRelation['grandpa']){
|
||||
//继续分佣 找该下单用户的上级的上级 下级分销员卖货提成
|
||||
$grandpaProp = Goods::getUserGoodsProp($orderUserRelation['grandpa']['parent_id'],$orderItem['item_id'],$orderItem['goods_type'],$orderItem['real_price']);
|
||||
|
||||
|
||||
if($grandpaProp){
|
||||
$data = [
|
||||
'uniacid'=>UNIACID,
|
||||
'order_user_id'=>$order->user_id,
|
||||
'beneficiary_user_id'=>$orderUserRelation['grandpa']['parent_id'],
|
||||
'order_no'=>$order->order_no,
|
||||
'goods_id'=>$orderItem['item_id'],
|
||||
'goods_type'=>$orderItem['goods_type'],
|
||||
'order_item_id'=>$orderItem['id'],
|
||||
'price'=>$orderItem['real_price'],
|
||||
'brokerage_price'=>$grandpaProp['price']['customer'],//
|
||||
'brokerage_prop'=>$grandpaProp['prop']['customer'],
|
||||
'type'=>'subordinate',
|
||||
'mode'=>$grandpaProp['mode'],
|
||||
'status'=>0,
|
||||
'createtime'=>time()
|
||||
];
|
||||
AgentOrder::insert($data);
|
||||
}
|
||||
}
|
||||
}catch(\think\Exception $e){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 结算
|
||||
* @return void
|
||||
*/
|
||||
public function settle($orderNo){
|
||||
$logList = AgentOrder::where([
|
||||
'order_no'=>$orderNo,
|
||||
'status'=>0
|
||||
])->select();
|
||||
|
||||
|
||||
AgentOrder::where([
|
||||
'order_no'=>$orderNo
|
||||
])->update([
|
||||
'status'=>1
|
||||
]);
|
||||
|
||||
if($logList){
|
||||
foreach ($logList as $log){
|
||||
$memo = $log['type'] == 'commission' ? '商品佣金' : '下级分销员卖货提成';
|
||||
\app\api\model\app\agent\Money::changeMoney($log['beneficiary_user_id'],'money',$log['brokerage_price'],false,$memo);
|
||||
//检查升级
|
||||
(new \app\api\model\app\agent\Level())->handle($log['beneficiary_user_id']);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 取消订单后 作废分佣记录
|
||||
* @param $orderNo
|
||||
* @return bool
|
||||
*/
|
||||
public function cancelOrder($orderNo){
|
||||
AgentOrder::where([
|
||||
'order_no'=>$orderNo
|
||||
])->update([
|
||||
'status'=>2
|
||||
]);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user