TaskService.php 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. namespace app\extra\service\blue;
  3. use app\extra\basic\Service;
  4. use app\model\blue\BlueTask;
  5. class TaskService extends Service
  6. {
  7. /**
  8. * 列表
  9. * @param array $param
  10. * @param string $field
  11. */
  12. public function getList(array $param = [],string $field = "")
  13. {
  14. $this->mode = new BlueTask();
  15. return $this->searchVal($param,$this->searchFilter($param))->append(['progress'])->withAttr(['progress' => function ($data,$resp) {
  16. if ($resp['sign_number'] == 0) return $resp['sign_number'];
  17. return ceil($resp['sign_number']/$resp['need_number'] * 100);
  18. }])->with(['categoryJoin' => function ($query) {
  19. $query->field("sign,name,icon");
  20. },'levelJoin' => function($query){
  21. $query->field("id,name,level");
  22. }])->field($field)->paginate([
  23. "list_rows" => $param['pageSize'],
  24. "page" => $param['page']
  25. ]);
  26. }
  27. public function getHomeList(array $param = [])
  28. {
  29. $this->mode = new BlueTask();
  30. return $this->searchVal($param,$this->searchFilter($param))->append(['progress','total_budget_format'])->withAttr(['progress' => function ($data,$resp) {
  31. if ($resp['sign_number'] == 0) return $resp['sign_number'];
  32. return ceil($resp['sign_number']/$resp['need_number'] * 100);
  33. },'total_budget_format' => function($data,$resp) {
  34. return formatMoneyKw($resp['total_budget']);
  35. }])->with(['categoryJoin' => function ($query) {
  36. $query->field("sign,name,icon,small_icon");
  37. },'levelJoin' => function($query){
  38. $query->field("id,name,level");
  39. }])->field("id,title,job_id,product_cover_url,total_budget,sign_number,need_number,category,level,sys_level,product_price")->paginate([
  40. "list_rows" => $param['pageSize'],
  41. "page" => $param['page']
  42. ]);
  43. }
  44. /**
  45. * 任务详情
  46. * @param array $param
  47. */
  48. public function getTaskDetail(array $param = [])
  49. {
  50. $this->mode = new BlueTask();
  51. return $this->searchVal($param,$this->searchFilter($param))->append(['progress','total_budget_format','price_format'])->withAttr(['progress' => function ($data,$resp) {
  52. if ($resp['sign_number'] == 0) return $resp['sign_number'];
  53. return ceil($resp['sign_number']/$resp['need_number'] * 100);
  54. },'total_budget_format' => function($data,$resp) {
  55. return formatMoneyKw($resp['total_budget']/100);
  56. },'price_format' => function($data,$resp){
  57. return formatMoneyKw($resp['product_price']/100);
  58. }])->with(['categoryJoin' => function ($query) {
  59. $query->field("sign,name,icon,small_icon");
  60. },'levelJoin' => function($query){
  61. $query->field("id,name,level");
  62. }])->find();
  63. }
  64. /**
  65. *
  66. * @param array $param
  67. * @return array
  68. */
  69. public function searchFilter(array $param = []): array
  70. {
  71. $filter = [];
  72. !empty($param['id']) && $filter[] = ["id", '=', $param['id']];
  73. !empty($param['task_sn']) && $filter[] = ["job_id", '=', $param['task_sn']];
  74. !empty($param['type']) && $filter[] = ["type", '=', $param['type']];
  75. !empty($param['category']) && $filter[] = ["category", '=', $param['category']];
  76. !empty($param['status']) && $filter[] = ["status", '=', $param['status']];
  77. !empty($param['name']) && $filter[] = ["name", 'like', "%{$param['name']}%"];
  78. return $filter;
  79. }
  80. }