123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- <?php namespace Pbenefit\Lib\Item;
- use Dever;
- # 分红
- class Bonus
- {
- # 获取用户是否可以分红
- public function get($uid, $scope, $price, $rule = [])
- {
- if ($price <= 0) {
- return false;
- }
- $data = Dever::load(\Pbenefit\Lib\User::class)->getValid($uid, 'rebate', $scope);
- 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;
- }
- if ($v['condition'] && !$this->check($uid, $v['condition'])) {
- continue;
- }
- $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['name'] = $info['name'];
- $result['rule'][$v['id']] = $v;
- if ($v['level'] == 0) {
- # 购买可得
- $result['buy']['desc'][$v['id']] = $v['value_text'];
- } elseif ($v['level'] == 1) {
- # 分享可得
- $result['share']['desc'][$v['id']] = $v['value_text'];
- }
- }
- }
- }
- $result['buy']['desc'] = implode('、', $result['buy']['desc']);
- $result['share']['desc'] = implode('、', $result['share']['desc']);
- return $result;
- }
- return false;
- }
- private function check($uid, $condition)
- {
- for ($i = 1; $i <= 3; $i++) {
- $str = 'child_num_' . $i;
- if (strstr($condition, $str)) {
- $child = Dever::load(\Invite\Lib\Relation::class)->getChildNum($uid, $i);
- $condition = str_replace($str, $child, $condition);
- }
- }
- $eval = '$state = ' . $condition . ';';
- @eval($eval);
- return $state;
- }
- # 获取描述信息
- public function getDesc($info)
- {
- $info = Dever::load(\Pbenefit\Lib\Scope::class)->getInfo($info, 'bonus');
- $info['type_name'] = Dever::db('pbenefit/bonus')->value('type', $info['type']);
- $info['give_source_name'] = Dever::db('pbenefit/bonus')->value('give_source', $info['give_source']);
- $info['period_name'] = Dever::db('pbenefit/bonus')->value('period', $info['period']);
- if ($info['period'] == 1) {
- $info['desc'] = $info['period_name'] . $info['period_day'] . '点';
- } else {
- $info['desc'] = $info['period_name'] . '1点';
- }
- $info['desc'] .= ',发放';
- $score = Dever::load(\Pscore\Lib\Info::class)->get($info['give_score_id']);
- if (!strstr($info['give_value'], '%')) {
- $info['value_text'] = Dever::load(\Pscore\Lib\Info::class)->getText($info['give_value'], $score);
- $info['desc'] .= $info['value_text'];
- $info['tip'] = '';
- } else {
- if ($info['give_source'] == 1) {
- $info['give_source_name'] = '';
- }
- if ($info['give_level'] == 0) {
- $info['give_source_name'] = '本人';
- }
- if ($info['type'] == 2) {
- $holding = Dever::load(\Pscore\Lib\Info::class)->get($info['holding_score_id']);
- $info['type_name'] .= $holding['name'];
- }
- $money = '(转人民币后的总额)';
- $info['desc'] .= $info['give_source_name'] . $info['type_name'] . '总额'.$money.'的' . $info['give_value'] . $score['name'];
- }
- $info['desc'] = Dever::load(\Pbenefit\Lib\Item::class)->getPeriodDesc($info);
- if (isset($info['config_day'])) {
- $info['tname'] = true;
- }
- return $info;
- }
- }
|