InquiryInfoLogic.php 5.9 KB
<?php

namespace App\Http\Logic\Aside\Projects;

use App\Http\Logic\Aside\BaseLogic;
use App\Models\InquiryIP;
use App\Models\Projects\InquiryInfo;
use App\Models\Projects\InquiryUser;
use Illuminate\Support\Facades\DB;

/**
 * @remark :询盘中心
 * @class  :InquiryInfoLogic.php
 * @author :lyh
 * @time   :2023/7/11 15:20
 */
class InquiryInfoLogic extends BaseLogic
{

    public function __construct()
    {
        parent::__construct();
        $this->param = $this->requestAll;
        $this->model = new InquiryInfo();
        //TODO::测试数据
        $this->manager = [
            'id'=>1,
            'name'=>'cs'
        ];
    }

    /**
     * @remark :获取列表
     * @name   :getInquiryLists
     * @author :lyh
     * @method :post
     * @time   :2023/7/11 15:25
     */
    public function getInquiryLists($map,$page,$row,$order = 'id'){
        $query = $this->model->leftJoin('gl_inquiry_user', 'gl_inquiry_info.id', '=', 'gl_inquiry_user.xp_id')
            ->orderBy('gl_inquiry_info.'.$order,'desc');
        //搜索条件处理
        if(isset($map['domain'])){
            $query = $query->where('gl_inquiry_info.domain','like','%'.$map['domain'].'%');
        }
        if(isset($map['type'])){
            $query = $query->where('gl_inquiry_info.type',$map['type']);
        }
        if(isset($map['url'])){
            $query = $query->where('gl_inquiry_info.url',$map['url']);
        }
        $lists = $query->paginate($row, $this->selectParam(), 'page', $page);
        return $this->success($lists);
    }

    /**
     * @remark :查询字段
     * @name   :selectParam
     * @author :lyh
     * @method :post
     * @time   :2023/7/11 16:57
     */
    public function selectParam(){
        $select = [
            'gl_inquiry_info.*',
            'gl_inquiry_user.user_id',
            'gl_inquiry_user.user_name',
            'gl_inquiry_user.message',
            'gl_inquiry_user.ip',
            'gl_inquiry_user.forward_url',
            'gl_inquiry_user.status AS user_status',
            'gl_inquiry_user.delay',
            'gl_inquiry_user.send_time'
        ];
        return $select;
    }

    /**
     * @remark :自定义添加特殊询盘信息
     * @name   :inquirySave
     * @author :lyh
     * @method :post
     * @time   :2023/7/12 9:22
     */
    public function inquirySave(){
        try {
            $xp_id = $this->inquiryInfoSave();
            $this->inquiryUserSave($xp_id);
        }catch (\Exception $e){
            $this->fail('error');
        }
        return $this->success();
    }

    /**
     * @remark :保存询盘记录表
     * @name   :inquiryInfoSave
     * @author :lyh
     * @method :post
     * @time   :2023/7/12 11:12
     */
    public function inquiryInfoSave(){
        //组装数据
        $param = [
            'name'=>$this->param['name'],
            'email'=>$this->param['email'],
            'phone'=>$this->param['phone'],
            'ip'=>$this->param['ip'],
            'ip_area'=>$this->param['ip_area'],
            'message'=>$this->param['message'],
            'type'=>$this->param['type'],
            'created_at'=>date('Y-m-d H:i:s'),
            'updated_at'=>date('Y-m-d H:i:s'),
        ];
        return $this->model->insertGetId($param);
    }

    /**
     * @remark :保存询盘用户转发记录
     * @name   :inquiryInfoSave
     * @author :lyh
     * @method :post
     * @time   :2023/7/12 11:12
     */
    public function inquiryUserSave($xp_id){
        //组装数据
        $param = [
            'user_id'=>$this->manager['id'],
            'user_name'=>$this->manager['name'],
            'xp_id'=>$xp_id,
            'forward_url'=>$this->param['forward_url'],
            'delay'=>$this->param['delay'],
            'ip'=>$this->param['ip'],
            'phone'=>$this->param['phone'],
            'message'=>$this->param['message'],
            'send_time'=>date('Y-m-d H:i:s', time()+ $this->param['delay'] * 60 * 60)
        ];
        $inquiryUserModel = new InquiryUser();
        return $inquiryUserModel->add($param);
    }

    /**
     * @remark :逻辑删除
     * @name   :inquiryInfoDel
     * @author :lyh
     * @method :post
     * @time   :2023/7/12 14:15
     */
    public function inquiryInfoDel(){
        DB::beginTransaction();
        try {
            $this->model->del(['id'=>$this->param['id']]);
            $inquiryUserModel = new InquiryUser();
            $inquiryUserModel->del(['xp_id'=>$this->param['id']]);
            DB::commit();
        }catch (\Exception $e){
            DB::rollBack();
            $this->fail('error');
        }
        return $this->success();
    }

    /**
     * @remark :转发详情
     * @name   :inquiryForwardInfo
     * @author :lyh
     * @method :post
     * @time   :2023/7/12 17:43
     */
    public function inquiryForwardInfo(){
        $inquiryUserModel = new InquiryUser();
        $info = $inquiryUserModel->read(['xp_id'=>$this->param['id']]);
        if($info === false){
            $this->fail('error');
        }
        return $this->success($info);
    }

    /**
     * @remark :导入保存数据
     * @name   :ImportInquiryInfoSave
     * @author :lyh
     * @method :post
     * @time   :2023/7/13 10:59
     */
    public function ImportInquiryInfoSave($row){
        $this->param = [
            'name'=>$row[0],
            'email'=>$row[1],
            'phone'=>$row[2],
            'ip'=>$row[3],
            'ip_area'=>$row[4],
            'message'=>$row[5],
            'type'=>$row[6],
            'forward_url'=>$row[7],
            'delay'=>$row[8],
        ];
        $this->inquirySave();
        return $this->success();
    }

    /**
     * @remark :根据国家获取随机ip
     * @name   :getSearchIp
     * @author :lyh
     * @method :post
     * @time   :2023/7/13 11:43
     */
    public function getSearchIp(){
        $inquiryIpModel = new InquiryIP();
        $info = $inquiryIpModel->where($this->param)->inRandomOrder()->first();
        return $this->success($info);
    }
}