Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
yii2_fecshop
提交
010391e9
Y
yii2_fecshop
项目概览
OpenDocCN
/
yii2_fecshop
通知
18
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
yii2_fecshop
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
010391e9
编写于
7月 17, 2019
作者:
T
Terry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
产品部分调整
上级
ab6ab252
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
153 addition
and
4 deletion
+153
-4
config/services/Search.php
config/services/Search.php
+16
-0
migrations/mysqldb/m190716_024608_fecshop_tables.php
migrations/mysqldb/m190716_024608_fecshop_tables.php
+32
-0
services/Product.php
services/Product.php
+22
-2
services/product/Price.php
services/product/Price.php
+4
-0
services/product/ProductMysqldb.php
services/product/ProductMysqldb.php
+79
-2
未找到文件。
config/services/Search.php
浏览文件 @
010391e9
...
...
@@ -45,6 +45,22 @@ return [
],
*/
],
'mysqlSearch'
=>
[
'class'
=>
'fecshop\services\search\MysqlSearch'
,
'enableService'
=>
true
,
/*
'searchLang' => [
'en' => 'english',
'fr' => 'french',
'de' => 'german',
'es' => 'spanish',
'ru' => 'russian',
'pt' => 'portuguese',
'it' => 'italian',
'zh' => 'chinese',
],
*/
],
],
],
];
migrations/mysqldb/m190716_024608_fecshop_tables.php
浏览文件 @
010391e9
...
...
@@ -79,6 +79,38 @@ class m190716_024608_fecshop_tables extends Migration
KEY `category_id` (`category_id`,`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=233 ;
"
,
"
ALTER TABLE `url_rewrite` ADD `created_at` INT( 12 ) NULL ,
ADD `updated_at` INT( 12 ) NULL
"
,
"
CREATE TABLE IF NOT EXISTS `full_search_product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lang` varchar(20) DEFAULT NULL COMMENT '语言简码',
`product_id` varchar(50) DEFAULT NULL COMMENT '产品id',
`name` varchar(255) DEFAULT NULL COMMENT '产品name',
`spu` varchar(100) DEFAULT NULL COMMENT 'spu',
`sku` varchar(100) DEFAULT NULL COMMENT 'sku',
`score` int(11) DEFAULT NULL COMMENT '产品分值',
`status` int(5) DEFAULT NULL COMMENT '产品状态',
`is_in_stock` int(5) DEFAULT NULL COMMENT '产品库存状态',
`url_key` varchar(255) DEFAULT NULL COMMENT '产品url key',
`price` decimal(12,2) DEFAULT NULL COMMENT '产品价格',
`cost_price` decimal(12,2) DEFAULT NULL COMMENT '产品成本价',
`special_price` decimal(12,2) DEFAULT NULL COMMENT '产品特价',
`special_from` int(12) DEFAULT NULL COMMENT '产品特价开始时间',
`special_to` int(12) DEFAULT NULL COMMENT '产品特价结束时间',
`final_price` decimal(12,2) DEFAULT NULL COMMENT '产品最终时间',
`image` text COMMENT '产品图片',
`short_description` text COMMENT '产品简短描述',
`description` text COMMENT '产品描述',
`created_at` int(12) DEFAULT NULL COMMENT '产品创建时间',
`sync_updated_at` int(12) DEFAULT NULL COMMENT '产品同步时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
"
,
];
foreach
(
$arr
as
$sql
)
{
...
...
services/Product.php
浏览文件 @
010391e9
...
...
@@ -74,6 +74,21 @@ class Product extends Service
$currentService
=
$this
->
getStorageService
(
$this
);
$this
->
_product
=
new
$currentService
();
}
// 动态更改为mongodb model
public
function
changeToMongoStorage
()
{
$this
->
storage
=
'ProductMongodb'
;
$currentService
=
$this
->
getStorageService
(
$this
);
$this
->
_product
=
new
$currentService
();
}
// 动态更改为mongodb model
public
function
changeToMysqlStorage
()
{
$this
->
storage
=
'ProductMysqldb'
;
$currentService
=
$this
->
getStorageService
(
$this
);
$this
->
_product
=
new
$currentService
();
}
protected
function
actionGetEnableStatus
()
{
...
...
@@ -395,9 +410,9 @@ class Product extends Service
* 保存产品(插入和更新),以及保存产品的自定义url
* 如果提交的数据中定义了自定义url,则按照自定义url保存到urlkey中,如果没有自定义urlkey,则会使用name进行生成。
*/
protected
function
actionSave
(
$one
,
$originUrlKey
=
'catalog/product/index'
)
protected
function
actionSave
(
$one
,
$originUrlKey
=
'catalog/product/index'
,
$isLoginUser
=
true
)
{
return
$this
->
_product
->
save
(
$one
,
$originUrlKey
);
return
$this
->
_product
->
save
(
$one
,
$originUrlKey
,
$isLoginUser
);
}
/**
...
...
@@ -453,6 +468,11 @@ class Product extends Service
{
return
$this
->
_product
->
getFrontCategoryProducts
(
$filter
);
}
public
function
actionSync
(
$arr
)
{
return
$this
->
_product
->
sync
(
$arr
);
}
/**
* @param $filter_attr | String 需要进行统计的字段名称
...
...
services/product/Price.php
浏览文件 @
010391e9
...
...
@@ -283,6 +283,10 @@ class Price extends Service
*/
protected
function
actionGetCurrentCurrencyProductPriceInfo
(
$price
,
$special_price
,
$special_from
,
$special_to
)
{
$price
=
(
float
)
$price
;
$special_price
=
(
float
)
$special_price
;
$special_from
=
(
int
)
$special_from
;
$special_to
=
(
int
)
$special_to
;
$this
->
currentOff
=
0
;
$price_info
=
$this
->
formatPrice
(
$price
);
$return
[
'price'
]
=
[
...
...
services/product/ProductMysqldb.php
浏览文件 @
010391e9
...
...
@@ -365,7 +365,8 @@ class ProductMysqldb extends Service implements ProductInterface
$model
=
new
$this
->
_productModelName
();
$model
->
created_at
=
time
();
$model
->
created_user_id
=
\
fec\helpers\CUser
::
getCurrentUserId
();
$created_user_id
=
Yii
::
$app
->
user
->
identity
->
id
;
$model
->
created_user_id
=
$created_user_id
;
//$primaryVal = new \MongoDB\BSON\ObjectId();
//$model->{$this->getPrimaryKey()} = $primaryVal;
//验证sku 是否重复
...
...
@@ -432,6 +433,73 @@ class ProductMysqldb extends Service implements ProductInterface
return
$model
;
}
/**
* @param $one|array , 产品数据数组
* 用于将mongodb的数据,同步到mysql中
*/
public
function
sync
(
$one
)
{
if
(
!
$this
->
initSave
(
$one
))
{
return
false
;
}
$defaultLangTitle
=
Yii
::
$service
->
fecshoplang
->
getDefaultLangAttrVal
(
$one
[
'name'
],
'name'
);
$product_one
=
$this
->
_productModel
->
find
()
->
where
([
'sku'
=>
$one
[
'sku'
],
])
->
one
();
if
(
$product_one
[
'sku'
])
{
$model
=
$product_one
;
}
else
{
$model
=
new
$this
->
_productModelName
();
$model
->
created_at
=
time
();
}
$model
->
updated_at
=
time
();
// 计算出来产品的最终价格。
$one
[
'final_price'
]
=
Yii
::
$service
->
product
->
price
->
getFinalPrice
(
$one
[
'price'
],
$one
[
'special_price'
],
$one
[
'special_from'
],
$one
[
'special_to'
]);
$one
[
'score'
]
=
(
int
)
$one
[
'score'
];
unset
(
$one
[
'_id'
]);
/**
* 如果 $one['custom_option'] 不为空,则计算出来库存总数,填写到qty
*/
if
(
is_array
(
$one
[
'custom_option'
])
&&
!
empty
(
$one
[
'custom_option'
]))
{
$custom_option_qty
=
0
;
foreach
(
$one
[
'custom_option'
]
as
$co_one
)
{
$custom_option_qty
+=
$co_one
[
'qty'
];
}
$one
[
'qty'
]
=
$custom_option_qty
;
}
/**
* 保存产品
*/
$one
=
$this
->
serializeSaveData
(
$one
);
$saveStatus
=
Yii
::
$service
->
helper
->
ar
->
save
(
$model
,
$one
);
$product_id
=
$model
->
{
$this
->
getPrimaryKey
()};
// 保存分类
$this
->
updateProductCategory
(
$one
[
'category'
],
$product_id
);
// 自定义url部分
$originUrlKey
=
'catalog/product/index'
;
$originUrl
=
$originUrlKey
.
'?'
.
$this
->
getPrimaryKey
()
.
'='
.
$product_id
;
$originUrlKey
=
isset
(
$one
[
'url_key'
])
?
$one
[
'url_key'
]
:
''
;
//var_dump([$defaultLangTitle, $originUrl, $originUrlKey]);
//echo $defaultLangTitle;
$urlKey
=
Yii
::
$service
->
url
->
saveRewriteUrlKeyByStr
(
$defaultLangTitle
,
$originUrl
,
$originUrlKey
);
$model
->
url_key
=
$urlKey
;
$model
->
save
();
/**
* 更新产品库存。
*/
Yii
::
$service
->
product
->
stock
->
saveProductStock
(
$product_id
,
$one
);
/**
* 更新产品信息到搜索表。
*/
Yii
::
$service
->
search
->
syncProductInfo
([
$product_id
]);
return
$model
;
}
// 保存的数据进行serialize序列化
protected
function
serializeSaveData
(
$one
)
{
...
...
@@ -439,6 +507,9 @@ class ProductMysqldb extends Service implements ProductInterface
$attr_group
=
$one
[
'attr_group'
];
$groupAttrs
=
Yii
::
$service
->
product
->
getGroupAttr
(
$attr_group
);
$groupArr
=
[];
if
(
is_array
(
$one
[
'attr_group_info'
])
&&
!
empty
(
$one
[
'attr_group_info'
]))
{
$groupArr
=
$one
[
'attr_group_info'
];
}
foreach
(
$one
as
$k
=>
$v
)
{
if
(
in_array
(
$k
,
$this
->
serializeAttrs
))
{
$one
[
$k
]
=
serialize
(
$v
);
...
...
@@ -684,7 +755,13 @@ class ProductMysqldb extends Service implements ProductInterface
$query
->
select
(
$select
);
}
return
$query
->
all
();
$coll
=
$query
->
all
();
$arr
=
[];
foreach
(
$coll
as
$one
)
{
$arr
[]
=
$this
->
unserializeData
(
$one
)
;
}
return
$arr
;
}
/**
* 得到分类页面的产品列表
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录