// +---------------------------------------------------------------------- declare (strict_types=1); namespace app\common\service\goods\source; use app\common\model\za\ZaActivityGood as ZaActivityGoodModel; use app\common\enum\order\OrderSource as OrderSourceEnum; use app\common\service\goods\source\Factory; /** * 商品来源-买一赠一商品扩展类 * Class Master * @package app\common\service\stock */ class Za extends Basics { public function __call($name,$arguments) { // echo 'this function:'.$name.'not exists'; } /** * 申请退货退多个活动单商品的活动库存 * @param array $data * @return array|false */ public function backActivityGoodsStock($order_goods, $total_num=0){ //do nothing } public function backActivityStock($order,bool $isPayOrder = false){ //do nothing } /** * 更新商品库存 (针对下单减库存的商品) * @param $order * @return bool */ public function updateGoodsStock($order) { //扣一下主库存 买一赠一就扣两次吧,先扣他两次再说 Factory::getFactory(OrderSourceEnum::MASTER)->updateGoodsStock($order); Factory::getFactory(OrderSourceEnum::MASTER)->updateGoodsStock($order); $goodsList = $order['goodsList']; $id = $order['order_source_id']; // 商品的数据 $goodsData[] = [ 'where' => ['id' => $id], 'data' => [ // 递减商品总库存 'stock_num' => ['dec', $goodsList[0]['total_num']*2] ] ]; (new ZaActivityGoodModel())->updateAll($goodsData); return true; } /** * 更新商品库存销量(订单付款后) * @param $order * @return bool */ public function updateStockSales($order) { //增加主订单销量 Factory::getFactory(OrderSourceEnum::MASTER)->updateStockSales($order); Factory::getFactory(OrderSourceEnum::MASTER)->updateStockSales($order); // $id = $order['order_source_id']; // $goodsList = $order['goods']; // $deliveryType = $order['delivery_type']; // $goodsDataItem[] = [ // 'where' => ['id' => $id], // 'data' => [ // // 累计商品实际销量 // 'sale_num' => ['inc', $goodsList[0]['total_num']], // 'ms_sale_sum_price'=>['inc',$goodsList[0]['total_pay_price']+$goodsList[0]['rice_card_money']] // ] // ]; // (new MsActivityGoodModel())->updateAll($goodsDataItem); } /** * 回退商品库存事件 (用于取消订单时调用) * @param mixed $order * @return bool|mixed */ public function backGoodsStock($order,bool $isPayOrder = false) { //增加返回主订单库存 Factory::getFactory(OrderSourceEnum::MASTER)->backGoodsStock($order); Factory::getFactory(OrderSourceEnum::MASTER)->backGoodsStock($order); $goodsList = $order['goods']; $id = $order['order_source_id']; // 商品的数据 $goodsData[] = [ 'where' => ['id' => $id], 'data' => [ // 递增商品总库存 'stock_num' => ['inc', $goodsList[0]['total_num']*2] ] ]; (new ZaActivityGoodModel())->updateAll($goodsData); return true; } /** * 回退商品库存事件 (用于售后订单时调用,针对单个商品) * @param mixed $order * @param bool $isPayOrder 是否为已支付订单 * @return bool|mixed */ public function backGoodsSkuStock($order,$goods_id=0,$goods_sku_id =0,$total_num =0){ //增加返回主订单销量 Factory::getFactory(OrderSourceEnum::MASTER)->backGoodsSkuStock($order,$goods_id,$goods_sku_id,$total_num); $goodsList = $order['goods']; $id = $order['order_source_id']; // 商品的数据 $goodsData[] = [ 'where' => ['id' => $id], 'data' => [ // 递增商品总库存 'stock_num' => ['inc', $total_num] ] ]; (new ZaActivityGoodModel())->updateAll($goodsData); } }