Bonus.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php namespace Pbenefit\Lib\Item;
  2. use Dever;
  3. # 分红
  4. class Bonus
  5. {
  6. # 获取用户是否可以分红
  7. public function get($uid, $scope, $price, $rule = [])
  8. {
  9. if ($price <= 0) {
  10. return false;
  11. }
  12. $data = Dever::load(\Pbenefit\Lib\User::class)->getValid($uid, 'rebate', $scope);
  13. if ($data) {
  14. $result = ['rule' => $rule, 'buy' => ['name' => '购买立返', 'desc' => []], 'share' => ['name' => '分享可赚', 'desc' => []]];
  15. foreach ($data as $info) {
  16. $rule = Dever::db('pbenefit/rebate_rule')->select(['rebate_id' => $info['id']], ['col' => 'id,value,`condition`,level,score_id']);
  17. foreach ($rule as $k => $v) {
  18. if (!$v['value']) {
  19. continue;
  20. }
  21. if ($v['condition'] && !$this->check($uid, $v['condition'])) {
  22. continue;
  23. }
  24. $v['source_value'] = $v['value'];
  25. $v['value'] = Dever::math('value', $price, $v['value']);
  26. if ($v['value'] > 0) {
  27. $score = Dever::load(\Pscore\Lib\Info::class)->get($v['score_id']);
  28. if (isset($result['rule'][$v['id']])) {
  29. $v['value'] += $result['rule'][$v['id']]['value'];
  30. }
  31. $v['value_text'] = Dever::load(\Pscore\Lib\Info::class)->getText($v['value'], $score);
  32. $v['rebate_id'] = $info['id'];
  33. $v['name'] = $info['name'];
  34. $result['rule'][$v['id']] = $v;
  35. if ($v['level'] == 0) {
  36. # 购买可得
  37. $result['buy']['desc'][$v['id']] = $v['value_text'];
  38. } elseif ($v['level'] == 1) {
  39. # 分享可得
  40. $result['share']['desc'][$v['id']] = $v['value_text'];
  41. }
  42. }
  43. }
  44. }
  45. $result['buy']['desc'] = implode('、', $result['buy']['desc']);
  46. $result['share']['desc'] = implode('、', $result['share']['desc']);
  47. return $result;
  48. }
  49. return false;
  50. }
  51. private function check($uid, $condition)
  52. {
  53. for ($i = 1; $i <= 3; $i++) {
  54. $str = 'child_num_' . $i;
  55. if (strstr($condition, $str)) {
  56. $child = Dever::load(\Invite\Lib\Relation::class)->getChildNum($uid, $i);
  57. $condition = str_replace($str, $child, $condition);
  58. }
  59. }
  60. $eval = '$state = ' . $condition . ';';
  61. @eval($eval);
  62. return $state;
  63. }
  64. # 获取描述信息
  65. public function getDesc($info)
  66. {
  67. $info = Dever::load(\Pbenefit\Lib\Scope::class)->getInfo($info, 'bonus');
  68. $info['type_name'] = Dever::db('pbenefit/bonus')->value('type', $info['type']);
  69. $info['give_source_name'] = Dever::db('pbenefit/bonus')->value('give_source', $info['give_source']);
  70. $info['period_name'] = Dever::db('pbenefit/bonus')->value('period', $info['period']);
  71. if ($info['period'] == 1) {
  72. $info['desc'] = $info['period_name'] . $info['period_day'] . '点';
  73. } else {
  74. $info['desc'] = $info['period_name'] . '1点';
  75. }
  76. $info['desc'] .= ',发放';
  77. $score = Dever::load(\Pscore\Lib\Info::class)->get($info['give_score_id']);
  78. if (!strstr($info['give_value'], '%')) {
  79. $info['value_text'] = Dever::load(\Pscore\Lib\Info::class)->getText($info['give_value'], $score);
  80. $info['desc'] .= $info['value_text'];
  81. $info['tip'] = '';
  82. } else {
  83. if ($info['give_source'] == 1) {
  84. $info['give_source_name'] = '';
  85. }
  86. if ($info['give_level'] == 0) {
  87. $info['give_source_name'] = '本人';
  88. }
  89. if ($info['type'] == 2) {
  90. $holding = Dever::load(\Pscore\Lib\Info::class)->get($info['holding_score_id']);
  91. $info['type_name'] .= $holding['name'];
  92. }
  93. $money = '(转人民币后的总额)';
  94. $info['desc'] .= $info['give_source_name'] . $info['type_name'] . '总额'.$money.'的' . $info['give_value'] . $score['name'];
  95. }
  96. $info['desc'] = Dever::load(\Pbenefit\Lib\Item::class)->getPeriodDesc($info);
  97. if (isset($info['config_day'])) {
  98. $info['tname'] = true;
  99. }
  100. return $info;
  101. }
  102. }