<?php

namespace app\crm\model;

use think\Db;
use app\admin\model\Common;
use think\Request;
use think\Validate;

class NumberSequence extends Common
{
    /**
     * 为了数据库的整洁,同时又不影响Model和Controller的名称
     * 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
     */
    protected $name = 'crm_number_sequence';

    /**
     *自定义回访编号(创建)
     * @return
     */
    public function createData($param)
    {
        $user_id = $param['user_id'];
        $param['sort']+=1;
        if ($data = $this->data($param)->allowField(true)->isUpdate(false)->save()) {
            //修改记录
            updateActionLog($user_id, 'crm_number_sequence', $this->number_sequence_id, '', '', '创建了自动生成编号规则');
            return $data;
        } else {
            $this->error = '添加失败';
            return false;
        }
    }

    /**
     * 列表
     * @param $param
     * @return array
     * @throws \think\db\exception\DataNotFoundException
     * @throws \think\db\exception\ModelNotFoundException
     * @throws \think\exception\DbException
     */
    public function getDataList($param)
    {
        $list = db('crm_number_sequence')
            ->field('number_type,number_sequence_id,status')
            ->group('number_type')
            ->select();
        $data = array();

        foreach ($list as $key => $v) {
            $data[]['setting'] = db('crm_number_sequence')
                ->where('number_type', $v['number_type'])
                ->order('sort asc')
                ->select();
            $data[$key]['number_type'] = $v['number_type'];
            $data[$key]['number_sequence_id'] = $v['number_sequence_id'];
            # 前端的status值为1代表启用,后端保存的status值为0代表启用,这里执行以下取反操作;
            $data[$key]['status'] = $v['status'] == 0 ? 1 : 0;
        }
        return $data;
    }

    /**
     * @param $param
     * @param string $param_id
     * @return array|false
     */
    public function numberSequenceUpdate($param,$param_id=''){
        $user_id = $param['user_id'];
        if ($this->update($param, ['number_sequence_id' => $param_id], true)) {
            //修改记录
            updateActionLog($user_id, 'crm_number_sequence', $param_id, '', $param);
            $data = [];
            $data['number_sequence_id'] = $param_id;
            return $data;
        } else {
            $this->error = '编辑失败';
            return false;
        }
    }

    /**
     * 批量更新上次生成的编号【last_date】、上次生成的时间【create_time】
     *
     * @param $data
     * @return array|false|\think\Collection|\think\model\Collection
     * @throws \Exception
     */
    public function batchUpdate($data)
    {
        return $this->saveAll($data);
    }
}