leftJoin('members', 'loans.member_id', '=', 'members.id') ->select('loans.*', 'members.name', 'members.tel', 'members.bank_name', 'members.card_number') ->where('loans.is_del', 0); if (!empty($searchInfo['info'])) { $list->where('members.name', 'like', '%' . $searchInfo['info'] . '%') ->orWhere('members.tel', $searchInfo['info']); } $count = $list->count(); $list = $list ->orderBy('loans.id', 'desc') ->limit($pageSize)->skip(($page - 1) * $pageSize)->take($pageSize) ->get(); return \Yz::Return(true, '获取成功', ['list' => $list, 'count' => $count]); } // 审核 public function Verify(Request $request) { $dayCutCheck = \Yz::DayCutCheck(); if(!$dayCutCheck['status']){ return \Yz::echoError1($dayCutCheck['msg']); } $userid = $request->get('userid');//中间件产生的参数 $id = request('id'); $ChangeStatus = request('ChangeStatus'); $Note = request('Note'); if(empty($ChangeStatus)){ return \Yz::Return(false, '操作类型不能为空'); } try { $result = DB::transaction(function () use ($id, $ChangeStatus, $Note, $userid) { // 1. 获取借款记录(加锁) $loan = DB::table('loans') ->where('id', $id) ->where('is_del', 0) ->lockForUpdate() ->first(); if (empty($loan)) { throw new \Exception('借款记录不存在'); } // 2. 获取用户信息(加锁) $memberInfo = DB::table('members') ->where('id', $loan->member_id) ->lockForUpdate() ->first(); if (empty($memberInfo)) { throw new \Exception('用户不存在'); } $amount = (string)$loan->amount; $outstanding_loan_amount= (string)$memberInfo->outstanding_loan_amount; $up_loan_data_temp=[]; if($ChangeStatus == 3){ //放款 $new_outstanding_loan_amount=bcadd($outstanding_loan_amount, $amount, 2); // 新的未还金额 = 未还金额 + 放款金额 $up_member=DB::table('members') ->where('id', $loan->member_id) ->update([ 'outstanding_loan_amount' => $new_outstanding_loan_amount, ]); $up_loan_data_temp=['disbursed_time'=>date('Y-m-d H:i:s')]; } if($ChangeStatus == 4){ //已还款 $new_outstanding_loan_amount=bcsub($outstanding_loan_amount, $amount, 2); // 新的未还金额 = 未还金额 - 还款金额 if ($new_outstanding_loan_amount < 0) { // 未还金额不能小于0 throw new \Exception('还款金额不能大于未还金额'); } $up_member=DB::table('members') ->where('id', $loan->member_id) ->update([ 'outstanding_loan_amount' => $new_outstanding_loan_amount, ]); $up_loan_data_temp=['repayment_time'=>date('Y-m-d H:i:s')]; } $up_loan_data2 = [ 'status' => $ChangeStatus, 'verify_userid' => $userid, 'verify_time' => date('Y-m-d H:i:s'), 'note' => $Note, ]; $up_loan_data=array_merge($up_loan_data2,$up_loan_data_temp); $up_loan=DB::table('loans') ->where('id', $id) ->update($up_loan_data); if($up_loan){ return true; }else{ throw new \Exception('审核失败'); } }); if($result){ return \Yz::Return(true, '审核成功',['loan'=>$id]); }else{ return \Yz::Return(false, '审核失败'); } } catch (\Exception $e) { return \Yz::Return(false, $e->getMessage()); } } }