198 lines
5.8 KiB
PHP
198 lines
5.8 KiB
PHP
![]() |
<?php
|
|||
|
|
|||
|
namespace app\common\service;
|
|||
|
|
|||
|
use app\common\model\Photographer;
|
|||
|
use app\common\model\ServiceType;
|
|||
|
use app\common\model\Studio;
|
|||
|
use app\common\model\User;
|
|||
|
use app\constant\ResponseCode;
|
|||
|
use think\Exception;
|
|||
|
|
|||
|
class StudioService
|
|||
|
{
|
|||
|
|
|||
|
/**
|
|||
|
* @desc 添加工作室
|
|||
|
* @param $request
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function add($request)
|
|||
|
{
|
|||
|
try {
|
|||
|
$post_data = $request->post();
|
|||
|
$user = User::where(['id' => $request->user->id])->findOrEmpty();
|
|||
|
if (!$user->is_photographer) {
|
|||
|
throw new Exception('您还不是摄影师,请先成为摄影师');
|
|||
|
}
|
|||
|
|
|||
|
$studio = Studio::where(['studio_name' => $post_data['studio_name']])->findOrEmpty();
|
|||
|
if (!$studio->isEmpty()) {
|
|||
|
throw new Exception('工作室名称已存在,请更换名称');
|
|||
|
}
|
|||
|
//@todo:判断是否一个人只能添加一个工作室
|
|||
|
$res = Studio::create([
|
|||
|
'studio_name' => $post_data['studio_name'],
|
|||
|
'img' => $post_data['img'],
|
|||
|
'introductions' => $post_data['introductions'],
|
|||
|
'user_id' => $request->user->id
|
|||
|
]);
|
|||
|
|
|||
|
if (!$res) {
|
|||
|
throw new Exception('添加失败');
|
|||
|
}
|
|||
|
User::where(['id' => $request->user->id])->save(['studio_id' => $res->id]);
|
|||
|
|
|||
|
return [
|
|||
|
'code' => ResponseCode::SUCCESS,
|
|||
|
'msg' => '添加成功'
|
|||
|
];
|
|||
|
} catch (Exception $e) {
|
|||
|
return [
|
|||
|
'code' => ResponseCode::FAIL,
|
|||
|
'msg' => $e->getMessage()
|
|||
|
];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @desc 工作室列表
|
|||
|
* @param $request
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function select($request)
|
|||
|
{
|
|||
|
try {
|
|||
|
$list = Studio::order('id desc')->select();
|
|||
|
|
|||
|
return [
|
|||
|
'code' => ResponseCode::SUCCESS,
|
|||
|
'data' => $list,
|
|||
|
'msg' => 'success'
|
|||
|
];
|
|||
|
|
|||
|
}catch (Exception $e){
|
|||
|
return [
|
|||
|
'code' => ResponseCode::FAIL,
|
|||
|
'msg' => $e->getMessage()
|
|||
|
];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @desc 详情
|
|||
|
* @param $request
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function detail($request)
|
|||
|
{
|
|||
|
try {
|
|||
|
$data = $request->get();
|
|||
|
$studio = Studio::where(['id' => $data['id']])->findOrEmpty();
|
|||
|
if ($studio->isEmpty()) {
|
|||
|
throw new Exception('工作室不存在');
|
|||
|
}
|
|||
|
$studio = $studio->toArray();
|
|||
|
$studio['is_me'] = 0;
|
|||
|
if((array)$request->user){
|
|||
|
if($studio['user_id'] == $request->user->id){
|
|||
|
$studio['is_me'] = 1;
|
|||
|
}
|
|||
|
}
|
|||
|
return [
|
|||
|
'code' => ResponseCode::SUCCESS,
|
|||
|
'data' => $studio,
|
|||
|
];
|
|||
|
} catch (Exception $e) {
|
|||
|
return [
|
|||
|
'code' => ResponseCode::FAIL,
|
|||
|
'msg' => $e->getMessage()
|
|||
|
];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @desc 工作室摄影师
|
|||
|
* @param $request
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function getStudioPhotographer($request)
|
|||
|
{
|
|||
|
try {
|
|||
|
$studio = Studio::where(['id' => $request['studio_id']])->findOrEmpty();
|
|||
|
if ($studio->isEmpty()) {
|
|||
|
throw new Exception('工作室不存在');
|
|||
|
}
|
|||
|
$photographer = Photographer::where(['p.studio_id' => $studio->id])->alias('p');
|
|||
|
$page = isset($request['page']) ? $request['page'] : 1;
|
|||
|
$limit = isset($request['limit']) ? $request['limit'] : 10;
|
|||
|
$total = $photographer->count();
|
|||
|
$list = $photographer->page($page, $limit)->select();
|
|||
|
foreach ($list as &$item) {
|
|||
|
$service_type_name = '';
|
|||
|
if ($item['service_type']) {
|
|||
|
$service_type_name = ServiceType::where([
|
|||
|
'id' => explode(',', $item['service_type'])
|
|||
|
])
|
|||
|
->field('service_name')
|
|||
|
->order('sort desc, id desc')
|
|||
|
->select();
|
|||
|
if ($service_type_name) {
|
|||
|
$service_type_name = array_column($service_type_name->toArray(), 'service_name');
|
|||
|
}
|
|||
|
}
|
|||
|
$item['service_type_name'] = $service_type_name;
|
|||
|
}
|
|||
|
return [
|
|||
|
'code' => ResponseCode::SUCCESS,
|
|||
|
'data' => [
|
|||
|
'list' => $list,
|
|||
|
'total' => $total,
|
|||
|
'page' => $page
|
|||
|
],
|
|||
|
];
|
|||
|
|
|||
|
} catch (Exception $e) {
|
|||
|
return [
|
|||
|
'code' => ResponseCode::FAIL,
|
|||
|
'msg' => $e->getMessage()
|
|||
|
];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**
|
|||
|
* @desc 移除摄影师
|
|||
|
* @param $request
|
|||
|
* @return array
|
|||
|
*/
|
|||
|
public function removePhotographer($request)
|
|||
|
{
|
|||
|
try {
|
|||
|
$data = $request->post();
|
|||
|
$studio = Studio::where(['id' => $data['studio_id']])->findOrEmpty();
|
|||
|
|
|||
|
$photographer = Photographer::where(['id' => $data['photographer_id']])->findOrEmpty();
|
|||
|
|
|||
|
if ($studio->user_id != $request->user->id) {
|
|||
|
throw new Exception('非工作室管理者不能操作');
|
|||
|
}
|
|||
|
$photographer->save(['studio_id' => 0]);
|
|||
|
User::where(['id' => $photographer->user_id])->save(['studio_id' => 0]);
|
|||
|
|
|||
|
return [
|
|||
|
'code' => ResponseCode::SUCCESS,
|
|||
|
'msg' => '操作成功'
|
|||
|
];
|
|||
|
} catch (Exception $e) {
|
|||
|
return [
|
|||
|
'code' => ResponseCode::FAIL,
|
|||
|
'msg' => $e->getMessage()
|
|||
|
];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
}
|