MsActivityGood.php 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\common\model\ms;
  4. use app\common\model\Goods;
  5. use app\common\model\GoodsSku;
  6. use app\common\model\BaseModel;
  7. /**
  8. * 活动中心 ▸ 秒杀活动商品
  9. * Class Ad
  10. * @package app\common\model
  11. */
  12. class MsActivityGood extends BaseModel
  13. {
  14. protected $name = 'ms_activity_goods';
  15. protected $append = ['status'];
  16. //商品状态 即将开始或已结束
  17. public function getStatusAttr() {
  18. $now = date("Y-m-d H:i:s",time());
  19. if ($now < $this->start_time) {
  20. $d = Date("d",time());
  21. // 2022-01-01 15:00:00;
  22. if($d==substr($this->start_time,8,2)){
  23. return [1,substr($this->start_time,11,5).'开始秒杀'];
  24. }else{
  25. return [2,'即将开始'];
  26. }
  27. }
  28. if ($now > $this->end_time) {
  29. return [3,'秒杀结束'];
  30. }
  31. if($now>$this->start_time&&$now<$this->end_time){
  32. return [4,'秒杀中'];
  33. }
  34. return [0,''];
  35. }
  36. /**
  37. * 一对多关联商品表
  38. */
  39. public function activity(){
  40. return $this->belongsTo('MsActivity', 'id','activity_id');
  41. }
  42. public function add($activity_id, $data){
  43. // 先删除全部
  44. static::deleteAll(['ms_activity_id' => $activity_id]);
  45. if (!empty($data)) {
  46. // 添加
  47. $dataset = [];
  48. foreach ($data as $item) {
  49. // 商品信息
  50. $goodsInfo = Goods::detail($item['goods_id'],['images.file']);
  51. if (empty($goodsInfo)) {
  52. $this->error = "商品信息错误";
  53. return false;
  54. }
  55. // $goodsSku = GoodsSku::detail($item['goods_id'], $item['goods_sku_id']);
  56. if($item['ms_price']>$goodsInfo['goods_price_min']){
  57. $this->error = '秒杀价不能大于商品价格';
  58. return false;
  59. }
  60. // $goodsSku = GoodsSku::detail($item['goods_id'], $item['goods_sku_id']);
  61. // if (empty($goodsSku)) {
  62. // $this->error = "商品sku信息错误";
  63. // return false;
  64. // }
  65. $start_time = trim($item['start_time'], '&quot;');
  66. $start_time = str2time_date_format($start_time);
  67. $end_time = trim($item['end_time'], '&quot;');
  68. $end_time = str2time_date_format($end_time);
  69. $dataset[] = [
  70. 'ms_activity_id' => $activity_id,
  71. 'goods_id' => $item['goods_id'],
  72. 'goods_sku_id' => $item['goods_sku_id'],
  73. 'ms_price' => $item['ms_price'],
  74. 'goods_price' => $goodsInfo['goods_price_min'],
  75. 'limit_mount' => $item['limit_mount']??0,
  76. 'stock_num' => $item['stock_num'],
  77. 'limit_stock'=>$item['stock_num'],
  78. 'goods_sku_no' => $goodsInfo['goods_no'],
  79. 'start_time' => Date("Y-m-d H:i:s",$start_time),
  80. 'end_time' => Date("Y-m-d H:i:s",$end_time),
  81. 'goods_name' => $goodsInfo['goods_name']??'',
  82. 'preview_url' => $goodsInfo['images'][0]['file']['preview_url']??'',
  83. ];
  84. }
  85. (new static)->addAll($dataset);
  86. return true;
  87. }
  88. }
  89. }