GoodsOption.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Author: 芸众商城 www.yunzshop.com
  5. * Date: 2017/2/22
  6. * Time: 下午18:16
  7. */
  8. namespace app\backend\modules\goods\models;
  9. use app\backend\modules\goods\observers\GoodsOptionObserver;
  10. use app\framework\Database\Eloquent\Builder;
  11. class GoodsOption extends \app\common\models\GoodsOption
  12. {
  13. static protected $needLog = true;
  14. protected $appends = ['withhold_stock'];
  15. public static function saveOption($optionPost, $goods_id, $spec_items, $uniacid)
  16. {
  17. $option_ids = $optionPost['option_ids'];
  18. $len = count($option_ids);
  19. $optionids = [];
  20. for ($k = 0; $k < $len; $k++) {
  21. $ids = $option_ids[$k];
  22. $get_option_id = $optionPost['option_id_' . $ids][0];
  23. $idsarr = explode("_", $ids);
  24. $newids = array();
  25. foreach ($idsarr as $key => $ida) {
  26. foreach ($spec_items as $it) {
  27. if ($it['get_id'] == $ida) {
  28. $newids[] = $it['id'];
  29. break;
  30. }
  31. }
  32. }
  33. $newids = implode("_", $newids);
  34. $goodsOption = [
  35. "uniacid" => $uniacid,
  36. "title" => $optionPost['option_title_' . $ids][0],
  37. "product_price" => floatVal($optionPost['option_productprice_' . $ids][0]),
  38. "cost_price" => floatVal($optionPost['option_costprice_' . $ids][0]),
  39. "market_price" => floatVal($optionPost['option_marketprice_' . $ids][0]),
  40. "stock" => $optionPost['option_stock_' . $ids][0] ? $optionPost['option_stock_' . $ids][0] : 0,
  41. "weight" => floatVal($optionPost['option_weight_' . $ids][0]),
  42. "volume" => floatval($optionPost['option_volume_' . $ids][0]),
  43. "goods_sn" => $optionPost['option_goodssn_' . $ids][0],
  44. "product_sn" => $optionPost['option_productsn_' . $ids][0],
  45. "goods_id" => $goods_id,
  46. "specs" => $newids,
  47. //'virtual' => $data['type'] == 3 ? $_GPC['option_virtual_' . $ids][0] : 0,
  48. 'virtual' => 0,
  49. //"red_price" => $optionPost['option_redprice_' . $ids][0],
  50. "red_price" => '',
  51. 'thumb' => $optionPost['option_thumb_' . $ids][0],
  52. ];
  53. $this_stock = $optionPost['option_stock_' . $ids][0];
  54. if(isset($this_stock)){
  55. $goodsOption['stock'] = $this_stock;
  56. }
  57. // if(isset($optionPost['option_stock_' . $ids][0])){
  58. // $goodsOption['stock'] = $optionPost['option_stock_' . $ids][0];
  59. // }
  60. //$totalstocks += $a['stock'];
  61. if (empty($get_option_id)) {
  62. //dd($goodsOption);
  63. $goodsOptionModel = static::create($goodsOption);
  64. $option_id = $goodsOptionModel->id;
  65. } else {
  66. //exit;
  67. static::updateOrCreate(['id' => $get_option_id], $goodsOption);
  68. $option_id = $get_option_id;
  69. }
  70. $optionids[] = $option_id;
  71. }
  72. if (count($optionids) > 0) {
  73. static::where('goods_id', '=', $goods_id)->whereNotIn('id', $optionids )->delete();
  74. } else {
  75. static::where('goods_id', '=', $goods_id)->delete();
  76. }
  77. }
  78. }