| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <?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);
- }
- }
|