GroupBuyLbGoods.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace app\common\model\groupbuylb;
  3. use app\common\model\BaseModel;
  4. use app\common\model\Goods;
  5. /**
  6. * 拼团裂变活动商品模型
  7. * @package app\store\model\coupon
  8. */
  9. class GroupBuyLbGoods extends BaseModel
  10. {
  11. protected $name = 'group_buy_lb_goods';
  12. // 定义主键
  13. protected $pk = 'id';
  14. protected $append = ['goods_info','residue_stock'];
  15. public function getGoodsInfoAttr($value,$data){
  16. $res = Goods::alias('gd')
  17. ->leftJoin('goods_image gi','gd.goods_id=gi.goods_id')
  18. ->leftJoin('goods_sku gs','gd.goods_id=gs.goods_id')
  19. ->leftJoin('upload_file uf','gi.image_id=uf.file_id')
  20. ->where('gd.goods_id',$data['goods_id'])
  21. ->field('gd.goods_name,gd.goods_no,gd.goods_price_min,gd.status,gi.image_id,uf.domain,uf.file_path,gs.goods_props')->find();
  22. $res->goods_props_obj = $res->goods_props?json_decode($res->goods_props):null;
  23. $res->goods_image = $res->domain.'/'.$res->file_path;
  24. return $res;
  25. }
  26. public function getResidueStockAttr($value,$data){
  27. if(isset($data['limit_stock']) && isset($data['purchase_stock'])){
  28. $residue_stock = $data['limit_stock']-$data['purchase_stock'];
  29. return $residue_stock>0?$residue_stock:0;
  30. }
  31. return 0;
  32. }
  33. public function add($coupon_activity_id,$data)
  34. {
  35. // 先删除全部
  36. static::deleteAll(['group_buy_lb_activity_id' => $coupon_activity_id]);
  37. if (!empty($data)) {
  38. $dataset = [];
  39. foreach ($data as $item) {
  40. $goods = \app\store\model\Goods::detail($item['goods_id'],['images.file']);
  41. $dataset[] = [
  42. 'group_buy_lb_activity_id'=>$coupon_activity_id,
  43. 'goods_id' => $item['goods_id'],
  44. 'limit_stock' => $item['limit_stock']??0,
  45. 'goods_sku_id' => $item['goods_sku_id']??0,
  46. 'goods_sku_no' => $item['goods_sku_no']??'',
  47. 'group_price' => $item['group_price'],
  48. 'limit_mount' => $item['limit_mount'],
  49. 'goods_name' => $goods['goods_name']??'',
  50. 'preview_url' => $goods['images'][0]['file']['preview_url']??'',
  51. ];
  52. }
  53. (new static)->addAll($dataset);
  54. }
  55. }
  56. }