AwardIntegralPriceRepository.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2024 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\common\repositories\user;
  12. use app\common\dao\user\AwardIntegralPriceDao;
  13. use app\common\model\store\order\StoreOrder;
  14. use app\common\model\user\AwardIntegralPrice;
  15. use app\common\repositories\BaseRepository;
  16. class AwardIntegralPriceRepository extends BaseRepository
  17. {
  18. /**
  19. * @var AwardIntegralPriceDao
  20. */
  21. protected $dao;
  22. /**
  23. * UserSignRepository constructor.
  24. * @param AwardIntegralPriceDao $dao
  25. */
  26. public function __construct(AwardIntegralPriceDao $dao)
  27. {
  28. $this->dao = $dao;
  29. }
  30. public function awardIntegralPrice($day = '')
  31. {
  32. if (!$day) {
  33. $day = date('Y-m-d');
  34. }
  35. if ($info = $this->dao->search(['day' => $day])->find()) {
  36. return $info->toArray();
  37. }
  38. @file_put_contents('yesterday.txt', AwardIntegralPrice::getLastSql() . PHP_EOL, FILE_APPEND);
  39. $yesterday_price = $this->dao->search(['day' => date('Y-m-d', strtotime('-1 day', strtotime($day)))])->find();
  40. if ($yesterday_price) {
  41. $basePrice = $yesterday_price->price;
  42. } else {
  43. $basePrice = systemConfig('award_integral_price', 0.1);
  44. }
  45. //todo 业绩
  46. $achievement = StoreOrder::where('paid', 1)->whereTime('add_time', $day)->where('refund_status', 0)
  47. ->where('is_del', 0)->where('is_system_del', 0)
  48. ->where('status', '>=', 0)
  49. ->sum('total_price');
  50. $achievement = bcmul((string)$achievement, '0.05', 2);
  51. /** @var UserExtractRepository $extractRepositories */
  52. $extractRepositories = app()->make(UserExtractRepository::class);
  53. $commission = $extractRepositories->search(['status' => 1])->whereTime('check_time', $day)->sum('commission');
  54. $userService = app()->make(UserRepository::class);
  55. $num = $userService->search(['status' => 1])->sum('award_integral');
  56. $sum_achievement = bcadd((string)$commission, (string)$achievement, 2);
  57. $rise = $num > 0 ? bcdiv($sum_achievement, $num, 3) : 0;
  58. $price = bcadd($rise, $basePrice, 3);
  59. return compact('basePrice', 'price', 'rise', 'achievement', 'commission', 'num');
  60. }
  61. public function setPrice($day, $price, $commission, $achievement, $num)
  62. {
  63. $add_time = time();
  64. return $this->dao->create(compact('day', 'price', 'commission', 'achievement', 'num', 'add_time'));
  65. }
  66. }