更新
This commit is contained in:
parent
29360e5153
commit
22c4cb8518
@ -69,50 +69,50 @@ class ProductRepository extends BaseRepository
|
||||
|
||||
protected $dao;
|
||||
const CREATE_PARAMS = [
|
||||
"image", "slider_image", "store_name", "store_info", "keyword", "bar_code", "guarantee_template_id", "cate_id", "mer_cate_id", "unit_name", "sort" , "is_show", "is_good", 'is_gift_bag', 'integral_rate', "video_link", "temp_id", "content", "spec_type", "extension_type", "attr", 'mer_labels', 'delivery_way', 'delivery_free','param_temp_id','extend', 'source_product_id', 'stock',
|
||||
["brand_id",0],
|
||||
['once_max_count',0],
|
||||
['once_min_count',0],
|
||||
"image", "slider_image", "store_name", "store_info", "keyword", "bar_code", "guarantee_template_id", "cate_id", "mer_cate_id", "unit_name", "sort", "is_show", "is_good", 'is_gift_bag', 'integral_rate', "video_link", "temp_id", "content", "spec_type", "extension_type", "attr", 'mer_labels', 'delivery_way', 'delivery_free', 'param_temp_id', 'extend', 'source_product_id', 'stock',
|
||||
["brand_id", 0],
|
||||
['once_max_count', 0],
|
||||
['once_min_count', 0],
|
||||
['pay_limit', 0],
|
||||
["attrValue",[]],
|
||||
['give_coupon_ids',[]],
|
||||
['type',0],
|
||||
['svip_price',0],
|
||||
['svip_price_type',0],
|
||||
['params',[]],
|
||||
["attrValue", []],
|
||||
['give_coupon_ids', []],
|
||||
['type', 0],
|
||||
['svip_price', 0],
|
||||
['svip_price_type', 0],
|
||||
['params', []],
|
||||
];
|
||||
protected $admin_filed = 'Product.product_id,Product.mer_id,brand_id,spec_type,unit_name,mer_status,rate,reply_count,store_info,cate_id,Product.image,slider_image,Product.store_name,Product.keyword,Product.sort,U.rank,Product.is_show,Product.sales,Product.price,extension_type,refusal,cost,ot_price,stock,is_gift_bag,Product.care_count,Product.status,is_used,Product.create_time,Product.product_type,old_product_id,star,ficti,integral_total,integral_price_total,sys_labels,param_temp_id,mer_svip_status,svip_price,svip_price_type,update_time,source_product_id';
|
||||
protected $filed = 'Product.bar_code,Product.product_id,Product.mer_id,brand_id,unit_name,spec_type,mer_status,rate,reply_count,store_info,cate_id,Product.image,slider_image,Product.store_name,Product.keyword,Product.sort,Product.is_show,Product.sales,Product.price,extension_type,refusal,cost,ot_price,stock,is_gift_bag,Product.care_count,Product.status,is_used,Product.create_time,Product.product_type,old_product_id,integral_total,integral_price_total,mer_labels,Product.is_good,Product.is_del,type,param_temp_id,mer_svip_status,svip_price,svip_price_type,update_time,source_product_id';
|
||||
|
||||
const NOTIC_MSG = [
|
||||
1 => [
|
||||
'0' => 'product_success',
|
||||
'1' => 'product_seckill_success',
|
||||
'2' => 'product_presell_success',
|
||||
'3' => 'product_assist_success',
|
||||
'4' => 'product_group_success',
|
||||
'98' => 'product_success',
|
||||
'msg' => '审核通过'
|
||||
],
|
||||
-1 => [
|
||||
'0' => 'product_fail',
|
||||
'1' => 'product_seckill_fail',
|
||||
'2' => 'product_presell_fail',
|
||||
'3' => 'product_assist_fail',
|
||||
'4' => 'product_group_fail',
|
||||
'98' => 'product_fail',
|
||||
'msg' => '审核失败'
|
||||
],
|
||||
-2 => [
|
||||
'0' => 'product_fail',
|
||||
'1' => 'product_seckill_fail',
|
||||
'2' => 'product_presell_fail',
|
||||
'3' => 'product_assist_fail',
|
||||
'4' => 'product_group_fail',
|
||||
'98' => 'product_fail',
|
||||
'msg' => '被下架'
|
||||
],
|
||||
];
|
||||
1 => [
|
||||
'0' => 'product_success',
|
||||
'1' => 'product_seckill_success',
|
||||
'2' => 'product_presell_success',
|
||||
'3' => 'product_assist_success',
|
||||
'4' => 'product_group_success',
|
||||
'98' => 'product_success',
|
||||
'msg' => '审核通过'
|
||||
],
|
||||
-1 => [
|
||||
'0' => 'product_fail',
|
||||
'1' => 'product_seckill_fail',
|
||||
'2' => 'product_presell_fail',
|
||||
'3' => 'product_assist_fail',
|
||||
'4' => 'product_group_fail',
|
||||
'98' => 'product_fail',
|
||||
'msg' => '审核失败'
|
||||
],
|
||||
-2 => [
|
||||
'0' => 'product_fail',
|
||||
'1' => 'product_seckill_fail',
|
||||
'2' => 'product_presell_fail',
|
||||
'3' => 'product_assist_fail',
|
||||
'4' => 'product_group_fail',
|
||||
'98' => 'product_fail',
|
||||
'msg' => '被下架'
|
||||
],
|
||||
];
|
||||
/**
|
||||
* ProductRepository constructor.
|
||||
* @param dao $dao
|
||||
@ -228,21 +228,21 @@ class ProductRepository extends BaseRepository
|
||||
if (count($data['attrValue']) > 1) throw new ValidateException('单规格商品属性错误');
|
||||
}
|
||||
$content = [
|
||||
'content' => $conType ? json_encode($data['content']) : $data['content'] ,
|
||||
'content' => $conType ? json_encode($data['content']) : $data['content'],
|
||||
'type' => $conType
|
||||
];
|
||||
$product = $this->setProduct($data);
|
||||
event('product.create.before', compact('data','productType','conType'));
|
||||
return Db::transaction(function () use ($data, $productType,$conType,$content,$product) {
|
||||
event('product.create.before', compact('data', 'productType', 'conType'));
|
||||
return Db::transaction(function () use ($data, $productType, $conType, $content, $product) {
|
||||
$activity_id = 0;
|
||||
$product['product_type'] = $productType;
|
||||
$result = $this->dao->create($product);
|
||||
|
||||
$settleParams = $this->setAttrValue($data, $result->product_id, $productType, 0,$data['mer_id']);
|
||||
|
||||
$settleParams = $this->setAttrValue($data, $result->product_id, $productType, 0, $data['mer_id']);
|
||||
// $settleParams['cate'] = $this->setMerCate($data['mer_cate_id'], $result->product_id, $data['mer_id']);
|
||||
$settleParams['attr'] = $this->setAttr($data['attr'], $result->product_id);
|
||||
if (in_array($productType, [0, 98, 99])) app()->make(ParameterValueRepository::class)->create($result->product_id, $data['params'] ?? [],$data['mer_id']);
|
||||
$this->save($result->product_id, $settleParams, $content,$product,$productType);
|
||||
if (in_array($productType, [0, 98, 99])) app()->make(ParameterValueRepository::class)->create($result->product_id, $data['params'] ?? [], $data['mer_id']);
|
||||
$this->save($result->product_id, $settleParams, $content, $product, $productType);
|
||||
if (in_array($productType, [0, 1, 98, 99])) {
|
||||
if ($productType == 1) { //秒杀商品
|
||||
$dat = $this->setSeckillProduct($data);
|
||||
@ -255,7 +255,7 @@ class ProductRepository extends BaseRepository
|
||||
app()->make(SpuRepository::class)->create($product, $result->product_id, $activity_id, $productType);
|
||||
}
|
||||
$product = $result;
|
||||
event('product.create',compact('product', 'data', 'conType'));
|
||||
event('product.create', compact('product', 'data', 'conType'));
|
||||
return $result->product_id;
|
||||
});
|
||||
}
|
||||
@ -272,19 +272,19 @@ class ProductRepository extends BaseRepository
|
||||
$data['attr'] = [];
|
||||
if (count($data['attrValue']) > 1) throw new ValidateException('单规格商品属性错误');
|
||||
}
|
||||
event('product.update.before', compact('id','data','merId','productType','conType'));
|
||||
event('product.update.before', compact('id', 'data', 'merId', 'productType', 'conType'));
|
||||
$spuData = $product = $this->setProduct($data);
|
||||
$settleParams = $this->setAttrValue($data, $id, $productType, 1,$merId);
|
||||
$settleParams = $this->setAttrValue($data, $id, $productType, 1, $merId);
|
||||
$settleParams['cate'] = $this->setMerCate($data['mer_cate_id'], $id, $merId);
|
||||
$settleParams['attr'] = $this->setAttr($data['attr'], $id);
|
||||
$content = [
|
||||
'content' => $conType ? json_encode($data['content']) : $data['content'] ,
|
||||
'content' => $conType ? json_encode($data['content']) : $data['content'],
|
||||
'type' => $conType
|
||||
];
|
||||
$spuData['price'] = $settleParams['data']['price'];
|
||||
$spuData['mer_id'] = $merId;
|
||||
$spuData['mer_labels'] = $data['mer_labels'];
|
||||
Db::transaction(function () use ($id, $data, $productType, $settleParams,$content,$product,$spuData,$merId) {
|
||||
Db::transaction(function () use ($id, $data, $productType, $settleParams, $content, $product, $spuData, $merId) {
|
||||
$this->save($id, $settleParams, $content, $product, $productType);
|
||||
// if ($productType == 1) { //秒杀商品
|
||||
// $dat = $this->setSeckillProduct($data);
|
||||
@ -296,7 +296,7 @@ class ProductRepository extends BaseRepository
|
||||
$make->create($id, $data['params'] ?? [], $merId);
|
||||
}
|
||||
app()->make(SpuRepository::class)->baseUpdate($spuData, $id, 0, $productType);
|
||||
event('product.update',compact('id'));
|
||||
event('product.update', compact('id'));
|
||||
if ($data['status'] == 0) {
|
||||
event('product.sell', ['product_id' => [$id]]);
|
||||
}
|
||||
@ -312,15 +312,15 @@ class ProductRepository extends BaseRepository
|
||||
}
|
||||
$res = $this->dao->get($id);
|
||||
$data['svip_price_type'] = $res['svip_price_type'];
|
||||
$settleParams = $this->setAttrValue($data, $id, 0, 1,$merId);
|
||||
// $settleParams['cate'] = $this->setMerCate($data['mer_cate_id'], $id, $merId);
|
||||
// $settleParams['attr'] = $this->setAttr($data['attr'], $id);
|
||||
$settleParams = $this->setAttrValue($data, $id, 0, 1, $merId);
|
||||
$settleParams['cate'] = $this->setMerCate($data['mer_cate_id'], $id, $merId);
|
||||
$settleParams['attr'] = $this->setAttr($data['attr'], $id);
|
||||
$data['price'] = $settleParams['data']['price'];
|
||||
unset($data['attrValue'],$data['attr'],$data['mer_cate_id']);
|
||||
$ret = Spu::getInstance()->where('product_id', $id)->whereIn('product_type',[0, 98, 99])->find();
|
||||
Db::transaction(function () use ($id, $data, $settleParams,$ret) {
|
||||
$this->save($id, $settleParams, null, [], 0,false);
|
||||
app()->make(SpuRepository::class)->update($ret->spu_id,['price' => $data['price']]);
|
||||
unset($data['attrValue'], $data['attr'], $data['mer_cate_id']);
|
||||
$ret = Spu::getInstance()->where('product_id', $id)->whereIn('product_type', [0, 98, 99])->find();
|
||||
Db::transaction(function () use ($id, $data, $settleParams, $ret) {
|
||||
$this->save($id, $settleParams, null, [], 0);
|
||||
app()->make(SpuRepository::class)->update($ret->spu_id, ['price' => $data['price']]);
|
||||
Queue(SendSmsJob::class, ['tempId' => 'PRODUCT_INCREASE', 'id' => $id]);
|
||||
});
|
||||
}
|
||||
@ -349,24 +349,22 @@ class ProductRepository extends BaseRepository
|
||||
* @param $content
|
||||
* @return int
|
||||
*/
|
||||
public function save($id, $settleParams, $content, $data = [], $productType = 0,$is_phone=true)
|
||||
public function save($id, $settleParams, $content, $data = [], $productType = 0)
|
||||
{
|
||||
if($is_phone==true){
|
||||
(app()->make(ProductAttrRepository::class))->clearAttr($id);
|
||||
(app()->make(ProductAttrValueRepository::class))->clearAttr($id);
|
||||
(app()->make(ProductCateRepository::class))->clearAttr($id);
|
||||
}
|
||||
(app()->make(ProductAttrRepository::class))->clearAttr($id);
|
||||
(app()->make(ProductAttrValueRepository::class))->clearAttr($id);
|
||||
(app()->make(ProductCateRepository::class))->clearAttr($id);
|
||||
if (isset($settleParams['cate'])) (app()->make(ProductCateRepository::class)->insert($settleParams['cate']));
|
||||
if (isset($settleParams['attr'])) (app()->make(ProductAttrRepository::class))->insert($settleParams['attr']);
|
||||
|
||||
if (isset($settleParams['attrValue'])) {
|
||||
$arr = array_chunk($settleParams['attrValue'], 30);
|
||||
foreach ($arr as $item){
|
||||
foreach ($arr as $item) {
|
||||
app()->make(ProductAttrValueRepository::class)->insertAll($item);
|
||||
}
|
||||
}
|
||||
if ($content){
|
||||
app()->make(ProductContentRepository::class)->clearAttr($id,$content['type']);
|
||||
if ($content) {
|
||||
app()->make(ProductContentRepository::class)->clearAttr($id, $content['type']);
|
||||
$this->dao->createContent($id, $content);
|
||||
}
|
||||
|
||||
@ -379,9 +377,9 @@ class ProductRepository extends BaseRepository
|
||||
}
|
||||
$res = $this->dao->update($id, $data);
|
||||
|
||||
if(isset($data['status']) && $data['status'] !== 1 ){
|
||||
$message = '您有1个新的'. $productType .'商品待审核';//? '秒杀商品' : ($data['is_gift_bag'] ? '礼包商品' :'商品')) .
|
||||
$type = $productType ? 'new_seckill' : ($data['is_gift_bag'] ? 'new_bag' :'new_product');
|
||||
if (isset($data['status']) && $data['status'] !== 1) {
|
||||
$message = '您有1个新的' . $productType . '商品待审核'; //? '秒杀商品' : ($data['is_gift_bag'] ? '礼包商品' :'商品')) .
|
||||
$type = $productType ? 'new_seckill' : ($data['is_gift_bag'] ? 'new_bag' : 'new_product');
|
||||
SwooleTaskService::admin('notice', [
|
||||
'type' => $type,
|
||||
'data' => [
|
||||
@ -452,11 +450,10 @@ class ProductRepository extends BaseRepository
|
||||
$give_coupon_ids = implode(',', $gcoupon_ids);
|
||||
}
|
||||
|
||||
if(isset($data['integral_rate'])){
|
||||
if (isset($data['integral_rate'])) {
|
||||
$integral_rate = $data['integral_rate'];
|
||||
if($data['integral_rate'] < 0) $integral_rate = -1;
|
||||
if($data['integral_rate'] > 100) $integral_rate = 100;
|
||||
|
||||
if ($data['integral_rate'] < 0) $integral_rate = -1;
|
||||
if ($data['integral_rate'] > 100) $integral_rate = 100;
|
||||
}
|
||||
$result = [
|
||||
'store_name' => $data['store_name'],
|
||||
@ -464,25 +461,25 @@ class ProductRepository extends BaseRepository
|
||||
'image' => $data['image'],
|
||||
'slider_image' => is_array($data['slider_image']) ? implode(',', $data['slider_image']) : '',
|
||||
'store_info' => $data['store_info'] ?? '',
|
||||
'keyword' => $data['keyword']??'',
|
||||
'keyword' => $data['keyword'] ?? '',
|
||||
'brand_id' => $data['brand_id'] ?? 0,
|
||||
'cate_id' => $data['cate_id'] ?? 0,
|
||||
'unit_name' => $data['unit_name']??'件',
|
||||
'unit_name' => $data['unit_name'] ?? '件',
|
||||
'sort' => $data['sort'] ?? 0,
|
||||
'is_show' => $data['is_show'] ?? 0,
|
||||
'is_used' => (isset($data['status']) && $data['status'] == 1) ? 1 : 0,
|
||||
'is_used' => (isset($data['status']) && $data['status'] == 1) ? 1 : 0,
|
||||
'is_good' => $data['is_good'] ?? 0,
|
||||
'video_link' => $data['video_link']??'',
|
||||
'video_link' => $data['video_link'] ?? '',
|
||||
'temp_id' => $data['delivery_free'] ? 0 : ($data['temp_id'] ?? 0),
|
||||
'extension_type' => $data['extension_type']??0,
|
||||
'extension_type' => $data['extension_type'] ?? 0,
|
||||
'spec_type' => $data['spec_type'] ?? 0,
|
||||
'status' => $data['status']??0,
|
||||
'status' => $data['status'] ?? 0,
|
||||
'give_coupon_ids' => $give_coupon_ids,
|
||||
'mer_status' => $data['mer_status'],
|
||||
'guarantee_template_id' => $data['guarantee_template_id']??0,
|
||||
'guarantee_template_id' => $data['guarantee_template_id'] ?? 0,
|
||||
'is_gift_bag' => $data['is_gift_bag'] ?? 0,
|
||||
'integral_rate' => $integral_rate ?? 0,
|
||||
'delivery_way' => implode(',',$data['delivery_way']),
|
||||
'delivery_way' => implode(',', $data['delivery_way']),
|
||||
'delivery_free' => $data['delivery_free'] ?? 0,
|
||||
'once_min_count' => $data['once_min_count'] ?? 0,
|
||||
'once_max_count' => $data['once_max_count'] ?? 0,
|
||||
@ -503,7 +500,7 @@ class ProductRepository extends BaseRepository
|
||||
if (isset($data['param_temp_id']))
|
||||
$result['param_temp_id'] = $data['param_temp_id'];
|
||||
if (isset($data['extend']))
|
||||
$result['extend'] = $data['extend'] ? json_encode($data['extend'], JSON_UNESCAPED_UNICODE) :[];
|
||||
$result['extend'] = $data['extend'] ? json_encode($data['extend'], JSON_UNESCAPED_UNICODE) : [];
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -540,7 +537,7 @@ class ProductRepository extends BaseRepository
|
||||
public function setAttr(array $data, int $productId)
|
||||
{
|
||||
$result = [];
|
||||
try{
|
||||
try {
|
||||
foreach ($data as $value) {
|
||||
$result[] = [
|
||||
'type' => 0,
|
||||
@ -564,9 +561,9 @@ class ProductRepository extends BaseRepository
|
||||
* @param int $productId
|
||||
* @return mixed
|
||||
*/
|
||||
public function setAttrValue(array $data, int $productId, int $productType, int $isUpdate = 0,int $merId = 0)
|
||||
public function setAttrValue(array $data, int $productId, int $productType, int $isUpdate = 0, int $merId = 0)
|
||||
{
|
||||
if($merId<=0){
|
||||
if ($merId <= 0) {
|
||||
throw new ValidateException('添加商品商户id不能为0');
|
||||
}
|
||||
$extension_status = systemConfig('extension_status');
|
||||
@ -597,8 +594,8 @@ class ProductRepository extends BaseRepository
|
||||
$_svip_price = $value['svip_price'];
|
||||
$svip_price = !$svip_price ? $value['svip_price'] : (($svip_price > $value['svip_price']) ? $value['svip_price'] : $svip_price);
|
||||
}
|
||||
$procure_price=$value['procure_price']??0.00;
|
||||
$cost = !$cost ? $value['cost'] : (($cost > $value['cost']) ?$cost: $value['cost']);
|
||||
$procure_price = $value['procure_price'] ?? 0.00;
|
||||
$cost = !$cost ? $value['cost'] : (($cost > $value['cost']) ? $cost : $value['cost']);
|
||||
$price = !$price ? $sprice : (($price > $sprice) ? $sprice : $price);
|
||||
$ot_price = !$ot_price ? $ot_price_ : (($ot_price > $ot_price_) ? $ot_price : $ot_price_);
|
||||
|
||||
@ -609,8 +606,8 @@ class ProductRepository extends BaseRepository
|
||||
"image" => $value["image"] ?? '',
|
||||
"cost" => $value['cost'] ? (($value['cost'] < 0) ? 0 : $value['cost']) : 0,
|
||||
"price" => $value['price'] ? (($value['price'] < 0) ? 0 : $value['price']) : 0,
|
||||
"volume" => isset($value['volume']) ? ($value['volume'] ? (($value['volume'] < 0) ? 0 : $value['volume']) : 0) :0,
|
||||
"weight" => isset($value['weight']) ? ($value['weight'] ? (($value['weight'] < 0) ? 0 : $value['weight']) : 0) :0,
|
||||
"volume" => isset($value['volume']) ? ($value['volume'] ? (($value['volume'] < 0) ? 0 : $value['volume']) : 0) : 0,
|
||||
"weight" => isset($value['weight']) ? ($value['weight'] ? (($value['weight'] < 0) ? 0 : $value['weight']) : 0) : 0,
|
||||
"stock" => $value['stock'] ? (($value['stock'] < 0) ? 0 : $value['stock']) : 0,
|
||||
"ot_price" => $value['ot_price'] ? (($value['ot_price'] < 0) ? 0 : $value['ot_price']) : 0,
|
||||
"extension_one" => $extension_status ? ($value['extension_one'] ?? 0) : 0,
|
||||
@ -627,7 +624,7 @@ class ProductRepository extends BaseRepository
|
||||
$stock = $stock + intval($value['stock']);
|
||||
}
|
||||
$result['data'] = [
|
||||
'price' => $price ,
|
||||
'price' => $price,
|
||||
'stock' => $stock,
|
||||
'ot_price' => $ot_price,
|
||||
'cost' => $cost,
|
||||
@ -635,7 +632,7 @@ class ProductRepository extends BaseRepository
|
||||
'procure_price' => $procure_price,
|
||||
];
|
||||
} catch (\Exception $exception) {
|
||||
throw new ValidateException('规格错误 :'.$exception->getMessage());
|
||||
throw new ValidateException('规格错误 :' . $exception->getMessage());
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
@ -652,8 +649,8 @@ class ProductRepository extends BaseRepository
|
||||
public function setUnique(int $id, $sku, int $type)
|
||||
{
|
||||
$str = strval($type);
|
||||
$result=strlen($str);
|
||||
$length=12-$result;
|
||||
$result = strlen($str);
|
||||
$length = 12 - $result;
|
||||
return $unique = substr(md5($sku . $id), 12, $length) . $type;
|
||||
// $has = (app()->make(ProductAttrValueRepository::class))->merUniqueExists(null, $unique);
|
||||
// return $has ? false : $unique;
|
||||
@ -670,9 +667,10 @@ class ProductRepository extends BaseRepository
|
||||
*/
|
||||
public function getAdminOneProduct(int $id, ?int $activeId, $conType = 0)
|
||||
{
|
||||
$with = ['attr', 'attrValue', 'oldAttrValue', 'merCateId.category', 'storeCategory', 'brand', 'temp', 'seckillActive',
|
||||
$with = [
|
||||
'attr', 'attrValue', 'oldAttrValue', 'merCateId.category', 'storeCategory', 'brand', 'temp', 'seckillActive',
|
||||
'content',
|
||||
'merchant'=> function($query){
|
||||
'merchant' => function ($query) {
|
||||
$query->field('mer_id,mer_avatar,mer_name,is_trader');
|
||||
},
|
||||
'guarantee.templateValue.value',
|
||||
@ -681,7 +679,7 @@ class ProductRepository extends BaseRepository
|
||||
|
||||
$data = $this->dao->geTrashedtProduct($id)->with($with)->find();
|
||||
|
||||
$data['delivery_way'] = empty($data['delivery_way']) ? [2] : explode(',',$data['delivery_way']);
|
||||
$data['delivery_way'] = empty($data['delivery_way']) ? [2] : explode(',', $data['delivery_way']);
|
||||
$data['extend'] = empty($data['extend']) ? [] : json_decode($data['extend']);
|
||||
$make_order = app()->make(StoreCouponRepository::class);
|
||||
$where = [['coupon_id', 'in', $data['give_coupon_ids']]];
|
||||
@ -693,10 +691,10 @@ class ProductRepository extends BaseRepository
|
||||
$append = ['us_status', 'params'];
|
||||
$activeId = 0;
|
||||
}
|
||||
if ($data['product_type'] == 1){
|
||||
if ($data['product_type'] == 1) {
|
||||
$activeId = $data->seckillActive->seckill_active_id;
|
||||
$make = app()->make(StoreOrderRepository::class);
|
||||
$append = ['us_status','seckill_status'];
|
||||
$append = ['us_status', 'seckill_status'];
|
||||
}
|
||||
if ($data['product_type'] == 2) $make = app()->make(ProductPresellSkuRepository::class);
|
||||
if ($data['product_type'] == 3) $make = app()->make(ProductAssistSkuRepository::class);
|
||||
@ -759,28 +757,26 @@ class ProductRepository extends BaseRepository
|
||||
$data['attrValue'] = $arr;
|
||||
$content = $data['content']['content'] ?? '';
|
||||
$data['content_arr'] = [];
|
||||
if (isset($data['content']) &&$data['content']['type']==1){
|
||||
if (isset($data['content']) && $data['content']['type'] == 1) {
|
||||
$arr = json_decode($content);
|
||||
if(is_array($arr)){
|
||||
if (is_array($arr)) {
|
||||
$data['content_arr'] = $arr;
|
||||
if($arr){
|
||||
$content='';
|
||||
if(isset($arr['image'])){
|
||||
foreach($arr['image'] as $k=>$v){
|
||||
$content.='<img src='.$v.'></br>';
|
||||
if ($arr) {
|
||||
$content = '';
|
||||
if (isset($arr['image'])) {
|
||||
foreach ($arr['image'] as $k => $v) {
|
||||
$content .= '<img src=' . $v . '></br>';
|
||||
}
|
||||
} else {
|
||||
foreach ($arr as $k => $v) {
|
||||
$content .= '<img src=' . $v . '></br>';
|
||||
}
|
||||
}else{
|
||||
foreach($arr as $k=>$v){
|
||||
$content.='<img src='.$v.'></br>';
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}else{
|
||||
} else {
|
||||
$content = $arr;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
unset($data['content']);
|
||||
$data['content'] = $content;
|
||||
return $data;
|
||||
@ -910,7 +906,7 @@ class ProductRepository extends BaseRepository
|
||||
$data->append(['us_status']);
|
||||
|
||||
$list = hasMany(
|
||||
$data ,
|
||||
$data,
|
||||
'mer_labels',
|
||||
ProductLabel::class,
|
||||
'product_label_id',
|
||||
@ -946,7 +942,7 @@ class ProductRepository extends BaseRepository
|
||||
$data->append(['seckill_status', 'us_status']);
|
||||
|
||||
$list = hasMany(
|
||||
$data ,
|
||||
$data,
|
||||
'mer_labels',
|
||||
ProductLabel::class,
|
||||
'product_label_id',
|
||||
@ -979,9 +975,9 @@ class ProductRepository extends BaseRepository
|
||||
]);
|
||||
$count = $query->count();
|
||||
$data = $query->page($page, $limit)->setOption('field', [])->field($this->admin_filed)->select();
|
||||
$data->append([ 'us_status']);
|
||||
$data->append(['us_status']);
|
||||
$list = hasMany(
|
||||
$data ,
|
||||
$data,
|
||||
'sys_labels',
|
||||
ProductLabel::class,
|
||||
'product_label_id',
|
||||
@ -1026,7 +1022,7 @@ class ProductRepository extends BaseRepository
|
||||
$data->append(['seckill_status', 'us_status']);
|
||||
|
||||
$list = hasMany(
|
||||
$data ,
|
||||
$data,
|
||||
'sys_labels',
|
||||
ProductLabel::class,
|
||||
'product_label_id',
|
||||
@ -1143,7 +1139,7 @@ class ProductRepository extends BaseRepository
|
||||
* @param $id
|
||||
* @param $userInfo
|
||||
*/
|
||||
public function detail(int $id, $userInfo,$product_type)
|
||||
public function detail(int $id, $userInfo, $product_type)
|
||||
{
|
||||
$where = [
|
||||
'is_show' => 1,
|
||||
@ -1162,11 +1158,11 @@ class ProductRepository extends BaseRepository
|
||||
* @author Qinii
|
||||
* @day 2020-08-05
|
||||
*/
|
||||
public function seckillDetail(int $id,$userInfo)
|
||||
public function seckillDetail(int $id, $userInfo)
|
||||
{
|
||||
$where = $this->seckillShow();
|
||||
$where['product_id'] = $id;
|
||||
return $this->apiProductDetail($where, 1, null,$userInfo);
|
||||
return $this->apiProductDetail($where, 1, null, $userInfo);
|
||||
}
|
||||
|
||||
public function apiProductDetail(array $where, int $productType, ?int $activityId, $userInfo = null)
|
||||
@ -1178,7 +1174,7 @@ class ProductRepository extends BaseRepository
|
||||
'attrValue',
|
||||
'oldAttrValue',
|
||||
'merchant' => function ($query) {
|
||||
$query->with(['type_names'])->append(['isset_certificate','services_type']);
|
||||
$query->with(['type_names'])->append(['isset_certificate', 'services_type']);
|
||||
},
|
||||
'seckillActive' => function ($query) {
|
||||
$query->field('start_day,end_day,start_time,end_time,product_id');
|
||||
@ -1186,7 +1182,7 @@ class ProductRepository extends BaseRepository
|
||||
'temp'
|
||||
];
|
||||
|
||||
$append = ['guaranteeTemplate','params'];
|
||||
$append = ['guaranteeTemplate', 'params'];
|
||||
if (empty($where['product_id']) || $productType != 0) {
|
||||
$where['product_type'] = $productType;
|
||||
}
|
||||
@ -1241,7 +1237,7 @@ class ProductRepository extends BaseRepository
|
||||
$res['merchant']['top_banner'] = merchantConfig($res['mer_id'], 'mer_pc_top');
|
||||
$res['merchant']['care'] = $care;
|
||||
$res['replayData'] = null;
|
||||
if (systemConfig('sys_reply_status')){
|
||||
if (systemConfig('sys_reply_status')) {
|
||||
$res['replayData'] = app()->make(ProductReplyRepository::class)->getReplyRate($res['product_id']);
|
||||
$append[] = 'topReply';
|
||||
}
|
||||
@ -1260,28 +1256,26 @@ class ProductRepository extends BaseRepository
|
||||
$res['sku'] = $sku;
|
||||
$res->append($append);
|
||||
if ($res['content'] && $res['content']['type'] == 1) {
|
||||
$content= json_decode($res['content']['content']);
|
||||
if(is_Array($content) && isset($content['image'])){
|
||||
$content = json_decode($res['content']['content']);
|
||||
if (is_Array($content) && isset($content['image'])) {
|
||||
// $img='<p>';
|
||||
$image= $content['image']??[];
|
||||
$image = $content['image'] ?? [];
|
||||
// foreach($content['image'] as $k=>$v){
|
||||
// $img =$img. '<img src="'.$v.'"/>';
|
||||
// }
|
||||
$res['content']['content']=['image'=>$image];
|
||||
|
||||
}elseif(is_object($content)){
|
||||
$image= $content->image??[];
|
||||
// $img='<p>';
|
||||
// foreach($image as $k=>$v){
|
||||
// $img =$img. '<img src="'.$v.'"/>';
|
||||
// }
|
||||
$res['content']['content']=['image'=>$image];
|
||||
}
|
||||
else{
|
||||
if(is_Array($content)){
|
||||
$res['content']['content']=['image'=>$content];
|
||||
}else{
|
||||
$res['content']['content']=$content;
|
||||
$res['content']['content'] = ['image' => $image];
|
||||
} elseif (is_object($content)) {
|
||||
$image = $content->image ?? [];
|
||||
// $img='<p>';
|
||||
// foreach($image as $k=>$v){
|
||||
// $img =$img. '<img src="'.$v.'"/>';
|
||||
// }
|
||||
$res['content']['content'] = ['image' => $image];
|
||||
} else {
|
||||
if (is_Array($content)) {
|
||||
$res['content']['content'] = ['image' => $content];
|
||||
} else {
|
||||
$res['content']['content'] = $content;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1304,8 +1298,8 @@ class ProductRepository extends BaseRepository
|
||||
$res['top_pid'] = $hot['top_pid'] ?? 0;
|
||||
}
|
||||
//活动氛围图
|
||||
if (in_array($res['product_type'],[0,2,4])){
|
||||
$active = app()->make(StoreActivityRepository::class)->getActivityBySpu(StoreActivityRepository::ACTIVITY_TYPE_ATMOSPHERE,$res['spu_id'],$res['cate_id'],$res['mer_id']);
|
||||
if (in_array($res['product_type'], [0, 2, 4])) {
|
||||
$active = app()->make(StoreActivityRepository::class)->getActivityBySpu(StoreActivityRepository::ACTIVITY_TYPE_ATMOSPHERE, $res['spu_id'], $res['cate_id'], $res['mer_id']);
|
||||
if ($active) $res['atmosphere_pic'] = $active['pic'];
|
||||
}
|
||||
return $res;
|
||||
@ -1323,13 +1317,13 @@ class ProductRepository extends BaseRepository
|
||||
{
|
||||
$data = [];
|
||||
//热卖排行
|
||||
$lv = systemConfig('hot_ranking_lv') ?:0;
|
||||
$lv = systemConfig('hot_ranking_lv') ?: 0;
|
||||
$categoryMake = app()->make(StoreCategoryRepository::class);
|
||||
$cate = $categoryMake->getWhere(['store_category_id' => $cateId]);
|
||||
if ($lv != 2 && $cate) $cateId = $lv == 1 ? $cate->pathIds[2] : $cate->pathIds[1];
|
||||
$RedisCacheService = app()->make(RedisCacheService::class);
|
||||
$prefix = env('QUEUE_NAME','merchant').'_hot_ranking_';
|
||||
$key = ( $prefix.'top_item_'.$cateId.'_'.$spuId);
|
||||
$prefix = env('QUEUE_NAME', 'merchant') . '_hot_ranking_';
|
||||
$key = ($prefix . 'top_item_' . $cateId . '_' . $spuId);
|
||||
$k1 = $RedisCacheService->keys($key);
|
||||
if ($k1) {
|
||||
$top = $RedisCacheService->handler()->get($key);
|
||||
@ -1349,24 +1343,24 @@ class ProductRepository extends BaseRepository
|
||||
* @author Qinii
|
||||
* @day 12/7/21
|
||||
*/
|
||||
public function getRecommend($productId,$merId)
|
||||
public function getRecommend($productId, $merId)
|
||||
{
|
||||
$make = app()->make(ProductCateRepository::class);
|
||||
$product_id = [];
|
||||
if ($productId) {
|
||||
$catId = $make->getSearch(['product_id' => $productId])->column('mer_cate_id');
|
||||
$product_id = $make->getSearch([])->whereIn('mer_cate_id',$catId)->column('product_id');
|
||||
$product_id = $make->getSearch([])->whereIn('mer_cate_id', $catId)->column('product_id');
|
||||
}
|
||||
|
||||
$query = $this->dao->getSearch([])
|
||||
->where($this->dao->productShow())
|
||||
->when($productId,function($query) use ($productId) {
|
||||
$query->where('product_id','<>',$productId);
|
||||
->when($productId, function ($query) use ($productId) {
|
||||
$query->where('product_id', '<>', $productId);
|
||||
})
|
||||
->when($product_id,function($query) use ($product_id) {
|
||||
$query->whereIn('product_id',$product_id);
|
||||
->when($product_id, function ($query) use ($product_id) {
|
||||
$query->whereIn('product_id', $product_id);
|
||||
})
|
||||
->where('mer_id',$merId);
|
||||
->where('mer_id', $merId);
|
||||
$data = [];
|
||||
$count = $query->count();
|
||||
// if ($count < 3) {
|
||||
@ -1380,9 +1374,9 @@ class ProductRepository extends BaseRepository
|
||||
// ->limit((3 - $count))
|
||||
// ->select()->toArray();
|
||||
// }
|
||||
if ($count > 0 ){
|
||||
if ($count > 0) {
|
||||
$count = $count > 3 ? 3 : $count;
|
||||
$res = $query->setOption('field',[])->field('mer_id,product_id,store_name,image,price,is_show,status,is_gift_bag,is_good,sales,create_time')
|
||||
$res = $query->setOption('field', [])->field('mer_id,product_id,store_name,image,price,is_show,status,is_gift_bag,is_good,sales,create_time')
|
||||
->order('sort DESC,create_time DESC')
|
||||
->limit($count)
|
||||
->select()->toArray();
|
||||
@ -1493,7 +1487,7 @@ class ProductRepository extends BaseRepository
|
||||
'bar_code' => $value['bar_code'],
|
||||
'procure_price' => $value['procure_price'],
|
||||
];
|
||||
if($productType == 0 ){
|
||||
if ($productType == 0) {
|
||||
$_value['ot_price'] = $value['ot_price'];
|
||||
$_value['svip_price'] = $value['svip_price'];
|
||||
}
|
||||
@ -1626,12 +1620,12 @@ class ProductRepository extends BaseRepository
|
||||
Db::rollback();
|
||||
throw new ValidateException('商品更新出错');
|
||||
}
|
||||
$changeStatus= app()->make(SpuRepository::class)->changeStatus($id, $product->product_type);
|
||||
if ($changeStatus=== false) {
|
||||
$changeStatus = app()->make(SpuRepository::class)->changeStatus($id, $product->product_type);
|
||||
if ($changeStatus === false) {
|
||||
Db::rollback();
|
||||
throw new ValidateException('商品spu更新出错');
|
||||
}else{
|
||||
if ($product->product_type==0){
|
||||
} else {
|
||||
if ($product->product_type == 0) {
|
||||
event('product.sell', ['product_id' => [$id]]);
|
||||
}
|
||||
}
|
||||
@ -1642,7 +1636,7 @@ class ProductRepository extends BaseRepository
|
||||
{
|
||||
$where['product_id'] = $id;
|
||||
if ($merId) $where['mer_id'] = $merId;
|
||||
$products = $this->dao->getSearch([])->where('product_id','in', $id)->select();
|
||||
$products = $this->dao->getSearch([])->where('product_id', 'in', $id)->select();
|
||||
if (!$products)
|
||||
throw new ValidateException('数据不存在');
|
||||
$productIds = [];
|
||||
@ -1654,18 +1648,18 @@ class ProductRepository extends BaseRepository
|
||||
if ($merId && $product['mer_id'] !== $merId)
|
||||
throw new ValidateException('商品不属于您');
|
||||
if ($status == 1 && $product['product_type'] == 2)
|
||||
throw new ValidateException('ID:'.$product->product_id . ' 商品正在参与预售活动');
|
||||
throw new ValidateException('ID:' . $product->product_id . ' 商品正在参与预售活动');
|
||||
if ($status == 1 && $product['product_type'] == 3)
|
||||
throw new ValidateException('ID:'.$product->product_id . ' 商品正在参与助力活动');
|
||||
throw new ValidateException('ID:' . $product->product_id . ' 商品正在参与助力活动');
|
||||
}
|
||||
Db::startTrans();
|
||||
try {
|
||||
if ($this->dao->updates($id,[$field => $status]) === false) {
|
||||
if ($this->dao->updates($id, [$field => $status]) === false) {
|
||||
throw new \Exception('商品操作出错', 500);
|
||||
}
|
||||
event('product.sell', ['product_id' => $productIds]);
|
||||
Db::commit();
|
||||
Queue::push(ChangeSpuStatusJob::class,['id' => $id,'product_type'=> $product_type]);
|
||||
Queue::push(ChangeSpuStatusJob::class, ['id' => $id, 'product_type' => $product_type]);
|
||||
} catch (\Exception $e) {
|
||||
Db::rollback();
|
||||
throw new \Exception('商品操作出错', $e->getCode());
|
||||
@ -1679,7 +1673,7 @@ class ProductRepository extends BaseRepository
|
||||
* @author Qinii
|
||||
* @day 2022/11/14
|
||||
*/
|
||||
public function switchStatus($id,$data)
|
||||
public function switchStatus($id, $data)
|
||||
{
|
||||
$product = $this->getSearch([])->find($id);
|
||||
$this->dao->update($id, $data);
|
||||
@ -1694,10 +1688,9 @@ class ProductRepository extends BaseRepository
|
||||
'id' => $product['product_id']
|
||||
]
|
||||
], $product['mer_id']);
|
||||
app()->make(SpuRepository::class)->changeStatus($id,$product->product_type);
|
||||
app()->make(SpuRepository::class)->changeStatus($id, $product->product_type);
|
||||
event('product.sell', ['product_id' => [$id]]);
|
||||
$this->switchShow($id,$status,'is_used',0);
|
||||
|
||||
$this->switchShow($id, $status, 'is_used', 0);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1708,9 +1701,9 @@ class ProductRepository extends BaseRepository
|
||||
* @author Qinii
|
||||
* @day 2022/9/6
|
||||
*/
|
||||
public function batchSwitchStatus(array $id,array $data)
|
||||
public function batchSwitchStatus(array $id, array $data)
|
||||
{
|
||||
$productData = $this->getSearch([])->where('product_id','in', $id)->select();
|
||||
$productData = $this->getSearch([])->where('product_id', 'in', $id)->select();
|
||||
foreach ($productData as $product) {
|
||||
$product_type = $product['product_type'];
|
||||
$type = self::NOTIC_MSG[$data['status']][$product['product_type']];
|
||||
@ -1723,14 +1716,13 @@ class ProductRepository extends BaseRepository
|
||||
'id' => $product['product_id']
|
||||
]
|
||||
], $product['mer_id']);
|
||||
if($data['status']==1){
|
||||
$this->switchShow($product['product_id'],1,'is_used',0);
|
||||
if ($data['status'] == 1) {
|
||||
$this->switchShow($product['product_id'], 1, 'is_used', 0);
|
||||
}
|
||||
|
||||
}
|
||||
$this->dao->updates($id, $data);
|
||||
Queue(ChangeSpuStatusJob::class, ['id' => $id, 'product_type' => $product_type]);
|
||||
event('product.status',compact('id','data'));
|
||||
event('product.status', compact('id', 'data'));
|
||||
event('product.sell', ['product_id' => $id]);
|
||||
}
|
||||
|
||||
@ -1912,16 +1904,16 @@ class ProductRepository extends BaseRepository
|
||||
//立即购买 限购
|
||||
if ($data['is_new']) {
|
||||
$cart_num = $data['cart_num'];
|
||||
} else {
|
||||
} else {
|
||||
//加入购物车
|
||||
//购物车现有
|
||||
$_num = $this->productOnceCountCart($where['product_id'],$data['product_attr_unique'], $userInfo->uid,$data['product_type']);
|
||||
$_num = $this->productOnceCountCart($where['product_id'], $data['product_attr_unique'], $userInfo->uid, $data['product_type']);
|
||||
$cart_num = $_num + $data['cart_num'];
|
||||
}
|
||||
if ($sku['stock'] < $cart_num ) throw new ValidateException('库存不足');
|
||||
if ($sku['stock'] < $cart_num) throw new ValidateException('库存不足');
|
||||
//添加购物车
|
||||
if (!$data['is_new']) {
|
||||
$cart = app()->make(StoreCartRepository::class)->getCartByProductSku($data['product_attr_unique'], $userInfo->uid,$data['product_type']);
|
||||
$cart = app()->make(StoreCartRepository::class)->getCartByProductSku($data['product_attr_unique'], $userInfo->uid, $data['product_type']);
|
||||
}
|
||||
return compact('product', 'sku', 'cart');
|
||||
}
|
||||
@ -1934,7 +1926,7 @@ class ProductRepository extends BaseRepository
|
||||
* @author Qinii
|
||||
* @day 5/26/21
|
||||
*/
|
||||
public function productOnceCountCart($productId,$product_attr_unique,$uid,$product_type=0)
|
||||
public function productOnceCountCart($productId, $product_attr_unique, $uid, $product_type = 0)
|
||||
{
|
||||
$make = app()->make(StoreCartRepository::class);
|
||||
$where = [
|
||||
@ -2084,11 +2076,12 @@ class ProductRepository extends BaseRepository
|
||||
$data = app()->make(GuaranteeTemplateRepository::class)->getSearch($where)->with(
|
||||
[
|
||||
'templateValue' => [
|
||||
'value' => function($query){
|
||||
'value' => function ($query) {
|
||||
$query->field('guarantee_id,guarantee_name,guarantee_info');
|
||||
}
|
||||
],
|
||||
])->find();
|
||||
]
|
||||
)->find();
|
||||
return $data ?? [];
|
||||
}
|
||||
|
||||
@ -2100,15 +2093,15 @@ class ProductRepository extends BaseRepository
|
||||
* @author Qinii
|
||||
* @day 5/24/21
|
||||
*/
|
||||
public function increaseTake(int $uid, string $unique,int $type,int $product_id)
|
||||
public function increaseTake(int $uid, string $unique, int $type, int $product_id)
|
||||
{
|
||||
$status = systemConfig('procudt_increase_status');
|
||||
if(!$status) throw new ValidateException('未开启到货通知');
|
||||
if (!$status) throw new ValidateException('未开启到货通知');
|
||||
$make = app()->make(ProductTakeRepository::class);
|
||||
$where['product_id'] = $product_id;
|
||||
if($unique) $where['unique'] = $unique;
|
||||
if ($unique) $where['unique'] = $unique;
|
||||
$sku = app()->make(ProductAttrValueRepository::class)->getWhere($where);
|
||||
if(!$sku) throw new ValidateException('商品不存在');
|
||||
if (!$sku) throw new ValidateException('商品不存在');
|
||||
$data = [
|
||||
'product_id' => $sku['product_id'],
|
||||
'unique' => $unique ?: 1,
|
||||
@ -2134,11 +2127,11 @@ class ProductRepository extends BaseRepository
|
||||
}
|
||||
$productType = 0;
|
||||
$product = $this->setProduct($data);
|
||||
if(isset($data['start_day'])){ //秒杀
|
||||
if (isset($data['start_day'])) { //秒杀
|
||||
$product['stop'] = time() + 3600;
|
||||
$productType = 1;
|
||||
}
|
||||
if(isset($data['presell_type'])){ //预售
|
||||
if (isset($data['presell_type'])) { //预售
|
||||
$product['start_time'] = $data['start_time'];
|
||||
$product['end_time'] = $data['end_time'];
|
||||
$product['presell_type'] = $data['presell_type'];
|
||||
@ -2150,7 +2143,7 @@ class ProductRepository extends BaseRepository
|
||||
$productType = 2;
|
||||
}
|
||||
|
||||
if(isset($data['assist_count'])){
|
||||
if (isset($data['assist_count'])) {
|
||||
//助力
|
||||
$product['assist_count'] = $data['assist_count'];
|
||||
$product['assist_user_count'] = $data['assist_user_count'];
|
||||
@ -2158,14 +2151,14 @@ class ProductRepository extends BaseRepository
|
||||
$productType = 3;
|
||||
}
|
||||
|
||||
if(isset($data['buying_count_num'])) {
|
||||
if (isset($data['buying_count_num'])) {
|
||||
//
|
||||
$product['buying_count_num'] = $data['buying_count_num'];
|
||||
$product['pay_count'] = $data['pay_count'];
|
||||
$productType = 4;
|
||||
}
|
||||
|
||||
$product['slider_image'] = explode(',',$product['slider_image']);
|
||||
$product['slider_image'] = explode(',', $product['slider_image']);
|
||||
$product['merchant'] = $data['merchant'];
|
||||
$product['content'] = ['content' => $data['content']];
|
||||
$settleParams = $this->setAttrValue($data, 0, $productType, 0);
|
||||
@ -2190,24 +2183,24 @@ class ProductRepository extends BaseRepository
|
||||
];
|
||||
$sku[$value['sku']] = $_value;
|
||||
}
|
||||
$preview_key = 'preview'.$data['mer_id'].$productType.'_'.time();
|
||||
unset($settleParams['data'],$settleParams['attrValue']);
|
||||
$preview_key = 'preview' . $data['mer_id'] . $productType . '_' . time();
|
||||
unset($settleParams['data'], $settleParams['attrValue']);
|
||||
$settleParams['sku'] = $sku;
|
||||
$settleParams['attr'] = $this->detailAttr($settleParams['attr'],1);
|
||||
$settleParams['attr'] = $this->detailAttr($settleParams['attr'], 1);
|
||||
|
||||
if(isset($data['guarantee_template_id'])) {
|
||||
if (isset($data['guarantee_template_id'])) {
|
||||
$guarantee_id = app()->make(GuaranteeValueRepository::class)->getSearch(['guarantee_template_id' => $data['guarantee_template_id']])->column('guarantee_id');
|
||||
$product['guaranteeTemplate'] = app()->make(GuaranteeRepository::class)->getSearch(['status' => 1, 'is_del' => 0])->where('guarantee_id', 'in', $guarantee_id)->select();
|
||||
}
|
||||
if(isset($data['temp_id'])) {
|
||||
if (isset($data['temp_id'])) {
|
||||
$product['temp'] = app()->make(ShippingTemplateRepository::class)->getSearch(['shipping_template_id' => $data['temp_id']])->find();
|
||||
}
|
||||
|
||||
$ret = array_merge($product,$settleParams);
|
||||
$ret = array_merge($product, $settleParams);
|
||||
|
||||
Cache::set($preview_key,$ret);
|
||||
Cache::set($preview_key, $ret);
|
||||
|
||||
return compact('preview_key','ret');
|
||||
return compact('preview_key', 'ret');
|
||||
}
|
||||
|
||||
|
||||
@ -2220,8 +2213,7 @@ class ProductRepository extends BaseRepository
|
||||
*/
|
||||
public function getPreview(array $data)
|
||||
{
|
||||
switch($data['product_type'])
|
||||
{
|
||||
switch ($data['product_type']) {
|
||||
case 0:
|
||||
case 98:
|
||||
case 99:
|
||||
@ -2233,20 +2225,20 @@ class ProductRepository extends BaseRepository
|
||||
break;
|
||||
case 2:
|
||||
$make = app()->make(ProductPresellRepository::class);
|
||||
$res = $make->getWhere([$make->getPk()=> $data['id']])->toArray();
|
||||
$res = $make->getWhere([$make->getPk() => $data['id']])->toArray();
|
||||
$ret = $this->apiProductDetail(['product_id' => $res['product_id']], 2, $data['id'])->toArray();
|
||||
$ret['ot_price'] = $ret['price'];
|
||||
$ret['start_time'] = $res['start_time'];
|
||||
$ret['p_end_time'] = $res['end_time'];
|
||||
$ret = array_merge($ret,$res);
|
||||
$ret = array_merge($ret, $res);
|
||||
break;
|
||||
case 3:
|
||||
$make = app()->make(ProductAssistRepository::class);
|
||||
$res = $make->getWhere([$make->getPk()=> $data['id']])->toArray();
|
||||
$res = $make->getWhere([$make->getPk() => $data['id']])->toArray();
|
||||
$ret = $this->apiProductDetail(['product_id' => $res['product_id']], 3, $data['id'])->toArray();
|
||||
|
||||
$ret = array_merge($ret,$res);
|
||||
foreach ($ret['sku'] as $value){
|
||||
$ret = array_merge($ret, $res);
|
||||
foreach ($ret['sku'] as $value) {
|
||||
$ret['price'] = $value['price'];
|
||||
$ret['stock'] = $value['stock'];
|
||||
}
|
||||
@ -2256,7 +2248,7 @@ class ProductRepository extends BaseRepository
|
||||
$res = $make->get($data['id'])->toArray();
|
||||
$ret = $this->apiProductDetail(['product_id' => $res['product_id']], 4, $data['id'])->toArray();
|
||||
$ret['ot_price'] = $ret['price'];
|
||||
$ret = array_merge($ret,$res);
|
||||
$ret = array_merge($ret, $res);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
@ -2269,7 +2261,7 @@ class ProductRepository extends BaseRepository
|
||||
$where['product_id'] = $id;
|
||||
$field = isset($data['sys_labels']) ? 'sys_labels' : 'mer_labels';
|
||||
if ($merId) $where['mer_id'] = $merId;
|
||||
app()->make(ProductLabelRepository::class)->checkHas($merId,$data[$field]);
|
||||
app()->make(ProductLabelRepository::class)->checkHas($merId, $data[$field]);
|
||||
$ret = $this->dao->getWhere($where);
|
||||
|
||||
$activeId = $ret->seckillActive->seckill_active_id ?? 0;
|
||||
@ -2288,7 +2280,7 @@ class ProductRepository extends BaseRepository
|
||||
return app()->make(ProductAttrValueRepository::class)->getSearch(['product_id' => $id])->select()->append(['is_svip_price']);
|
||||
}
|
||||
|
||||
public function checkParams($data,$merId,$id = null)
|
||||
public function checkParams($data, $merId, $id = null)
|
||||
{
|
||||
if (!$data['pay_limit']) $data['once_max_count'] = 0;
|
||||
if ($data['brand_id'] > 0 && !$this->merBrandExists($data['brand_id']))
|
||||
@ -2300,20 +2292,20 @@ class ProductRepository extends BaseRepository
|
||||
if ($data['delivery_way'] == 2 && !$this->merShippingExists($merId, $data['temp_id']))
|
||||
throw new ValidateException('运费模板不存在');
|
||||
if (isset($data['type']) && $data['type'] && $data['extend']) {
|
||||
$key = ['email','text','number','date','time','idCard','mobile','image'];
|
||||
$key = ['email', 'text', 'number', 'date', 'time', 'idCard', 'mobile', 'image'];
|
||||
if (count($data['extend']) > 10) throw new ValidateException('附加表单不能超过10条');
|
||||
$title = [];
|
||||
foreach ($data['extend'] as $item) {
|
||||
if (empty($item['title']) )
|
||||
throw new ValidateException('表单名称不能为空:'.$item['key']);
|
||||
if (in_array($item['title'],$title))
|
||||
throw new ValidateException('表单名称不能重复:'.$item['title']);
|
||||
if (empty($item['title']))
|
||||
throw new ValidateException('表单名称不能为空:' . $item['key']);
|
||||
if (in_array($item['title'], $title))
|
||||
throw new ValidateException('表单名称不能重复:' . $item['title']);
|
||||
$title[] = $item['title'];
|
||||
if (!in_array($item['key'], $key))
|
||||
throw new ValidateException('表单类型错误:'.$item['key']);
|
||||
throw new ValidateException('表单类型错误:' . $item['key']);
|
||||
$extend[] = [
|
||||
'title' => $item['title'],
|
||||
'key' => $item['key'] ,
|
||||
'key' => $item['key'],
|
||||
'require' => $item['require'],
|
||||
];
|
||||
}
|
||||
@ -2321,8 +2313,8 @@ class ProductRepository extends BaseRepository
|
||||
foreach ($data['attrValue'] as $k => $item) {
|
||||
//$data['attrValue'][$k]['stock'] = 0;
|
||||
}
|
||||
app()->make(ProductLabelRepository::class)->checkHas($merId,$data['mer_labels']);
|
||||
$count = app()->make(StoreCategoryRepository::class)->getWhereCount(['store_category_id' => $data['cate_id'],'is_show' => 1]);
|
||||
app()->make(ProductLabelRepository::class)->checkHas($merId, $data['mer_labels']);
|
||||
$count = app()->make(StoreCategoryRepository::class)->getWhereCount(['store_category_id' => $data['cate_id'], 'is_show' => 1]);
|
||||
if (!$count) throw new ValidateException('平台分类不存在或不可用');
|
||||
app()->make(StoreProductValidate::class)->check($data);
|
||||
if ($id) unset($data['type']);
|
||||
@ -2346,8 +2338,8 @@ class ProductRepository extends BaseRepository
|
||||
$model = new PurchaseRecord();
|
||||
$stockIn = $params['number'] ?? 0;
|
||||
$price = $params['price'] ?? 0;
|
||||
if($stockIn==0){
|
||||
$stockIn=1;
|
||||
if ($stockIn == 0) {
|
||||
$stockIn = 1;
|
||||
}
|
||||
if (empty($params['product_id']) && !empty($params['order_product_id'])) {
|
||||
//有商品无规格或者无商品无规格,导入商品和规格
|
||||
@ -2364,11 +2356,11 @@ class ProductRepository extends BaseRepository
|
||||
throw new \Exception('商品规格导入出错', 500);
|
||||
}
|
||||
}
|
||||
if( $orderProduct->is_imported == 1){
|
||||
|
||||
if ($orderProduct->is_imported == 1) {
|
||||
|
||||
ProductAttrValue::where('mer_id', $merId)
|
||||
->where('product_id', $product['product_id'])
|
||||
->update(['stock'=>$attrValue->stock + $stockIn]);
|
||||
->where('product_id', $product['product_id'])
|
||||
->update(['stock' => $attrValue->stock + $stockIn]);
|
||||
$data = [
|
||||
'order_id' => $params['order_id'] ?? 0,
|
||||
'order_product_id' => $params['order_product_id'] ?? 0,
|
||||
@ -2378,7 +2370,7 @@ class ProductRepository extends BaseRepository
|
||||
'unique' => $attrValue['unique'],
|
||||
'price' => $price,
|
||||
'mer_id' => $product->mer_id,
|
||||
'supplier_mer_id' => $orderMerId??0,
|
||||
'supplier_mer_id' => $orderMerId ?? 0,
|
||||
];
|
||||
if (!$model->save($data)) {
|
||||
throw new \Exception('入库失败', 500);
|
||||
@ -2398,7 +2390,6 @@ class ProductRepository extends BaseRepository
|
||||
$productId = $this->import($params['order_product_id'], request()->userInfo());
|
||||
$product = $this->get($productId);
|
||||
$attrValue = ProductAttrValue::where('mer_id', $merId)->where('product_id', $productId)->find();
|
||||
|
||||
}
|
||||
} else {
|
||||
//有商品有规格
|
||||
@ -2538,7 +2529,7 @@ class ProductRepository extends BaseRepository
|
||||
$data = $query->page($page, $limit)->setOption('field', [])->field($this->filed)->select();
|
||||
$data->append(['us_status']);
|
||||
$list = hasMany(
|
||||
$data ,
|
||||
$data,
|
||||
'mer_labels',
|
||||
ProductLabel::class,
|
||||
'product_label_id',
|
||||
@ -2548,5 +2539,4 @@ class ProductRepository extends BaseRepository
|
||||
);
|
||||
return compact('count', 'list');
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user