硕顺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.
 
 
 
 
 
 

185 lines
5.2 KiB

<?php
namespace addons\qingdong\model;
use think\Exception;
use think\Model;
use traits\model\SoftDelete;
use addons\qingdong\library\Ku;
/**
*联系人表
*/
class Contacts Extends Model {
use SoftDelete;
// 表名,不含前缀
protected $name = 'qingdong_contacts';
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = 'int';
// 定义时间戳字段名
protected $createTime = 'createtime';
protected $updateTime = 'updatetime';
protected $deleteTime = 'deletetime';
protected $field = true;
//客户
public function customer() {
return $this->hasOne(Customer::class, 'id', 'customer_id')->field('id,name,follow');
}
//负责人
public function ownerStaff() {
return $this->hasOne(Staff::class, 'id', 'owner_staff_id')->field('id,name');
}
/**
*
*/
public static function getList() {
return self::where(['owner_staff_id'=>['in',Staff::getMyStaffIds()]])->field('id,name')->select();
}
//创建联系人
public static function createContacts($params) {
//自定义字段
$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]);
}else{
if(empty($params[$name])){
$params[$name]=NULL;
}
}
}
$staff = Staff::info();
if($staff){
$params['create_staff_id'] = $staff->id;
$owner_staff_id = $staff->id;
if($params['customer_id']){
$owner_staff_id = Customer::where(array('id'=>$params['customer_id']))->value('owner_staff_id');
}
$params['owner_staff_id'] = $owner_staff_id;
}
$model = new self;
$result = $model->allowField(true)->save($params);
if (false === $result) {
// 验证失败 输出错误信息
throw new Exception($model->getError());
}
$lastId=$model->getLastInsID();
$otherModel = new ContactsOther();
if ($otherModel->save(['id' => $lastId, 'otherdata' => json_encode($other, JSON_UNESCAPED_UNICODE)]) === false) {
// 验证失败 输出错误信息
throw new Exception($otherModel->getError());
}
//创建日志
OperationLog::createLog(OperationLog::CONTACTS_TYPE,$lastId, '创建联系人');
//新增跟进记录
Record::quickCreateRecord(Record::CUSTOMER_TYPE, $params['customer_id'], '新增联系人:' . $params['name']);
OperationLog::createLog(OperationLog::CUSTOMER_TYPE, $params['customer_id'], '新增联系人:' . $params['name']);
//同步数据
$ku = new Ku();
$params['contacts_id'] = $lastId;
$ku->addCustomer($params);
return $lastId;
}
//修改联系人
public static function updateContacts($params) {
//自定义字段
$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]);
}else{
if(empty($params[$name])){
$params[$name]=NULL;
}
}
}
$model = new self;
// 调用当前模型对应的User验证器类进行数据验证
$result = $model->save($params, ['id' => $params['id']]);
if (false === $result) {
// 验证失败 输出错误信息
throw new Exception($model->getError());
}
$otherModel = new ContactsOther();
if ($otherModel->save(['otherdata' => json_encode($other, JSON_UNESCAPED_UNICODE)],['id' => $params['id']]) === false) {
// 验证失败 输出错误信息
throw new Exception($otherModel->getError());
}
return true;
}
//导入
public static function importContacts($data) {
$addContacts = [];
$addOther = [];
foreach ($data as $params) {
//自定义字段
$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]);
}else{
if(empty($params[$name])){
$params[$name]=NULL;
}
}
}
$params['createtime'] = time();
$params['next_time'] = date('Y-m-d H:i:s');
$other['id'] = $params['id'];
$addOther[] = ['id' => $params['id'], 'otherdata' => json_encode($other, JSON_UNESCAPED_UNICODE)];
$addContacts[] = $params;
}
$model = new self;
// 调用当前模型对应的User验证器类进行数据验证
$result = $model->allowField(true)->insertAll($addContacts);
$otherModel = new ContactsOther();
$otherModel->allowField(true)->insertAll($addOther);
return true;
}
//获取联系人相关信息
public function contactsOther() {
return $this->belongsTo(ContactsOther::class,'id','id');
}
public function getUpdatetimeAttr($value) {
if ($value) {
return date('Y-m-d H:i', $value);
}
return $value;
}
}