|
@@ -54,15 +54,15 @@ class Excel
|
|
|
$result = [];
|
|
|
if ($import) {
|
|
|
# 导入时的字段,一定要和下面的else里的对应
|
|
|
- $result['head'][0] = ['source_name', 'channel_name', 'cate_parent_name', 'cate_child_name', 'source_type', 'sku_code', 'sku_name', 'sku_price', 'sku_pic'];
|
|
|
+ $result['head'][0] = ['source_name', 'channel_name', 'cate_parent_name', 'cate_child_name', 'source_type', 'sku_code', 'sku_name', 'sku_price', 'sku_pic', 'sku_pic_type'];
|
|
|
} else {
|
|
|
# 这是导入时的模板
|
|
|
- $result['head'][0] = ['资源名称', '资源频道', '资源主分类', '资源子分类', '资源类型', '规格编码', '规格名称', '规格售价', '规格图片(插入-图片-本地图片-裁剪-锁定纵横比-宽度设置2厘米,不要内嵌到单元格中)'];
|
|
|
+ $result['head'][0] = ['资源名称', '资源频道', '资源主分类', '资源子分类', '资源类型', '规格编码', '规格名称', '规格售价', '规格图片(插入-图片-本地图片-裁剪-锁定纵横比-宽度设置2厘米,不要内嵌到单元格中)', '图片类型(1是主规格图片,2是所有规格图片)'];
|
|
|
}
|
|
|
$result['body'] = [];
|
|
|
if ($out) {
|
|
|
$k = 0;
|
|
|
- $result['body'][$k] = ['资源名称', '频道名称', '主分类名称', '子分类名称', '实物/虚拟/服务/不发货', '规格编码,不填将自动生成,填写请勿重复', '颜色:白色 & 尺寸:35(注:请用这个格式填写规格)', '规格售价,这里直接添加售价的数字,无需填写任何单位', '规格图片,仅支持一张图片,直接复制粘贴到本单元格即可,请勿嵌入图片,同时该图片将成为资源主图'];
|
|
|
+ $result['body'][$k] = ['资源名称', '频道名称', '主分类名称', '子分类名称', '实物/虚拟/服务/不发货', '规格编码,不填将自动生成,填写请勿重复', '颜色:白色 & 尺寸:35(注:请用这个格式填写规格,第一个规格为主规格)', '规格售价,这里直接添加售价的数字,无需填写任何单位', '规格图片,仅支持一张图片,直接复制粘贴到本单元格即可,请勿嵌入图片,同时该图片将成为资源主图', '1'];
|
|
|
return Dever::load(\Excel\Lib\Export::class)->act($result['body'], $result['head'], '资源导入模板');
|
|
|
}
|
|
|
return $result;
|
|
@@ -138,95 +138,23 @@ class Excel
|
|
|
$source['cate'] = implode(',', $source['cate']);
|
|
|
|
|
|
if ($info) {
|
|
|
- if ($row['sku_pic']) {
|
|
|
- $pic = explode(',', $info['pic']);
|
|
|
- $pic[] = $row['sku_pic'];
|
|
|
- $source['pic'] = implode(',', $pic);
|
|
|
- }
|
|
|
- if ($info['price'] > $row['sku_price']) {
|
|
|
- $source['price'] = $row['sku_price'];
|
|
|
- }
|
|
|
+ $source['pic'] = Dever::load(\Psource\Lib\Info::class)->createPic($row['sku_pic'], $info['pic']);
|
|
|
Dever::db('psource/info')->update($info['id'], $source);
|
|
|
$id = $info['id'];
|
|
|
} else {
|
|
|
$source['pic'] = $row['sku_pic'];
|
|
|
- $source['price'] = $row['sku_price'];
|
|
|
$id = Dever::db('psource/info')->insert($source);
|
|
|
}
|
|
|
|
|
|
if ($id) {
|
|
|
# 建立规格
|
|
|
- if (isset($row['sku_name']) && $row['sku_name']) {
|
|
|
- $temp = explode('&', $row['sku_name']);
|
|
|
- $spec_value_id = [];
|
|
|
- foreach ($temp as $v) {
|
|
|
- # 颜色:白色 & 尺寸:35
|
|
|
- $v = trim($v);
|
|
|
- list($spec_name, $spec_value) = explode(':', $v);
|
|
|
-
|
|
|
- $spec_data = ['info_id' => $id, 'name' => $spec_name];
|
|
|
- $spec = Dever::db('psource/spec')->find($spec_data);
|
|
|
- if ($spec) {
|
|
|
- $spec_id = $spec['id'];
|
|
|
- } else {
|
|
|
- $spec_data['sort'] = $i;
|
|
|
- $spec_id = Dever::db('psource/spec')->insert($spec_data);
|
|
|
- }
|
|
|
- if ($spec_id) {
|
|
|
- $spec_data = ['info_id' => $id, 'spec_id' => $spec_id, 'value' => $spec_value];
|
|
|
- $spec_value = Dever::db('psource/spec_value')->find($spec_data);
|
|
|
- if ($spec_value) {
|
|
|
- $spec_value_id[] = $spec_value['id'];
|
|
|
- } else {
|
|
|
- $spec_data['sort'] = $i;
|
|
|
- $spec_value_id[] = Dever::db('psource/spec_value')->insert($spec_data);
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- $update = [];
|
|
|
- if ($spec_value_id) {
|
|
|
- $spec_value_id = implode(',', $spec_value_id);
|
|
|
- $update['spec_type'] = 3;
|
|
|
- } else {
|
|
|
- $spec_value_id = -1;
|
|
|
- $update['spec_type'] = 2;
|
|
|
- }
|
|
|
- if (!$row['sku_code']) {
|
|
|
- $row['sku_code'] = $this->createCode($i);
|
|
|
- }
|
|
|
- $sku_data = ['info_id' => $id, 'key' => $spec_value_id];
|
|
|
- $sku = Dever::db('psource/sku')->find($sku_data);
|
|
|
- $sku_data += ['pic' => $row['sku_pic'], 'price' => $row['sku_price'], 'code' => $row['sku_code']];
|
|
|
- if ($sku) {
|
|
|
- Dever::db('psource/sku')->update($sku['id'], $sku_data);
|
|
|
- } else {
|
|
|
- Dever::db('psource/sku')->insert($sku_data);
|
|
|
- }
|
|
|
-
|
|
|
- $sku = Dever::load(\Api\Lib\Sku::class)->getPrice(['info_id' => $id], $update['spec_type'], 'psource');
|
|
|
- $update['price'] = $sku['price'];
|
|
|
- $update['sku_id'] = $sku['id'];
|
|
|
- Dever::db('psource/info')->update($id, $update);
|
|
|
-
|
|
|
- $i++;
|
|
|
- }
|
|
|
+ $i = Dever::load(\Psource\Lib\Info::class)->createSku($i, $id, [$row['sku_name']], $row['sku_code'], $row['sku_price'], $row['sku_pic'], $row['sku_pic_type']);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@unlink($file);
|
|
|
}
|
|
|
|
|
|
- public function createCode($i)
|
|
|
- {
|
|
|
- // 流水号,补足4位,不足左边补0
|
|
|
- $line = str_pad((string)($i + 1), 4, '0', STR_PAD_LEFT);
|
|
|
-
|
|
|
- // 当前时间 (年月日时分)
|
|
|
- $dateStr = date("YmdHi"); // Y=年, m=月, d=日, H=时, i=分
|
|
|
-
|
|
|
- return $dateStr . $line;
|
|
|
- }
|
|
|
-
|
|
|
|
|
|
# 导出一个模板出来
|
|
|
public function getJiuTemplate($out = false, $import = false)
|
|
@@ -308,77 +236,33 @@ class Excel
|
|
|
$source['cate'] = implode(',', $source['cate']);
|
|
|
|
|
|
if ($info) {
|
|
|
- if ($row['sku_pic']) {
|
|
|
- $pic = explode(',', $info['pic']);
|
|
|
- $pic[] = $row['sku_pic'];
|
|
|
- $source['pic'] = implode(',', $pic);
|
|
|
- }
|
|
|
- if ($info['price'] > $row['sku_price']) {
|
|
|
- $source['price'] = $row['sku_price'];
|
|
|
- }
|
|
|
+ $source['pic'] = Dever::load(\Psource\Lib\Info::class)->createPic($row['sku_pic'], $info['pic']);
|
|
|
Dever::db('psource/info')->update($info['id'], $source);
|
|
|
$id = $info['id'];
|
|
|
} else {
|
|
|
$source['pic'] = $row['sku_pic'];
|
|
|
- $source['price'] = $row['sku_price'];
|
|
|
$id = Dever::db('psource/info')->insert($source);
|
|
|
}
|
|
|
|
|
|
if ($id) {
|
|
|
# 建立规格
|
|
|
- $row['sku_name'] = '颜色:' . $row['color'] . ' & 尺寸:' . $row['size'];
|
|
|
- if (isset($row['sku_name']) && $row['sku_name']) {
|
|
|
- $temp = explode('&', $row['sku_name']);
|
|
|
- $spec_value_id = [];
|
|
|
- foreach ($temp as $v) {
|
|
|
- # 颜色:白色 & 尺寸:35
|
|
|
- $v = trim($v);
|
|
|
- list($spec_name, $spec_value) = explode(':', $v);
|
|
|
-
|
|
|
- $spec_data = ['info_id' => $id, 'name' => $spec_name];
|
|
|
- $spec = Dever::db('psource/spec')->find($spec_data);
|
|
|
- if ($spec) {
|
|
|
- $spec_id = $spec['id'];
|
|
|
- } else {
|
|
|
- $spec_data['sort'] = $i;
|
|
|
- $spec_id = Dever::db('psource/spec')->insert($spec_data);
|
|
|
- }
|
|
|
- if ($spec_id) {
|
|
|
- $spec_data = ['info_id' => $id, 'spec_id' => $spec_id, 'value' => $spec_value];
|
|
|
- $spec_value = Dever::db('psource/spec_value')->find($spec_data);
|
|
|
- if ($spec_value) {
|
|
|
- $spec_value_id[] = $spec_value['id'];
|
|
|
- } else {
|
|
|
- $spec_data['sort'] = $i;
|
|
|
- $spec_value_id[] = Dever::db('psource/spec_value')->insert($spec_data);
|
|
|
- }
|
|
|
- }
|
|
|
+ $color = $row['color'];
|
|
|
+ $sku_name = [];
|
|
|
+ if (strstr($row['size'], '-')) {
|
|
|
+ $temp = explode('-', $row['size']);
|
|
|
+ for ($j = $temp[0]; $j <= $temp[1]; $j++) {
|
|
|
+ $sku_name[] = '颜色:' . $color . ' & 尺寸:' . $j;
|
|
|
}
|
|
|
- $update = [];
|
|
|
- if ($spec_value_id) {
|
|
|
- $spec_value_id = implode(',', $spec_value_id);
|
|
|
- $update['spec_type'] = 3;
|
|
|
- } else {
|
|
|
- $spec_value_id = -1;
|
|
|
- $update['spec_type'] = 2;
|
|
|
+ } elseif (strstr($row['size'], '、')) {
|
|
|
+ $row['size'] = explode('、', $row['size']);
|
|
|
+ foreach ($row['size'] as $v) {
|
|
|
+ $sku_name[] = '颜色:' . $color . ' & 尺寸:' . $v;
|
|
|
}
|
|
|
- $row['sku_code'] = $this->createCode($i);
|
|
|
- $sku_data = ['info_id' => $id, 'key' => $spec_value_id];
|
|
|
- $sku = Dever::db('psource/sku')->find($sku_data);
|
|
|
- $sku_data += ['pic' => $row['sku_pic'], 'price' => $row['sku_price'], 'code' => $row['sku_code']];
|
|
|
- if ($sku) {
|
|
|
- Dever::db('psource/sku')->update($sku['id'], $sku_data);
|
|
|
- } else {
|
|
|
- Dever::db('psource/sku')->insert($sku_data);
|
|
|
- }
|
|
|
-
|
|
|
- $sku = Dever::load(\Api\Lib\Sku::class)->getPrice(['info_id' => $id], $update['spec_type'], 'psource');
|
|
|
- $update['price'] = $sku['price'];
|
|
|
- $update['sku_id'] = $sku['id'];
|
|
|
- Dever::db('psource/info')->update($id, $update);
|
|
|
-
|
|
|
- $i++;
|
|
|
+ } else {
|
|
|
+ $sku_name[] = '颜色:' . $color . ' & 尺寸:' . $row['size'];
|
|
|
}
|
|
|
+
|
|
|
+ $i = Dever::load(\Psource\Lib\Info::class)->createSku($i, $id, $sku_name, '', $row['sku_price'], $row['sku_pic'], 1);
|
|
|
}
|
|
|
}
|
|
|
@unlink($file);
|