|
@@ -7,6 +7,8 @@ use App\Models\Option;
|
|
use App\Models\Order;
|
|
use App\Models\Order;
|
|
use App\Models\OrderDevice;
|
|
use App\Models\OrderDevice;
|
|
use App\Models\Project;
|
|
use App\Models\Project;
|
|
|
|
+use App\Models\ProjectRole;
|
|
|
|
+use App\Models\ProjectUser;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\Log;
|
|
@@ -25,12 +27,14 @@ class OrderController extends BaseController
|
|
$project = Project::find($request->input('project_id'));
|
|
$project = Project::find($request->input('project_id'));
|
|
if(!$project) return $this->error(['msg' => '找不到项目']);
|
|
if(!$project) return $this->error(['msg' => '找不到项目']);
|
|
$user = Auth::guard('mini')->user();
|
|
$user = Auth::guard('mini')->user();
|
|
- $project_role_id = $project->getCreateProjectRoleId($user, $request->input('is_draft'));
|
|
|
|
|
|
+ $project_role_id = $request->input('is_draft') == 1 ? ProjectRole::getByKey('work', 'id') : ProjectRole::getByKey('machine', 'id');
|
|
|
|
+ $option = Option::get('orders', 'status', 'checking');
|
|
|
|
+
|
|
$order = Order::create([
|
|
$order = Order::create([
|
|
'work_point_id' => $request->input('work_point_id'),
|
|
'work_point_id' => $request->input('work_point_id'),
|
|
'remark' => $request->input('remark'),
|
|
'remark' => $request->input('remark'),
|
|
'is_draft' => $request->input('is_draft'),
|
|
'is_draft' => $request->input('is_draft'),
|
|
- 'status' => $this->model->getOrderStatus($project, $user, $request->input('is_draft')),
|
|
|
|
|
|
+ 'status' => $option,
|
|
'order_number' => $this->model->createOrderNumber(),
|
|
'order_number' => $this->model->createOrderNumber(),
|
|
'project_id' => $project->id,
|
|
'project_id' => $project->id,
|
|
'user_id' => $user->id,
|
|
'user_id' => $user->id,
|
|
@@ -46,7 +50,46 @@ class OrderController extends BaseController
|
|
'order_id' => $order->id,
|
|
'order_id' => $order->id,
|
|
'device_id' => $device['type_id'],
|
|
'device_id' => $device['type_id'],
|
|
'quantity' => $device['quantity'],
|
|
'quantity' => $device['quantity'],
|
|
- 'price' => $price
|
|
|
|
|
|
+ 'price' => $price,
|
|
|
|
+ 'start_date' => $device['start_date'],
|
|
|
|
+ 'end_date' => $device['end_date']
|
|
|
|
+ ]);
|
|
|
|
+ $total = $total + ($price * (int)$device['quantity']);
|
|
|
|
+ }
|
|
|
|
+ $order->update(['money' => $total]);
|
|
|
|
+ return $this->success();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function update(Request $request)
|
|
|
|
+ {
|
|
|
|
+ $order = $this->model->find($request->input('id'));
|
|
|
|
+ if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
|
|
+ $user = Auth::guard('mini')->user();
|
|
|
|
+ $project_role_id = $request->input('is_draft') == 1 ? ProjectRole::getByKey('work', 'id') : ProjectRole::getByKey('machine', 'id');
|
|
|
|
+ $option = Option::get('orders', 'status', 'checking');
|
|
|
|
+ $res = $order->update([
|
|
|
|
+ 'work_point_id' => $request->input('work_point_id'),
|
|
|
|
+ 'remark' => $request->input('remark'),
|
|
|
|
+ 'is_draft' => $request->input('is_draft'),
|
|
|
|
+ 'status' => $option,
|
|
|
|
+ 'order_number' => $this->model->createOrderNumber(),
|
|
|
|
+ 'user_id' => $user->id,
|
|
|
|
+ 'project_role_id' => $project_role_id
|
|
|
|
+ ]);
|
|
|
|
+ if(!$res) return $this->error(['msg' => '订单修改失败']);
|
|
|
|
+ $devices = $request->input('devices');
|
|
|
|
+ $total = 0;
|
|
|
|
+ OrderDevice::where('order_id', '=', $order->id)->delete();
|
|
|
|
+ foreach($devices as $device) {
|
|
|
|
+ $price = $this->transMoney($device['price']);
|
|
|
|
+ OrderDevice::create([
|
|
|
|
+ 'name' => $device['name'],
|
|
|
|
+ 'order_id' => $order->id,
|
|
|
|
+ 'device_id' => $device['type_id'],
|
|
|
|
+ 'quantity' => $device['quantity'],
|
|
|
|
+ 'price' => $price,
|
|
|
|
+ 'start_date' => $device['start_date'],
|
|
|
|
+ 'end_date' => $device['end_date']
|
|
]);
|
|
]);
|
|
$total = $total + ($price * (int)$device['quantity']);
|
|
$total = $total + ($price * (int)$device['quantity']);
|
|
}
|
|
}
|
|
@@ -56,7 +99,7 @@ class OrderController extends BaseController
|
|
|
|
|
|
public function get(Request $request)
|
|
public function get(Request $request)
|
|
{
|
|
{
|
|
- $items = $this->model->where('project_id', $request->input('project_id'));
|
|
|
|
|
|
+ $items = $this->model->where('project_id', $request->input('project_id'))->where('is_draft', 2);
|
|
if($request->input('status')) {
|
|
if($request->input('status')) {
|
|
$status = Option::get('orders', 'status', $request->input('status'));
|
|
$status = Option::get('orders', 'status', $request->input('status'));
|
|
if($status) $items = $items->where('status', $status);
|
|
if($status) $items = $items->where('status', $status);
|
|
@@ -75,10 +118,89 @@ class OrderController extends BaseController
|
|
$device->type = $device->device ? $device->device->name : '';
|
|
$device->type = $device->device ? $device->device->name : '';
|
|
}
|
|
}
|
|
$item->user_name = $item->user ? $item->user->name : '';
|
|
$item->user_name = $item->user ? $item->user->name : '';
|
|
- $item->status = Option::getById($item->status, 'name');
|
|
|
|
- $item->date_time = substr($item->created_at, 0, 16);
|
|
|
|
|
|
+ $this->formatOrder($item);
|
|
$item->work_point_name = $item->workPoint ? $item->workPoint->name : '';
|
|
$item->work_point_name = $item->workPoint ? $item->workPoint->name : '';
|
|
}
|
|
}
|
|
return $this->success(['data' => $items->items()]);
|
|
return $this->success(['data' => $items->items()]);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ public function formatOrder($item)
|
|
|
|
+ {
|
|
|
|
+ $option = Option::find($item->status);
|
|
|
|
+ $item->status = $item->getStatusName();
|
|
|
|
+ $item->status_key = $option ? $option['key'] : '';
|
|
|
|
+ $item->color = $option ? $option['color'] : '';
|
|
|
|
+ $item->date_time = substr($item->created_at, 0, 16);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function detail(Request $request)
|
|
|
|
+ {
|
|
|
|
+ $order = $this->model->with('project', 'workPoint', 'devices', 'user')->find($request->input('id'));
|
|
|
|
+ if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
|
|
+ $this->formatOrder($order);
|
|
|
|
+ return $this->success(['data' => $order]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function getRole(Request $request)
|
|
|
|
+ {
|
|
|
|
+ $user = Auth::guard('mini')->user();
|
|
|
|
+ $order = $this->model->find($request->input('id'));
|
|
|
|
+ if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
|
|
+ $project_user = ProjectUser::where([
|
|
|
|
+ ['project_id', '=', $order->project_id],
|
|
|
|
+ ['user_id', '=', $user->id]
|
|
|
|
+ ])->with('projectRole')->first();
|
|
|
|
+ return $this->success(['data' => $project_user]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function check(Request $request)
|
|
|
|
+ {
|
|
|
|
+ $user = Auth::guard('mini')->user();
|
|
|
|
+ $order = $this->model->find($request->input('id'));
|
|
|
|
+ if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
|
|
+ $project_user = ProjectUser::where([
|
|
|
|
+ ['project_id', '=', $order->project_id],
|
|
|
|
+ ['user_id', '=', $user->id]
|
|
|
|
+ ])->first();
|
|
|
|
+ if(!$project_user) return $this->error(['msg' => '找不到用户']);
|
|
|
|
+ $project_role = ProjectRole::find($project_user->project_role_id);
|
|
|
|
+ if(!$project_role) return $this->error(['msg' => '找不到角色']);
|
|
|
|
+ $status = Option::get('orders', 'status', $request->input('type'));
|
|
|
|
+
|
|
|
|
+ // 工区负责人确认通过
|
|
|
|
+ if($request->input('type') == 'confirm') {
|
|
|
|
+ $status = Option::get('orders', 'status', 'pass');
|
|
|
|
+ $next_project_role_id = $project_role->id;
|
|
|
|
+ } else if($request->input('type') == 're-submit') {
|
|
|
|
+ $status = Option::get('orders', 'status', 'checking');
|
|
|
|
+ $next_project_role_id = $project_role->getNext('id');
|
|
|
|
+ } else {
|
|
|
|
+ if($request->input('type') == 'reject' || $project_role->key == 'manager') {
|
|
|
|
+ $next_project_role_id = ProjectRole::getByKey('work', 'id');
|
|
|
|
+ } else {
|
|
|
|
+ $next_project_role_id = $project_role->getNext('id');
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ $res = $order->update([
|
|
|
|
+ 'status' => $status,
|
|
|
|
+ 'last_project_role_id' => $project_role->id,
|
|
|
|
+ 'project_role_id' => $next_project_role_id
|
|
|
|
+ ]);
|
|
|
|
+ if($res) return $this->success();
|
|
|
|
+ return $this->error(['msg' => '操作失败']);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public function changePrice(Request $request)
|
|
|
|
+ {
|
|
|
|
+ $order_device = OrderDevice::find($request->input('id'));
|
|
|
|
+ if(!$order_device) return $this->error(['msg' => '找不到设备']);
|
|
|
|
+ $order_device->update([
|
|
|
|
+ 'price' => $this->transMoney($request->input('price'))
|
|
|
|
+ ]);
|
|
|
|
+ $order = $this->model->find($order_device['order_id']);
|
|
|
|
+ if(!$order) return $this->error(['msg' => '找不到订单']);
|
|
|
|
+ $order->updateMoney();
|
|
|
|
+ return $this->success();
|
|
|
|
+ }
|
|
}
|
|
}
|