268 lines
8.1 KiB
PHP
268 lines
8.1 KiB
PHP
![]() |
<?php
|
||
|
|
||
|
namespace app\common\service;
|
||
|
|
||
|
use app\common\model\Photographer;
|
||
|
use app\common\model\Requirement;
|
||
|
use app\common\model\RequirementOrder;
|
||
|
use app\common\model\User;
|
||
|
use app\common\validate\RequirementValidate;
|
||
|
use app\constant\ResponseCode;
|
||
|
use think\Exception;
|
||
|
|
||
|
class RequirementService
|
||
|
{
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @desc 发布需求
|
||
|
* @param $request
|
||
|
* @return array
|
||
|
*/
|
||
|
public function publish($request)
|
||
|
{
|
||
|
try {
|
||
|
$data = $request->post();
|
||
|
|
||
|
$validate = new RequirementValidate();
|
||
|
if (!$validate->check($data)) {
|
||
|
throw new Exception($validate->getError());
|
||
|
}
|
||
|
$user = User::where(['id' => $request->user->id])->findOrEmpty();
|
||
|
// if ($user->is_photographer) {
|
||
|
// throw new Exception('只有普通用户可以发布需求哟~');
|
||
|
// }
|
||
|
|
||
|
$requirement = Requirement::create([
|
||
|
'user_id' => $request->user->id,
|
||
|
'user_name' => $data['user_name'],
|
||
|
'sex' => $data['sex'],
|
||
|
'mobile' => $data['mobile'],
|
||
|
'service_address' => $data['service_address'],
|
||
|
'service_time' => $data['service_time'],
|
||
|
'service_type' => $data['service_type'],
|
||
|
'is_need_deposit' => $data['is_need_deposit'],
|
||
|
'price' => $data['price'],
|
||
|
'mark' => $data['mark'],
|
||
|
'status' => 1,//0:初始化 1:竞价中 2:已竞价 3:已完成 4:用户取消'
|
||
|
]);
|
||
|
if (!$requirement) {
|
||
|
throw new Exception('发布失败');
|
||
|
}
|
||
|
$requirement_trade_no = generate_order_no('D');
|
||
|
//生成一条需求订单
|
||
|
$requirement_order = RequirementOrder::create([
|
||
|
'requirement_id' => $requirement->id,
|
||
|
'requirement_trade_no' => $requirement_trade_no,
|
||
|
]);
|
||
|
|
||
|
$requirement->save(['requirement_trade_no' => $requirement_trade_no]);
|
||
|
|
||
|
return [
|
||
|
'code' => ResponseCode::SUCCESS,
|
||
|
'msg' => '发布成功',
|
||
|
];
|
||
|
} catch (Exception $e) {
|
||
|
return [
|
||
|
'code' => ResponseCode::FAIL,
|
||
|
'msg' => $e->getMessage()
|
||
|
];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @desc 删除需求
|
||
|
* @param $request
|
||
|
* @return array
|
||
|
*/
|
||
|
public function del($request)
|
||
|
{
|
||
|
try {
|
||
|
$data = $request->post();
|
||
|
|
||
|
$requirement = Requirement::where(['id' => $data['id']])->findOrEmpty();
|
||
|
if ($requirement->findOrEmpty()) {
|
||
|
throw new Exception('未找到需求');
|
||
|
}
|
||
|
|
||
|
if ($requirement->user_id != $request->user->id) {
|
||
|
throw new Exception('非需求发布者,不能操作');
|
||
|
}
|
||
|
//@todo:约定某些状态无法删除
|
||
|
if ($requirement->status == 0) {
|
||
|
|
||
|
}
|
||
|
|
||
|
$res = $requirement->delete();
|
||
|
if (!$res) {
|
||
|
throw new Exception('删除失败');
|
||
|
}
|
||
|
|
||
|
return [
|
||
|
'code' => ResponseCode::SUCCESS,
|
||
|
'msg' => '操作成功',
|
||
|
];
|
||
|
} catch (Exception $e) {
|
||
|
return [
|
||
|
'code' => ResponseCode::FAIL,
|
||
|
'msg' => $e->getMessage()
|
||
|
];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @desc 需求详情
|
||
|
* @param $request
|
||
|
* @return array
|
||
|
*/
|
||
|
public function detail($request)
|
||
|
{
|
||
|
try {
|
||
|
$requirement = Requirement::where(['id' => $request['id']])->with(['serviceType'])->findOrEmpty();
|
||
|
if ($requirement->isEmpty()) {
|
||
|
throw new Exception('需求未找到');
|
||
|
}
|
||
|
|
||
|
return [
|
||
|
'code' => ResponseCode::SUCCESS,
|
||
|
'data' => $requirement,
|
||
|
];
|
||
|
} catch (Exception $e) {
|
||
|
return [
|
||
|
'code' => ResponseCode::FAIL,
|
||
|
'msg' => $e->getMessage()
|
||
|
];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* @desc 用户自己的需求列表
|
||
|
* @param $request
|
||
|
* @return array
|
||
|
*/
|
||
|
public function getUserSelfRequirementList($request)
|
||
|
{
|
||
|
try {
|
||
|
$data = $request->get();
|
||
|
$requirement = Requirement::order('id desc')->where(['user_id' => $request->user->id]);
|
||
|
|
||
|
if (isset($data['service_type']) && $data['service_type'] != '') {
|
||
|
$requirement->where(['service_type' => $data['service_type']]);
|
||
|
}
|
||
|
|
||
|
if (isset($data['status']) && $data['status']) {
|
||
|
if ($data['status'] == 1) {
|
||
|
$requirement->where(['status' => [1, 2]]);
|
||
|
} else {
|
||
|
$requirement->where(['status' => $data['status']]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$page = isset($data['page']) ? $data['page'] : 1;
|
||
|
$limit = isset($data['limit']) ? $data['limit'] : 10;
|
||
|
$total = $requirement->count();
|
||
|
$list = $requirement->page($page, $limit)->with(['serviceType', 'bidWinPhotographer'])->select();
|
||
|
|
||
|
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 getRequirement($request)
|
||
|
{
|
||
|
try {
|
||
|
$requirement = Requirement::order('id desc');
|
||
|
if (isset($request['service_type']) && !empty($request['service_type'])) {
|
||
|
$requirement->where(['service_type' => $request['service_type']]);
|
||
|
}
|
||
|
|
||
|
$page = isset($request['page']) ? $request['page'] : 1;
|
||
|
$limit = isset($request['limit']) ? $request['limit'] : 10;
|
||
|
$total = $requirement->count();
|
||
|
$list = $requirement->page($page, $limit)->with('serviceType')->select();
|
||
|
|
||
|
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 getBidRequirements($request)
|
||
|
{
|
||
|
try {
|
||
|
$requestData = $request->get();
|
||
|
$photographer = Photographer::where(['user_id' => $request->user->id])->findOrEmpty();
|
||
|
$service_type = [];
|
||
|
if ($photographer->service_type) {
|
||
|
$service_type = explode(',', $photographer->service_type);
|
||
|
}
|
||
|
$requirement = Requirement::where(['service_type' => $service_type]);
|
||
|
if (isset($requestData['status']) && $requestData['status']) {
|
||
|
if ($requestData['status'] == 1) {
|
||
|
$requirement->where(['status' => [1, 2]]);
|
||
|
} else {
|
||
|
$requirement->where(['status' => $requestData['status']]);
|
||
|
}
|
||
|
}
|
||
|
$page = isset($requestData['page']) ? $requestData['page'] : 1;
|
||
|
$limit = isset($requestData['limit']) ? $requestData['limit'] : 10;
|
||
|
$total = $requirement->count();
|
||
|
$list = $requirement->with('serviceType')->page($page, $limit)->order('id desc')->select();
|
||
|
|
||
|
return [
|
||
|
'code' => ResponseCode::SUCCESS,
|
||
|
'data' => [
|
||
|
'list' => $list,
|
||
|
'total' => $total,
|
||
|
'page' => $page,
|
||
|
]
|
||
|
];
|
||
|
} catch (Exception $e) {
|
||
|
return [
|
||
|
'code' => ResponseCode::FAIL,
|
||
|
'msg' => $e->getMessage()
|
||
|
];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public function cance()
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|