| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | <?phpinclude APPPATH.'/models/Model_process.php';trait HasProcessTrait{    /**     * @var Process     */    protected $currentProcess;    /**     * @param Flow $flow     * @return array     */    private function processAttribute($flow,$order)    {        return [            'flow_id' => $flow['id'],            'order_id' =>$order['id'] ,            'state'=>Model_Process::STATUS_PROCESSING,            'created_at'=>time(),            'updated_at'=>time(),        ];    }    /**     * @param Flow $flow     * @return Process     * @throws \Exception     */    protected function createProcess($flow,$order)    {        $attr=$this->processAttribute($flow,$order);        $process = new Model_Process();        $processId=$process->insert($attr);        if($processId){            $process->read($processId);            $process->initStatus($flow);            return true;        }        return false;        return $process;    }    /**     * @return HasMany     */    public function process($orderid)    {        $process = new Model_Process();       return $process->find('order_id='.$orderid);        return $this->hasMany(Process::class, 'model_id')->where('model_type', $this->getMorphClass());    }    /**     * 当前的流程     * @return Process     */    public function currentProcess()    {        if (!isset($this->currentProcess)) {            if ($this->process->isEmpty()) {                return null;            }            $this->currentProcess = $this->process->where('state', 'processing')->first();        }        return $this->currentProcess;    }}
 |