974 lines
46 KiB
PHP
974 lines
46 KiB
PHP
<?php
|
||
namespace app\models\common;
|
||
use Yii;
|
||
use yii\base\Model;
|
||
use yii\db\ActiveRecord;
|
||
use app\models\common\Member;
|
||
class Good extends ActiveRecord{
|
||
//获取门店的商品
|
||
public function getGoodSData($uniacid,$storeId,$userId,$goodsType=1,$isRequire=2,$isShow=1){
|
||
$item=[6,12];
|
||
if($goodsType==2){
|
||
$item=[9,13];
|
||
}
|
||
$storeRe=(new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where('uniacid=:uniacid AND id=:id',[':uniacid'=>$uniacid,':id'=>$storeId])
|
||
->one();
|
||
|
||
//20210525 代码将上面模式三的商品写入到core_goods表
|
||
if($storeRe['isMain']==2&&$storeRe['goodsModel']==3) {
|
||
$oldGoods=(new \yii\db\Query())
|
||
->from('{{%ybwm_store_goods}}')
|
||
->where('uniacid=:uniacid AND storeId=:storeId',[':uniacid'=>$uniacid,':storeId'=>$storeId])
|
||
->all();
|
||
|
||
foreach ($oldGoods as &$v){
|
||
$goodOne=[];
|
||
$goodOne=(new \yii\db\Query())
|
||
->from('{{%ybwm_core_goods}}')
|
||
->where('id=:id',[':id'=>$v['goodsId']])
|
||
->one();
|
||
//导入分类
|
||
$categoryOne=(new \yii\db\Query())
|
||
->from('{{%ybwm_core_category}}')
|
||
->where('id=:id',[':id'=>$goodOne['typePid']])
|
||
->one();
|
||
if($categoryOne){
|
||
$categoryOne['storeId']=$v['storeId'];
|
||
$oldCategoryId=$categoryOne['id'];
|
||
$categoryOne['oldCategoryId']=$oldCategoryId;
|
||
unset($categoryOne['id']);
|
||
$categoryOldOne=(new \yii\db\Query())
|
||
->from('{{%ybwm_core_category}}')
|
||
->where(['oldCategoryId'=>$oldCategoryId,'storeId'=>$storeId])
|
||
->one();
|
||
if($categoryOldOne){
|
||
$categoryId=$categoryOldOne['id'];
|
||
}else{
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_core_category}}', $categoryOne)->execute();
|
||
$categoryId = Yii::$app->db->getLastInsertID();
|
||
}
|
||
$goodOne['isSpecs']=$v['isSpecs'];
|
||
$goodOne['price']=$v['price'];
|
||
$goodOne['maxPrice']=$v['maxPrice'];
|
||
$goodOne['stock']=$v['stock'];
|
||
$goodOne['boxMoney']=$v['boxMoney']?:$goodOne['boxMoney'];
|
||
$goodOne['isAttr']=$v['isAttr'];
|
||
$goodOne['isMaterial']=$v['isMaterial'];
|
||
$goodOne['deleteAt']=$v['deleteAt'];
|
||
$goodOne['salesNum']=$v['salesNum'];
|
||
$goodOne['isRecommend']=$v['isRecommend'];
|
||
$goodOne['display']=$v['display'];
|
||
$goodOne['createdAt']=$v['createdAt'];
|
||
$goodOne['storeId']=$v['storeId'];
|
||
$goodOne['typePid']=$categoryId;
|
||
unset($goodOne['id']);
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_core_goods}}', $goodOne)->execute();
|
||
$goodNewId = Yii::$app->db->getLastInsertID();
|
||
$storeData=json_decode($v['data'],true);
|
||
if($v['isSpecs']==1&&$storeData['specs']){
|
||
foreach ($storeData['specs'] as $vo){
|
||
$specsOne=array(
|
||
'goodId'=>$goodNewId,
|
||
'specsName'=>$vo['specsName'],
|
||
'SalesPrice'=>$vo['SalesPrice'],
|
||
'SalesStock'=>$vo['SalesStock'],
|
||
'createdAt'=>$vo['createdAt']?:time(),
|
||
'fillType'=>$vo['fillType'],
|
||
'crossedPrice'=>$vo['crossedPrice'],
|
||
'goodCode'=>$vo['goodCode'],
|
||
'costPrice'=>$vo['costPrice'],
|
||
'uniacid'=>$v['uniacid'],
|
||
'storeId'=>$v['storeId'],
|
||
'boxMoney'=>$vo['boxMoney']?:0,
|
||
);
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_good_specs}}', $specsOne)->execute();
|
||
}
|
||
|
||
}else{
|
||
if($goodOne['isSpecs']==1){
|
||
Yii::$app->db->createCommand()->update('{{%ybwm_core_goods}}', ['isSpecs'=>2],['id'=>$goodNewId])->execute();
|
||
}
|
||
}
|
||
//属性
|
||
if($v['isAttr']==1){
|
||
if($storeData['attr']){
|
||
foreach ($storeData['attr'] as $vo){
|
||
$attrOne=array(
|
||
'goodId'=>$goodNewId,
|
||
'attrName'=>$vo['attrName'],
|
||
'attrStr'=>$vo['attrStr'],
|
||
'createdAt'=>$vo['createdAt']?:time(),
|
||
'uniacid'=>$v['uniacid'],
|
||
'storeId'=>$v['storeId'],
|
||
);
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_good_attribute}}', $attrOne)->execute();
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
if($v['isMaterial']==1){
|
||
if($storeData['materia']) {
|
||
foreach ($storeData['materia'] as $vo) {
|
||
$materiaOne = array(
|
||
'goodId' => $goodNewId,
|
||
'materialName' => $vo['materialName'],
|
||
'SalesPrice' => $vo['SalesPrice'],
|
||
'SalesStock' => $vo['SalesStock'],
|
||
'createdAt' => $vo['createdAt'] ?: time(),
|
||
'fillType' => $vo['fillType'],
|
||
'uniacid' => $v['uniacid'],
|
||
'storeId' => $v['storeId'],
|
||
);
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_good_materia}}', $materiaOne)->execute();
|
||
}
|
||
}
|
||
}
|
||
Yii::$app->db->createCommand()->delete('{{%ybwm_store_goods}}', ['id'=>$v['id']])->execute();
|
||
}
|
||
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
$mainStoreId=(new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where('uniacid=:uniacid AND isMain=1',[':uniacid'=>$uniacid])
|
||
->one()['id'];
|
||
$query=(new \yii\db\Query())
|
||
->select('name,id,pid,icon,isRequire,customName,timeType,weekStr,startTime,endTime,item')
|
||
->from('{{%ybwm_core_category}}')
|
||
->where(['deleteAt' => 0,'uniacid'=>$uniacid,'display'=>1,'pid'=>0])
|
||
->andWhere(['in','item',$item]);
|
||
if($isRequire==1){
|
||
$query->andWhere(['isRequire'=>$isRequire]);
|
||
}
|
||
//如果是总门店
|
||
if($storeRe['isMain']==2&&$storeRe['goodsModel']==3){
|
||
$query->andWhere(['storeId'=>$storeId]);
|
||
}else{
|
||
$query->andWhere(['storeId'=>$mainStoreId]);
|
||
}
|
||
$res=$query->orderBy('item desc,sort asc,id desc')
|
||
->all();
|
||
//获取门店商品设置
|
||
$storeConfig=Config::getSystemSet('currency', $uniacid);
|
||
//saleShow 销量显示 1开启2关闭 stockShow 库存显示 1开启2关闭 sellOutShow 售罄显示 1开启2关闭
|
||
//dd($res);die;
|
||
//商品分类取总门店的分类加当前门店分类
|
||
foreach ($res as $k=>$v){
|
||
//如果是自定义显示分类
|
||
if($isShow==1){
|
||
if($v['timeType']==2){
|
||
//判断当天在周几
|
||
if(in_array(getWeek(),json_decode($v['weekStr'],true))==false){
|
||
unset($res[$k]);
|
||
continue; // 当 $value为b时,跳出本次循环
|
||
}
|
||
if($v['startTime']&&$v['endTime']){
|
||
if(time()<strtotime($v['startTime'])||time()>strtotime($v['endTime'])){
|
||
unset($res[$k]);
|
||
continue; // 当 $value为b时,跳出本次循环
|
||
}
|
||
}
|
||
}
|
||
}
|
||
if($storeRe['isMain']==1||$storeRe['goodsModel']==3) {
|
||
$goodQuery= (new \yii\db\Query())
|
||
->select('a.typePid,a.aloneType,a.id,a.name,icon,0 + CAST(price AS CHAR)price,(salesNum+virtualSales)salesNum,stock,minNum,maxNum,num,a.body,b.name labelName,b.color as labelColor,a.isSpecs,a.isAttr,a.isMaterial,a.salesType,a.startTime,a.endTime,a.weekDay,a.weekSalesType')
|
||
->leftJoin('{{%ybwm_core_label}} b', 'a.goodLabel=b.id')
|
||
->from('{{%ybwm_core_goods}} a')
|
||
->where(['a.goodsType'=>$goodsType, 'a.deleteAt' => 0, 'a.uniacid' => $uniacid, 'a.storeId' => $storeId, 'a.display' => 1]);
|
||
if($v['item']==12 || $v['item']==13){
|
||
if($v['customName']=='新品'){
|
||
$goodQuery->andWhere(['a.specialType' => 1]);
|
||
}
|
||
if($v['customName']=='热卖'){
|
||
$goodQuery->andWhere(['a.specialType' => 2]);
|
||
}
|
||
if($v['customName']=='推荐'){
|
||
$goodQuery->andWhere(['a.specialType' => 3]);
|
||
}
|
||
}else{
|
||
$goodQuery->andWhere(['a.typePid' => $v['id']]);
|
||
}
|
||
if($storeConfig['sellOutShow']==2){
|
||
$goodQuery->andWhere(['>','a.stock',0]);
|
||
}
|
||
//var_dump(ddSql($goodQuery));die;
|
||
$res[$k]['goods']=$goodQuery->orderBy('a.sort asc,a.id desc')
|
||
->all();
|
||
}else{
|
||
$goodQuery=(new \yii\db\Query())
|
||
->select('b.typePid,a.data,a.isSpecs,b.isSpecs goodSpecs,b.aloneType,a.goodsId id,b.name,icon,0 + CAST(a.price AS CHAR)price,(a.salesNum+b.virtualSales)salesNum,a.stock,b.minNum,b.maxNum,b.num,b.body,c.name labelName,c.color as labelColor,a.isSpecs,b.isAttr,b.isMaterial,b.salesType,b.startTime,b.endTime,b.weekDay,b.weekSalesType')
|
||
->from('{{%ybwm_store_goods}} a')
|
||
->leftJoin('{{%ybwm_core_goods}} b', 'a.goodsId=b.id')
|
||
->leftJoin('{{%ybwm_core_label}} c', 'b.goodLabel=c.id')
|
||
->where(['b.goodsType'=>$goodsType, 'b.deleteAt' => 0, 'a.uniacid' => $uniacid, 'a.storeId' => $storeId, 'a.display' => 1]);
|
||
if($v['item']==12 || $v['item']==13){
|
||
if($v['customName']=='新品'){
|
||
$goodQuery->andWhere(['b.specialType' => 1]);
|
||
}
|
||
if($v['customName']=='热卖'){
|
||
$goodQuery->andWhere(['b.specialType' => 2]);
|
||
}
|
||
if($v['customName']=='推荐'){
|
||
$goodQuery->andWhere(['b.specialType' => 3]);
|
||
}
|
||
}else{
|
||
$goodQuery->andWhere(['b.typePid' => $v['id']]);
|
||
}
|
||
if($storeConfig['sellOutShow']==2){
|
||
$goodQuery->andWhere(['>','a.stock',0]);
|
||
}
|
||
|
||
$res[$k]['goods']=$goodQuery->orderBy('b.sort asc,b.id desc')
|
||
->all();
|
||
}
|
||
// dd($res[$k]['goods']);die;
|
||
foreach ($res[$k]['goods'] as $ko=>$vo){
|
||
$activityGoodData=self::getGoodActivity($uniacid,$storeId,$vo['price'],$vo['id'],$goodsType);
|
||
|
||
$res[$k]['goods'][$ko]['activityGoodData']=$activityGoodData;
|
||
$res[$k]['goods'][$ko]['vipPrice']=Member::getDiscountByGood($userId,$vo['id'],$vo['price'])['money'];
|
||
if($activityGoodData['type']==1 || $activityGoodData['type']==2 || $activityGoodData['type']==3){
|
||
$res[$k]['goods'][$ko]['vipPrice']=Member::getDiscountByGood($userId,$vo['id'],$activityGoodData['activityMoney'])['money'];
|
||
}
|
||
if($storeRe['isMain']==2&&$storeRe['goodsModel']<3){
|
||
$res[$k]['goods'][$ko]['isSpecs']=$res[$k]['goods'][$ko]['goodSpecs'];
|
||
Yii::$app->db->createCommand()->update('{{%ybwm_store_goods}}',['isSpecs'=>$res[$k]['goods'][$ko]['goodSpecs']], ['goodsId'=>$res[$k]['goods'][$ko]['id'],'storeId'=>$storeId])->execute();
|
||
}
|
||
|
||
if($vo['salesType']==2){
|
||
if($vo['startTime']>time()||$vo['endTime']<time()) {
|
||
unset($res[$k]['goods'][$ko]);
|
||
}
|
||
if(in_array(getWeek(),json_decode($vo['weekDay'],true))==false){
|
||
unset($res[$k]['goods'][$ko]);
|
||
}
|
||
if($vo['weekSalesType']==2){
|
||
if($storeRe['isMain']==1||$storeRe['goodsModel']==3){
|
||
$goodTimeArr=(new \yii\db\Query())
|
||
->select('startTime,endTime')
|
||
->from('{{%ybwm_good_hours}}')
|
||
->where(['uniacid' => $uniacid, 'goodId' =>$vo['id']])->andWhere(['storeId' => $storeId])->all();
|
||
}else{
|
||
$goodTimeArr=(new \yii\db\Query())
|
||
->select('startTime,endTime')
|
||
->from('{{%ybwm_good_hours}}')
|
||
->where(['uniacid' => $uniacid, 'goodId' =>$vo['id']])->andWhere(['storeId' => $mainStoreId])->all();
|
||
}
|
||
|
||
if($goodTimeArr){
|
||
$bool=0;
|
||
foreach ($goodTimeArr as $vs){
|
||
$strBool=getCurrentTimeSection($vs['startTime'],$vs['endTime']);
|
||
if($strBool){
|
||
$bool++;
|
||
}
|
||
}
|
||
if(!$bool){
|
||
unset($res[$k]['goods'][$ko]);
|
||
}
|
||
}else{
|
||
unset($res[$k]['goods'][$ko]);
|
||
}
|
||
|
||
}
|
||
}
|
||
}
|
||
|
||
$res[$k]['goods']=array_values($res[$k]['goods']);
|
||
if(!$res[$k]['goods']){
|
||
unset($res[$k]);
|
||
}
|
||
}
|
||
|
||
|
||
$data=array_values($res);
|
||
return $data;
|
||
}
|
||
|
||
//获取指定分类下的商品
|
||
public function getCategoryGoods($uniacid,$storeId,$cid){
|
||
$re= (new \yii\db\Query())
|
||
->from('{{%ybwm_core_category}}')
|
||
->where(['id'=>$cid,'deleteAt'=>0,'uniacid'=>$uniacid,'item'=>6])
|
||
->one();
|
||
$storeRes=(new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where('uniacid=:uniacid AND id=:id',[':uniacid'=>$uniacid,':id'=>$storeId])
|
||
->one();
|
||
$storeConfig=Config::getSystemSet('currency', $uniacid);
|
||
if($storeRes['isMain']==1||$storeRes['goodsModel']==3){
|
||
$goodsQuery=(new \yii\db\Query())
|
||
->select('a.aloneType,a.id,a.name,icon,0 + CAST(price AS CHAR)price,salesNum,stock,minNum,maxNum,num,a.body,b.name labelName,b.color as labelColor,a.isSpecs,a.isAttr,a.isMaterial,a.salesType,a.startTime,a.endTime,a.weekDay,a.weekSalesType')
|
||
->leftJoin('{{%ybwm_core_label}} b', 'a.goodLabel=b.id')
|
||
->from('{{%ybwm_core_goods}} a')
|
||
->where('a.uniacid=:uniacid AND a.storeId=:storeId and a.deleteAt=0 and a.display=1',[':uniacid'=>$uniacid,':storeId'=>$storeId]);
|
||
}else {
|
||
$goodsQuery=(new \yii\db\Query())
|
||
->select('b.aloneType,a.goodsId id,b.name,icon,0 + CAST(a.price AS CHAR)price,b.salesNum,a.stock,b.minNum,b.maxNum,b.num,b.body,c.name labelName,c.color as labelColor,b.isSpecs,b.isAttr,b.isMaterial,b.salesType,b.startTime,b.endTime,b.weekDay,b.weekSalesType')
|
||
->from('{{%ybwm_store_goods}} a')
|
||
->leftJoin('{{%ybwm_core_goods}} b', 'a.goodsId=b.id')
|
||
->leftJoin('{{%ybwm_core_label}} c', 'b.goodLabel=c.id')
|
||
->where('a.uniacid=:uniacid AND a.storeId=:storeId and b.deleteAt=0 and a.display=1',[':uniacid'=>$uniacid,':storeId'=>$storeId]);
|
||
}
|
||
if($re['pid']==0){
|
||
$goodsQuery->andWhere(['typePid'=>$cid]);
|
||
}else{
|
||
$goodsQuery->andWhere(['typeId'=>$cid]);
|
||
}
|
||
if($storeConfig['sellOutShow']==2){
|
||
$goodsQuery->andWhere(['>','a.stock',0]);
|
||
}
|
||
if($storeRes['isMain']==1||$storeRes['goodsModel']==1) {
|
||
$goodsData = $goodsQuery->orderBy('a.sort asc,a.id desc')->all();
|
||
}else{
|
||
$goodsData = $goodsQuery->orderBy('b.sort asc,a.id desc')->all();
|
||
}
|
||
foreach ($goodsData as $ko=>$vo){
|
||
if($vo['salesType']==2){
|
||
if($vo['startTime']>time()||$vo['endTime']<time()) {
|
||
unset($goodsData[$ko]);
|
||
}
|
||
if(in_array(getWeek(),json_decode($vo['weekDay'],true))==false){
|
||
unset($goodsData[$ko]);
|
||
}
|
||
if($vo['weekSalesType']==2){
|
||
$goodTimeArr=(new \yii\db\Query())
|
||
->select('startTime,endTime')
|
||
->from('{{%ybwm_good_hours}}')
|
||
->where(['uniacid' => $uniacid, 'storeId' => $storeId, 'goodId' =>$vo['id']])
|
||
->all();
|
||
$bool=0;
|
||
foreach ($goodTimeArr as $vs){
|
||
$strBool=getCurrentTimeSection($vs['startTime'],$vs['endTime']);
|
||
if($strBool){
|
||
$bool++;
|
||
}
|
||
}
|
||
if(!$bool){
|
||
unset($goodsData[$ko]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
$goodsData=array_values($goodsData);
|
||
return $goodsData;
|
||
}
|
||
|
||
|
||
//搜索的商品
|
||
public function getSelectGoods($uniacid,$storeId,$keyword,$page,$size,$userId=null,$goodsType=1){
|
||
|
||
$storeRes=(new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where('uniacid=:uniacid AND id=:id',[':uniacid'=>$uniacid,':id'=>$storeId])
|
||
->one();
|
||
$storeConfig=Config::getSystemSet('currency', $uniacid);
|
||
if($storeRes['isMain']==1||$storeRes['goodsModel']==3){
|
||
$goodsQuery=(new \yii\db\Query())
|
||
->select('a.display,a.aloneType,a.id,a.name,icon,0 + CAST(price AS CHAR)price,salesNum,stock,minNum,maxNum,num,a.body,b.name labelName,b.color as labelColor,a.isSpecs,a.isAttr,a.isMaterial,a.salesType,a.startTime,a.endTime,a.weekDay,a.weekSalesType')
|
||
->leftJoin('{{%ybwm_core_label}} b', 'a.goodLabel=b.id')
|
||
->from('{{%ybwm_core_goods}} a')
|
||
->where('a.uniacid=:uniacid AND a.storeId=:storeId and a.deleteAt=0 and a.display=1 and a.goodsType='.$goodsType,[':uniacid'=>$uniacid,':storeId'=>$storeId]);
|
||
if($keyword){
|
||
$goodsQuery->andWhere(['like','a.name',$keyword]);
|
||
}
|
||
}else {
|
||
$goodsQuery=(new \yii\db\Query())
|
||
->select('a.display,b.aloneType,a.goodsId id,b.name,icon,0 + CAST(a.price AS CHAR)price,b.salesNum,a.stock,b.minNum,b.maxNum,b.num,b.body,c.name labelName,c.color as labelColor,b.isSpecs,b.isAttr,b.isMaterial,b.salesType,b.startTime,b.endTime,b.weekDay,b.weekSalesType')
|
||
->from('{{%ybwm_store_goods}} a')
|
||
->leftJoin('{{%ybwm_core_goods}} b', 'a.goodsId=b.id')
|
||
->leftJoin('{{%ybwm_core_label}} c', 'b.goodLabel=c.id')
|
||
->where('a.uniacid=:uniacid AND a.storeId=:storeId and b.deleteAt=0 and a.display=1 and b.goodsType='.$goodsType,[':uniacid'=>$uniacid,':storeId'=>$storeId]);
|
||
if($keyword){
|
||
$goodsQuery->andWhere(['like','b.name',$keyword]);
|
||
}
|
||
}
|
||
if($storeConfig['sellOutShow']==2){
|
||
$goodsQuery->andWhere(['>','a.stock',0]);
|
||
}
|
||
|
||
if($storeRes['isMain']==1||$storeRes['goodsModel']==3) {
|
||
$goodsData = $goodsQuery->offset(($page - 1) * $size)->limit($size)->orderBy('a.sort asc,a.id desc')->all();
|
||
}else{
|
||
$goodsData = $goodsQuery->offset(($page - 1) * $size)->limit($size)->orderBy('b.sort asc,a.id desc')->all();
|
||
}
|
||
foreach ($goodsData as $ko=>$vo){
|
||
$activityGoodData=self::getGoodActivity($uniacid,$storeId,$vo['price'],$vo['id'],$goodsType);
|
||
$goodsData[$ko]['activityGoodData']=$activityGoodData;
|
||
$goodsData[$ko]['vipPrice']=Member::getDiscountByGood($userId,$vo['id'],$vo['price'])['money'];
|
||
if($activityGoodData['type']==1 || $activityGoodData['type']==2 || $activityGoodData['type']==3){
|
||
$goodsData[$ko]['vipPrice']=Member::getDiscountByGood($userId,$vo['id'],$activityGoodData['activityMoney'])['money'];
|
||
}
|
||
if($vo['salesType']==2){
|
||
if($vo['startTime']>time()||$vo['endTime']<time()) {
|
||
unset($goodsData[$ko]);
|
||
}
|
||
if(in_array(getWeek(),json_decode($vo['weekDay'],true))==false){
|
||
unset($goodsData[$ko]);
|
||
}
|
||
if($vo['weekSalesType']==2){
|
||
$goodTimeArr=(new \yii\db\Query())
|
||
->select('startTime,endTime')
|
||
->from('{{%ybwm_good_hours}}')
|
||
->where(['uniacid' => $uniacid, 'storeId' => $storeId, 'goodId' =>$vo['id']])
|
||
->all();
|
||
$bool=0;
|
||
foreach ($goodTimeArr as $vs){
|
||
$strBool=getCurrentTimeSection($vs['startTime'],$vs['endTime']);
|
||
if($strBool){
|
||
$bool++;
|
||
}
|
||
}
|
||
if(!$bool){
|
||
unset($goodsData[$ko]);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
$goodsData=array_values($goodsData);
|
||
return $goodsData;
|
||
}
|
||
|
||
//获取指定门店的商品分类
|
||
public function getCategoryList($uniacid){
|
||
$storeId=(new \yii\db\Query())
|
||
->select('id')
|
||
->from('{{%ybwm_store}}')
|
||
->where('uniacid=:uniacid AND isMain=1',[':uniacid'=>$uniacid])
|
||
->one()['id'];
|
||
$re= (new \yii\db\Query())
|
||
->select('id,icon,name,pid,isRequire')
|
||
->from('{{%ybwm_core_category}}')
|
||
->where(['deleteAt'=>0,'uniacid'=>$uniacid,'item'=>6,'storeId'=>$storeId])
|
||
->orderBy('sort asc,id desc')
|
||
->all();
|
||
$categoryData=self::getTree($re,0);
|
||
return $categoryData;
|
||
}
|
||
|
||
|
||
public function getTree($arr,$id){
|
||
$list =array();
|
||
|
||
foreach ($arr as $k=>$v){
|
||
if ($v['pid'] == $id){
|
||
if(self::getTree($arr,$v['id'])){
|
||
$v['children'] =self::getTree($arr,$v['id']);
|
||
}
|
||
$list[] = $v;
|
||
}
|
||
}
|
||
return $list;
|
||
}
|
||
//计算商品的浏览量
|
||
public function getGoodVisit($uniacid,$storeId,$id,$startTime=null,$endTime=null){
|
||
$goodQuery=(new \yii\db\Query())
|
||
->from('{{%ybwm_goods_visit}}')
|
||
->where('uniacid=:uniacid AND storeId=:storeId AND goodsId=:goodsId',[':uniacid'=>$uniacid,'storeId'=>$storeId,'goodsId'=>$id]);
|
||
if($startTime&&$endTime){
|
||
$goodQuery->andWhere('createdAt>=:startTime AND createdAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]);
|
||
}
|
||
$count=$goodQuery->count();
|
||
return $count?:0;
|
||
}
|
||
//计算商品的下单数
|
||
public function getGoodCount($uniacid,$storeId,$id,$startTime,$endTime){
|
||
$goodQuery=(new \yii\db\Query())
|
||
->from('{{%ybwm_order_goods}} a')
|
||
->leftJoin('{{%ybwm_takeout_order}} b','a.orderId=b.id')
|
||
->where('a.uniacid=:uniacid AND a.storeId=:storeId AND goodsId=:goodsId AND b.state in (2,3,4,5,6)',[':uniacid'=>$uniacid,'storeId'=>$storeId,'goodsId'=>$id]);
|
||
if($startTime&&$endTime){
|
||
$goodQuery->andWhere('a.createdAt>=:startTime AND a.createdAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]);
|
||
}
|
||
$count=$goodQuery->count();
|
||
return $count?:0;
|
||
}
|
||
//计算商品的销售量
|
||
public function getGoodSum($uniacid,$storeId,$id,$startTime,$endTime){
|
||
$goodQuery=(new \yii\db\Query())
|
||
->from('{{%ybwm_order_goods}} a')
|
||
->leftJoin('{{%ybwm_takeout_order}} b','a.orderId=b.id')
|
||
->where('a.uniacid=:uniacid AND a.storeId=:storeId AND goodsId=:goodsId AND b.state in (2,3,4,5,6)',[':uniacid'=>$uniacid,'storeId'=>$storeId,'goodsId'=>$id]);
|
||
if($startTime&&$endTime){
|
||
$goodQuery->andWhere('a.createdAt>=:startTime AND a.createdAt<=:endTime',[':startTime'=>$startTime,':endTime'=>$endTime]);
|
||
}
|
||
$count=$goodQuery->sum('a.num');
|
||
return $count?:0;
|
||
}
|
||
|
||
//同步分类下的商品
|
||
public function synchroGoods($storeId,$typeId){
|
||
$goodType=(new \yii\db\Query())
|
||
->from('{{%ybwm_core_category}}')
|
||
->where('id=:id',[':id'=>$typeId])->one();
|
||
unset($goodType['id']);
|
||
$goodType['item']=9;
|
||
// $category=(new \yii\db\Query())
|
||
// ->from('{{%ybwm_core_category}}')
|
||
// ->where($goodType)->one();
|
||
// print_R($category);die;
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_core_category}}', $goodType)->execute();
|
||
$newTypeId = Yii::$app->db->getLastInsertID();
|
||
$goodArr=(new \yii\db\Query())
|
||
->from('{{%ybwm_core_goods}}')
|
||
->where('typePid=:typePid AND deleteAt=0',[':typePid'=>$typeId])->all();
|
||
for($i=0;$i<count($goodArr);$i++){
|
||
$attribute=(new \yii\db\Query())
|
||
->from('{{%ybwm_good_attribute}}')
|
||
->where('goodId=:goodId',[':goodId'=>$goodArr[$i]['id']])->all();
|
||
$hours=(new \yii\db\Query())
|
||
->from('{{%ybwm_good_hours}}')
|
||
->where('goodId=:goodId',[':goodId'=>$goodArr[$i]['id']])->all();
|
||
$materia=(new \yii\db\Query())
|
||
->from('{{%ybwm_good_materia}}')
|
||
->where('goodId=:goodId',[':goodId'=>$goodArr[$i]['id']])->all();
|
||
$specs=(new \yii\db\Query())
|
||
->from('{{%ybwm_good_specs}}')
|
||
->where('goodId=:goodId',[':goodId'=>$goodArr[$i]['id']])->all();
|
||
$goodArr[$i]['goodsType']=2;
|
||
$goodArr[$i]['typePid']=$newTypeId;
|
||
$goodArr[$i]['typeId']=0;
|
||
$goodArr[$i]['storeId']=$storeId;
|
||
unset($goodArr[$i]['id']);
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_core_goods}}', $goodArr[$i])->execute();
|
||
$goodsId = Yii::$app->db->getLastInsertID();
|
||
|
||
//如果是主门店 模式一的子门店都插入一条数据
|
||
|
||
//同步插入到子门店商品列表中
|
||
$shopDatas = (new \yii\db\Query())
|
||
->select('id')
|
||
->from('{{%ybwm_store}}')
|
||
->where(['uniacid' => $goodType['uniacid'], 'isMain' => 2,'deleteAt'=>0])
|
||
->andWhere(['<','goodsModel',3])
|
||
->all();
|
||
if ($shopDatas){
|
||
foreach ($shopDatas as $v){
|
||
$subArray=array(
|
||
'goodsId'=>$goodsId,
|
||
'display'=>3,
|
||
'stock'=>intval(trim($goodArr[$i]['stock']))?:'0',
|
||
'price'=>trim($goodArr[$i]['price']),
|
||
'storeId'=>$v['id'],
|
||
'uniacid'=>$goodType['uniacid'],
|
||
'createdAt'=>time(),
|
||
'isSpecs'=>$goodArr[$i]['isSpecs'],
|
||
'data'=>json_encode(['specs'=>$specs,'attr'=>$attribute,'materia'=>$materia])
|
||
);
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_store_goods}}', $subArray)->execute();
|
||
}
|
||
|
||
}
|
||
|
||
if($attribute){
|
||
for($a=0;$a<count($attribute);$a++){
|
||
unset($attribute[$a]['id']);
|
||
$attribute[$a]['goodId']=$goodsId;
|
||
$attribute[$a]['storeId']=$storeId;
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_good_attribute}}', $attribute[$a])->execute();
|
||
}
|
||
|
||
}
|
||
if($hours){
|
||
for($h=0;$h<count($hours);$h++) {
|
||
unset($hours[$h]['id']);
|
||
$hours[$h]['goodId'] = $goodsId;
|
||
$hours[$h]['storeId'] = $storeId;
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_good_hours}}', $hours[$h])->execute();
|
||
}
|
||
}
|
||
if($materia){
|
||
for($m=0;$m<count($materia);$m++) {
|
||
unset($materia[$m]['id']);
|
||
$materia[$m]['goodId'] = $goodsId;
|
||
$materia[$m]['storeId'] = $storeId;
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_good_materia}}', $materia[$m])->execute();
|
||
}
|
||
}
|
||
if($specs){
|
||
for($s=0;$s<count($specs);$s++) {
|
||
unset($specs[$s]['id']);
|
||
$specs[$s]['goodId'] = $goodsId;
|
||
$specs[$s]['storeId'] = $storeId;
|
||
Yii::$app->db->createCommand()->insert('{{%ybwm_good_specs}}', $specs[$s])->execute();
|
||
}
|
||
}
|
||
}
|
||
return true;
|
||
|
||
}
|
||
//查看商品活动后的价格
|
||
public function getGoodActivity($uniacid,$storeId,$money,$goodsId,$goodsType=1){
|
||
$startTime=strtotime(date("Y-m-d")." 00:00:00");
|
||
$endTime=strtotime(date("Y-m-d")." 23:59:59");
|
||
$query=(new \yii\db\Query())
|
||
->from('{{%ybwm_good_activity}}')
|
||
->where('uniacid=:uniacid AND abolishAt=0 AND display=1 AND deleteAt=0 AND startTime<:startTime AND endTime>:endTime',
|
||
[':endTime'=>time(),':startTime'=>time(),':uniacid'=>$uniacid])
|
||
->andWhere(['or',['storeId'=>$storeId,'storeType'=>1],['storeType'=>2],['and',['storeType'=>3],['like','storeArr',$storeId]]])
|
||
->orderBy('id desc');
|
||
if($goodsType==1){
|
||
$query->andWhere(['like','goodsArr','"id":"'.$goodsId.'"']);
|
||
}else{
|
||
$query->andWhere(['like','goodsArr2','"id":"'.$goodsId.'"']);
|
||
}
|
||
|
||
//var_dump(ddSql($query));die;
|
||
$info=$query->one();
|
||
if($goodsType==1){
|
||
$orderNum=(new \yii\db\Query())
|
||
->from('{{%ybwm_order_goods}} as a')
|
||
->leftJoin('{{%ybwm_takeout_order}} b', 'a.orderId=b.id')
|
||
->where('a.storeId=:storeId AND a.goodsId=:goodsId AND a.item=1 AND a.isActivity>0 AND b.state in (1,2,3,4,5,6,9) AND a.createdAt>=:startTime AND a.createdAt<=:endTime',
|
||
[':startTime'=>$startTime,':endTime'=>$endTime,':storeId'=>$storeId,':goodsId'=>$goodsId])
|
||
->sum('a.num')?:0;
|
||
}else{
|
||
$orderNum=(new \yii\db\Query())
|
||
->from('{{%ybwm_order_goods}} as a')
|
||
->leftJoin('{{%ybwm_instore_order}} b', 'a.orderId=b.id')
|
||
->where('a.storeId=:storeId AND a.goodsId=:goodsId AND a.item>1 AND a.createdAt>=:startTime AND a.createdAt<=:endTime',
|
||
[':startTime'=>$startTime,':endTime'=>$endTime,':storeId'=>$storeId,':goodsId'=>$goodsId])
|
||
->andWhere(['in','b.state',[2,3]])
|
||
->sum('a.num')?:0;
|
||
}
|
||
// if($goodsId==10){
|
||
// var_dump($orderNum);
|
||
// var_dump($info['stock']);die;
|
||
// }
|
||
|
||
if($orderNum>=$info['stock']){
|
||
return [
|
||
'id'=>0,
|
||
'type'=>0,
|
||
'money'=>0,
|
||
'activityMoney'=>$money,
|
||
'limitNum'=>0,
|
||
'limitType'=>$info['limitType'],
|
||
'stock'=>$info['stock'],
|
||
];
|
||
}
|
||
$limitType=$info['limitType'];
|
||
if($limitType==1){
|
||
$limitNum=0;
|
||
}else{
|
||
$limitNum=$info['limitNum']?:1;
|
||
}
|
||
|
||
if($info['type']==1){
|
||
return [
|
||
'id'=>$info['id'],
|
||
'type'=>$info['type'],
|
||
'discount'=>$info['goodsMoney'],
|
||
'activityMoney'=>$info['goodsMoney'],
|
||
'limitNum'=>$limitNum,
|
||
'limitType'=>$info['limitType'],
|
||
'stock'=>$info['stock'],
|
||
];
|
||
}
|
||
if($info['type']==2){
|
||
return [
|
||
'id'=>$info['id'],
|
||
'type'=>$info['type'],
|
||
'discount'=>$info['goodsMoney'],
|
||
'activityMoney'=>bcmul($money,$info['goodsMoney']/10,2),
|
||
'limitNum'=>$limitNum,
|
||
'limitType'=>$info['limitType'],
|
||
'stock'=>$info['stock'],
|
||
];
|
||
}
|
||
if($info['type']==3){
|
||
return [
|
||
'id'=>$info['id'],
|
||
'type'=>$info['type'],
|
||
'discount'=>$info['goodsMoney'],
|
||
'activityMoney'=>bcsub($money,$info['goodsMoney'],2),
|
||
'limitNum'=>$limitNum,
|
||
'limitType'=>$info['limitType'],
|
||
'stock'=>$info['stock'],
|
||
];
|
||
}
|
||
if($info['type']==4){
|
||
return [
|
||
'id'=>$info['id'],
|
||
'type'=>$info['type'],
|
||
'discount'=>$info['goodsMoney'],
|
||
'activityMoney'=>bcmul($money,$info['goodsMoney']/10,2),
|
||
'limitNum'=>$limitNum,
|
||
'limitType'=>$info['limitType'],
|
||
'stock'=>$info['stock'],
|
||
];
|
||
}
|
||
if($info['type']==5){
|
||
return [
|
||
'id'=>$info['id'],
|
||
'type'=>$info['type'],
|
||
'discount'=>0,
|
||
'activityMoney'=>0,
|
||
'limitNum'=>$limitNum,
|
||
'limitType'=>$info['limitType'],
|
||
'stock'=>$info['stock'],
|
||
];
|
||
}
|
||
return [
|
||
'id'=>0,
|
||
'type'=>0,
|
||
'money'=>0,
|
||
'activityMoney'=>$money,
|
||
'limitNum'=>0,
|
||
'limitType'=>$info['limitType'],
|
||
'stock'=>$info['stock'],
|
||
];
|
||
|
||
|
||
}
|
||
//查看商品价格
|
||
public function getGoodMoneyByCar($carId){
|
||
$shopInfo = (new \yii\db\Query())
|
||
->from('{{%ybwm_shop_car}}')
|
||
->where(['id' => $carId])
|
||
->one();
|
||
$goodInfo = (new \yii\db\Query())
|
||
->from('{{%ybwm_core_goods}}')
|
||
->where(['id' => $shopInfo['goodsId'], 'uniacid' => $shopInfo['uniacid']])
|
||
->one();
|
||
$storeRe=(new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where('uniacid=:uniacid AND id=:id',[':uniacid'=>$shopInfo['uniacid'],':id'=>$shopInfo['storeId']])
|
||
->one();
|
||
|
||
if($storeRe['isMain']==2&&$storeRe['goodsModel']<3){
|
||
$storeGood=(new \yii\db\Query())
|
||
->from('{{%ybwm_store_goods}}')
|
||
->where(['goodsId' => $shopInfo['goodsId'], 'storeId' => $shopInfo['storeId'], 'uniacid' => $shopInfo['uniacid']])
|
||
->one();
|
||
$goodInfo['price']=$storeGood['price'];
|
||
}
|
||
$money=$goodInfo['price'];
|
||
if ($shopInfo['groupId']) {
|
||
$specsInfo = (new \yii\db\Query())
|
||
->from('{{%ybwm_good_specs}}')
|
||
->where(['id' => $shopInfo['groupId'],'goodId' => $shopInfo['goodsId']])
|
||
->one();
|
||
$money = $specsInfo['SalesPrice'];
|
||
}
|
||
return $money;
|
||
}
|
||
|
||
|
||
function getGoodInfo($uniacid,$storeId,$goodsId,$groupId=0){
|
||
$goodsInfo=(new \yii\db\Query())
|
||
->from('{{%ybwm_core_goods}}')
|
||
->where(['id'=>$goodsId])
|
||
->one();
|
||
|
||
$storeRes = (new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where(['id' =>$storeId,'uniacid' =>$uniacid])
|
||
->one();
|
||
|
||
if($storeRes['isMain']==1||$storeRes['goodsModel']==3){
|
||
if($groupId){
|
||
$specsInfo=(new \yii\db\Query())
|
||
->from('{{%ybwm_good_specs}}')
|
||
->where(['id'=>$groupId])
|
||
->one();
|
||
$goodsInfo['price']=$specsInfo['SalesPrice'];
|
||
$goodsInfo['stock']=$specsInfo['SalesStock'];
|
||
$goodsInfo['name']=$goodsInfo['name'].'('.$specsInfo['specsName'].')';
|
||
}
|
||
}else{
|
||
$goodsInfo=(new \yii\db\Query())
|
||
->from('{{%ybwm_store_goods}} a')
|
||
->leftJoin('{{%ybwm_core_goods}} b','a.goodsId=b.id')
|
||
->where(['goodsId'=>$goodsId,'a.storeId'=>$storeId])
|
||
->one();
|
||
if($groupId){
|
||
$goodsData=json_decode($goodsInfo['data'],true)['specs'];
|
||
foreach ($goodsData as $v){
|
||
if($groupId==$v['id']){
|
||
$goodsInfo['price']=$v['SalesPrice'];
|
||
$goodsInfo['stock']=$v['SalesStock'];
|
||
$goodsInfo['name']=$goodsInfo['name'].'('.$v['specsName'].')';
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
return $goodsInfo;
|
||
}
|
||
|
||
//异常多规格数据处理
|
||
public function saveGoods($id,$goodsType=1){
|
||
if($goodsType==1){
|
||
$goodsData=(new \yii\db\Query())
|
||
->from('{{%ybwm_core_goods}}')
|
||
->where(['id'=>$id])
|
||
->one();
|
||
if($goodsData['isSpecs']==1){
|
||
$speData=(new \yii\db\Query())
|
||
->select('fillType,id,specsName,SalesPrice,SalesStock,status,crossedPrice,boxMoney,goodCode')
|
||
->from('{{%ybwm_good_specs}}')
|
||
->where(['goodId'=>$id])
|
||
->all();
|
||
if(!$speData){
|
||
Yii::$app->db->createCommand()->update('{{%ybwm_core_goods}}',['isSpecs'=>2], ['id'=>$id])->execute();
|
||
}
|
||
}
|
||
}else{
|
||
$goodsInfo=(new \yii\db\Query())->from('{{%ybwm_store_goods}} a')
|
||
->select('a.uniacid,a.storeId,b.goodsPid,a.id,a.storeId,b.name,a.stock,a.price,a.deleteAt,a.display,a.data,a.isSpecs,b.isSpecs goodSpecs,a.goodsId')
|
||
->leftJoin('{{%ybwm_core_goods}} b','a.goodsId=b.id')
|
||
->where(['a.id'=>$id])->one();
|
||
$storeRe=(new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where('uniacid=:uniacid AND id=:id',[':uniacid'=>$goodsInfo['uniacid'],':id'=>$goodsInfo['storeId']])
|
||
->one();
|
||
if($storeRe['isMain']==2&&$storeRe['goodsModel']<3){
|
||
if($goodsInfo['isSpecs']==1){
|
||
$specsData=json_decode($goodsInfo['data'],true)['specs'];
|
||
if(!$specsData){
|
||
$goodsData=(new \yii\db\Query())
|
||
->from('{{%ybwm_core_goods}}')
|
||
->where(['id'=>$goodsInfo['goodsId']])
|
||
->one();
|
||
if($goodsData){
|
||
$speData=(new \yii\db\Query())
|
||
->select('fillType,id,specsName,SalesPrice,SalesStock,status,crossedPrice,boxMoney,goodCode')
|
||
->from('{{%ybwm_good_specs}}')
|
||
->where(['goodId'=>$goodsInfo['goodsId'],'storeId'=>$goodsInfo['storeId']])
|
||
->all();
|
||
if($speData){
|
||
$insetSpec=json_decode($goodsInfo)['data'];
|
||
$insetSpec['specs']=[];
|
||
$insetSpec['specs']=$speData;
|
||
Yii::$app->db->createCommand()->update('{{%ybwm_store_goods}}',['data'=>json_encode($insetSpec),'isSpecs'=>1], ['id'=>$id])->execute();
|
||
}else{
|
||
Yii::$app->db->createCommand()->update('{{%ybwm_store_goods}}', ['data'=>'','isSpecs'=>2],['id'=>$id])->execute();
|
||
}
|
||
}else{
|
||
Yii::$app->db->createCommand()->delete('{{%ybwm_store_goods}}', ['id'=>$id])->execute();
|
||
}
|
||
}
|
||
}else{
|
||
Yii::$app->db->createCommand()->update('{{%ybwm_store_goods}}',['data'=>'','isSpecs'=>2], ['id'=>$id])->execute();
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
}
|
||
|
||
//检测购物车商品价格变化
|
||
public static function checkPriceChange($carId){
|
||
$now=time();
|
||
$shopInfo = (new \yii\db\Query())
|
||
->from('{{%ybwm_shop_car}}')
|
||
->where(['id' => $carId])
|
||
->one();
|
||
$goodInfo = (new \yii\db\Query())
|
||
->from('{{%ybwm_core_goods}}')
|
||
->where(['id' => $shopInfo['goodsId'], 'uniacid' => $shopInfo['uniacid']])
|
||
->one();
|
||
$storeRe=(new \yii\db\Query())
|
||
->from('{{%ybwm_store}}')
|
||
->where('uniacid=:uniacid AND id=:id',[':uniacid'=>$shopInfo['uniacid'],':id'=>$shopInfo['storeId']])
|
||
->one();
|
||
$money = $goodInfo['price'];
|
||
if($storeRe['isMain']==2&&$storeRe['goodsModel']<3){
|
||
$storeGood=(new \yii\db\Query())
|
||
->from('{{%ybwm_store_goods}}')
|
||
->where(['goodsId' => $shopInfo['goodsId'], 'storeId' => $shopInfo['storeId'], 'uniacid' => $shopInfo['uniacid']])
|
||
->one();
|
||
$goodInfo['price']=$storeGood['price'];
|
||
}
|
||
$money=$goodInfo['price'];
|
||
if ($shopInfo['groupId']) {
|
||
$specsInfo = (new \yii\db\Query())
|
||
->from('{{%ybwm_good_specs}}')
|
||
->where(['id' => $shopInfo['groupId'],'goodId' => $shopInfo['goodsId']])
|
||
->one();
|
||
$money = $specsInfo['SalesPrice'];
|
||
}
|
||
$user = $specsInfo = (new \yii\db\Query())
|
||
->from('{{%ybwm_member}}')
|
||
->where(['id' => $shopInfo['userId']])
|
||
->one();
|
||
|
||
|
||
//判断商品原始价格是否有变动
|
||
if($shopInfo['originalMoney'] != $money){
|
||
return['state'=>false,'message'=>$shopInfo['name'].'活动商品有变动,请重新添加'];
|
||
}
|
||
|
||
//判断商品会员价变动
|
||
if(!empty($goodInfo['discountArr']) && !empty($goodInfo['discountOpen'])){
|
||
foreach (json_decode($goodInfo['discountArr'],true) as $key3 => $level){
|
||
if($user['level'] == $level['level'] && $level['open'] == 1 ){
|
||
if(bcmul($level['discount'],$shopInfo['originalMoney']/10,2) != $shopInfo['money']){
|
||
return['state'=>false,'message'=>$shopInfo['name'].'商品会员价有变动,请重新添加'];
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//判断商品活动价变动
|
||
if($shopInfo['discountId']){
|
||
$activity=(new \yii\db\Query())
|
||
->from('{{%ybwm_good_activity}}')
|
||
->where('abolishAt=0 AND deleteAt=0 AND display=1 AND startTime<:time AND endTime>:time',[':time'=>$now])
|
||
->andWhere(['id'=>$shopInfo['discountId']])
|
||
->one();
|
||
if(!$activity){
|
||
return['state'=>false,'message'=>$shopInfo['name'].'活动商品有变动,请重新添加'];
|
||
}
|
||
if(!empty($activity['goodsArr'])){
|
||
foreach (json_decode($activity['goodsArr'],true) as $key2 => $activityGoods){
|
||
//特价
|
||
if($shopInfo['discountType'] == 1){
|
||
if($activityGoods['id'] == $shopInfo['goodsId'] && $activity['goodsMoney'] != $shopInfo['originalDiscountPrice']){
|
||
return['state'=>false,'message'=>$shopInfo['name'].'活动商品有变动,请重新添加'];
|
||
}
|
||
//打折和第二件打折
|
||
}else if($shopInfo['discountType'] == 2 || $shopInfo['discountType'] == 4 ){
|
||
if($activityGoods['id'] == $shopInfo['goodsId'] && bcmul($activity['goodsMoney'],$money/10,2) != $shopInfo['originalDiscountPrice']){
|
||
return['state'=>false,'message'=>$shopInfo['name'].'活动商品有变动,请重新添加'];
|
||
}
|
||
//满减
|
||
}else if($shopInfo['discountType'] == 3){
|
||
if($activityGoods['id'] == $shopInfo['goodsId'] && bcsub($money,$activity['goodsMoney'],2) != $shopInfo['originalDiscountPrice']){
|
||
return['state'=>false,'message'=>$shopInfo['name'].'活动商品有变动,请重新添加'];
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}else{
|
||
//判断当前无商品否有活动 和价格变动
|
||
$activityList=(new \yii\db\Query())
|
||
->from('{{%ybwm_good_activity}}')
|
||
->where('abolishAt=0 AND deleteAt=0 AND display=1 AND startTime<:time AND endTime>:time',[':time'=>$now])
|
||
->andWhere(['storeId'=>$shopInfo['storeId']])
|
||
->andWhere(['like','goodsArr','"id":"'.$goodInfo['id'].'"'])
|
||
->all();
|
||
foreach ($activityList as $key1 => $activity){
|
||
foreach (json_decode($activity['goodsArr'],true) as $key2 => $activityGoods){
|
||
if($activityGoods['id'] == $shopInfo['goodsId']){
|
||
return['state'=>false,'message'=>$shopInfo['name'].'活动商品有变动,请重新添加'];
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return['state'=>true,'message'=>''];
|
||
}
|
||
}
|