123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- <?php
- namespace App\Http\Controllers\Admin;
- use App\Exports\InquireExport;
- use App\Http\Logics\Admin\InquireLogic;
- use App\Http\Models\Role;
- use App\Http\Models\Server;
- use App\Http\Models\Site;
- use App\Http\Models\User;
- use App\Http\Traits\HasSites;
- use Illuminate\Database\Eloquent\Builder;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\DB;
- /**
- * 询盘管理
- * Class InquireController
- * @package App\Http\Controllers\Admin
- */
- class InquireController extends Controller
- {
- use HasSites;
- protected $logic;
- public function __construct(InquireLogic $logic)
- {
- $this->logic = $logic;
- }
- private function getTimeFilter($dateRange)
- {
- if (!$dateRange) {
- return [];
- }
- switch ($dateRange) {
- case 'week':
- $condition = [
- ['create_time', '>', strtotime(date('Y-m-d 23:59:59', strtotime('-1 week')))],
- ['create_time', '<=', strtotime(date('Y-m-d 23:59:59'))]
- ];
- break;
- case 'month':
- $condition = [
- ['create_time', '>', strtotime(date('Y-m-d 23:59:59', strtotime('-1 month')))],
- ['create_time', '<=', strtotime(date('Y-m-d 23:59:59'))]
- ];
- break;
- case 'year':
- $condition = [
- ['create_time', '>', strtotime(date('Y-m-d 23:59:59', strtotime('-1 year')))],
- ['create_time', '<=', strtotime(date('Y-m-d 23:59:59'))]
- ];
- break;
- case 'all':
- $condition = [];
- break;
- default:
- $startDate = substr($dateRange, 0, 10);
- $endDate = substr($dateRange, -10);
- $condition = [
- ['create_time', '>=', strtotime(sprintf('%s 00:00:00', $startDate))],
- ['create_time', '<=', strtotime(sprintf('%s 23:59:59', $endDate))]
- ];
- break;
- }
- return $condition;
- }
- /**
- * 客户询盘列表
- * @param Request $request
- * @param $siteId
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\JsonResponse|\Illuminate\View\View
- */
- public function index(Request $request, $siteId)
- {
- $dateRange = $request->input('time_range');
- $condition = $this->getTimeFilter($dateRange);
- if (!$request->ajax()) {
- return view('admin/inquire/index', [
- 'siteId' => $siteId
- ]);
- }
- $site = Site::query()->where(['id' => $siteId])->first();
- $server = Server::query()->where(['server_id' => $site->server_id])->first();
- $isDelete = $request->input('is_delete') ?? 0;
- list($records, $realInquire) = $this->logic->pageRecords($request, $server, $site, $condition, $isDelete);
- /**
- * @var \Illuminate\Contracts\Pagination\LengthAwarePaginator $records
- */
- return response()->json([
- 'rows' => $records->items(),
- 'total' => $records->total(),
- 'extra' => [
- 'allInquire' => $records->total(),
- 'realInquire' => $realInquire
- ]
- ]);
- }
- //导出到excel
- public function exportExcel(Request $request, $siteId)
- {
- $dateRange = $request->input('time_range');
- $condition = $this->getTimeFilter($dateRange);
- $site = Site::query()->where(['id' => $siteId])->first();
- $server = Server::query()->where(['server_id' => $site->server_id])->first();
- $records = $this->logic->pageRecordsExport($request, $server, $site, $condition);
- array_unshift($records, ['客户名字', '客户邮箱', '电话', '国家', '询盘时间', '询盘主题', '询盘内容', '是否真实询盘', '是否查看', '留言', '链接']);
- return (new InquireExport($records))->download(sprintf('询盘%s.xls', date('YmdHis')));
- }
- //导出到excel
- public function exportAllExcel($siteId)
- {
- $site = Site::query()->where(['id' => $siteId])->first();
- $server = Server::query()->where(['server_id' => $site->server_id])->first();
- $records = $this->logic->PageRecordsAllExport($server, $site);
- array_unshift($records, ['id', 'user_id', 'notice', 'url', 'request', 'cookie', 'client_ip', 'create_time']);
- return (new InquireExport($records))->download(sprintf('询盘%s.xls', date('YmdHis')));
- }
- /**
- * 项目详情客户询盘列表页面
- * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
- */
- public function lists()
- {
- $user = auth()->user();
- $site = $user->sites->first(); //读取分配的站点信息
- if (!$site) {
- return view('admin/errors/tips', [
- 'tips' => '没有分配的站点'
- ]);
- }
- $server = Server::query()->where(['server_id' => $site->server_id])->first();
- if (!$server) {
- return view('admin/errors/tips', [
- 'tips' => '服务器信息不存在'
- ]);
- }
- return view('admin/inquire/show_index', [
- 'siteId' => $site->id,
- 'nowRoleId' => $user->role_id
- ]);
- }
- //分配用户
- public function assignUser(Request $request)
- {
- $oneSite = $this->hasUserOneSite();
- $inquireIds = $request->input('inquireIds');
- $assignUserIds = $request->input('assignUserIds');
- if (!$request->ajax()) {
- $selects = [];
- if (count($inquireIds) == 1) {
- $selects = DB::table('user_has_inquire')->where(['inquire_id' => $inquireIds[0]])
- ->get()->pluck('user_id')->toArray();
- }
- $selectCol = ['id', 'username', 'email', 'created_at', 'role_id', 'status', 'is_super', 'nickname'];
- $users = User::query()->select($selectCol)
- ->where([['role_id', '=', Role::TYPE_TYPE_CUSTOMER_STAFF]])->whereHas('sites', function (Builder $builder) use ($oneSite) {
- $builder->where('id', $oneSite->id);
- })->get()->toArray();
- array_walk($users, function (&$item) use (&$selects) {
- $item['open'] = true;
- $item['name'] = $item['username'] . '[' . $item['nickname'] . ']';
- if (in_array($item['id'], $selects)) {
- $item['checked'] = true;
- }
- });
- return view('admin/inquire/user_assign', [
- 'trees' => $users,
- 'inquireIds' => $inquireIds
- ]);
- }
- foreach ($inquireIds as $inquireId) {
- DB::table('user_has_inquire')->where(['inquire_id' => $inquireId])->delete();
- $insertData = [];
- foreach ($assignUserIds as $userId) {
- $insertData[] = [
- 'user_id' => $userId,
- 'inquire_id' => $inquireId
- ];
- }
- DB::table('user_has_inquire')->insert($insertData);
- }
- return response()->json(['message' => '操作成功']);
- }
- //询盘详情
- public function detail(Request $request, $id)
- {
- $siteId = $request->input('siteId');
- $site = Site::query()->with('server')->where(['id' => $siteId])->first();
- if (empty($site->server)) {
- return view('admin/errors/tips', [
- 'tips' => '站点服务器信息不存在',
- 'closeBtn' => true
- ]);
- }
- $config = [
- 'connection_name' => sprintf('connection_name_%s', $site->id),
- 'host' => $site->server->server_ip,
- 'port' => '3306',
- 'database' => $site->database,
- 'username' => $site->server->mysql_user_name,
- 'password' => $site->server->mysql_passwd,
- ];
- config_connection($config);
- $record = DB::connection($config['connection_name'])->table('user_msg')->where([
- 'id' => $id
- ])->first();
- if (empty($record->is_read)) {
- DB::connection($config['connection_name'])->table('user_msg')->where([
- 'id' => $id, 'is_read' => 0
- ])->update(['is_read' => 1]);
- }
- return view('admin/inquire/detail', [
- 'data' => $record,
- 'siteId' => $siteId
- ]);
- }
- //询盘详情
- public function mailDetail(Request $request, $id)
- {
- $siteId = $request->input('siteId');
- $site = Site::query()->with('server')->where(['id' => $siteId])->first();
- if (empty($site->server)) {
- return view('admin/errors/tips', [
- 'tips' => '站点服务器信息不存在',
- 'closeBtn' => true
- ]);
- }
- $config = [
- 'connection_name' => sprintf('connection_name_%s', $site->id),
- 'host' => $site->server->server_ip,
- 'port' => '3306',
- 'database' => $site->database,
- 'username' => $site->server->mysql_user_name,
- 'password' => $site->server->mysql_passwd,
- ];
- config_connection($config);
- $record = DB::connection($config['connection_name'])->table('user_msg')->where([
- 'id' => $id
- ])->first();
- return view('admin/inquire/mail_detail', [
- 'data' => $record,
- 'siteId' => $siteId
- ]);
- }
- /**
- * 修改询盘状态
- * @param Request $request
- * @return \Illuminate\Http\JsonResponse
- */
- public function whetherReality(Request $request)
- {
- try {
- $id = $request->input('id');
- $status = $request->input('status');
- $siteId = $request->input('siteId');
- $site = Site::query()->with('server')->where(['id' => $siteId])->first();
- $config = [
- 'connection_name' => sprintf('connection_name_%s', $site->id),
- 'host' => $site->server->server_ip,
- 'port' => '3306',
- 'database' => $site->database,
- 'username' => $site->server->mysql_user_name,
- 'password' => $site->server->mysql_passwd,
- ];
- config_connection($config);
- DB::connection($config['connection_name'])->table('user_msg')->where('id', $id)->update(['is_delete' => $status]);
- return response()->json(['message' => '操作成功']);
- } catch (\Throwable $exception) {
- return response()->json(['message' => '服务器失去链接'], 400);
- }
- }
- }
|