ServeOrderDao.php 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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\dao\system\serve;
  12. use app\common\dao\BaseDao;
  13. use app\common\model\system\serve\ServeOrder;
  14. class ServeOrderDao extends BaseDao
  15. {
  16. protected function getModel(): string
  17. {
  18. return ServeOrder::class;
  19. }
  20. /**
  21. * 根据条件搜索服务订单。
  22. *
  23. * 该方法通过动态构建查询条件来搜索服务订单。支持的搜索条件包括关键字、交易者类型、类别ID、类型ID、删除状态、订单类型、日期、商家ID和订单状态。
  24. * 这种灵活的查询机制使得可以根据不同的需求组合各种查询条件,以获取所需的服务订单数据。
  25. *
  26. * @param array $where 搜索条件数组,包含各种可能的查询条件。
  27. * @return \Illuminate\Database\Eloquent\Builder 查询构建器对象,可用于进一步的查询操作或数据获取。
  28. */
  29. public function search($where)
  30. {
  31. // 初始化服务订单查询构建器,并设置初始条件为存在商家关联数据。
  32. $query = ServeOrder::hasWhere('merchant', function($query) use($where) {
  33. // 当关键字存在时,添加模糊搜索条件。
  34. $query->when(isset($where['keyword']) && $where['keyword'] !== '', function ($query) use($where) {
  35. $query->whereLike('mer_keyword|real_name|mer_name', "%{$where['keyword']}%");
  36. });
  37. // 当交易者类型条件存在时,添加对应查询条件。
  38. $query->when(isset($where['is_trader']) && $where['is_trader'] !== '', function ($query) use($where) {
  39. $query->where('is_trader', $where['is_trader']);
  40. });
  41. // 当类别ID条件存在时,添加对应查询条件。
  42. $query->when(isset($where['category_id']) && $where['category_id'] !== '', function ($query) use($where) {
  43. $query->where('category_id', $where['category_id']);
  44. });
  45. // 当类型ID条件存在时,添加对应查询条件。
  46. $query->when(isset($where['type_id']) && $where['type_id'] !== '', function ($query) use($where) {
  47. $query->where('type_id', $where['type_id']);
  48. });
  49. // 永久删除的订单不参与查询。
  50. $query->where('is_del', 0);
  51. });
  52. // 当订单类型条件存在时,添加对应查询条件。
  53. $query->when(isset($where['type']) && $where['type'] !== '', function ($query) use($where) {
  54. $query->where('ServeOrder.type', $where['type']);
  55. });
  56. // 当日期条件存在时,添加对应查询条件。
  57. $query->when(isset($where['date']) && $where['date'] !== '', function ($query) use($where) {
  58. getModelTime($query, $where['date'], 'ServeOrder.create_time');
  59. });
  60. // 当商家ID条件存在时,添加对应查询条件。
  61. $query->when(isset($where['mer_id']) && $where['mer_id'] !== '', function ($query) use($where) {
  62. $query->where('ServeOrder.mer_id', $where['mer_id']);
  63. });
  64. // 当订单状态条件存在时,添加对应查询条件。
  65. $query->when(isset($where['status']) && $where['status'] !== '', function ($query) use($where) {
  66. $query->where('ServeOrder.status', $where['status']);
  67. });
  68. // 当删除状态条件存在时,添加对应查询条件。
  69. $query->when(isset($where['is_del']) && $where['is_del'] !== '', function ($query) use($where) {
  70. $query->where('ServeOrder.is_del', $where['is_del']);
  71. });
  72. // 返回构建好的查询条件,可用于进一步操作或数据获取。
  73. return $query;
  74. }
  75. }