You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
470 lines
15 KiB
470 lines
15 KiB
<?php
|
|
|
|
namespace app\fire\controller\admin;
|
|
|
|
|
|
use app\fire\logic\Notice;
|
|
use app\fire\model\FireExpert;
|
|
use app\fire\model\FireExpertCategory;
|
|
use app\fire\model\FireExpertFollow;
|
|
use app\fire\model\FireExpertOrder;
|
|
use app\fire\model\FireExpertOrderAsk;
|
|
use app\fire\model\FireExpertOrderReview;
|
|
use excel\Excel;
|
|
use think\facade\Db;
|
|
use think\facade\View;
|
|
|
|
class Expert extends Base
|
|
{
|
|
/**
|
|
* 知识分类
|
|
*/
|
|
public function category()
|
|
{
|
|
$where = [
|
|
'uid' => UID,
|
|
];
|
|
$category_model = new FireExpertCategory();
|
|
$dataList = $category_model->getAllData($where, '*', 'sort desc');
|
|
View::assign('dataList', $dataList);
|
|
|
|
return View::fetch();
|
|
}
|
|
|
|
/**
|
|
* 添加分类
|
|
*/
|
|
public function categoryAdd()
|
|
{
|
|
$category_model = new FireExpertCategory();
|
|
if (request()->isPost()) {
|
|
$data = input('post.');
|
|
$data['uid'] = UID;
|
|
$res = $category_model->dataUpdate($data);
|
|
if (!$res) {
|
|
return sendErrorMessage();
|
|
}
|
|
return sendSuccessMessage();
|
|
} else {
|
|
$id = input('param.id', 0);
|
|
$data = $category_model->getOneData(['id' => $id]);
|
|
View::assign('data', $data);
|
|
return View::fetch('categoryadd');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 修改分类
|
|
*/
|
|
public function categoryUpdate()
|
|
{
|
|
return $this->categoryadd();
|
|
}
|
|
|
|
/**
|
|
* 专家列表
|
|
* @return string
|
|
*/
|
|
public function expert()
|
|
{
|
|
$search = input('get.');
|
|
autoSearch(['time', 'keyword','phone', 'category_id', 'status','is_publish'], $search);
|
|
|
|
$order_model = new FireExpertOrder();
|
|
$follow_model = new FireExpertFollow();
|
|
$expert_model = new FireExpert();
|
|
$category_model = new FireExpertCategory();
|
|
|
|
$where = [['uid','=',UID]];
|
|
$hasWhere = [];
|
|
if ($search['time']) {
|
|
$time = explode('-', $search['time']);
|
|
$where[] = ['create_time','between time', [$time[0], $time[1]]];
|
|
}
|
|
|
|
if ($search['keyword']) {
|
|
$where[] = ['name','like', '%' . $search['keyword'] . '%'];
|
|
}
|
|
|
|
if ($search['is_publish'] !== '') {
|
|
$where []= ['is_publish','=',$search['is_publish']];
|
|
}
|
|
|
|
if ($search['category_id'] != '') {
|
|
$where[] = ['category_id','=',$search['category_id']];
|
|
}
|
|
if ($search['status'] != '') {
|
|
$where[] = ['status','=',$search['status']];
|
|
}
|
|
if ($search['phone']) {
|
|
$hasWhere[] = ['mobile_phone','like', '%' . $search['phone'] . '%'];
|
|
}
|
|
$where = $expert_model->whereChange($where);
|
|
session('where',$where);
|
|
session('hasWhere',$hasWhere);
|
|
|
|
$dataList = $expert_model::hasWhere('userPhone',$hasWhere)->with(['userPhone','expertCategory','expertCommission'])->where($where)->order('id desc')
|
|
->paginate([
|
|
'list_rows' => 15,
|
|
'page' => array_key_exists("page", $search) ? (string)$search['page'] : "1",
|
|
'query' => $search
|
|
], false)->each(function ($item, $key) use($order_model,$follow_model){
|
|
$item['order_number'] = $order_model->where([['expert_id','=',$item['id']],['status','in',[2,3,4]]])->count();
|
|
$item['follow_number'] = $follow_model->where([['expert_id','=',$item['id']]])->count();
|
|
$item['status_text'] = $item['status_text'];
|
|
return $item;
|
|
});
|
|
|
|
|
|
$categoryList = $category_model->getAllData(['uid' => UID], 'id,name', 'sort desc');
|
|
$attach = [
|
|
'total_html' => [['总数', $dataList->total()]],
|
|
];
|
|
View::assign('attach', $attach);
|
|
View::assign('search', $search);
|
|
View::assign('dataList', $dataList);
|
|
View::assign('categoryList', $categoryList);
|
|
return View::fetch();
|
|
}
|
|
|
|
/**
|
|
* 专家列表导出
|
|
* @return mixed
|
|
*/
|
|
public function expertExport()
|
|
{
|
|
$where = session('where');
|
|
$hasWhere = session('hasWhere');
|
|
|
|
$order_model = new FireExpertOrder();
|
|
$follow_model = new FireExpertFollow();
|
|
$expert_model = new FireExpert();
|
|
|
|
$dataList = $expert_model::hasWhere('userPhone',$hasWhere)
|
|
->with(['userPhone','expertCategory','expertCommission'])
|
|
->where($where)->order('id desc')->select()->each(function ($item, $key) use($order_model,$follow_model){
|
|
$item['order_number'] = $order_model->where([['expert_id','=',$item['id']],['status','in',[2,3,4]]])->count();
|
|
$item['follow_number'] = $follow_model->where([['expert_id','=',$item['id']]])->count();
|
|
$item['status_text'] = $item['status_text'];
|
|
return $item;
|
|
});
|
|
|
|
|
|
foreach ($dataList as $key => $value) {
|
|
|
|
$data[$key] = [
|
|
$value['id'], //ID
|
|
$value['name'], //专家名称
|
|
$value['user_mobile_phone'], //专家手机号
|
|
$value['brief'], //简介
|
|
$value['introduce'], //介绍
|
|
$value['category_name'], //分类名称
|
|
$value['status_text'], //状态
|
|
$value['total_commission'], //累计收入
|
|
$value['commission'], //当前余额
|
|
$value['order_number'], //预约量
|
|
$value['follow_number'], //粉丝数
|
|
$value['is_publish'] == 1?"未发布":"已发布", //是否发布
|
|
$value['is_recommend'] == 1?"未推荐":"已推荐", //是否推荐
|
|
$value['create_time'], //创建时间
|
|
];
|
|
};
|
|
|
|
$fileName = "专家列表";
|
|
$headArr = ["ID", "专家名称", '专家手机号', "简介", "介绍", "分类名称", "状态", "累计收入", "当前余额", "预约量", "粉丝数", "是否发布", "是否推荐", "创建时间"];
|
|
$msg = '';
|
|
$excel_class = new Excel();
|
|
$res = $excel_class->excelExport($fileName, $headArr, $data, $msg);
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* 专家详情
|
|
* @return string
|
|
*/
|
|
public function expertDetail()
|
|
{
|
|
$expert_model = new FireExpert();
|
|
if (request()->isPost()) {
|
|
$data = input('post.');
|
|
if ($data['name'] == "") {
|
|
return sendErrorMessage(1,'请填写新闻标题');
|
|
}
|
|
$data['uid'] = UID;
|
|
|
|
Db::startTrans();
|
|
$news_id = $expert_model->dataUpdate($data);
|
|
if (!$news_id) {
|
|
Db::rollback();
|
|
return sendErrorMessage();
|
|
}
|
|
|
|
Db::commit();
|
|
return sendSuccessMessage();
|
|
} else {
|
|
$id = input('param.id', 0);
|
|
$data = $expert_model->with(['expertCategory'])->where(['id' => $id])->find();
|
|
|
|
View::assign('data', $data);
|
|
return View::fetch('expertdetail');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 专家审核通过
|
|
* @return \think\response\Json
|
|
*/
|
|
public function expertAdopt()
|
|
{
|
|
$id = input('param.id', 0);
|
|
if (empty($id)) {
|
|
return sendErrorMessage(1, '参数错误,审核状态变更失败!');
|
|
}
|
|
|
|
$expert_model = new FireExpert();
|
|
|
|
Db::startTrans();
|
|
|
|
$res = $expert_model->where(['id'=>$id])->update(['status'=>2]);
|
|
if ($res === false) {
|
|
Db::rollback();
|
|
return json($res);
|
|
}
|
|
|
|
Db::commit();
|
|
|
|
$notice_logic = new Notice();
|
|
$expert = $expert_model->getOneData(['id'=>$id]);
|
|
$notice_logic->examineNotice($expert['user_id'],1,2);
|
|
|
|
return sendSuccessMessage('', '审核成功');
|
|
}
|
|
|
|
/**
|
|
* 专家审核拒绝
|
|
* @return \think\response\Json
|
|
*/
|
|
public function expertRefuse()
|
|
{
|
|
$expert_model = new FireExpert();
|
|
if (request()->isPost()) {
|
|
$data = input();
|
|
|
|
$expert_model = new FireExpert();
|
|
|
|
Db::startTrans();
|
|
$res = $expert_model->where(['id'=>$data['id']])->update(['status'=>3,'examine_idea'=>$data['examine_idea']]);
|
|
if ($res === false) {
|
|
Db::rollback();
|
|
return sendErrorMessage(1, '审核失败');
|
|
}
|
|
Db::commit();
|
|
$notice_logic = new Notice();
|
|
$expert = $expert_model->getOneData(['id'=>$data['id']]);
|
|
$notice_logic->examineNotice($expert['user_id'],1,3);
|
|
return sendSuccessMessage('', '审核拒绝成功');
|
|
} else {
|
|
$id = input('param.id');
|
|
$data = $expert_model->getOneData(['id' => $id]);
|
|
|
|
View::assign('data', $data);
|
|
return View::fetch('expertrefuse');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 订单列表
|
|
* @return string
|
|
*/
|
|
public function order()
|
|
{
|
|
$search = input('get.');
|
|
autoSearch(['time', 'status','expert_name', 'mobile_phone'], $search);
|
|
|
|
$order_model = new FireExpertOrder();
|
|
|
|
$where = [['uid','=',UID]];
|
|
$hasWhere = [];
|
|
if ($search['time']) {
|
|
$time = explode('-', $search['time']);
|
|
$where[] = ['create_time','between time', [$time[0], $time[1]]];
|
|
}
|
|
|
|
if ($search['status'] !== '') {
|
|
$where []= ['status','=',$search['status']];
|
|
}
|
|
|
|
if ($search['expert_name']) {
|
|
$where[] = ['expert_name','like', '%' . $search['expert_name'] . '%'];
|
|
}
|
|
|
|
if ($search['mobile_phone']) {
|
|
$hasWhere[] = ['mobile_phone','like', '%' . $search['mobile_phone'] . '%'];
|
|
}
|
|
|
|
$where = $order_model->whereChange($where);
|
|
session('where',$where);
|
|
session('hasWhere',$hasWhere);
|
|
|
|
$dataList = $order_model::hasWhere('orderUserData',$hasWhere)->with(['orderUserData','orderUser'])->where($where)->order('id desc')
|
|
->paginate([
|
|
'list_rows' => 15,
|
|
'page' => array_key_exists("page", $search) ? (string)$search['page'] : "1",
|
|
'query' => $search
|
|
], false)->each(function ($item, $key) {
|
|
$item['status_text'] = $item['status_text'];
|
|
return $item;
|
|
});
|
|
|
|
$attach = [
|
|
'total_html' => [['总数', $dataList->total()]],
|
|
];
|
|
View::assign('attach', $attach);
|
|
View::assign('search', $search);
|
|
View::assign('dataList', $dataList);
|
|
return View::fetch();
|
|
}
|
|
|
|
public function orderExport()
|
|
{
|
|
$where = session('where');
|
|
$hasWhere = session('hasWhere');
|
|
|
|
$order_model = new FireExpertOrder();
|
|
|
|
$dataList = $order_model::hasWhere('orderUserData',$hasWhere)->with(['orderUserData','orderUser'])->where($where)->order('id desc')
|
|
->select()->each(function ($item, $key) {
|
|
$item['status_text'] = $item['status_text'];
|
|
return $item;
|
|
});
|
|
|
|
foreach ($dataList as $key => $value) {
|
|
|
|
$data[$key] = [
|
|
$value['id'], //ID
|
|
$value['nick_name'].'-'.$value['mobile_phone'], //用户
|
|
$value['pay_money'], //价格
|
|
$value['expert_name'], //专家
|
|
$value['status_text'], //状态
|
|
$value['create_time'], //创建时间
|
|
];
|
|
};
|
|
|
|
$fileName = "专家订单";
|
|
$headArr = ["ID", "用户", '价格', "专家", "状态", "创建时间"];
|
|
$msg = '';
|
|
$excel_class = new Excel();
|
|
$res = $excel_class->excelExport($fileName, $headArr, $data, $msg);
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* 订单详情
|
|
* @return string
|
|
*/
|
|
public function orderDetail()
|
|
{
|
|
$order_model = new FireExpertOrder();
|
|
$order_ask_model = new FireExpertOrderAsk();
|
|
$order_review_model = new FireExpertOrderReview();
|
|
if (request()->isPost()) {
|
|
$data = input('post.');
|
|
if ($data['name'] == "") {
|
|
return sendErrorMessage(1,'请填写新闻标题');
|
|
}
|
|
$data['uid'] = UID;
|
|
|
|
Db::startTrans();
|
|
$news_id = $order_model->dataUpdate($data);
|
|
if (!$news_id) {
|
|
Db::rollback();
|
|
return sendErrorMessage();
|
|
}
|
|
|
|
Db::commit();
|
|
return sendSuccessMessage();
|
|
} else {
|
|
$id = input('param.id', 0);
|
|
$data = $order_model->with(['orderUserData'])->where(['id' => $id])->find();
|
|
$order_ask = $order_ask_model->where(['order_id'=>$id])->select();
|
|
$order_review = $order_review_model->with(['userInfo'])->where(['order_id'=>$id])->field('id,user_id,star,content,is_reply,reply,create_time')->find();
|
|
View::assign('order_ask', $order_ask);
|
|
View::assign('order_review', $order_review);
|
|
View::assign('data', $data);
|
|
return View::fetch('orderdetail');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 评价列表
|
|
* @return string
|
|
*/
|
|
public function review()
|
|
{
|
|
$search = input('get.');
|
|
autoSearch(['time', 'star','keyword'], $search);
|
|
|
|
$review_model = new FireExpertOrderReview();
|
|
|
|
$where = [['uid','=',UID]];
|
|
if ($search['time']) {
|
|
$time = explode('-', $search['time']);
|
|
$where[] = ['create_time','between time', [$time[0], $time[1]]];
|
|
}
|
|
|
|
if ($search['star'] !== '') {
|
|
$where []= ['star','=',$search['star']];
|
|
}
|
|
|
|
if ($search['keyword']) {
|
|
$where[] = ['content','like', '%' . $search['keyword'] . '%'];
|
|
}
|
|
|
|
$dataList = $review_model->with(['reviewOrder','userInfo'])->where($where)->order('id desc')
|
|
->paginate([
|
|
'list_rows' => 15,
|
|
'page' => array_key_exists("page", $search) ? (string)$search['page'] : "1",
|
|
'query' => $search
|
|
], false)->each(function ($item, $key) {
|
|
$item['status_text'] = $item['status_text'];
|
|
return $item;
|
|
});
|
|
|
|
|
|
View::assign('search', $search);
|
|
View::assign('dataList', $dataList);
|
|
return View::fetch();
|
|
}
|
|
|
|
/**
|
|
* 评价详情
|
|
* @return string
|
|
*/
|
|
public function reviewDetail()
|
|
{
|
|
$order_review_model = new FireExpertOrderReview();
|
|
if (request()->isPost()) {
|
|
$data = input('post.');
|
|
if ($data['name'] == "") {
|
|
return sendErrorMessage(1,'请填写新闻标题');
|
|
}
|
|
$data['uid'] = UID;
|
|
|
|
Db::startTrans();
|
|
$news_id = $order_review_model->dataUpdate($data);
|
|
if (!$news_id) {
|
|
Db::rollback();
|
|
return sendErrorMessage();
|
|
}
|
|
|
|
Db::commit();
|
|
return sendSuccessMessage();
|
|
} else {
|
|
$id = input('param.id', 0);
|
|
$data = $order_review_model->with(['userInfo','reviewOrder'])->where(['id' => $id])->find();
|
|
|
|
View::assign('data', $data);
|
|
return View::fetch('reviewdetail');
|
|
}
|
|
}
|
|
} |