|
|
<?php
namespace App\Service\v3\Implementations;
use App\Commons\Log;use App\Constants\v3\ErrorCode;use App\Constants\v3\LogLabel;use App\Exception\ErrorCodeException;use App\Service\v3\Interfaces\GoodsInventoryServiceInterface;use App\Service\v3\Interfaces\GoodsServiceInterface;use App\Model\v3\Goods;use App\Model\v3\GoodsBanner;use Hyperf\Redis\Redis;use Hyperf\Utils\ApplicationContext;use Hyperf\Di\Annotation\Inject;
class GoodsService implements GoodsServiceInterface{ /** * @Inject * @var Log */ protected $log; /** * @Inject * @var GoodsInventoryServiceInterface */ protected $goodsInventoryService;
public function do($goodsId) {
}
public function check(Goods $goods,$num = 1) {
if (empty($goods)) { $message = ErrorCode::getMessage(ErrorCode::GOODS_NOT_EXISTS); $this->log->event(LogLabel::ERROR_CODE_EXCEPTION_LOG_DATA, ['message' => $message, 'buy_num' => $num, 'logData' => json_encode($goods)]); return ErrorCode::GOODS_NOT_EXISTS; }
// 商户歇业
if($goods->store->is_rest == 1){ $message = ErrorCode::getMessage(ErrorCode::STORE_REST); $this->log->event(LogLabel::ERROR_CODE_EXCEPTION_LOG_DATA, ['message' => $message, 'buy_num' => $num, 'logData' => json_encode($goods)]); return ErrorCode::STORE_REST; } // 商品下架或已删除
if($goods->on_sale == 0 || !is_null($goods->deleted_at)){ $message = ErrorCode::getMessage(ErrorCode::GOODS_ON_SALE_NO); $this->log->event(LogLabel::ERROR_CODE_EXCEPTION_LOG_DATA, ['message' => $message, 'buy_num' => $num, 'logData' => json_encode($goods)]); return ErrorCode::GOODS_ON_SALE_NO; } // 商品库存不足
// 获取冻结的库存
// $inventoryFrozen = $this->goodsInventoryService->getSold(1, $goods->id);
$inventoryFrozen = 0; if($goods->is_infinite != 1 && $goods->inventory < ($num+$inventoryFrozen)){ $message = ErrorCode::getMessage(ErrorCode::GOODS_INVENTORY_ERROR); $this->log->event(LogLabel::ERROR_CODE_EXCEPTION_LOG_DATA, ['message' => $message, 'buy_num' => $num, 'inventoryFrozen' => $inventoryFrozen, 'logData' => json_encode($goods)]); return ErrorCode::GOODS_INVENTORY_ERROR; }
// 是否超过限购数量
if ($goods->restrict_num != 0 && $goods->restrict_num < $num) { $message = ErrorCode::getMessage(ErrorCode::GOODS_RESTRICT_LIMIT); $this->log->event(LogLabel::ERROR_CODE_EXCEPTION_LOG_DATA, ['message' => $message, 'buy_num' => $num, 'logData' => json_encode($goods)]); return ErrorCode::GOODS_RESTRICT_LIMIT; }
return true; }
public function undo() { // TODO: Implement undo() method.
}
public function getBanner($goodsId) { $banner = GoodsBanner::query()->where('goods_id',$goodsId)->orderByDesc('type')->get(); return $banner; }
public function detail($goodsId) { $res = Goods::query()->with('store')->where('id',$goodsId)->first(); return $res; }
public function getByType($storeId,$typeId) { return Goods::query()->withoutGlobalScope('normal')->where(['store_id' => $storeId,'category_id' => $typeId])->orderByDesc('on_sale')->orderByDesc('created_at')->get()->toArray(); }
public function create($params) { $data = [ 'market_id' => $params['market_id'], 'store_id' => $params['store_id'], 'name' => $params['name'], 'category_id' => $params['category_id'], 'goods_category_id' => $params['goods_category_id'], 'goods_unit' => $params['goods_unit'], 'price' => $params['price'], 'original_price' => $params['original_price'], 'inventory' => $params['inventory'], 'restrict_num' => $params['restrict_num'], 'start_num' => $params['start_num'], 'spec' => $params['spec'], 'tags' => $params['tags'], 'remark' => $params['remark'], 'on_sale' => $params['on_sale'], 'is_infinite' => $params['is_infinite'] ]; $this->log->event(LogLabel::CREATE_GOODS_LOG, ['logData' => json_encode( [ 'id' => $params['id'], 'market_id' => $params['market_id'], 'store_id' => $params['store_id'], 'name' => $params['name'], 'category_id' => $params['category_id'], 'goods_category_id' => $params['goods_category_id'], 'goods_unit' => $params['goods_unit'], 'price' => $params['price'], 'original_price' => $params['original_price'], 'inventory' => $params['inventory'], 'restrict_num' => $params['restrict_num'], 'start_num' => $params['start_num'], 'spec' => $params['spec'], 'tags' => $params['tags'], 'remark' => $params['remark'], 'on_sale' => $params['on_sale'], 'is_infinite' => $params['is_infinite'], 'user_id' => $params['user_id'] ] )]); return Goods::create($data); }
public function update($params) { $goods = Goods::query()->withoutGlobalScope('normal') ->where( [ 'id' => $params['id'], 'market_id' => $params['market_id'], 'store_id' => $params['store_id'] ] ) ->update( [ 'name' => $params['name'], 'category_id' => $params['category_id'], 'goods_category_id' => $params['goods_category_id'], 'goods_unit' => $params['goods_unit'], 'price' => $params['price'], 'original_price' => $params['original_price'], 'inventory' => $params['inventory'], 'restrict_num' => $params['restrict_num'], 'start_num' => $params['start_num'], 'spec' => $params['spec'], 'tags' => $params['tags'], 'remark' => $params['remark'], 'on_sale' => $params['on_sale'], 'is_infinite' => $params['is_infinite'] ]); $this->log->event(LogLabel::UPDATE_GOODS_LOG, ['logData' => json_encode( [ 'id' => $params['id'], 'market_id' => $params['market_id'], 'store_id' => $params['store_id'], 'name' => $params['name'], 'category_id' => $params['category_id'], 'goods_category_id' => $params['goods_category_id'], 'goods_unit' => $params['goods_unit'], 'price' => $params['price'], 'original_price' => $params['original_price'], 'inventory' => $params['inventory'], 'restrict_num' => $params['restrict_num'], 'start_num' => $params['start_num'], 'spec' => $params['spec'], 'tags' => $params['tags'], 'remark' => $params['remark'], 'on_sale' => $params['on_sale'], 'is_infinite' => $params['is_infinite'], 'user_id' => $params['user_id'] ] )]); return $goods; }
public function info($goodsId) { $res = Goods::query()->withoutGlobalScope('normal')->where('id',$goodsId)->first(); return $res; }
public function getTags() { return [ '新品', '热销', '新鲜' ]; }
public function updateOnSale($goodsId) { $goods = Goods::query()->withoutGlobalScope('normal')->find($goodsId); $onSale = $goods->on_sale + 1; $goods->on_sale = $onSale % 2; return $goods->save(); }}
|