db->beginTransaction(); try { $order = HappinessCashierOrder::find()->where(['id' => $id])->asArray()->one(); $order_detail = []; foreach ($data as $key => $value) { $order_detail[] = [ 'attr_id' => $value['id'], 'num' => $value['buy_num'], ]; } $money = $order['pay_money']; $goods_price=bcdiv($money,count($order_detail),2); $res = HappinessCashierOrderDetail::batchDataSave($order_detail, [ 'cashier_order_id' => $id, 'mall_id' => $order['mall_id'], 'store_id' => $order['store_id'], 'user_id' => $order['user_id'], 'pay_money' => $goods_price ]); if (!$res) throw new Exception(HappinessCashierOrderDetail::getStaticError()); $form = []; $form['id'] = $order['id']; $form['mall_id'] = $order['mall_id']; $form['store_id'] = $order['store_id']; $form['user_id'] = $order['user_id']; $form['price'] = $order['pay_money']; $form['parent_id'] = 0; $form['type'] = 2; $details=HappinessCashierOrderDetail::find()->where(['cashier_order_id' => $id])->asArray()->all(); $total=array_sum(array_column($details,'goods_price')); $order['goods_price']=$total; $order['detail']=$details; (new OrderLogic)->setStoreCommission($form, $order); $model = HappinessCashierOrder::find()->where(['id' => $id])->one(); $model->money = array_sum(array_column($details,'original_goods_price')); $model->save(); //发送佣金 (new CommissionService())->send($order,0); //养老金 (new PensionService())->record($order,0); //pv值 $store_order['store_id']=$order['store_id']; (new PvService)->send($order,0,$store_order); (new WeightService())->record($order,0); $t->commit(); return true; } catch (Exception $e) { $this->error($e->getMessage()); $t->rollBack(); return false; } } public function settle($id) { try { $order = HappinessCashierOrder::findOne($id); $form = []; $form['id'] = $order['id']; $form['mall_id'] = $order['mall_id']; $form['store_id'] = $order['store_id']; $form['user_id'] = $order['user_id']; $form['price'] = $order['pay_money']; $form['parent_id'] = 0; $form['type'] = 2; (new OrderLogic)->frozeCommission($form, $order); //发送佣金 (new CommissionService())->send($order,1); //养老金 (new PensionService())->record($order,1); //pv值 $store_order['store_id']=$order['store_id']; (new PvService)->send($order,1,$store_order); //返还提货券 (new VoucherService())->returnOrderVoucherCashier($order['id']); (new WeightService())->record($order,1); return true; } catch (Exception $e) { $this->error($e->getMessage()); return false; } } }