StoreSeckillActiveDao.php 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author Qinii
  6. * @day 2020-07-30
  7. *
  8. *
  9. */
  10. namespace app\common\dao\store;
  11. use app\common\model\store\StoreSeckillActive;
  12. use app\common\dao\BaseDao;
  13. class StoreSeckillActiveDao extends BaseDao
  14. {
  15. /**
  16. * TODO
  17. * @return string
  18. * @author Qinii
  19. * @day 2020-07-30
  20. */
  21. protected function getModel(): string
  22. {
  23. return StoreSeckillActive::class;
  24. }
  25. /**
  26. * TODO 搜索
  27. * @param array $where
  28. * @return mixed
  29. * @author Qinii
  30. * @day 2020-08-05
  31. */
  32. public function search(array $where)
  33. {
  34. $query = $this->getModel()::getDB()
  35. ->when(isset($where['status']) && $where['status'] !== '',function($query) use($where){
  36. $query->where('status',$where['status']);
  37. })
  38. ->when(isset($where['start_day']) && $where['start_day'] !== '',function($query) use($where){
  39. $query->whereTime('start_day','<=',$where['start_day']);
  40. })
  41. ->when(isset($where['end_day']) && $where['end_day'] !== '',function($query) use($where){
  42. $query->whereTime('end_day','>',$where['end_day']);
  43. })
  44. ->when(isset($where['start_time']) && $where['start_time'] !== '',function($query) use($where){
  45. $query->whereTime('start_time','<=',$where['start_time']);
  46. })
  47. ->when(isset($where['end_time']) && $where['end_time'] !== '',function($query) use($where){
  48. $query ->whereTime('end_time','>',$where['end_time']);
  49. })
  50. ->when(isset($where['product_id']) && $where['product_id'] !== '',function($query) use($where){
  51. $query->where('product_id',$where['product_id']);
  52. })
  53. ->when(isset($where['day']) && $where['day'] !== '',function($query) use($where){
  54. $query->whereTime('start_day','<=',$where['day'])->whereTime('end_day','>',$where['day']);
  55. })
  56. ->when(isset($where['time']) && $where['time'] !== '',function($query) use($where){
  57. $query->whereTime('start_time','<=',$where['time'])->whereTime('end_time','>',$where['time']);
  58. });
  59. $query->order('start_time DESC');
  60. return $query;
  61. }
  62. /**
  63. * TODO
  64. * @param int $productId
  65. * @param array $data
  66. * @return mixed
  67. * @author Qinii
  68. * @day 2020-08-11
  69. */
  70. public function updateByProduct(int $productId,array $data)
  71. {
  72. return $this->getModel()::getDB()->where('product_id',$productId)->update($data);
  73. }
  74. /**
  75. * TODO
  76. * @author Qinii
  77. * @day 2020-08-11
  78. */
  79. public function valActiveStatus()
  80. {
  81. $day = date('Y-m-d',time());
  82. $_h = date('H',time());
  83. $id = $this->getModel()::getDB()->where('status',1)
  84. ->whereTime('end_day','<=',$day)
  85. ->whereTime('end_time','<',$_h)
  86. ->column('seckill_active_id');
  87. $this->getModel()::getDB()->where('seckill_active_id','in',$id)->update(['status' => -1]);
  88. }
  89. /**
  90. * TODO 不同状态商品
  91. * @param $status
  92. * @return mixed
  93. * @author Qinii
  94. * @day 2020-08-19
  95. */
  96. public function getStatus($status)
  97. {
  98. $day = date('Y-m-d',time());
  99. $_h = date('H',time());
  100. $query = $this->getModel()::getDB();
  101. if($status == 1) //未开始
  102. $query->where('status','<>',-1)->where(function($query)use ($day,$_h){
  103. $query->whereTime('start_day','>',$day)->whereOr(function($query)use($day,$_h){
  104. $query->whereTime('start_day','<=',$day)->where('start_time','>',$_h);
  105. });
  106. });
  107. if($status == 2)//进行中
  108. $query->where('status',1)
  109. ->whereTime('start_day','<=',$day)->whereTime('end_day','>',$day)
  110. ->where('start_time','<=',$_h)->where('end_time','>',$_h);
  111. if($status == 3) //结束
  112. $query->where('status',-1)->whereOr(function($query)use($day,$_h){
  113. $query->whereTime('end_day','<',$day)
  114. ->whereOr(function($query)use($day,$_h){
  115. $query->whereTime('start_day','<=',$day)->whereTime('end_day','>=',$day)->where('end_time','<=',$_h);
  116. });
  117. });
  118. return $query;
  119. }
  120. }