KjActivityGood.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. declare (strict_types=1);
  3. namespace app\common\model\kjactivity;
  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 KjActivityGood extends BaseModel
  13. {
  14. protected $name = 'kj_activity_goods';
  15. protected $append = ['residue_stock'];
  16. public function getResidueStockAttr($value,$data){
  17. if(isset($data['limit_stock']) && isset($data['purchase_stock'])){
  18. $residue_stock = $data['limit_stock']-$data['purchase_stock'];
  19. return $residue_stock>0?$residue_stock:0;
  20. }
  21. return 0;
  22. }
  23. /**
  24. * 一对多关联商品表
  25. */
  26. public function activity(){
  27. return $this->belongsTo('kj', 'id','activity_id');
  28. }
  29. public function add($activity_id, $data){
  30. // 先删除全部
  31. static::deleteAll(['activity_id' => $activity_id]);
  32. if (!empty($data)) {
  33. // 添加
  34. $dataset = [];
  35. foreach ($data as $item) {
  36. // 商品信息
  37. $goodsInfo = Goods::detail($item['goods_id']);
  38. if (empty($goodsInfo)) {
  39. $this->error = "商品信息错误";
  40. return false;
  41. }
  42. if($item['low_price']>=$goodsInfo['goods_price_min']){
  43. $this->error = '活动最低价不能大于商品价格';
  44. return false;
  45. }
  46. $dataset[] = [
  47. 'activity_id' => $activity_id,
  48. 'goods_id' => $item['goods_id'],
  49. 'limit_stock' => $item['limit_stock'],
  50. 'goods_sku_id' => 0,
  51. 'low_price'=>$item['low_price'],
  52. 'help_kj_up_cnt'=>$item['help_kj_up_cnt'],
  53. 'goods_sku_no'=>$goodsInfo['goods_no']
  54. ];
  55. }
  56. (new static)->addAll($dataset);
  57. return true;
  58. }
  59. }
  60. }