全部
常见问题
产品动态
精选推荐

商品导入有误

管理 管理 编辑 删除

问题说明:商品导入优化处理

修改文件:app/services/product/product/StoreProductServices.php

修改方法:productImport()

/**
     * 商品导入
     * @param $importData
     * @param $impord_id
     * @param $end
     * @return array
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\DbException
     * @throws \think\db\exception\ModelNotFoundException
     */
    public function productImport($importData, $impord_id, $end)
    {
        $productCateServices = app()->make(StoreProductCategoryServices::class);
        $storeBrandServices = app()->make(StoreBrandServices::class);
        $unitServices = app()->make(StoreProductUnitServices::class);
        $productData = $issetProductArr = [];
        $virtualType = ['普通商品' => 0, '卡密/网盘' => 1, '优惠券' => 2, '虚拟商品' => 3, '次卡商品' => 4, '卡项商品' => 5, '预约商品' => 6];
        $productAttrValueServices = app()->make(StoreProductAttrValueServices::class);
        $barCodeArr = array_unique($productAttrValueServices->getColumn(['type' => 0], 'code', 'id'));
        $barCodeNumberArr = array_unique($productAttrValueServices->getColumn(['type' => 0], 'bar_code', 'id'));
        $unit = $unitServices->getColumn(['status' => 1, 'is_del' => 0], 'name', 'id');
        $error = [];
        $jump1 = 0;
        foreach ($importData as $sku) {
            if ($sku['id'] == null) {
                $jump1 += 1;
                continue;
            }
            $error[$sku['id']][] = $sku;
            if (!isset($productData[$sku['id']])) {
                $productData[$sku['id']]['product_type'] = $virtualType[$sku['product_type']];
                $productData[$sku['id']]['supplier_id'] = 0;
                $productData[$sku['id']]['cate_id'] = $productCateServices->getCateId($sku['cate_name_one'], $sku['cate_name_two'], $sku['cate_name_three']);
                $productData[$sku['id']]['store_cate_id'] = [];
                $productData[$sku['id']]['store_name'] = $sku['store_name'];
                $productData[$sku['id']]['brand_id'] = [];
                $productData[$sku['id']]['store_info'] = $sku['store_info'];
                $productData[$sku['id']]['keyword'] = $sku['keyword'];
                $productData[$sku['id']]['unit_name'] = in_array($sku['unit_name'], $unit) ? $sku['unit_name'] : '';
                $productData[$sku['id']]['recommend_image'] = '';
                $productData[$sku['id']]['slider_image'] = explode(';', $sku['slider_image']);
//                $productData[$sku['id']]['is_sub'] = [];
                $productData[$sku['id']]['sort'] = 0;
                $productData[$sku['id']]['ficti'] = $sku['ficti'];
                $productData[$sku['id']]['give_integral'] = $sku['give_integral'];
                $productData[$sku['id']]['is_show'] = 0;
                $productData[$sku['id']]['is_hot'] = 0;
                $productData[$sku['id']]['is_benefit'] = 0;
                $productData[$sku['id']]['is_best'] = 0;
                $productData[$sku['id']]['is_new'] = 0;
                $productData[$sku['id']]['mer_use'] = 0;
                $productData[$sku['id']]['is_postage'] = 0;
                $productData[$sku['id']]['is_good'] = 0;
                $productData[$sku['id']]['description'] = $this->processDescription($sku['description']);
                $productData[$sku['id']]['spec_type'] = $sku['spec_type'] == '多规格' ? 1 : 0;
                $productData[$sku['id']]['video_open'] = $sku['video_link'] != '' ? 1 : 0;
                $productData[$sku['id']]['video_link'] = $sku['video_link'];
                //items
                //attrs
                //attr
                $productData[$sku['id']]['related'] = [];
                $productData[$sku['id']]['recommend'] = [];
                $productData[$sku['id']]['activity'] = ['默认', '秒杀', '砍价', '拼团'];
                $productData[$sku['id']]['coupon_ids'] = [];
                $productData[$sku['id']]['label_id'] = [];
                $productData[$sku['id']]['command_word'] = $sku['command_word'];
                $productData[$sku['id']]['tao_words'] = '';
                $productData[$sku['id']]['is_copy'] = 0;
                $productData[$sku['id']]['delivery_type'] = [1];
                $productData[$sku['id']]['freight'] = 1;
                $productData[$sku['id']]['postage'] = 0;
                $productData[$sku['id']]['temp_id'] = '';
                $productData[$sku['id']]['recommend_list'] = [];
                $productData[$sku['id']]['soure_link'] = '';
                $productData[$sku['id']]['bar_code'] = '';
                $productData[$sku['id']]['code'] = '';
                $productData[$sku['id']]['is_support_refund'] = 1;
                $productData[$sku['id']]['is_presale_product'] = 0;
                $productData[$sku['id']]['presale_time'] = [];
                $productData[$sku['id']]['presale_day'] = 0;
                $productData[$sku['id']]['is_vip_product'] = 0;
                $productData[$sku['id']]['auto_on_time'] = 0;
                $productData[$sku['id']]['auto_off_time'] = 0;
                $productData[$sku['id']]['custom_form'] = [];
                $productData[$sku['id']]['system_form_id'] = 0;
                $productData[$sku['id']]['store_label_id'] = [];
                $productData[$sku['id']]['ensure_id'] = 0;
                $productData[$sku['id']]['specs'] = [];
                $productData[$sku['id']]['specs_id'] = 0;
                $productData[$sku['id']]['is_limit'] = 0;
                $productData[$sku['id']]['limit_type'] = 0;
                $productData[$sku['id']]['limit_num'] = 0;
                $productData[$sku['id']]['presale_status'] = 0;
//                $productData[$sku['id']]['applicable_type'] = $sku['applicable_type'];
//                $productData[$sku['id']]['applicable_store_id'] = $sku['applicable_store_id'];
            }
            $detail = [];
            $sku_value = explode(';', $sku['sku_value']);
            if ($sku_value) {
                foreach ($sku_value as $pair) {
                    if (!$pair) continue;
                    list($key, $value) = explode('=', $pair);
                    $detail[$key] = $value;
                }
            }


            if ($sku['code'] != '' && in_array($sku['code'], $barCodeArr)) {
                $issetProductArr[] = $sku['id'];
            }
            if ($sku['bar_code'] != '' && in_array($sku['bar_code'], $barCodeNumberArr)) {
                $issetProductArr[] = $sku['id'];
            }
            if ($sku['spec_type'] == '多规格') {
                $productData[$sku['id']]['attrs'][] = [
                    'attr_arr' => explode(',', $sku['sku_name']),
                    'detail' => $detail,
                    'price' => $sku['price'],
                    'pic' => $sku['pic'],
                    'ot_price' => $sku['ot_price'],
                    'cost' => $sku['cost'],
                    'stock' => $sku['stock'],
                    'is_show' => 1,
                    'is_default_select' => 0,
                    'is_virtual' => 0,
                    'brokerage' => 0,
                    'brokerage_two' => 0,
                    'vip_price' => 0,
                    'vip_proportion' => 0,
                    'unique' => '',
                    'weight' => $sku['weight'],
                    'volume' => $sku['volume'],
                    'code' => $sku['code'],
                    'bar_code' => $sku['bar_code'],
                ];
            } else {
                $productData[$sku['id']]['attrs'][] = [];
                $productData[$sku['id']]['attr'] = [
                    'attr_arr' => explode(',', $sku['sku_name']),
                    'detail' => $detail,
                    'price' => $sku['price'],
                    'pic' => $sku['pic'],
                    'ot_price' => $sku['ot_price'],
                    'cost' => $sku['cost'],
                    'stock' => $sku['stock'],
                    'is_show' => 1,
                    'is_default_select' => 0,
                    'is_virtual' => 0,
                    'brokerage' => 0,
                    'brokerage_two' => 0,
                    'vip_price' => 0,
                    'vip_proportion' => 0,
                    'unique' => '',
                    'weight' => $sku['weight'],
                    'volume' => $sku['volume'],
                    'code' => $sku['code'],
                    'bar_code' => $sku['bar_code'],
                ];
            }
            $items = [];
            $pairs = explode(';', $sku['sku_type_value']);
            if ($pairs) {
                foreach ($pairs as $pair) {
                    if (!$pair) continue;
                    // 将每个部分按等号分割成 key 和 value
                    list($key, $values) = explode('=', $pair);
                    // 将 value 部分按逗号分割为数组
                    $detailArray = explode(',', $values);
                    $detail = [];
                    foreach ($detailArray as &$det) {
                        $detail[] = [
                            'value' => $det,
                            'pic' => '',
                        ];
                    }
                    // 重新构建原始数组的结构
                    $items[] = [
                        'value' => $key,
                        'detail' => $detail
                    ];
                }
            }

            $productData[$sku['id']]['items'] = $items;
        }
        $all = count($productData);
        foreach (array_unique($issetProductArr) as $issetProduct) {
            if (isset($productData[$issetProduct])) {
                unset($productData[$issetProduct]);
            }
        }
        $success = count($productData);
        $jump = count($issetProductArr);
        $jump = $jump + $jump1;
        /** @var ImportRecordServices $importServices */
        $importServices = app()->make(ImportRecordServices::class);
        /** @var ImportRecordErrorServices $errorServices */
        $errorServices = app()->make(ImportRecordErrorServices::class);
        $error_sum = 0;
        foreach ($productData as $k => $info) {
            try {
                if (!$this->saveData(0, $info)) {
                    foreach ($error[$k] as $item) {
                        $errorServices->save([
                            'record_id' => $impord_id,
                            'original_data' => json_encode($item),
                            'fail_msg' => '添加失败,请检测导入数据',
                        ]);
                        $error_sum += 1;
                    }
                }
            } catch (\Throwable $e) {
                foreach ($error[$k] as $item) {
                    $errorServices->save([
                        'record_id' => $impord_id,
                        'original_data' => json_encode($item),
                        'fail_msg' => $e->getMessage(),
                    ]);
                    $error_sum += 1;
                }
            }
        }
        //是否最后一批数据
        if ($end) {
            $importServices->update($impord_id, ['status' => $error_sum > 0 ? -1 : 1, 'jump_count' => $jump, 'fail_count' => $error_sum]);
        } else {
            $importServices->update($impord_id, ['status' => -1, 'jump_count' => $jump, 'fail_count' => $error_sum]);
        }
        return ['error_sum' => $error_sum, 'jump' => $jump];
    }


请登录后查看

全 最后编辑于2025-09-15 11:09:19

快捷回复
回复
回复
回复({{post_count}}) {{!is_user ? '我的回复' :'全部回复'}}
排序 默认正序 回复倒序 点赞倒序

{{item.user_info.nickname ? item.user_info.nickname : item.user_name}} LV.{{ item.user_info.bbs_level || item.bbs_level }}

作者 管理员 企业

{{item.floor}}# 同步到gitee 已同步到gitee {{item.is_suggest == 1? '取消推荐': '推荐'}}
{{item.is_suggest == 1? '取消推荐': '推荐'}}
沙发 板凳 地板 {{item.floor}}#
{{item.user_info.title || '暂无简介'}}
附件

{{itemf.name}}

{{item.created_at}}  {{item.ip_address}}
打赏
已打赏¥{{item.reward_price}}
{{item.like_count}}
{{item.showReply ? '取消回复' : '回复'}}
删除
回复
回复

{{itemc.user_info.nickname}}

{{itemc.user_name}}

回复 {{itemc.comment_user_info.nickname}}

附件

{{itemf.name}}

{{itemc.created_at}}
打赏
已打赏¥{{itemc.reward_price}}
{{itemc.like_count}}
{{itemc.showReply ? '取消回复' : '回复'}}
删除
回复
回复
查看更多
打赏
已打赏¥{{reward_price}}
39
{{like_count}}
{{collect_count}}
添加回复 ({{post_count}})

相关推荐

快速安全登录

使用微信扫码登录
{{item.label}} 加精
{{item.label}} {{item.label}} 板块推荐 常见问题 产品动态 精选推荐 首页头条 首页动态 首页推荐
取 消 确 定
回复
回复
问题:
问题自动获取的帖子内容,不准确时需要手动修改. [获取答案]
答案:
提交
bug 需求 取 消 确 定
打赏金额
当前余额:¥{{rewardUserInfo.reward_price}}
{{item.price}}元
请输入 0.1-{{reward_max_price}} 范围内的数值
打赏成功
¥{{price}}
完成 确认打赏

微信登录/注册

切换手机号登录

{{ bind_phone ? '绑定手机' : '手机登录'}}

{{codeText}}
切换微信登录/注册
暂不绑定
CRMEB客服

CRMEB咨询热线 咨询热线

400-8888-794

微信扫码咨询

CRMEB开源商城下载 源码下载 CRMEB帮助文档 帮助文档
返回顶部 返回顶部
CRMEB客服