Goods.php
3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
namespace addons\shopro\model\commission;
use think\Model;
use addons\shopro\model\Goods as GoodsModel;
class Goods extends Model
{
// 表名
protected $name = 'shopro_commission_goods';
// 自动写入时间戳字段
protected $autoWriteTimestamp = false;
// 追加属性
protected $append = [
];
private $agent = null;
/**
* 获取商品列表
*
* @return array
*/
public static function getList($params) {
$user = \addons\shopro\model\User::info();
$agent = Agent::get($user->id);
extract($params);
$commissionGoods = self::with('goods')->paginate($per_page ?? 10);
$commissionGoodsData = $commissionGoods->items();
$newGoods = [];
foreach ($commissionGoodsData as $key => $commission) {
$goods = $commission['goods'];
if ($goods) {
// 商品存在才处理,会导致有被删除商品的部分页数据不够 10 条
$commission = $commission->toArray();
unset($commission['goods']);
$goods['commission'] = $commission;
$newGoods[] = $goods;
}
}
$actNewGoods = [];
if ($newGoods) {
$collection = collection($newGoods);
$actNewGoods = $collection->hidden(GoodsModel::$list_hidden);
$actNewGoods->load('skuPrice'); // 延迟预加载
foreach ($actNewGoods as $key => $g) {
$actNewGoods[$key] = GoodsModel::operActivitySkuPrice($g, $g['sku_price']);
// 计算预估佣金
$actNewGoods[$key]['commission_money'] = self::getCommissionMoney($user, $agent, $g);
}
}
$commissionGoods = $commissionGoods->toArray();
$commissionGoods['data'] = $actNewGoods;
return $commissionGoods;
}
// 分销获取预估佣金
private static function getCommissionMoney($user, $agent, $goods)
{
// 实例化 commission goods
$library = new \addons\shopro\library\commission\Goods($goods['id']);
// 获取当前分销商
if ($agent) {
// 获取佣金规则
$rules = $library->getCommissionLevelRule($agent->level);
$firstSkuPrice = $goods['sku_price'][0] ?? [];
$amount = $firstSkuPrice['price'] ?? 0;
// 获取预估佣金
$commission = $library->caculateGoodsCommission($rules, $amount);
}
return $commission ?? 0;
}
public function getCommissionRulesAttr($value, $data)
{
//默认规则
if($data['self_rules'] == 0) {
return '';
}
return json_decode($value, true);
}
public function getCommissionConfigAttr($value, $data)
{
//默认规则
if($data['self_rules'] !== 0 && !empty($value)) {
return json_decode($value, true);
}
return null;
}
public function goods()
{
return $this->belongsTo('addons\shopro\model\Goods', 'goods_id', 'id');
}
}