StoreSeckillActiveDao.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <?php
  2. namespace app\common\dao\store;
  3. use app\common\model\store\StoreSeckillActive;
  4. use app\common\dao\BaseDao;
  5. use app\common\repositories\store\product\SpuRepository;
  6. class StoreSeckillActiveDao extends BaseDao
  7. {
  8. /**
  9. * TODO
  10. * @return string
  11. * @author Qinii
  12. * @day 2020-07-30
  13. */
  14. protected function getModel(): string
  15. {
  16. return StoreSeckillActive::class;
  17. }
  18. /**
  19. * TODO 搜索
  20. * @param array $where
  21. * @return mixed
  22. * @author Qinii
  23. * @day 2020-08-05
  24. */
  25. public function search(array $where)
  26. {
  27. $query = $this->getModel()::getDB()
  28. ->when(isset($where['status']) && $where['status'] !== '',function($query) use($where){
  29. $query->where('status',$where['status']);
  30. })
  31. ->when(isset($where['start_day']) && $where['start_day'] !== '',function($query) use($where){
  32. $query->whereTime('start_day','<=',$where['start_day']);
  33. })
  34. ->when(isset($where['end_day']) && $where['end_day'] !== '',function($query) use($where){
  35. $query->whereTime('end_day','>',$where['end_day']);
  36. })
  37. ->when(isset($where['start_time']) && $where['start_time'] !== '',function($query) use($where){
  38. $query->whereTime('start_time','<=',$where['start_time']);
  39. })
  40. ->when(isset($where['end_time']) && $where['end_time'] !== '',function($query) use($where){
  41. $query ->whereTime('end_time','>',$where['end_time']);
  42. })
  43. ->when(isset($where['product_id']) && $where['product_id'] !== '',function($query) use($where){
  44. $query->where('product_id',$where['product_id']);
  45. })
  46. ->when(isset($where['day']) && $where['day'] !== '',function($query) use($where){
  47. $query->whereTime('start_day','<=',$where['day'])->whereTime('end_day','>',$where['day']);
  48. })
  49. ->when(isset($where['time']) && $where['time'] !== '',function($query) use($where){
  50. $query->whereTime('start_time','<=',$where['time'])->whereTime('end_time','>',$where['time']);
  51. });
  52. $query->order('start_time DESC');
  53. return $query;
  54. }
  55. /**
  56. * TODO
  57. * @param int $productId
  58. * @param array $data
  59. * @return mixed
  60. * @author Qinii
  61. * @day 2020-08-11
  62. */
  63. public function updateByProduct(int $productId,array $data)
  64. {
  65. return $this->getModel()::getDB()->where('product_id',$productId)->update($data);
  66. }
  67. /**
  68. * TODO
  69. * @author Qinii
  70. * @day 2020-08-11
  71. */
  72. public function valActiveStatus()
  73. {
  74. $day = date('Y-m-d',time());
  75. $_h = date('H',time());
  76. $id = $this->getModel()::getDB()->where('status',1)
  77. ->whereTime('end_day','<=',$day)
  78. ->whereTime('end_time','<',$_h)
  79. ->column('seckill_active_id');
  80. if($id) {
  81. $this->getModel()::getDB()->where('seckill_active_id', 'in', $id)->update(['status' => -1]);
  82. $where = [
  83. 'product_type' => 1,
  84. 'activity_ids' => $id
  85. ];
  86. app()->make(SpuRepository::class)->getSearch($where)->update(['status' => 0]);
  87. }
  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. }