course/app/common/service/RequirementService.php

268 lines
8.1 KiB
PHP
Raw Normal View History

<?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()
{
}
}