<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Services\LogService; use App\Http\Transformers\LogTransformer; use App\Http\Transformers\ReceiptTransformer; use App\Http\Validators\ReceiptValidator; use App\Model\LogModel; use App\Model\SupplierChannelModel; use App\Model\SupplierReceiptModel; use Illuminate\Http\Request; //通用API,比如获取品牌列表,分类列表等 class SupplierReceiptApiController extends Controller { public function Entrance(Request $request, $id) { $this->$id($request, $id); } //获取供应商收款信息 public function GetSupplierReceiptList($request) { $supplierId = $request->get('supplier_id'); $limit = $request->get('limit', 10); $model = new SupplierReceiptModel(); $model->where('supplier_id', $supplierId)->paginate(); $list = $model->where('supplier_id', $supplierId)->orderBy('receipt_id', 'desc') ->paginate($limit)->toArray(); $transformer = new ReceiptTransformer(); $list['data'] = $transformer->transformList($list['data']); $this->response(0, 'ok', $list['data'], $list['total']); } //获取供应商信息变更记录 public function AddSupplierReceipt($request) { //先去表单验证 $validator = new ReceiptValidator(); $requestData = $request->all(); $validateResult = $validator->checkSave($requestData); if ($validateResult) { $this->response(-1, $validateResult); } $receipt = $request->only([ 'receipt_id', 'supplier_id', 'receipt_type', 'bank_name', 'bank_adderss', 'account_no', 'account_adderss', 'swift_code', 'certificate', 'account_name', 'remark', ]); $receipt['account_adderss'] = empty($receipt['account_adderss']) ? ' ' : $receipt['account_adderss']; if ($receipt['receipt_type'] == 1) { $receipt['swift_code'] = ''; } $receiptId = $request->get('receipt_id'); $supplierId = $request->get('supplier_id'); $model = new SupplierReceiptModel(); if (!empty($receiptId)) { $oldReceipt = $model->where('receipt_id', $receiptId)->first()->toArray(); $result = $model->where('receipt_id', $receiptId)->update($receipt); } else { $oldReceipt = []; $receipt['supplier_id'] = $supplierId; $result = $model->insertGetId($receipt); $receiptId = $result; } if ($result) { $newReceipt = $model->where('receipt_id', $receiptId)->first()->toArray(); //如果修改的只是备注,则不需要转成审核 $needAudit = $this->checkNeedAudit($oldReceipt, $newReceipt); if ($needAudit || empty($request->get('receipt_id'))) { $supplierModel = new SupplierChannelModel(); //修改供应商为审核状态 $supplierModel->where('supplier_id', $supplierId)->update([ 'update_time' => time(), 'status' => SupplierChannelModel::STATUS_PENDING, ]); } $logService = new LogService(); $content = !empty($receipt['receipt_id']) ? '修改银行信息' : '添加银行信息'; $remark = json_encode($receipt); $logService->AddLog($receipt['supplier_id'], LogModel::UPDATE_OPERATE, '修改供应商基本资料', $content, $remark); $this->response(0, '操作成功'); } $this->response(-1, '操作失败'); } //判断是否要进入审核中状态,因为部分字段修改是不需要走审核的 private function checkNeedAudit($oldReceipt, $newReceipt) { $notNeedAuditField = [ 'remark', ]; $diff = array_diff($oldReceipt, $newReceipt); unset($diff['update_time']); $changeField = array_keys($diff); foreach ($changeField as $filed) { //只要有一个不存在于不需要审核的字段,就返回需要审核 if (!in_array($filed, $notNeedAuditField)) { return true; } } return false; } //删除 public function DeleteSupplierReceipt($request) { $receiptId = $request->get('receipt_id'); $model = new SupplierReceiptModel(); $result = $model->where('receipt_id', $receiptId)->delete(); if ($result) { $this->response(0, '操作成功'); } $this->response(-1, '操作失败'); } }