136 行
5.1 KiB
PHP
可执行文件
136 行
5.1 KiB
PHP
可执行文件
<?php
|
|
|
|
namespace Distribution\Model;
|
|
|
|
/**
|
|
* 分销等级表
|
|
* Class GradeModel
|
|
* @package Distribution\Model
|
|
*/
|
|
class GradeModel extends \Common\Model\BaseModel
|
|
{
|
|
protected $tableName = 'distribution_grade';
|
|
protected $fields = array(
|
|
'id', //int(11) NOT NULL AUTO_INCREMENT,
|
|
'merchant_id', //int(11) NOT NULL DEFAULT '0' COMMENT '商户id',
|
|
'grade_name', //varchar(50) DEFAULT '' COMMENT '等级名称',
|
|
'indent', //int(11) DEFAULT '0' COMMENT '分销订单数',
|
|
'invite', //int(11) DEFAULT '0' COMMENT '邀请人数',
|
|
'commission', //decimal(10,2) DEFAULT '0.00' COMMENT '推广佣金',
|
|
'myself_money', //decimal(10,2) DEFAULT '0.00' COMMENT '自购商品金额',
|
|
'client', //int(11) DEFAULT '0' COMMENT '客户数',
|
|
'is_invite', //tinyint(1) DEFAULT '0' COMMENT '是否选择邀请人数 0否 1是',
|
|
'is_commission', //tinyint(1) DEFAULT '0' COMMENT '是否选择推广佣金 0否 1是',
|
|
'is_myself_money', //tinyint(1) DEFAULT '0' COMMENT '是否选择自购商品金额 0否 1是',
|
|
'is_client', //tinyint(1) DEFAULT '0' COMMENT '是否选择客户数 0否 1是',
|
|
'proportion', //decimal(10,2) DEFAULT '0.00' COMMENT '佣金比例',
|
|
'status', //tinyint(1) DEFAULT '0' COMMENT '状态 0正常 1删除',
|
|
'grade_type', //tinyint(1) DEFAULT '0' COMMENT '等级类型 0初始等级 1其他等级',
|
|
'upgrade_type', //tinyint(1) DEFAULT '0' COMMENT '升级条件 0满足一个达成条件 1满足所有达成条件',
|
|
'add_time', //int(11) DEFAULT 0 NULL COMMENT '等级添加时间',
|
|
);
|
|
|
|
/**
|
|
* 获取分销员等级信息
|
|
* @param $merchant_id 商户ID
|
|
* @param $commission 推广佣金
|
|
* @param $indent 分销员分销订单数
|
|
* @param $invite 分销员邀请人数
|
|
* @param $client 客户数
|
|
* @return array|mixed
|
|
*/
|
|
public function getDistributionGradeInfo($merchant_id, $commission = 0, $indent = 0, $invite = 0, $client = 0)
|
|
{
|
|
$map = array(
|
|
'merchant_id' => $merchant_id,
|
|
);
|
|
$config = $this->getFind($map);
|
|
if ($config['commission'] == 1) {
|
|
$map['commission'] = array('elt', $commission);
|
|
}
|
|
if ($config['indent'] == 1) {
|
|
$map['indent'] = array('elt', $indent);
|
|
}
|
|
if ($config['invite'] == 1) {
|
|
$map['invite'] = array('elt', $invite);
|
|
}
|
|
if ($config['client'] == 1) {
|
|
$map['client'] = array('elt', $client);
|
|
}
|
|
if (empty($commission) && empty($indent) && empty($indent) && empty($client)) {
|
|
$map['commission'] = array('elt', $commission);
|
|
}
|
|
$field = 'id,proportion,grade_name';
|
|
$res = $this->getOrderFind($map, $field, 'proportion desc');
|
|
|
|
return $res ? $res : array();
|
|
}
|
|
|
|
/**
|
|
* 获取下个级别的升级条件
|
|
* @param $present 当前佣金比
|
|
* @param $merchant_id 商户ID
|
|
* @return array|mixed
|
|
*/
|
|
public function getUpgradeConditions($present, $merchant_id)
|
|
{
|
|
$where = [
|
|
'status' => 0,
|
|
'merchant_id' => $merchant_id,
|
|
'proportion' => ['GT', $present]
|
|
];
|
|
|
|
$field = [
|
|
'id',
|
|
'grade_name',
|
|
'invite',
|
|
'commission',
|
|
'myself_money',
|
|
'client',
|
|
'is_invite',
|
|
'is_commission',
|
|
'is_myself_money',
|
|
'is_client',
|
|
'proportion',
|
|
'upgrade_type'
|
|
];
|
|
|
|
$result = $this->getOrderFind($where, $field, 'proportion asc');
|
|
|
|
if ($result) {
|
|
if ($result['is_invite'] != 1) {
|
|
unset($result['invite']);
|
|
}
|
|
if ($result['is_commission'] != 1) {
|
|
unset($result['commission']);
|
|
}
|
|
if ($result['is_myself_money'] != 1) {
|
|
unset($result['myself_money']);
|
|
}
|
|
if ($result['is_client'] != 1) {
|
|
unset($result['client']);
|
|
}
|
|
|
|
if (!$result['is_invite'] || !$result['is_commission'] || !$result['is_myself_money'] || !$result['is_client']) {
|
|
// 未设置任何升级条件
|
|
}
|
|
|
|
// unset($result['is_invite']);
|
|
// unset($result['is_client']);
|
|
// unset($result['is_commission']);
|
|
// unset($result['is_myself_money']);
|
|
} else {
|
|
$result = [];
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
// 获取升级条件V2--一次性获取所有级别
|
|
public function getAllUpgradeConditions($merchant_id, $field)
|
|
{
|
|
return $this->getSelect(['status' => 0, 'merchant_id' => $merchant_id], $field, 'proportion asc');
|
|
}
|
|
|
|
}
|