硕顺crm后台
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.
 
 
 
 
 
 

206 lines
6.5 KiB

<?php
namespace addons\qingdong\controller;
use addons\qingdong\model\Event as EventModel;
use addons\qingdong\model\File;
use addons\qingdong\model\Form;
use addons\qingdong\model\StaffSignIn;
use addons\qingdong\model\Message;
use addons\qingdong\model\Staff;
use think\Db;
use think\Exception;
/**
* 日程接口
*/
class Event extends StaffApi
{
protected $noNeedLogin = [];
protected $noNeedRight = [];
//获取日程
public function getEvent()
{
//开始时间
$start_day = input('start_day');
//结束时间
$end_day = input('end_day');;
if (empty($start_day) || empty($end_day)) {
$this->error('开始时间或结束时间不能为空');
}
if ($end_day < $start_day) {
$this->error('开始时间不能小于结束时间');
}
$this->success('请求成功', EventModel::getTimeList($start_day, $end_day));
}
//添加日程
public function addEvent()
{
$params = $this->request->post();
// 表单验证
if (($result = $this->qingdongValidate($params, get_class(), 'create')) !== true) {
$this->error($result);
}
Db::startTrans();
try {
$params['type'] = 1;//日程
$result = EventModel::createEvent($params);
Db::commit();
} catch (Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
if ($result) {
$this->success('添加日程成功');
}
}
//变更状态
public function changeStatus()
{
$id = input('id');
$status = input('status', 0);
if (empty($id)) {
$this->error('参数错误');
}
Db::startTrans();
try {
EventModel::changeStatus($id, $status);
Db::commit();
} catch (Exception $e) {
Db::rollback();
$this->error($e->getMessage());
}
$this->success('变更成功');
}
//
public function getList()
{
$relation_type = input('relation_type', '', 'intval');// 1客户 2联系人 3合同 4线索
$relation_id = input('relation_id', '', 'intval');
$limit = input("limit/d", 10);
$where = [];
$where['relation_type'] = $relation_type;
$where['relation_id'] = $relation_id;
$where['staff_id'] = $this->auth->id;
$records = EventModel::where($where)->with(['staff'])->field('id,staff_id,type,title,start_time,end_time,status,auto_end,level,remindtype,remark,color,createtime')->order('id desc')->paginate($limit);
$this->success('请求成功', $records);
}
//添加签到
public function addSign()
{
$params = $this->request->post();
$location = input('location');
$lng = input('lng');
$lat = input('lat');
$files = input('file_ids');
$customer_id = input('customer_id');
$content = input('content');
if (empty($lng) || empty($lat)) {
$this->error('地理位置不能为空');
}
//自定义字段
$other = [];
foreach ($params as $name => $val) {
if (strstr( $name,'other_') !== false) {
if(is_array($val)){
$other[$name] = implode(',',$val);
}else{
$other[$name] = $val;
}
unset($params[$name]);
}
}
$data = [
'location' => $location,
'lng' => $lng,
'lat' => $lat,
'file_ids' => $files,
'customer_id' => $customer_id,
'staff_id' => $this->auth->id,
'other' => json_encode($other, JSON_UNESCAPED_UNICODE)
];
$model = new StaffSignIn();
if ($result = $model->save($data)) {
$lastId = $model->getLastInsID();
//通知上级
Message::addMessage(Message::SIGN_TYPE, $lastId, $this->auth->parent_id, $this->auth->id);
$this->success('签到成功');
}
$this->error('签到失败');
}
//获取签到信息
public function getSign()
{
$customer_id = input('customer_id', 0, 'intval');
$limit = input("limit/d", 10);
$where = [];
$type = input('type', 0);// 0 全部 1 我创建 2 下属创建
if ($type == 1) {//我的客户
$where['staff_id'] = $this->auth->id;
} elseif ($type == 2) {//下属负责的客户
$where['staff_id'] = ['in', Staff::getLowerStaffId()];
}else{
$where['staff_id'] = ['in', Staff::getMyStaffIds()];
}
if ($customer_id) {
$where['customer_id'] = $customer_id;
}
$staffSign = StaffSignIn::where($where)->with(['staff', 'customer'])
->order('id desc')->paginate($limit);
//标记通知已读
Message::setRead(Message::SIGN_TYPE,0, $this->auth->id);
$this->success('请求成功', $staffSign);
}
/**
* 获取签到详情
*/
public function getSignDetail(){
$id = input('id', 0, 'intval');
$staffSign = StaffSignIn::where(['id'=>$id])->with(['staff', 'customer'])->find();
if(empty($staffSign)){
$this->error('数据不存在');
}
if($staffSign['other']){
$other = json_decode($staffSign['other'],true);
$form = Form::getDataValue('signin');
foreach($form as $k=>$v){
if($v['component'] == 'uploadImage' || $v['component'] == 'uploadFile'){
$other[$v['id'].'_str'] = '';
if(key_exists($v['id'],$other)){
if(isset($other[$v['id']]) && $other[$v['id']]){
$whereT['id'] = array('in',$other[$v['id']]);
$fileinfo = File::where($whereT)->field('id,name,file_path,save_name')->select();
if($fileinfo){
$other[$v['id']] = $fileinfo;
$fileinfodata = '';
foreach($fileinfo as $kss=>$vss){
$fileinfodata = $vss['save_name'].','.$fileinfodata;
}
$other[$v['id'].'_str'] = rtrim($fileinfodata,',');
}
}
}
}
}
$staffSign['other'] = $other;
}
$this->success('请求成功',$staffSign);
}
}