HEX
Server: nginx/1.22.1
System: Linux VM-16-9-centos 3.10.0-1160.99.1.el7.x86_64 #1 SMP Wed Sep 13 14:19:20 UTC 2023 x86_64
User: www (1001)
PHP: 7.3.31
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/wwwroot/www.sanjiangapp.com/apps/admin/model/system/AreaModel.php
<?php
/**
 * @copyright (C)2016-2099 Hnaoyun Inc.
 * @author XingMeng
 * @email hnxsh@foxmail.com
 * @date 2017年04月07日
 *  区域模型类
 */
namespace app\admin\model\system;

use core\basic\Model;

class AreaModel extends Model
{

    // 获取区域列表
    public function getList()
    {
        $result = parent::table('ay_area')->order('pcode,acode')
            ->page()
            ->select();
        $tree = get_tree($result, 0, 'acode', 'pcode');
        return $tree;
    }

    // 获取区域选择列表
    public function getSelect()
    {
        $result = parent::table('ay_area')->field('pcode,acode,name')
            ->order('pcode,acode')
            ->select();
        $tree = get_tree($result, 0, 'acode', 'pcode');
        return $tree;
    }

    // 检查区域
    public function checkArea($where)
    {
        return parent::table('ay_area')->field('id')
            ->where($where)
            ->find();
    }

    // 获取区域详情
    public function getArea($acode)
    {
        return parent::table('ay_area')->where("acode='$acode'")->find();
    }

    // 获取最后一个code
    public function getLastCode()
    {
        return parent::table('ay_area')->order('id DESC')->value('acode');
    }

    // 添加区域
    public function addArea(array $data)
    {
        if ($data['is_default']) {
            $this->unsetDefault($data['acode']);
        }
        return parent::table('ay_area')->autoTime()->insert($data);
    }

    // 删除区域
    public function delArea($acode)
    {
        return parent::table('ay_area')->where("acode='$acode' OR pcode='$acode'")
            ->where('is_default=0')
            ->delete();
    }

    // 修改区域资料
    public function modArea($acode, $data)
    {
        $result = parent::table('ay_area')->autoTime()
            ->where("acode='$acode'")
            ->update($data);
        if ($data['is_default']) {
            $this->unsetDefault($data['acode']);
        }
        if ($result && array_key_exists('acode', $data) && $acode != $data['acode']) {
            $this->modSubArea($acode, $data['acode']);
        }
        return $result;
    }

    // 当父编号改变时,修改子栏目的父编码
    private function modSubArea($pcode, $pcodeNew)
    {
        return parent::table('ay_area')->where("pcode='$pcode'")
            ->autoTime()
            ->update("pcode='$pcodeNew'");
    }

    // 去除$acode以外的默认区域
    private function unsetDefault($acode)
    {
        parent::table('ay_area')->where("acode<>'$acode'")->update('is_default=0');
    }
}