public function beforeInsert() { $model = $this->owner; if ($credit = Credit::findOne($model->credit_id)) { $model->setAttribute('principal_amt', $credit->unit_principal_amt); $model->setAttribute('accrued_interest_amt', $credit->unit_accrued_interest_amt); $model->setAttribute('discount_rate', $credit->discount_rate); $model->setAttribute('unit_value', $credit->unit_value); return true; } return false; }
public function updateCreditInStockShares() { if ($this->status == static::STATUS_PAID && $this->getOldAttribute('status') == static::STATUS_UNPAID) { $credit = Credit::findOne($this->credit_id); $credit->in_stock_shares = $credit->in_stock_shares - $this->shares; if ($credit->in_stock_shares == 0) { $credit->status = 1; } return $credit->save(); } return true; }
/** * @param $creditId * @param $shares * @param $userId */ public function actionBuy($creditId, $shares, $userId, $orderId) { $respCode = -1; $link = null; $message = '请求异常'; if ($credit = Credit::findOne($creditId)) { if ($credit->status == 0) { if ($credit->in_stock_shares >= $shares) { $creditPrincipalAmt = number_format($credit->unit_principal_amt * $shares, 2, '.', ''); $bidOrder = DealOrder::find()->where('deal_number=:orderId', [':orderId' => $credit->order_id])->one(); $deal = Deal::find()->where('deal_id=:dealId', [':dealId' => $bidOrder->deal_id])->one(); $order = new CreditOrder(); $order->serial = $orderId; $order->credit_id = $creditId; $order->deal_id = $credit->deal_id; $order->user_id = $userId; $order->shares = $shares; $order->amount = $credit->unit_price * $shares; $order->fee = $credit->unit_fee_amt * $shares; if ($order->validate()) { if ($order->save()) { $cnpnr = new ChinaPNR(); $cnpnr->creditAssign(CnpnrAccount::find()->where('uid=:userId', [':userId' => $bidOrder->uid])->one()->UsrCustId, CnpnrAccount::find()->where('uid=:userId', [':userId' => $userId])->one()->UsrCustId, $creditPrincipalAmt, $order->amount, $order->fee); $bidDetails = ['BidDetails' => [['BidOrdId' => $bidOrder->deal_number, 'BidOrdDate' => $bidOrder->OrdDate, 'BidCreditAmt' => $creditPrincipalAmt, 'BorrowerDetails' => [['BorrowerCustId' => CnpnrAccount::find()->where('uid=:userId', [':userId' => $deal->uid])->one()->UsrCustId, 'BorrowerCreditAmt' => $creditPrincipalAmt, 'PrinAmt' => number_format(0, 2, '.', '')]]]]]; $cnpnr->BidDetails = Json::encode($bidDetails); $cnpnr->ordId = $order->serial; $cnpnr->ordDate = substr($order->serial, 0, 8); $link = $cnpnr->getLink(); $respCode = 0; $message = '成功'; } } } else { $respCode = -4; } //库存不足 } else { $respCode = -3; } } else { $respCode = -2; } if ($respCode == -2) { $message = '指定的债权不存在,无法完成购买!'; } if ($respCode == -3) { $message = '债权未在发售中,无法完成购买!'; } if ($respCode == -4) { $message = '债权数量不足,无法完成购买!'; } Yii::$app->response->format = Response::FORMAT_JSON; return ['respCode' => $respCode, 'link' => $link, 'message' => $message]; }