Task.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <?php
  2. /**
  3. *
  4. * @copyright ©2020 点小铺
  5. * @author hanj
  6. * @link: https://dyuit.com
  7. * Created by VSCode
  8. */
  9. namespace app\task\behavior\bargain;
  10. use think\Cache;
  11. use app\task\model\bargain\Task as TaskModel;
  12. use app\common\library\helper;
  13. /**
  14. * 砍价任务行为管理
  15. * Class Task
  16. * @package app\task\behavior\bargain
  17. */
  18. class Task
  19. {
  20. /* @var TaskModel $model */
  21. private $model;
  22. /**
  23. * 执行函数
  24. * @param $model
  25. * @return bool
  26. * @throws \think\db\exception\DataNotFoundException
  27. * @throws \think\db\exception\ModelNotFoundException
  28. * @throws \think\exception\DbException
  29. */
  30. public function run($model)
  31. {
  32. if (!$model instanceof TaskModel) {
  33. return new TaskModel and false;
  34. }
  35. $this->model = $model;
  36. if (!$model::$wxapp_id) {
  37. return false;
  38. }
  39. if (!Cache::has('__task_space__bargain_task__')) {
  40. // 将已过期的砍价任务标记为已结束
  41. $this->onSetIsEnd();
  42. Cache::set('__task_space__bargain_task__', time(), 10);
  43. }
  44. return true;
  45. }
  46. /**
  47. * 将已过期的砍价任务标记为已结束
  48. * @return bool
  49. * @throws \think\db\exception\DataNotFoundException
  50. * @throws \think\db\exception\ModelNotFoundException
  51. * @throws \think\exception\DbException
  52. */
  53. private function onSetIsEnd()
  54. {
  55. // 获取已过期但未结束的砍价任务
  56. $list = $this->model->getEndList();
  57. $taskIds = helper::getArrayColumn($list, 'task_id');
  58. // 将砍价任务标记为已结束(批量)
  59. !empty($taskIds) && $this->model->setIsEnd($taskIds);
  60. // 记录日志
  61. $this->dologs('close', [
  62. 'orderIds' => json_encode($taskIds),
  63. ]);
  64. return true;
  65. }
  66. /**
  67. * 记录日志
  68. * @param $method
  69. * @param array $params
  70. * @return bool|int
  71. */
  72. private function dologs($method, $params = [])
  73. {
  74. $value = 'behavior bargain Task --' . $method;
  75. foreach ($params as $key => $val)
  76. $value .= ' --' . $key . ' ' . $val;
  77. return log_write($value);
  78. }
  79. }