IntegralJob.php 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace app\jobs\integral;
  3. use app\services\user\UserAwardIntegralServices;
  4. use crmeb\basic\BaseJobs;
  5. use crmeb\traits\QueueTrait;
  6. use think\facade\Log;
  7. /**
  8. * 订单消息队列
  9. * Class OrderJob
  10. * @package app\jobs
  11. */
  12. class IntegralJob extends BaseJobs
  13. {
  14. use QueueTrait;
  15. public function dealOrderIntegral($order)
  16. {
  17. /** @var UserAwardIntegralServices $awardIntegralService */
  18. $awardIntegralService = app()->make(UserAwardIntegralServices::class);
  19. $integral_price = $awardIntegralService->getPrice($order['id']);
  20. $total_price = $order['total_price'];
  21. try {
  22. //添加静态积分
  23. $static_integral_ratio = sys_config('static_integral_ratio', 0);
  24. $give_static_integral = bcdiv(bcmul($total_price, $static_integral_ratio), 100, 2);
  25. if ($give_static_integral > 0) {
  26. $rate = sys_config('static_integral_rate', 3);
  27. $extract_sum = bcmul($total_price, $rate, 2);
  28. $mark = '购买商品,获得静态积分';
  29. $awardIntegralService->incIntegral($order['uid'], $integral_price, $give_static_integral, $total_price, 0, $extract_sum, $order['id'], $mark);
  30. }
  31. //添加奖池
  32. $lake_ratio = sys_config('lake_ratio', 0);
  33. $add_lake = bcdiv(bcmul($total_price, $lake_ratio), 100, 2);
  34. if ($add_lake > 0) {
  35. $mark = '用户' . $order['uid'] . '购买商品,添加资金池';
  36. $awardIntegralService->addLake($add_lake, $order['id'], $mark);
  37. }
  38. //TODO 加动态积分
  39. } catch (\Throwable $e) {
  40. Log::error('处理积分奖池失败,失败原因:' . $e->getMessage());
  41. }
  42. }
  43. /**
  44. * 减积分
  45. * @param int $uid 用户
  46. * @param float $static 静态积分
  47. * @param float $action 动态积分
  48. * @param float $cash 资金池
  49. * @param int $link_id 关联ID
  50. * @param string $mark 备注
  51. */
  52. public function decIntegral(int $uid, float $static, float $action, float $cash, int $link_id = 0, string $mark = '')
  53. {
  54. }
  55. }