$params['name'], 'code' => $params['code'], 'first_category_id' => $params['first_category_id'], 'second_category_id' => $params['second_category_id'], 'third_category_id' => $params['third_category_id'], 'brand_id' => $params['brand_id'], 'supplier_id' => $params['supplier_id'], 'status' => $params['status'], 'image' => $params['image'], 'video' => $params['video'], 'poster' => $params['poster'], 'remark' => $params['remark'], 'content' => $params['content'], 'sort' => $params['sort'], 'sales_sum' => $params['sales_sum'], 'virtual_sales_sum' => $params['virtual_sales_sum'], 'click_count' => $params['click_count'], 'virtual_click' => $params['virtual_click'], 'spec_type' => $params['spec_type'], 'max_price' => $params['max_price'], 'min_price' => $params['min_price'], 'market_price' => $params['market_price'], 'stock' => $params['stock'], 'stock_warn' => $params['stock_warn'], 'is_show_stock' => $params['is_show_stock'], 'free_shipping_type' => $params['free_shipping_type'], 'free_shipping' => $params['free_shipping'], 'free_shipping_template_id' => $params['free_shipping_template_id'], 'is_commission' => $params['is_commission'], 'first_ratio' => $params['first_ratio'], 'second_ratio' => $params['second_ratio'], 'three_ratio' => $params['three_ratio'], 'is_share_bouns' => $params['is_share_bouns'], 'region_ratio' => $params['region_ratio'], 'shareholder_ratio' => $params['shareholder_ratio'], 'is_new' => $params['is_new'], 'is_best' => $params['is_best'], 'is_like' => $params['is_like'], 'is_team' => $params['is_team'], 'is_integral' => $params['is_integral'], 'is_member' => $params['is_member'], 'give_integral_type' => $params['give_integral_type'], 'give_integral' => $params['give_integral'], 'is_express' => $params['is_express'], 'is_selffetch' => $params['is_selffetch'] ]); foreach($params['goods_image'] as $key=>$value){ $d['goods_id'] = $id; $d['uri'] = $value; Db::name("goods_image")->save($d); } $goods_spec_id = Db::name('goods_spec') ->insertGetId(['goods_id' => $id, 'name' => $params['spec_name']]); $goods_spec_value_id = Db::name('goods_spec_value') ->insertGetId(['spec_id' => $goods_spec_id, 'goods_id' => $id, 'value' => $params['spec_value_name']]); $data = [ 'image' => $params['one_spec_image'], 'goods_id' => $id, 'spec_value_ids' => $goods_spec_value_id, 'spec_value_str' => $params['spec_value_str'], 'market_price' => $params['one_market_price'], 'price' => $params['one_price'], 'cost_price' => $params['one_cost_price'], 'stock' => $params['one_stock'], 'volume' => $params['one_volume'], 'weight' => $params['one_weight'], 'bar_code' => $params['one_bar_code'], ]; Db::name('goods_item') ->insert($data); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 编辑 * @param array $params * @return bool * @author likeadmin * @date 2025/05/08 15:34 */ public static function edit(array $params): bool { Db::startTrans(); try { Goods::where('id', $params['id'])->update([ 'name' => $params['name'], 'code' => $params['code'], 'first_category_id' => $params['first_category_id'], 'second_category_id' => $params['second_category_id'], 'third_category_id' => $params['third_category_id'], 'brand_id' => $params['brand_id'], 'supplier_id' => $params['supplier_id'], 'status' => $params['status'], 'image' => $params['image'], 'video' => $params['video'], 'poster' => $params['poster'], 'remark' => $params['remark'], 'content' => $params['content'], 'sort' => $params['sort'], 'sales_sum' => $params['sales_sum'], 'virtual_sales_sum' => $params['virtual_sales_sum'], 'click_count' => $params['click_count'], 'virtual_click' => $params['virtual_click'], 'spec_type' => $params['spec_type'], 'max_price' => $params['max_price'], 'min_price' => $params['min_price'], 'market_price' => $params['market_price'], 'stock' => $params['stock'], 'stock_warn' => $params['stock_warn'], 'is_show_stock' => $params['is_show_stock'], 'free_shipping_type' => $params['free_shipping_type'], 'free_shipping' => $params['free_shipping'], 'free_shipping_template_id' => $params['free_shipping_template_id'], 'is_commission' => $params['is_commission'], 'first_ratio' => $params['first_ratio'], 'second_ratio' => $params['second_ratio'], 'three_ratio' => $params['three_ratio'], 'is_share_bouns' => $params['is_share_bouns'], 'region_ratio' => $params['region_ratio'], 'shareholder_ratio' => $params['shareholder_ratio'], 'is_new' => $params['is_new'], 'is_best' => $params['is_best'], 'is_like' => $params['is_like'], 'is_team' => $params['is_team'], 'is_integral' => $params['is_integral'], 'is_member' => $params['is_member'], 'give_integral_type' => $params['give_integral_type'], 'give_integral' => $params['give_integral'], 'del' => $params['del'], 'is_express' => $params['is_express'], 'is_selffetch' => $params['is_selffetch'] ]); Db::commit(); return true; } catch (\Exception $e) { Db::rollback(); self::setError($e->getMessage()); return false; } } /** * @notes 删除 * @param array $params * @return bool * @author likeadmin * @date 2025/05/08 15:34 */ public static function delete(array $params): bool { return Goods::destroy($params['id']); } /** * @notes 获取详情 * @param $params * @return array * @author likeadmin * @date 2025/05/08 15:34 */ public static function detail($params): array { return Goods::findOrEmpty($params['id'])->toArray(); } /* * 商品信息 */ /** * 获取商品信息 * @param $goods_id * @return array */ public static function info($goods_id) { $info['base'] = Db::name('goods') ->where(['id' => $goods_id]) ->withAttr('abs_image', function ($value, $data) { return UrlServer::getFileUrl($data['image']); }) ->withAttr('content', function ($value){ $preg = '/()/is'; $local_url = UrlServer::getFileUrl('/'); return preg_replace($preg, "\${1}$local_url\${2}\${3}",$value); }) ->withAttr('abs_video',function ($value,$data){ if($data['video']){ return UrlServer::getFileUrl($data['video']); } return ''; }) ->withAttr('abs_poster',function ($value,$data){ if($data['poster']){ return UrlServer::getFileUrl($data['poster']); } return ''; }) ->append(['abs_image','abs_video'])->find(); $info['base']['goods_image'] = Db::name('goods_image') ->where(['goods_id' => $goods_id]) ->withAttr('abs_image', function ($value, $data) { return UrlServer::getFileUrl($data['uri']);}) ->append(['abs_image']) ->select(); $info['item'] = Db::name('goods_item') ->where(['goods_id' => $goods_id]) ->select(); $info['spec'] = Db::name('goods_spec') ->where(['goods_id' => $goods_id]) ->select(); $spec_value = Db::name('goods_spec_value') ->where(['goods_id' => $goods_id]) ->select(); $data = []; foreach ($spec_value as $k => $v) { $data[$v['spec_id']][] = $v; } $info['spec'] = $info['spec']->toArray(); foreach ($info['spec'] as $k => $v) { $info['spec'][$k]['values'] = isset($data[$v['id']]) ? $data[$v['id']] : []; } return $info; } }