链街Dcat后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

106 lines
3.3 KiB

  1. <?php
  2. namespace App\Admin\Forms;
  3. use Dcat\Admin\Widgets\Form;
  4. use Symfony\Component\HttpFoundation\Response;
  5. use App\Models\v3\Store as StoreModel;
  6. use App\Models\v3\Goods as GoodsModel;
  7. use App\Models\v3\GoodsBanners as GoodsBannerModel;
  8. use Illuminate\Support\Facades\DB;
  9. class GoodsCopyForm extends Form
  10. {
  11. /**
  12. * Handle the form request.
  13. *
  14. * @param array $input
  15. *
  16. * @return Response
  17. */
  18. public function handle(array $input)
  19. {
  20. // 获取外部传递参数
  21. $goodsId = $input['goods_id'];
  22. $storeIds= $input['store_ids'];
  23. $goods = GoodsModel::find($goodsId);
  24. $goodsBanners = GoodsBannerModel::where('goods_id',$goodsId)->get();
  25. $markets = StoreModel::whereIn('id',$storeIds)->pluck('market_id','id');
  26. foreach($storeIds as $key =>$value){
  27. $storeId = $value;
  28. $model = new GoodsModel();
  29. $model->store_id = $storeId;
  30. $model->market_id = $markets[$storeId];
  31. $model->category_id = $goods->category_id;
  32. $model->name = $goods->name;
  33. $model->cover_img = $goods->cover_img;
  34. $model->goods_unit = $goods->goods_unit;
  35. $model->tags = $goods->tags;
  36. $model->spec = $goods->spec;
  37. $model->details_imgs = $goods->details_imgs;
  38. $model->content = $goods->content;
  39. $model->details = $goods->details;
  40. $model->price = $goods->price;
  41. $model->original_price = $goods->original_price;
  42. $model->vip_price = $goods->vip_price;
  43. $model->start_num = $goods->start_num;
  44. $model->restrict_num = $goods->restrict_num;
  45. $model->is_infinite = $goods->is_infinite;
  46. $model->inventory = $goods->inventory;
  47. $model->on_sale = $goods->on_sale;
  48. $model->sort = $goods->sort;
  49. $model->remark = $goods->remark;
  50. if($model->save() && !empty($goodsBanners)){
  51. $goodsId = $model->getKey();
  52. $banners = [];
  53. foreach($goodsBanners as $kb => $vb){
  54. $banners[] = [
  55. 'goods_id' => $goodsId,
  56. 'type' => $vb->type,
  57. 'path' => $vb->path,
  58. 'sort' => $vb->sort,
  59. 'created_at' => time(),
  60. 'updated_at' => time(),
  61. ];
  62. GoodsBannerModel::insert($banners);
  63. }
  64. };
  65. }
  66. return $this->success('修改成功', '/goods');
  67. }
  68. /**
  69. * Build a form here.
  70. */
  71. public function form()
  72. {
  73. $id = $this->getKey();
  74. $goods = GoodsModel::select('name')->find($id);
  75. $this->hidden('goods_id')->value($id);
  76. $name = empty($goods->name)?'':$goods->name;
  77. $this->display('name')->value($name);
  78. $stores = StoreModel::getStoreArray();
  79. $this->multipleSelect('store_ids','选择店铺')->required()->options($stores)->help('选择店铺,将当前商品复制到所选店铺。注意选择重复店铺问题!!!');
  80. }
  81. /**
  82. * The data of the form.
  83. *
  84. * @return array
  85. */
  86. public function default()
  87. {
  88. return [];
  89. }
  90. }