admin/addon/futures/model/Forder.php

120 lines
5.4 KiB
PHP

<?php
/**
* SAAS应用系统 --- 十年开发经验汇集巨献!
* ==========================================================
* Copy right 2020-2050 成都众联思索科技有限公司,保留所有权利。
* ----------------------------------------------------------
* 官方网址: https://www.zoomtk.com
* 这不是自由软件!未经允许不得用于商业目或程序代码摘取及修改。
* 任何企业和个人未经允许对程序代码以任何形式任何目的再发布传播。
* 唯一发布渠道www.zoomtk.com;非官方渠道统一视为侵权行为。
* ==========================================================
*/
namespace addon\futures\model;
use addon\futures\model\Futures as FuturesModel;
use addon\fenxiao\model\FenxiaoOrder;
use app\model\BaseModel;
use think\facade\Db;
class Forder extends BaseModel
{
/**
* 分销订单计算
* @param unknown $order
*/
public function calculate($order)
{
$site_id=$order['site_id'];
$futuresModel = new FuturesModel;
$basics = $futuresModel->getBasicsConfig($site_id)['data']['value'];
if(!empty(model("fenxiao_order")->getValue(['order_id'=>$order[ 'order_id' ]],'fenxiao_order_id'))){//判断是否重复计算
return $this->success();
}
//检测分销商上级关系
$member_info = model("member")->getInfo([ [ 'member_id', '=', $order[ 'member_id' ] ] ], 'fenxiao_id,is_fenxiao');
//如果没有分销商直接返回不计算,没有考虑首次付款上下级绑定
if(empty($member_info)){
return $this->success();
}
if ($member_info[ 'fenxiao_id' ] == 0) {
return $this->success();
}
$fenxiao_id = $member_info[ 'fenxiao_id' ];
$fenxiao_info = model("fenxiao")->getInfo([ [ 'fenxiao_id', '=', $fenxiao_id ], [ 'is_delete', '=', 0 ] ]);
if (empty($fenxiao_info)) {
return $this->success();
}
$parent_fenxiao_info = model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent');
$direct_push=$basics['direct_push'];//直推
$indirect_push=$basics['indirect_push'];//间推
$is_range=$basics['is_range'];
if($is_range && $parent_fenxiao_info){ //减去极差奖励
$direct_push -=$indirect_push;
}else{
// $direct_push +5; //管理直推
}
$unit_price=Db::name('futures')->alias('a')
->where([
'a.order_id'=>$order['order_id'],
'a.seller_uid'=>$order[ 'member_id' ]]
)
->join( 'futures f','a.old_futures_id=f.id')
->value('f.unit_price'); //获取上次买入价格
$order_goods = model("order_goods")->getInfo(['order_id'=>$order[ 'order_id' ]]);
$commission_rate=$direct_push+$indirect_push; //总佣金比例
$service_charge=$unit_price * $basics['service_price']/100;//总服务费
$commission=$commission_rate*$service_charge/100;//总佣金
$order_fenxiao_data = [
'one_rate' => $direct_push,
'one_commission' =>$direct_push*$service_charge/100,
'two_rate' => $indirect_push,
'two_commission' => $indirect_push*$service_charge/100,
'three_rate' => 0,
];
//启动分销
$data = [
'order_id' => $order[ 'order_id' ],
'order_no' => $order[ 'order_no' ],
'order_goods_id' => $order_goods[ 'order_goods_id' ],
'site_id' => $order[ 'site_id' ],
'site_name' => $order[ 'site_name' ],
'goods_id' => $order_goods[ 'goods_id' ],
'sku_id' => $order_goods[ 'sku_id' ],
'sku_name' => $order_goods[ 'sku_name' ],
'sku_image' => $order_goods[ 'sku_image' ],
'price' => $unit_price,
'num' => $order_goods[ 'num' ],
'real_goods_money' =>$unit_price,
'member_id' => $order[ 'member_id' ],
'member_name' => $order[ 'name' ],
'member_mobile' => $order[ 'mobile' ],
'full_address' => $order[ 'full_address' ] . $order[ 'address' ],
'commission' => $commission,
'commission_rate' => $commission_rate,
'one_fenxiao_id' => empty($fenxiao_info) ? 0 : $fenxiao_info[ 'fenxiao_id' ],
'one_rate' => empty($order_fenxiao_data[ 'one_rate' ]) ? 0 : $order_fenxiao_data[ 'one_rate' ],
'one_commission' => empty($order_fenxiao_data[ 'one_commission' ]) ? 0 : $order_fenxiao_data[ 'one_commission' ],
'one_fenxiao_name' => empty($fenxiao_info) ? '' : $fenxiao_info[ 'fenxiao_name' ],
'two_fenxiao_id' => empty($parent_fenxiao_info) ? 0 : $parent_fenxiao_info[ 'fenxiao_id' ],
'two_rate' => empty($order_fenxiao_data[ 'two_rate' ]) ? 0 : $order_fenxiao_data[ 'two_rate' ],
'two_commission' => empty($order_fenxiao_data[ 'two_commission' ]) ? 0 : $order_fenxiao_data[ 'two_commission' ],
'two_fenxiao_name' => empty($parent_fenxiao_info) ? '' : $parent_fenxiao_info[ 'fenxiao_name' ],
'create_time' => time()
];
model("fenxiao_order")->add($data);
$fenxiao_order_model = new FenxiaoOrder();
$fenxiao_order_model->settlement($data['order_id']);
$res = $fenxiao_order_model->calculateOrder($data['order_id']);
return $this->success();
}
}