分销订单逻辑

This commit is contained in:
liqianjin 2024-09-25 18:31:58 +08:00
parent b9612fbdd9
commit 52e7230384
14 changed files with 213 additions and 102 deletions

View File

@ -7,6 +7,7 @@ class NodeParent
{
if (isset($param['parent'])) {
$parentInfo = model('fenxiao')->getInfo(['fenxiao_id' => $param['parent']], 'fenxiao_id,fenxiao_name,parent,chain,depth_level');
if ($parentInfo) {
$Parent['chain'] = $parentInfo['chain'] . $param['fenxiao_id'] . ',';
$Parent['depth_level'] = $parentInfo['depth_level'] + 1;
@ -14,6 +15,7 @@ class NodeParent
$Parent['chain'] = $param['fenxiao_id'] . ',';
$Parent['depth_level'] = 1;
}
return $Parent;
}
if (isset($param['fenxiao_id'])) {

View File

@ -40,6 +40,7 @@ class Config extends BaseModel
'is_support_cashier' => $data[ 'is_support_cashier' ],//是否开启商品详情一级佣金
'direct_rate' => $data[ 'direct_rate' ],//默认直推
'indirect_rate' => $data[ 'indirect_rate' ],//默认间推
'founder_rate' => $data[ 'founder_rate' ],//默认间推
];
$config->setConfig($basics_data, '分销基本配置', $is_use, [ [ 'site_id', '=', $site_id ], [ 'app_module', '=', 'shop' ], [ 'config_key', '=', 'FENXIAO_BASICS_CONFIG' ] ]);
//分销商设置
@ -83,6 +84,7 @@ class Config extends BaseModel
'is_apply' => 0,//分销商申请方式
'direct_rate' => 0,//是否开启商品详情一级佣金
'indirect_rate' => 0,//是否开启商品详情一级佣金
'founder_rate' => 0,//是否开启商品详情一级佣金
];
}
$res[ 'data' ][ 'value' ][ 'is_commission_money' ] = $res[ 'data' ][ 'value' ][ 'is_commission_money' ] ?? 1;
@ -92,6 +94,7 @@ class Config extends BaseModel
$res[ 'data' ][ 'value' ][ 'is_support_cashier' ] = $res[ 'data' ][ 'value' ][ 'is_support_cashier' ] ?? 0;
$res[ 'data' ][ 'value' ][ 'direct_rate' ] = $res[ 'data' ][ 'value' ][ 'direct_rate' ] ?? 0;
$res[ 'data' ][ 'value' ][ 'indirect_rate' ] = $res[ 'data' ][ 'value' ][ 'indirect_rate' ] ?? 0;
$res[ 'data' ][ 'value' ][ 'founder_rate' ] = $res[ 'data' ][ 'value' ][ 'founder_rate' ] ?? 0;
return $res;
}

View File

@ -61,11 +61,14 @@ class Fenxiao extends BaseModel
'fenxiao_id' => $data[ 'parent' ]
]);
}
$res = model('fenxiao')->add($data);
$data['fenxiao_id'] = $res;
$nodeInfo = event('NodeParent', $data, true);
if ($nodeInfo) {
model('fenxiao')->update($nodeInfo, [['fenxiao_id', '=', $res]]);
}
//修改会员信息
model('member')->update([ 'fenxiao_id' => $res, 'is_fenxiao' => 1 ], [ [ 'member_id', '=', $data[ 'member_id' ] ] ]);
$stat_model = new Stat();
@ -366,7 +369,6 @@ class Fenxiao extends BaseModel
$member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ], [ 'site_id', '=', $site_id ], [ 'is_delete', '=', 0 ] ], 'order_num,order_complete_num,order_money,order_complete_money,is_fenxiao');
if (empty($member_info)) return $this->error('', '未查询到会员信息');
$fenxiao_info = $this->getFenxiaoDetailInfo([ [ 'f.member_id', '=', $member_id ] ])[ 'data' ];
if (!empty($fenxiao_info) && $member_info[ 'is_fenxiao' ]) return $this->error('', '已经是分销商');
try {
$config = new Config();
@ -416,6 +418,7 @@ class Fenxiao extends BaseModel
//获取用户信息
$member_field = 'member_id,site_id,source_member,fenxiao_id,nickname,headimg,mobile,reg_time,order_money,order_complete_money,order_num,order_complete_num';
$member_info = model('member')->getInfo([ [ 'member_id', '=', $member_id ] ], $member_field);
if (!empty($member_info)) {
$parent = 0;
if (!empty($member_info[ 'source_member' ])) {

View File

@ -28,7 +28,6 @@ class FenxiaoOrder extends BaseModel
//获取分销基础配置
$config_model = new Config();
$fenxiao_basic_config = $config_model->getFenxiaoBasicsConfig($order[ 'site_id' ])[ 'data' ][ 'value' ];
if (!$fenxiao_basic_config['level']) return $this->success();
// //检测分销商上级关系
$member_info = model("member")->getInfo([ [ 'member_id', '=', $order[ 'member_id' ] ] ], 'fenxiao_id,is_fenxiao,nickname,mobile');
@ -40,7 +39,6 @@ class FenxiaoOrder extends BaseModel
]);
$member_info = model("member")->getInfo([ [ 'member_id', '=', $order[ 'member_id' ] ] ], 'fenxiao_id,is_fenxiao,nickname,mobile');
}
// //如果没有分销商直接返回不计算,没有考虑首次付款上下级绑定
if (empty($member_info)) return $this->success();
if ($member_info[ 'fenxiao_id' ] == 0) return $this->success();
@ -61,7 +59,7 @@ class FenxiaoOrder extends BaseModel
// //判断几级分销
// $parent_fenxiao_info = $level_config >= 2 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent') : [];
// $grand_parent_fenxiao_info = $level_config >= 3 && !empty($parent_fenxiao_info[ 'parent' ]) ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $parent_fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status') : [];
$order_goods = model('order_goods')->getList([ [ 'order_id', '=', $order[ 'order_id' ] ], [ 'is_fenxiao', '=', 1 ] ], 'order_goods_id, goods_id, sku_id, sku_name, sku_image, sku_no, is_virtual, price, cost_price, num, goods_money, cost_money, delivery_no, delivery_status, real_goods_money');
$order_goods = model('order_goods')->getList([ [ 'order_id', '=', $order[ 'order_id' ] ], [ 'is_fenxiao', '=', 1 ] ], 'order_goods_id, goods_id , site_id, sku_id, sku_name, sku_image, sku_no, is_virtual, price, cost_price, num, goods_money, cost_money, delivery_no, delivery_status, real_goods_money');
if (empty($order_goods)) return $this->success();
model('fenxiao_order')->delete([ [ 'order_id', '=', $order[ 'order_id' ] ] ]);
@ -81,75 +79,79 @@ class FenxiaoOrder extends BaseModel
'wholesale_rate' => 0,
'wholesale_commission' => 0,
'wholesale_fenxiao_detail' => [],
'founder_fenxiao_id' => [],
'founder_rate' => 0,
'founder_commission' => 0,
'founder_fenxiao_detail' => [],
];
$goods_info = model('goods')->getInfo([['goods_id','=',$v['goods_id']]],'is_fenxiao, fenxiao_type');
//参与了分销商品,有直推间推奖励
if($goods_info['is_fenxiao']){
$goods_info = model('goods')->getInfo([['goods_id','=',$v['goods_id']]],'is_fenxiao, fenxiao_type,goods_kind_id');
//报单商品才有直推和间推
if($goods_info['goods_kind_id']){
$order_fenxiao_data = $this->getPushFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data,$goods_info['fenxiao_type'],$fenxiao_basic_config);
}
$order_fenxiao_data = $this->getWholesaleFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data);
// dump($order_fenxiao_data);die;
$data = [
'order_id' => $order['order_id'],
'order_no' => $order['order_no'],
'order_goods_id' => $v['order_goods_id'],
'site_id' => $order['site_id'],
'site_name' => $order['site_name'],
'goods_id' => $v['goods_id'],
'sku_id' => $v['sku_id'],
'sku_name' => $v['sku_name'],
'sku_image' => $v['sku_image'],
'price' => $v['price'],
'num' => $v['num'],
'real_goods_money' => $v['real_goods_money'],
'member_id' => $order['member_id'],
'member_name' => !empty($order['name']) ? $order['name'] : $member_info['nickname'],
'member_mobile' => !empty($order['mobile']) ? $order['mobile'] : $member_info['mobile'],
'full_address' => $order['full_address'].$order['address'],
'commission' => $order_fenxiao_data['commission'],
'commission_rate' => $order_fenxiao_data['commission_rate'],
'one_fenxiao_id' => $order_fenxiao_data['one_fenxiao_id'],
'one_rate' => $order_fenxiao_data['one_rate'],
'one_commission' => $order_fenxiao_data['one_commission'],
'one_fenxiao_name' => $order_fenxiao_data['one_fenxiao_name'],
'two_fenxiao_id' => $order_fenxiao_data['two_fenxiao_id'],
'two_rate' => $order_fenxiao_data['two_rate'],
'two_commission' => $order_fenxiao_data['two_commission'],
'two_fenxiao_name' => $order_fenxiao_data['two_fenxiao_name'],
'wholesale_fenxiao_id' => json_encode($order_fenxiao_data['wholesale_fenxiao_id']),
'wholesale_rate' => $order_fenxiao_data['wholesale_rate'],
'wholesale_commission' => $order_fenxiao_data['wholesale_commission'],
'wholesale_fenxiao_detail' => json_encode($order_fenxiao_data['wholesale_fenxiao_detail']),
'create_time' => time()
];
model("fenxiao_order")->add($data);
$order_fenxiao_data = $this->getWholesaleFenXiaoCommission($fenxiao_info,$v,$order_fenxiao_data,$goods_info['fenxiao_type'],$fenxiao_basic_config,$goods_info['goods_kind_id']);
if($order_fenxiao_data['commission'] && $order_fenxiao_data['commission_rate']){
$data = [
'order_id' => $order['order_id'],
'order_no' => $order['order_no'],
'order_goods_id' => $v['order_goods_id'],
'site_id' => $order['site_id'],
'site_name' => $order['site_name'],
'goods_id' => $v['goods_id'],
'sku_id' => $v['sku_id'],
'sku_name' => $v['sku_name'],
'sku_image' => $v['sku_image'],
'price' => $v['price'],
'num' => $v['num'],
'real_goods_money' => $v['real_goods_money'],
'member_id' => $order['member_id'],
'member_name' => !empty($order['name']) ? $order['name'] : $member_info['nickname'],
'member_mobile' => !empty($order['mobile']) ? $order['mobile'] : $member_info['mobile'],
'full_address' => $order['full_address'].$order['address'],
'commission' => $order_fenxiao_data['commission'],
'commission_rate' => $order_fenxiao_data['commission_rate'],
'one_fenxiao_id' => $order_fenxiao_data['one_fenxiao_id'],
'one_rate' => $order_fenxiao_data['one_rate'],
'one_commission' => $order_fenxiao_data['one_commission'],
'one_fenxiao_name' => $order_fenxiao_data['one_fenxiao_name'],
'two_fenxiao_id' => $order_fenxiao_data['two_fenxiao_id'],
'two_rate' => $order_fenxiao_data['two_rate'],
'two_commission' => $order_fenxiao_data['two_commission'],
'two_fenxiao_name' => $order_fenxiao_data['two_fenxiao_name'],
'wholesale_fenxiao_id' => json_encode($order_fenxiao_data['wholesale_fenxiao_id']),
'wholesale_rate' => $order_fenxiao_data['wholesale_rate'],
'wholesale_commission' => $order_fenxiao_data['wholesale_commission'],
'wholesale_fenxiao_detail' => json_encode($order_fenxiao_data['wholesale_fenxiao_detail']),
'founder_fenxiao_id' => json_encode($order_fenxiao_data['founder_fenxiao_id']),
'founder_rate' => $order_fenxiao_data['founder_rate'],
'founder_commission' => $order_fenxiao_data['founder_commission'],
'founder_fenxiao_detail' => json_encode($order_fenxiao_data['founder_fenxiao_detail']),
'create_time' => time()
];
model("fenxiao_order")->add($data);
}
}
$fenxiao_info = model("fenxiao")->getInfo([ [ 'fenxiao_id', '=', $fenxiao_id ], [ 'is_delete', '=', 0 ] ]);
// // 分销商检测升级
event('FenxiaoUpgrade', [
'fenxiao_id' => $member_info[ 'fenxiao_id' ]
'fenxiao_id' => $member_info[ 'fenxiao_id' ],
]);
return $this->success();
}
private function getPushFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data,$type,$config){
if($type == 2){
$fenxiao_level = model('fenxiao_goods_sku')->getInfo([ [ 'goods_id', '=', $v[ 'goods_id' ] ], [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'level_id', '=', $fenxiao_info[ 'level_id' ] ] ]);
if (empty($fenxiao_level)) return false;
$one_rate = $fenxiao_level['direct_rate'];
$one_money = $fenxiao_level['direct_money'];
$two_rate = $fenxiao_level['indirect_rate'];
$two_money = $fenxiao_level['indirect_money'];
}else{
$one_rate = $config['direct_rate'];
$two_rate = $config['indirect_rate'];
$one_money = $two_money = 0;
}
$parent_fenxiao_info = $fenxiao_info['parent'] > 0 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent') : [];
$g_parent_fenxiao_info = $fenxiao_info['grand_parent'] > 0 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'grand_parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent') : [];
$one_rate = $config['direct_rate'];
$two_rate = $config['indirect_rate'];
$one_money = $two_money = 0;
$parent_fenxiao_info = $fenxiao_info['parent'] > 0 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent,level_id') : [];
$g_parent_fenxiao_info = $fenxiao_info['grand_parent'] > 0 ? model('fenxiao')->getInfo([ [ 'fenxiao_id', '=', $fenxiao_info[ 'grand_parent' ] ], [ 'is_delete', '=', 0 ] ], 'fenxiao_id, fenxiao_name, status, parent,level_id') : [];
if (!empty($parent_fenxiao_info) && $parent_fenxiao_info[ 'status' ] == 1) {
if($type == 2){
$fenxiao_level = model('fenxiao_goods_sku')->getInfo([ [ 'goods_id', '=', $v[ 'goods_id' ] ], [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'level_id', '=', $parent_fenxiao_info[ 'level_id' ] ] ]);
if (empty($fenxiao_level)) return false;
$one_rate = $fenxiao_level['direct_rate'];
$one_money = $fenxiao_level['direct_money'];
}
if ($one_rate > 0) {
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'one_rate' ] = $one_rate;
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'one_commission' ] = $one_rate * $v[ 'real_goods_money' ] / 100;
@ -161,7 +163,12 @@ class FenxiaoOrder extends BaseModel
$order_fenxiao_data['one_fenxiao_name'] = $parent_fenxiao_info['fenxiao_name'];
}
if (!empty($g_parent_fenxiao_info) && $g_parent_fenxiao_info[ 'status' ] == 1) {
if($type == 2){
$fenxiao_level = model('fenxiao_goods_sku')->getInfo([ [ 'goods_id', '=', $v[ 'goods_id' ] ], [ 'sku_id', '=', $v[ 'sku_id' ] ], [ 'level_id', '=', $g_parent_fenxiao_info[ 'level_id' ] ] ]);
if (empty($fenxiao_level)) return false;
$two_rate = $fenxiao_level['indirect_rate'];
$two_money = $fenxiao_level['indirect_money'];
}
if ($two_rate > 0) {
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'two_rate' ] = $two_rate;
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'two_commission' ] = $two_rate * $v[ 'real_goods_money' ] / 100;
@ -176,23 +183,27 @@ class FenxiaoOrder extends BaseModel
return $order_fenxiao_data;
}
private function getWholesaleFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data){
$order_fenxiao_data['wholesale_fenxiao_id'][] = $fenxiao_info['fenxiao_id'];
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] = $fenxiao_info[ 'one_rate' ];
$commission = $fenxiao_info[ 'one_rate' ] * $v[ 'real_goods_money' ] / 100;
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] = $commission;
$order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $fenxiao_info['fenxiao_name'], 'commission' => $commission];
$level_List = model('fenxiao_level')->getList([['site_id', '=' ,$fenxiao_info['site_id']],['level_num' , '>' ,$fenxiao_info['level_num']]],'*','level_num asc');
if($fenxiao_info['chain'] && $level_List){
private function getWholesaleFenXiaoCommission($fenxiao_info,$v,&$order_fenxiao_data,$type,$config,$goods_kind = 0){
//不是报单商品才有自购
if($config['self_purchase_rebate'] && $fenxiao_info['level_num'] > 0 && $goods_kind === 1){
$order_fenxiao_data['wholesale_fenxiao_id'][] = $fenxiao_info['fenxiao_id'];
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] = $fenxiao_info[ 'one_rate' ];
$commission = $fenxiao_info[ 'one_rate' ] * $v[ 'real_goods_money' ] / 100;
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] = $commission;
$order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $fenxiao_info['fenxiao_name'], 'commission' => $commission];
}
if($fenxiao_info['chain']){
$data = explode(',', $fenxiao_info['chain']);
$chain = array_filter($data, function ($value) {
return !empty($value);
});
// $count = count($chain);
// //要删除最后一个数据最后一个数据是自己的分销商ID
// //因为逗号分割去除空白后最后一个key会被去掉所以count不需要 - 1;
// unset($chain[$count]);
$count = count($chain);
//要删除最后一个数据最后一个数据是自己的分销商ID
unset($chain[$count - 1]);
$chain = array_values($chain);
$chain = array_reverse($chain);
$nodeUser = Db::name('fenxiao')
->where('f.is_delete', '=', 0)
->alias('f')
@ -203,23 +214,68 @@ class FenxiaoOrder extends BaseModel
->select(); //获取上级用户
$nodeUser = $nodeUser ? $nodeUser->toArray() : [];
if(count($nodeUser) > 0){
$order_fenxiao_data = $this->getWholesaleCommission($nodeUser,$v,$order_fenxiao_data,$level_List);
$order_fenxiao_data = $this->getWholesaleCommission($nodeUser,$v,$order_fenxiao_data,$chain,$fenxiao_info['level_num'] + 1,$type,$config,$goods_kind);
}
}
return $order_fenxiao_data;
}
protected function getWholesaleCommission($nodeUser,$v,&$order_fenxiao_data,$chain,$leve_num,$type,$config,$goods_kind){
//不考虑商品单独规则
$fenxiao_user_id = array_column($nodeUser,'fenxiao_id');
$max_level_num = (int)model('fenxiao_level')->stat([['site_id' ,'=' , $v['site_id']]],'max','level_num');
foreach($chain as $k => $value){
$key = array_search($value,$fenxiao_user_id);
$user = $nodeUser[$key];
if(isset($user) && !empty($user) && $user['level_num'] == $leve_num && $leve_num > 1){
$order_fenxiao_data['wholesale_fenxiao_id'][] = $user['fenxiao_id'];
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $user[ 'two_rate' ];
$commission = $user[ 'two_rate' ] * $v[ 'real_goods_money' ] / 100;
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] += $commission;
$order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission];
++$leve_num;
}
//联合创始人分红
if(isset($user) && !empty($user) && $max_level_num == $user['level_num'] && $config['founder_rate'] && $goods_kind === 0){
$order_fenxiao_data['founder_fenxiao_id'][] = $user['fenxiao_id'];
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'founder_rate' ] += $config['founder_rate'];
$commission = $config['founder_rate'] * $v[ 'real_goods_money' ] / 100;
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'founder_commission' ] += $commission;
$order_fenxiao_data['founder_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission];
}
}
return $order_fenxiao_data;
}
protected function getWholesaleCommission($nodeUser,$v,&$order_fenxiao_data,$level_List){
protected function getWholesaleCommissions($nodeUser,$v,&$order_fenxiao_data,$chain,$leve_num,$type,$config){
//不考虑商品单独规则
$fenxiao_user_level_num = array_column($nodeUser,'level_num');
foreach($level_List as $key => $val){
$search = array_search($val['level_num'],$fenxiao_user_level_num);
if($search){
$order_fenxiao_data['wholesale_fenxiao_id'][] = $nodeUser[$search]['fenxiao_id'];
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $val[ 'two_rate' ];
$commission = $val[ 'two_rate' ] * $v[ 'real_goods_money' ] / 100;
$fenxiao_user_id = array_column($nodeUser,'fenxiao_id');
$max_level_num = (int)model('fenxiao_level')->stat([['site_id' ,'=' , $v['site_id']]],'max','level_num');
foreach($chain as $k => $value){
$key = array_search($value,$fenxiao_user_id);
$user = $nodeUser[$key];
if(isset($user) && !empty($user) && $user['level_num'] == $leve_num && $leve_num > 1){
//独立设置的佣金
if($type == 2){
}else{
}
$order_fenxiao_data['wholesale_fenxiao_id'][] = $user['fenxiao_id'];
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'wholesale_rate' ] += $user[ 'two_rate' ];
$commission = $user[ 'two_rate' ] * $v[ 'real_goods_money' ] / 100;
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'wholesale_commission' ] += $commission;
$order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $nodeUser[$search]['fenxiao_name'], 'commission' => $commission];
$order_fenxiao_data['wholesale_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission];
++$leve_num;
}
//联合创始人分红
if(isset($user) && !empty($user) && $max_level_num == $user['level_num'] && $config['founder_rate']){
$order_fenxiao_data['founder_fenxiao_id'][] = $user['fenxiao_id'];
$order_fenxiao_data['commission_rate'] += $order_fenxiao_data[ 'founder_rate' ] += $config['founder_rate'];
$commission = $config['founder_rate'] * $v[ 'real_goods_money' ] / 100;
$order_fenxiao_data['commission'] += $order_fenxiao_data[ 'founder_commission' ] += $commission;
$order_fenxiao_data['founder_fenxiao_detail'][] = ['name' => $user['fenxiao_name'], 'commission' => $commission];
}
}
return $order_fenxiao_data;

View File

@ -51,6 +51,7 @@ class Config extends BaseShop
'three_rate' => input('three_rate', 0.00),
'direct_rate' => input('direct_rate', 0.00),
'indirect_rate' => input('indirect_rate', 0.00),
'founder_rate' => input('founder_rate', 0.00),
'is_support_cashier' => input('is_support_cashier', 0)
];

View File

@ -225,19 +225,31 @@
<p>会员购买后给对应分销商的默认直推返佣比例</p>
</div>
</div>
<div class="fenxiao-rate">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>商品间推比例:</label>
<div class="layui-input-inline">
<input type="number" min="0" name="indirect_rate" value="{$basics_info.indirect_rate ?? 0}" lay-verify="indirect_rate" autocomplete="off" class="layui-input len-short">
<div class="fenxiao-rate">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>商品间推比例:</label>
<div class="layui-input-inline">
<input type="number" min="0" name="indirect_rate" value="{$basics_info.indirect_rate ?? 0}" lay-verify="indirect_rate" autocomplete="off" class="layui-input len-short">
</div>
<div class="layui-form-mid">%</div>
</div>
<div class="word-aux">
<p>会员购买后给对应分销商的默认间推返佣比例</p>
</div>
<div class="layui-form-mid">%</div>
</div>
<div class="word-aux">
<p>会员购买后给对应分销商的默认间推返佣比例</p>
<div class="fenxiao-rate">
<div class="layui-form-item">
<label class="layui-form-label"><span class="required">*</span>创始人分红比例:</label>
<div class="layui-input-inline">
<input type="number" min="0" name="founder_rate" value="{$basics_info.founder_rate ?? 0}" lay-verify="founder_rate" autocomplete="off" class="layui-input len-short">
</div>
<div class="layui-form-mid">%</div>
</div>
<div class="word-aux">
<p>会员购买后给上级创始人分销商的分红比例</p>
</div>
</div>
</div>
</div>
</div>
<div class="form-row" style="margin-top:0;padding-left:20px;">

View File

@ -115,7 +115,19 @@ Order.prototype.cols = [
}
}
}else{
html += '<div>上级分佣:'+ ' ¥--' +'</div>';
html += '<div>进货分佣:'+ ' ¥--' +'</div>';
}
if(orderitem.founder_commission > 0){
var array_detail = $.parseJSON(orderitem.founder_fenxiao_detail);
for(var i=0;i<array_detail.length;i++){
if(i == 0){
html += '<div>创始人分佣:'+ (array_detail[i].commission > 0 ? array_detail[i].name +' ¥' + array_detail[i].commission : '--') +'</div>';
}else{
html += '<div style="padding-left: 24%">'+ (array_detail[i].commission > 0 ? array_detail[i].name +' ¥' + array_detail[i].commission : '--') +'</div>';
}
}
}else{
html += '<div>创始人分佣:'+ ' ¥--' +'</div>';
}
return html;
}

View File

@ -42,17 +42,19 @@ class DiyViewEdit extends Controller
}
if (!empty($data[ 'id' ]) || !empty($data[ 'name' ])) {
if($data['copy']){
$site_id = $data[ 'site_id' ];
$site_agent_id = model('site')->getValue([['site_id' , '=' , $site_id]],'agent_id');
$site_id = $data[ 'site_id' ];
$site_agent_id = model('site')->getValue([['site_id' , '=' , $site_id]],'agent_id');
if(isset($data['copy']) && $data['copy']){
$diy_view_condition = [
[ 'site_id', '=', $site_agent_id ],
];
}else{
$diy_view_condition = [
[ 'site_id', '=', $data[ 'site_id' ] ],
[ 'site_id', '=', $site_id ],
];
}
$is_copy = $site_agent_id ? 1 : 0;
$this->assign("is_copy", $is_copy);
if (!empty($data[ 'id' ])) {

View File

@ -115,6 +115,7 @@ class Goods extends BaseModel
'site_id' => $data['site_id'],
'goods_content' => $data['goods_content'],
'goods_state' => $data['goods_state'],
'goods_kind_id' => $data['goods_kind_id'],
'goods_stock_alarm' => $data['goods_stock_alarm'],
'is_free_shipping' => $data['is_free_shipping'],
'shipping_template' => $data['shipping_template'],
@ -284,6 +285,7 @@ class Goods extends BaseModel
'site_id' => $data['site_id'],
'goods_content' => $data['goods_content'],
'goods_state' => $data['goods_state'],
'goods_kind_id' => $data['goods_kind_id'],
'goods_stock_alarm' => $data['goods_stock_alarm'],
'is_free_shipping' => $data['is_free_shipping'],
'shipping_template' => $data['shipping_template'],
@ -1093,7 +1095,7 @@ class Goods extends BaseModel
* @param string $order
* @param string $field
*/
public function getGoodsPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'a.create_time desc', $field = 'a.goods_id,a.goods_name,a.site_id,a.site_name,a.goods_image,a.goods_state,a.price,a.goods_stock,a.goods_stock_alarm,a.create_time,a.sale_num,a.is_virtual,a.goods_class,a.goods_class_name,a.is_fenxiao,a.fenxiao_type,a.promotion_addon,a.sku_id,a.is_consume_discount,a.discount_config,a.discount_method,a.sort,a.label_id,a.is_delete', $alias = 'a', $join = [])
public function getGoodsPageList($condition = [], $page = 1, $page_size = PAGE_LIST_ROWS, $order = 'a.create_time desc', $field = 'a.goods_id,a.goods_name,a.site_id,a.site_name,a.goods_image,a.goods_state,a.price,a.goods_stock,a.goods_stock_alarm,a.create_time,a.sale_num,a.is_virtual,a.goods_class,a.goods_class_name,a.goods_kind_id,a.is_fenxiao,a.fenxiao_type,a.promotion_addon,a.sku_id,a.is_consume_discount,a.discount_config,a.discount_method,a.sort,a.label_id,a.is_delete', $alias = 'a', $join = [])
{
$res = model('goods')->pageList($condition, $field, $order, $page, $page_size, $alias, $join);
foreach ($res['list'] as $k => $v) {
@ -1112,6 +1114,7 @@ class Goods extends BaseModel
if (isset($v['real_stock'])) {
$res['list'][$k]['real_stock'] = numberFormat($res['list'][$k]['real_stock']);
}
$res['list'][$k]['goods_kind_name'] = $res['list'][$k]['goods_kind_id'] ? '报单商品' : '进货商品';
}
return $this->success($res);
}

View File

@ -24,11 +24,12 @@ class Test{
//
public function test(){
$orderId = 19;
$orderId = 37;
$order_info = model('order')->getInfo(['order_id' => $orderId]);
// $fenxiao_order = new OrderPay();
// $res = $fenxiao_order->handle($order_info);
$fenxiao_order = new FenxiaoOrder();
$res = $fenxiao_order->calculate($order_info);
dump($res);die;
// $memberId = 21;
// (new Commission())->commissionHandleInit($orderId, $memberId);

View File

@ -133,7 +133,7 @@ class Goods extends BaseShop
$order_by = $order . ' ' . $sort;
}
}
$field = 'goods_id,goods_name,site_id,site_name,goods_image,goods_state,price,goods_stock,goods_stock_alarm,create_time,sale_num,is_virtual,goods_class,goods_class_name,is_fenxiao,fenxiao_type,promotion_addon,sku_id,is_consume_discount,is_zmxx,discount_config,discount_method,sort,label_id,is_delete,label_name,virtual_deliver_type';
$field = 'goods_id,goods_name,site_id,site_name,goods_image,goods_state,price,goods_stock,goods_stock_alarm,create_time,goods_kind_id,sale_num,is_virtual,goods_class,goods_class_name,is_fenxiao,fenxiao_type,promotion_addon,sku_id,is_consume_discount,is_zmxx,discount_config,discount_method,sort,label_id,is_delete,label_name,virtual_deliver_type';
$res = $goods_model->getGoodsPageList($condition, $page_index, $page_size, $order_by, $field);
$goods_promotion_type = event('GoodsPromotionType');
if (!empty($res['data']['list'])) {
@ -260,6 +260,7 @@ class Goods extends BaseShop
'goods_image' => input("goods_image", ""),// 商品主图路径
'goods_content' => input("goods_content", ""),// 商品详情
'goods_state' => input("goods_state", ""),// 商品状态1.正常0下架
'goods_kind_id' => input("goods_kind_id", ""),// 商品种类(1.报单0进货)
'price' => input("price", 0),// 商品价格取第一个sku
'market_price' => input("market_price", 0),// 市场价格取第一个sku
'cost_price' => input("cost_price", 0),// 成本价取第一个sku
@ -425,6 +426,7 @@ class Goods extends BaseShop
'goods_image' => input("goods_image",""),// 商品主图路径
'goods_content' => input("goods_content",""),// 商品详情
'goods_state' => input("goods_state",""),// 商品状态1.正常0下架
'goods_kind_id' => input("goods_kind_id", ""),// 商品种类(1.报单0进货)
'price' => input("price",0),// 商品价格取第一个sku
'market_price' => input("market_price",0),// 市场价格取第一个sku
'cost_price' => input("cost_price",0),// 成本价取第一个sku

View File

@ -239,6 +239,13 @@
<!-- <div class="word-aux">芝麻GO销售方式,多种模式</div>-->
<!-- </div>-->
<!-- </div>-->
<div class="layui-form-item goods_state">
<label class="layui-form-label"><span class="required">*</span>商品种类:</label>
<div class="layui-input-block">
<input type="radio" name="goods_kind_id" value="1" title="报单商品" checked lay-filter="goods_kind_id">
<input type="radio" name="goods_kind_id" value="0" title="进货商品" lay-filter="goods_kind_id">
</div>
</div>
<div class="layui-form-item goods_state">
<label class="layui-form-label"><span class="required">*</span>是否上架:</label>
<div class="layui-input-block">

View File

@ -216,7 +216,13 @@
</div>
{/if}
<div class="layui-form-item goods_state">
<label class="layui-form-label"><span class="required">*</span>商品种类:</label>
<div class="layui-input-block">
<input type="radio" name="goods_kind_id" value="1" title="报单商品" lay-filter="goods_kind_id" {if $goods_info['goods_kind_id'] == 1 }checked{/if}>
<input type="radio" name="goods_kind_id" value="0" title="进货商品" lay-filter="goods_kind_id" {if $goods_info['goods_kind_id'] == 0 }checked{/if}>
</div>
</div>
<div class="layui-form-item goods_state">
<label class="layui-form-label"><span class="required">*</span>是否上架:</label>
<div class="layui-input-block">

View File

@ -190,6 +190,7 @@
<a href="javascript:;" class="multi-line-hiding text-color-sub" title="{{d.goods_name}}" lay-event="preview">{{d.goods_name}}</a>
{/if}
<span class="goods-class-name">{{ d.goods_class_name }}</span>
<span class="goods-class-name">{{ d.goods_kind_name }}</span>
{{# if(d.promotion_addon && d.promotion_addon_list){ }}
<span class="promotion-addon">
{{# for(var i=0;i<d.promotion_addon_list.length;i++){ }}