Achievement.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace app\models\user;
  3. use app\models\user\User;
  4. use app\models\user\UserBill;
  5. use crmeb\basic\BaseModel;
  6. class Achievement extends BaseModel
  7. {
  8. public static function do_Fhllirun()
  9. {
  10. $send = [];
  11. $uids = User::select();
  12. $group_award = sys_data('achievement_award');
  13. foreach ($group_award as $key => $row) {
  14. $award[$key] = $row['award'];
  15. }
  16. foreach ($uids as $v) {
  17. $award = 0;
  18. foreach ($group_award as $value) {
  19. $sub = User::where('spread_uid', $v['uid'])->column('uid');
  20. $achievements = self::where('uid', 'in', $sub)->field('uid,sum(achievement) as sum')->group('uid')->select();
  21. $count = 0;
  22. foreach ($achievements as $vv) {
  23. if ($vv['sum'] >= $value['sub_achievement']) {
  24. $count++;
  25. }
  26. }
  27. if ($count >= $value['sub_member']) {
  28. $award = $value['award'];
  29. break;
  30. }
  31. }
  32. if ($award <= 0) continue;
  33. $achievement = self::where('do', 0)->where('uid', $v['uid'])->sum('achievement');
  34. $award = bcmul($achievement, $award, 2);
  35. if (isset($send[$v['uid']]))
  36. $send[$v['uid']] += (float)$award;
  37. else {
  38. $send[$v['uid']] = (float)$award;
  39. }
  40. $spread = User::where('uid', $v['spread_uid'])->find();
  41. if (isset($send[$spread['uid']]))
  42. $send[$spread['uid']] -= (float)$award;
  43. else {
  44. $send[$spread['uid']] = -(float)$award;
  45. }
  46. }
  47. foreach ($send as $k => $v) {
  48. $achievement = self::where('do', 0)->where('uid', $k)->where('from_uid', '<>', $k)->sum('achievement');
  49. if ($v > 0) {
  50. $spreadUserInfo = User::getUserInfo($k);
  51. User::where('uid', $k)->inc('brokerage_price', $v)->update();
  52. $balance = bcadd($spreadUserInfo['brokerage_price'], $v, 2);
  53. $mark = '本月新增业绩' . $achievement . '台,恭喜获得当月新增业绩奖金' . $v;
  54. UserBill::income('获得当月新增业绩奖金', $k, 'now_money', 'brokerage', $v, 0, $balance, $mark);
  55. }
  56. }
  57. self::where('do', 0)->update(['do' => 1]);
  58. return true;
  59. }
  60. }