GoodsSpec.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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\common\models\GoodsSpecItem;
  10. class GoodsSpec extends \app\common\models\GoodsSpec
  11. {
  12. static protected $needLog = true;
  13. public static $spec_items = [];
  14. public static function saveSpec($specPost, $goods_id, $uniacid)
  15. {
  16. $data['type'] = 1; //todo, 需要传递商品信息进来
  17. $spec_ids = $specPost->spec_id;
  18. //dd($spec_ids);
  19. $spec_titles = $specPost->spec_title;
  20. $specids = [];
  21. $spenLen = count($spec_ids);
  22. $specids = [];
  23. $spec_items = [];
  24. for ($specIndex = 0; $specIndex < $spenLen; $specIndex++) {
  25. $spec_id = "";
  26. $get_spec_id = $spec_ids[$specIndex];
  27. $spec = array(
  28. "uniacid" => $uniacid,
  29. "goods_id" => $goods_id,
  30. "display_order" => $specIndex,
  31. "title" => $spec_titles[$get_spec_id]
  32. );
  33. if (is_numeric($get_spec_id)) {
  34. static::updateOrCreate(['id' => $get_spec_id], $spec);
  35. $spec_id = $get_spec_id;
  36. } else {
  37. $goods_spec = static::Create($spec);
  38. //dd($goods_spec);
  39. $spec_id = $goods_spec->id;
  40. }
  41. $spec_ids_attr = "spec_item_id_" . $get_spec_id;
  42. $spec_item_titles_attr = "spec_item_title_" . $get_spec_id;
  43. $spec_item_shows_attr = "spec_item_show_" . $get_spec_id;
  44. $spec_item_thumbs_attr = "spec_item_thumb_" . $get_spec_id;
  45. $spec_item_oldthumbs_attr = "spec_item_oldthumb_" . $get_spec_id;
  46. $spec_item_virtuals_attr = "spec_item_virtual_" . $get_spec_id;
  47. $spec_item_ids = $specPost->$spec_ids_attr;
  48. $spec_item_titles = $specPost->$spec_item_titles_attr;
  49. //dd($specPost);
  50. $spec_item_shows = $specPost->$spec_item_shows_attr;
  51. $spec_item_thumbs = $specPost->$spec_item_thumbs_attr;
  52. $spec_item_oldthumbs = $specPost->$spec_item_oldthumbs_attr;
  53. $spec_item_virtuals = $specPost->$spec_item_virtuals_attr;
  54. $itemlen = count($spec_item_ids);
  55. $itemids = [];
  56. for ($n = 0; $n < $itemlen; $n++) {
  57. $item_id = "";
  58. $get_item_id = $spec_item_ids[$n];
  59. $specItem = [
  60. "uniacid" => $uniacid,
  61. "specid" => $spec_id,
  62. "display_order" => $n,
  63. "title" => $spec_item_titles[$n],
  64. "show" => $spec_item_shows[$n],
  65. "thumb" => $spec_item_thumbs[$n],
  66. "virtual" => $data['type'] == 3 ? $spec_item_virtuals[$n] : 0
  67. ];
  68. //$f = "spec_item_thumb_" . $get_item_id;
  69. if (is_numeric($get_item_id)) {
  70. GoodsSpecItem::updateOrCreate(['id' => $get_item_id], $specItem);
  71. $item_id = $get_item_id;
  72. } else {
  73. $goods_spec_item = GoodsSpecItem::Create($specItem);
  74. //dd($goods_spec_item);
  75. $item_id = $goods_spec_item->id;
  76. }
  77. $itemids[] = $item_id;
  78. $specItem['get_id'] = $get_item_id;
  79. $specItem['id'] = $item_id;
  80. $spec_items[] = $specItem;
  81. self::$spec_items = $spec_items;
  82. }
  83. if (count($itemids) > 0) {
  84. GoodsSpecItem::where('specid', '=', $spec_id)->whereNotIn('id', $itemids )->delete();
  85. } else {
  86. GoodsSpecItem::where('specid', '=', $spec_id)->delete();
  87. }
  88. static::updateOrCreate(['id' => $spec_id], ['content' => serialize($itemids)]);
  89. $specids[] = $spec_id;
  90. }
  91. if (count($specids) > 0) {
  92. static::where('goods_id', '=', $goods_id)->whereNotIn('id', $specids )->delete();
  93. } else {
  94. static::where('goods_id', '=', $goods_id)->delete();
  95. }
  96. }
  97. }