public function check_failure_apply() { $model = new \Loan\Model\OrderModel(); $order = $this->_order(); $model->checkFailureApply($order['id']) or ajax_error($model->getError()); ajax_success(); }
/** * 每天更新所有账单的滞纳金 * 规则:逾期第10天起,每天增加贷款总金额1%的滞纳金(多期逾期仅算一期) */ public function updateDelayDay() { // 逾期百分点 $rate = 1; // 获取所有已经逾期的账单 $orderModel = new \Loan\Model\OrderModel(); $model = $this->alias('b')->join('zj_loan_order o on o.id=b.order_id'); $bills = $model->field('o.status order_status, o.loan_money, b.order_id,b.issue,b.status,b.money_principal,b.return_limit_time')->where(['b.issue' => ['gt', 0], 'b.status' => ['in', '0,1'], 'b.return_limit_time' => ['elt', strtotime(date('Y-m-d 23:59:59', strtotime('-10 day')))]])->order('b.return_limit_time asc')->select(); // 合法的订单状态 $check_order_status = array_merge($orderModel->allowRepayStatus(), [$orderModel::STATUS_BREACH_CONTRACT]); $exitst_order = []; $total_success = 0; $date = date('Y-m-d'); $delayModel = M('loan_bill_delay'); foreach ($bills as $bill) { // 同一个订单,仅发送一次 $id = $bill['order_id']; if (in_array($id, $exitst_order)) { continue; } $exitst_order[] = $id; // 判断订单状态是否正常 if (!in_array($bill['order_status'], $check_order_status)) { system_warn('更新滞纳金时发现异常记录:' . print_r($bill, true)); continue; } // 组装数据 $data = ['order_id' => $bill['order_id'], 'issue' => $bill['issue'], 'delay_date' => $date, 'type' => 1]; // 判断重复处理 if ($delayModel->where($data)->count() > 0) { continue; } // 计算滞纳金 $delay_money = $bill['loan_money'] * $rate / 100; // 启用事务 $this->startTrans(); if ($this->where(['order_id' => $bill['order_id'], 'issue' => $bill['issue'], 'status' => $bill['status']])->save(['money_delay' => ['exp', 'money_delay+' . $delay_money], 'money_total' => ['exp', 'money_total+' . $delay_money]])) { $data['created'] = time(); $data['uid'] = 0; $data['uname'] = '系统'; $data['money_principal'] = $bill['money_principal']; $data['delay_money'] = $delay_money; $delayModel->add($data); // 若逾期达到了16天,则更新订单状态(避免继续执行还款操作) if ($bill['order_status'] != $orderModel::STATUS_BREACH_CONTRACT) { $diff_day = (strtotime(date('Y-m-d')) - strtotime(date('Y-m-d', $bill['return_limit_time']))) / 86400; if ($diff_day >= 16) { if (!$orderModel->breach($bill['order_id'])) { system_warn('更新订单违约时失败:' . $orderModel->getError()); $this->rollback(); continue; } } } // 提交事务 $this->commit(); $total_success++; } else { system_warn('更新滞纳金时,无法正确更新记录:' . print_r($bill, true)); $this->rollback(); } } return $total_success; }
protected function _paySuccess($pay_id, $money, $alipay_trade_no) { // 验证是否重复操作 $payRow = M('loan_pay_alipay')->find($pay_id); if (!$payRow) { return '此交易记录不存在!'; } if ($payRow['is_action'] > 0) { return true; } if (bccomp($money, $payRow['money'], 2) != 0) { return '支付金额与记录不符!'; } if (!M('loan_pay_alipay')->where(['id' => $pay_id, 'is_action' => $payRow['is_action']])->setField('is_action', 1)) { return true; } $orderModel = new \Loan\Model\OrderModel(); $billModel = new \Loan\Model\BillModel(); $order_id = $payRow['order_id']; $month = $payRow['month']; $issue = $payRow['issue']; $money = $payRow['money']; $order = $orderModel->field('status')->where(['id' => $order_id])->field('status')->find(); if (!$order) { return '订单信息不存在!'; } if ($month == 1) { if ($issue == 0) { // 正常支付首付 if ($order['status'] == $orderModel::STATUS_CHECK_SUCCESS) { return true; } if ($orderModel->firstPay($order_id, 1, $alipay_trade_no)) { return true; } else { return $orderModel->getError(); } } else { // 正常支付指定账单 $bill = M('loan_bill')->field('issue,money_total,status')->where(['order_id' => $order_id, 'issue' => $issue])->find(); if (!$bill) { return '找不到此账单信息!'; } // 判断是否已经支付 if ($bill['status'] == 2) { return true; } if ($billModel->repay($order_id, $issue, $money, 1, $alipay_trade_no)) { return true; } else { return $billModel->getError(); } } } elseif ($month < 0) { return '未知month参数:' . $month; } else { if (!$billModel->repayAll($order_id, $month, $money, 1, $alipay_trade_no)) { return $billModel->getError(); } } return true; }
public function order() { if (I('post.month', 0, 'intval') > 0) { $userModel = new \Common\Model\UserModel(); $userModel->verifyCode(I('post.mobile'), I('post.verify_code')) or $this->error($userModel->getError()); } $goods = $this->_goods(); $this->assign('goods', $goods); $first_money = I('first_money', 0, 'floatval'); $month = I('month', 0, 'intval'); $quantity = I('quantity', 1, 'intval'); $remark = I('remark'); $payee_account_type = I('payee_account_type', 0, 'intval'); $payee_account = I('account'); $orderModel = new \Loan\Model\OrderModel(); $order_id = $orderModel->addGoods($this->_user['uid'], $goods['id'], $quantity, $first_money, $month, $goods['property_remark'], $remark, $payee_account_type, $payee_account); $order_id or $this->error($orderModel->getError()); if (IS_AJAX) { $this->ajaxReturn(array('status' => 1, 'order_id' => $order_id)); } else { if ($month) { $this->assign('order_id', $order_id); $this->success('下单成功,请等待工作人员审核。', '/user/order', 3); } else { $this->redirect('/pay/alipay/' . $order_id); } } }
public function updateCompany() { $orderModel = new \Loan\Model\OrderModel(); $orderModel->updateCompany(I('order_id'), I('company_id')) or $this->error($orderModel->getError()); $this->success('更新商铺成功!'); }
public function offline() { $goods_id = I('goods_id'); if (IS_POST) { $this->verify(); $uid = $this->_user['uid']; $first_money = I('first_money'); $month = I('month'); $remark = I('remark'); $orderModel = new \Loan\Model\OrderModel(); $order_id = $orderModel->addOffline($uid, $goods_id, $first_money, $month, $remark); $order_id or $this->error($orderModel->getError()); $this->assign('order_id', $order_id); $this->display('success'); exit; } $model = M()->table('zj_loan_company_goods g')->join('zj_loan_company c on c.id=g.company_id'); $goods = $model->field('g.id,g.title,g.pic,g.price,c.name')->where(['g.id' => $goods_id])->find() or $this->error('找不到此商品信息!'); $this->assign('goods', $goods); $rate = D('Loan/shop_goods')->getFeeRate('offline') or $this->error('无法读取服务费率!'); $this->assign('rate', $rate); $this->display('offline_qr'); }