|
@@ -4,7 +4,7 @@ use Place;
|
|
|
# 返利
|
|
|
class Rebate
|
|
|
{
|
|
|
- # 获取返利信息
|
|
|
+ # 根据用户获取返利信息
|
|
|
public function get($uid, $scope, $price, $rule = [])
|
|
|
{
|
|
|
if ($price <= 0) {
|
|
@@ -14,25 +14,74 @@ class Rebate
|
|
|
if ($data) {
|
|
|
$result = ['rule' => $rule, 'buy' => ['name' => '购买立返', 'desc' => []], 'share' => ['name' => '分享可赚', 'desc' => []]];
|
|
|
foreach ($data as $info) {
|
|
|
- $rule = Dever::db('pbenefit/rebate_rule')->select(['rebate_id' => $info['id']], ['col' => 'id,value,`condition`,level,score_id']);
|
|
|
- foreach ($rule as $k => $v) {
|
|
|
- if (!$v['value']) {
|
|
|
- continue;
|
|
|
+ $rebate = Dever::db('pbenefit/rebate_rule')->select(['rebate_id' => $info['id']], ['col' => 'id,value,`condition`,level,score_id']);
|
|
|
+ $this->getResult($uid, $rebate, $info, $price, $result);
|
|
|
+ }
|
|
|
+ $result['buy']['desc'] = implode('、', $result['buy']['desc']);
|
|
|
+ $result['share']['desc'] = implode('、', $result['share']['desc']);
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ # 支付时,获取分账信息
|
|
|
+ public function getData($uid, $scope, $price, $rule = [])
|
|
|
+ {
|
|
|
+ # 获取该用户的上级信息,三层
|
|
|
+ $parent = Dever::load(\Invite\Lib\Relation::class)->getParentAll($uid, ['<=', 3]);
|
|
|
+ $user = [];
|
|
|
+ $user[] = $uid;
|
|
|
+ if ($parent) {
|
|
|
+ foreach ($parent as $v) {
|
|
|
+ $user[] = $v['uid'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $data = Dever::load(\Pbenefit\Lib\Item::class)->getList('rebate', $scope);
|
|
|
+ if ($data) {
|
|
|
+ $result = ['rule' => $rule];
|
|
|
+ foreach ($data as $info) {
|
|
|
+ foreach ($user as $k1 => $v1) {
|
|
|
+ $check = Dever::load(\Pbenefit\Lib\User::class)->getValidInfo($v1, 'rebate', $info['id']);
|
|
|
+ if ($check) {
|
|
|
+ $rebate = Dever::db('pbenefit/rebate_rule')->select(['rebate_id' => $info['id'], 'level' => $k1], ['col' => 'id,value,`condition`,level,score_id']);
|
|
|
+ $info['source_type'] = $check[0];
|
|
|
+ $info['source_id'] = $check[1];
|
|
|
+ $this->getResult($v1, $rebate, $info, $price, $result);
|
|
|
}
|
|
|
- if ($v['condition'] && !$this->check($uid, $v['condition'])) {
|
|
|
- continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function getResult($uid, $rebate, $info, $price, &$result)
|
|
|
+ {
|
|
|
+ if ($rebate) {
|
|
|
+ foreach ($rebate as $k => $v) {
|
|
|
+ if (!$v['value']) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if ($v['condition'] && !$this->check($uid, $v['condition'])) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $v['source_type'] = $info['source_type'];
|
|
|
+ $v['source_id'] = $info['source_id'];
|
|
|
+ $v['source_value'] = $v['value'];
|
|
|
+ $v['value'] = Dever::math('value', $price, $v['value']);
|
|
|
+ if ($v['value'] > 0) {
|
|
|
+ $score = Dever::load(\Pscore\Lib\Info::class)->get($v['score_id']);
|
|
|
+ if (isset($result['rule'][$v['id']])) {
|
|
|
+ $v['value'] += $result['rule'][$v['id']]['value'];
|
|
|
}
|
|
|
- $v['source_value'] = $v['value'];
|
|
|
- $v['value'] = Dever::math('value', $price, $v['value']);
|
|
|
- if ($v['value'] > 0) {
|
|
|
- $score = Dever::load(\Pscore\Lib\Info::class)->get($v['score_id']);
|
|
|
- if (isset($result['rule'][$v['id']])) {
|
|
|
- $v['value'] += $result['rule'][$v['id']]['value'];
|
|
|
- }
|
|
|
- $v['value_text'] = Dever::load(\Pscore\Lib\Info::class)->getText($v['value'], $score);
|
|
|
- $v['rebate_id'] = $info['id'];
|
|
|
+ $v['value_text'] = Dever::load(\Pscore\Lib\Info::class)->getText($v['value'], $score);
|
|
|
+ $v['rebate_id'] = $info['id'];
|
|
|
+ if ($v['level'] > 0) {
|
|
|
+ $v['name'] = '团队' . $info['name'];
|
|
|
+ } else {
|
|
|
$v['name'] = $info['name'];
|
|
|
- $result['rule'][$v['id']] = $v;
|
|
|
+ }
|
|
|
+ if (isset($result['buy'])) {
|
|
|
if ($v['level'] == 0) {
|
|
|
# 购买可得
|
|
|
$result['buy']['desc'][$v['id']] = $v['value_text'];
|
|
@@ -40,14 +89,13 @@ class Rebate
|
|
|
# 分享可得
|
|
|
$result['share']['desc'][$v['id']] = $v['value_text'];
|
|
|
}
|
|
|
+ } else {
|
|
|
+ $v['uid'] = $uid;
|
|
|
}
|
|
|
+ $result['rule'][$v['id']] = $v;
|
|
|
}
|
|
|
}
|
|
|
- $result['buy']['desc'] = implode('、', $result['buy']['desc']);
|
|
|
- $result['share']['desc'] = implode('、', $result['share']['desc']);
|
|
|
- return $result;
|
|
|
}
|
|
|
- return false;
|
|
|
}
|
|
|
|
|
|
private function check($uid, $condition)
|