Files
erp-site/application/controllers/basedata/assist.php
2026-04-19 01:39:41 +08:00

264 lines
12 KiB
PHP
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Assist extends CI_Controller {
public function __construct(){
parent::__construct();
$this->common_model->checkpurview();
}
public function index(){
$typeNumber = str_enhtml($this->input->get('typeNumber',TRUE));
$skey = str_enhtml($this->input->get('skey',TRUE));
$where = '(isDelete=0) and typeNumber="'.$typeNumber.'"';
$where .= $skey ? ' and name like "%'.$skey.'%"' : '';
$list = $this->mysql_model->get_results('category',$where,'path');
$parentId = array_column($list, 'parentId');
foreach ($list as $arr=>$row) {
$v[$arr]['detail'] = in_array($row['id'],$parentId) ? false : true;
$v[$arr]['id'] = intval($row['id']);
$v[$arr]['level'] = $row['level'];
$v[$arr]['name'] = $row['name'];
$v[$arr]['parentId'] = intval($row['parentId']);
$v[$arr]['remark'] = $row['remark'];
$v[$arr]['sortIndex'] = intval($row['sortIndex']);
$v[$arr]['status'] = intval($row['isDelete']);
$v[$arr]['typeNumber'] = $row['typeNumber'];
}
$json['status'] = 200;
$json['msg'] = 'success';
$json['data']['items'] = isset($v) ? $v : array();
$json['data']['totalsize'] = count($list);
die(json_encode($json));
}
//分类
public function getAssistType(){
$v = array(
0 => array('id'=>1001,'name'=>'商品类别','number'=>'trade'),
1 => array('id'=>1002,'name'=>'客户类别','number'=>'customertype'),
2 => array('id'=>1003,'name'=>'供应商类别','number'=>'supplytype'),
3 => array('id'=>1004,'name'=>'收入类别','number'=>'raccttype'),
4 => array('id'=>1005,'name'=>'支出类别','number'=>'paccttype')
);
$json['status'] = 200;
$json['msg'] = 'success';
$json['data']['items'] = $v;
$json['data']['totalsize'] = 5;
die(json_encode($json));
}
//新增
public function add(){
$data = $this->validform(str_enhtml($this->input->post(NULL,TRUE)));
switch ($data['typeNumber']) {
case 'trade':
$this->common_model->checkpurview(168);
$this->trade_add($data);break;
case 'supplytype':
$this->common_model->checkpurview(164);
$success = '新增供应商类别:';break;
case 'customertype':
$this->common_model->checkpurview(74);
$success = '新增客户类别:';break;
case 'raccttype':
$this->common_model->checkpurview(176);
$success = '新增收入类别:';break;
case 'paccttype':
$this->common_model->checkpurview(172);
$success = '新增支出类别:';break;
case 'PayMethod':
$this->common_model->checkpurview(160);
$success = '新增结算方式:';break;
default:
str_alert(-1,'参数错误');
}
$sql = $this->mysql_model->insert('category',elements(array('name','typeNumber'),$data));
if ($sql) {
$this->common_model->logs($success.$data['name']);
die('{"status":200,"msg":"success","data":{"coId":0,"detail":true,"id":'.$sql.',"level":1,"name":"'.$data['name'].'","parentId":0,"remark":"","sortIndex":2,"status":0,"typeNumber":"'.$data['typeNumber'].'","uuid":""}}');
}
str_alert(-1,'添加失败');
}
//商品分类添加
private function trade_add($data){
if ($data['parentId']==0) {
$data['level'] = 1;
$newid = $this->mysql_model->insert('category',elements(array('name','typeNumber','level','parentId'),$data));
$sql = $this->mysql_model->update('category',array('path'=>$newid),array('id'=>$newid));
} else {
$cate = $this->mysql_model->get_rows('category',array('id'=>$data['parentId']));
count($cate)<1 && str_alert(-1,'参数错误');
$data['level'] = $cate['level'] + 1;
$newid = $this->mysql_model->insert('category',elements(array('name','typeNumber','level','parentId'),$data));
$sql = $this->mysql_model->update('category',array('path'=>$cate['path'].','.$newid),array('id'=>$newid));
}
if ($sql) {
$this->common_model->logs('新增商品类别:'.$data['name']);
die('{"status":200,"msg":"success","data":{"coId":0,"detail":true,"id":'.$newid.',"level":'.$data['level'].',"name":"'.$data['name'].'","parentId":'.$data['parentId'].',"remark":"","sortIndex":1,"status":0,"typeNumber":"'.$data['typeNumber'].'","uuid":""}}');
}
str_alert(-1,'添加失败');
}
//修改
public function update(){
$data = $this->validform(str_enhtml($this->input->post(NULL,TRUE)));
switch ($data['typeNumber']) {
case 'trade':
$this->common_model->checkpurview(169);
$this->trade_update($data);break;
case 'supplytype':
$this->common_model->checkpurview(165);
$success = '修改供应商类别:';break;
case 'customertype':
$this->common_model->checkpurview(75);
$success = '修改客户类别:';break;
case 'raccttype':
$this->common_model->checkpurview(177);
$success = '修改收入类别:';break;
case 'paccttype':
$this->common_model->checkpurview(173);
$success = '修改支出类别:';break;
case 'PayMethod':
$this->common_model->checkpurview(161);
$success = '修改结算方式:';break;
default:
str_alert(-1,'参数错误');
}
$sql = $this->mysql_model->update('category',elements(array('name','typeNumber'),$data),array('id'=>$data['id']));
if ($sql) {
$this->common_model->logs($success.$data['name']);
die('{"status":200,"msg":"success","data":{"coId":0,"detail":true,"id":'.$data['id'].',"level":1,"name"
:"'.$data['name'].'","parentId":0,"remark":"","sortIndex":2,"status":0,"typeNumber":"'.$data['typeNumber'].'","uuid":""
}}');
}
str_alert(-1,'修改失败');
}
//商品分类修改
private function trade_update($data){
$cate = $this->mysql_model->get_rows('category',array('id'=>$data['id'])); //获取原ID数据
count($cate)<1 && str_alert(-1,'参数错误');
$old_pid = $cate['parentId'];
$old_path = $cate['path'];
$pid_list = $this->mysql_model->get_results('category','(id<>'.$data['id'].') and find_in_set('.$data['id'].',path)'); //是否有子栏目
$data['parentId'] == $data['id'] && str_alert(-1,'当前分类和上级分类不能相同');
if ($data['parentId']==0) { //多级转顶级
$pare_depth = 1;
if (count($pid_list)==0) { //ID不存在子栏目
$this->mysql_model->update('category',array('parentId'=>0,'path'=>$data['id'],'level'=>1,'name'=>$data['name']),array('id'=>$data['id']));
} else { //ID存在子栏目
$this->mysql_model->update('category',array('parentId'=>0,'path'=>$data['id'],'level'=>1,'name'=>$data['name']),array('id'=>$data['id']));
foreach($pid_list as $arr=>$row) {
$path = str_replace(''.str_replace($data['id'],'',$old_path).'','',''.$row['path'].'');
$pare_depth = substr_count($path,',')+1;
$info[] = array('id'=>$row['id'],'path'=>$path,'level'=>$pare_depth);
}
$this->mysql_model->update('category',$info,'id');
}
} else { //pid<>0时顶级转多级 多级转多级
$cate = $this->mysql_model->get_rows('category',array('id'=>$data['parentId'])); //获取原PID数据
count($cate)<1 && str_alert(-1,'参数错误');
$pare_pid = $cate['parentId'];
$pare_path = $cate['path'];
$pare_depth = $cate['level'];
if ($old_pid==0) { //顶级转多级
if (count($pid_list)==0) { //ID不存在子栏目
$this->mysql_model->update('category',array('name'=>$data['name'],'parentId'=>$data['parentId'],'path'=>$pare_path.','.$data['id'],'level'=>$pare_depth+1),array('id'=>$data['id']));
} else { //ID存在子栏目
$this->mysql_model->update('category',array('name'=>$data['name'],'parentId'=>$data['parentId'],'path'=>$pare_path.','.$data['id'],'level'=>$pare_depth+1),array('id'=>$data['id']));
foreach ($pid_list as $arr=>$row) {
$path = $pare_path.','.$row['path'];
$pare_depth = substr_count($path,',')+1;
$info[] = array('id'=>$row['id'],'path'=>$path,'level'=>$pare_depth);
}
$this->mysql_model->update('category',$info,'id');
}
} else { //多级转多级
if (count($pid_list)==0) { //ID不存在子栏目
$this->mysql_model->update('category',array('name'=>$data['name'],'parentId'=>$data['parentId'],'path'=>$pare_path.','.$data['id'],'level'=>$pare_depth+1),array('id'=>$data['id']));
} else { //ID存在子栏目
$this->mysql_model->update('category',array('name'=>$data['name'],'parentId'=>$data['parentId'],'path'=>$pare_path.','.$data['id'],'level'=>$pare_depth+1),array('id'=>$data['id']));
foreach ($pid_list as $arr=>$row) {
$path = $pare_path.','.str_replace(str_replace($data['id'],'',$old_path),'',$row['path']);
$pare_depth = substr_count($path,',')+1;
$info[] = array('id'=>$row['id'],'path'=>$path,'level'=>$pare_depth+1);
}
$this->mysql_model->update('category',$info,'id');
}
}
}
$data['level'] = $pare_depth;
$this->mysql_model->update('goods',array('categoryName'=>$data['name']),array('categoryId'=>$data['id']));
$this->common_model->logs('修改类别:ID='.$data['id'].' 名称:'.$data['name']);
die('{"status":200,"msg":"success","data":{"coId":0,"detail":true,"id":'.$data['id'].',"level":'.$data['level'].',"name":"'.$data['name'].'","parentId":'.$data['parentId'].',"remark":"","sortIndex":0,"status":0,"typeNumber":"trade","uuid":""}}');
str_alert(200,'success',$data);
}
//分类删除
public function delete() {
$id = intval($this->input->post('id',TRUE));
$type = str_enhtml($this->input->get_post('typeNumber',TRUE));
switch ($type) {
case 'trade':
$this->common_model->checkpurview(170);
$success = '删除商品类别:';break;
case 'supplytype':
$this->common_model->checkpurview(166);
$success = '删除供应商类别:';break;
case 'customertype':
$this->common_model->checkpurview(76);
$success = '删除客户类别:';break;
case 'raccttype':
$this->common_model->checkpurview(178);
$success = '删除收入类别:';break;
case 'paccttype':
$this->common_model->checkpurview(174);
$success = '删除支出类别:';break;
case 'PayMethod':
$this->common_model->checkpurview(162);
$success = '删除结算方式:';break;
default:
str_alert(-1,'参数错误');
}
$data = $this->mysql_model->get_rows('category',array('id'=>$id));
if (count($data)>0) {
$this->mysql_model->get_count('goods',array('isDelete'=>0,'categoryId'=>$id))>0 && str_alert(-1,'辅助资料已经被使用');
$this->mysql_model->get_count('contact',array('isDelete'=>0,'cCategory'=>$id))>0 && str_alert(-1,'辅助资料已经被使用');
$this->mysql_model->get_count('category','(isDelete=0) and find_in_set('.$id.',path)')>1 && str_alert(-1,'不能删除,请先删除子分类!');
$sql = $this->mysql_model->update('category',array('isDelete'=>1),array('id'=>$id));
if ($sql) {
$this->common_model->logs($success.'ID='.$id.' 名称:'.$data['name']);
str_alert(200,'success',array('msg'=>'删除成功','id'=>'['.$id.']'));
}
}
str_alert(-1,'删除失败');
}
//公共验证
private function validform($data) {
$data['typeNumber'] = str_enhtml($this->input->get_post('typeNumber',TRUE)); //结算方式是GET
$data['id'] = isset($data['id']) ? intval($data['id']) :0;
$data['parentId'] = isset($data['parentId']) ? intval($data['parentId']):0;
strlen($data['name']) < 1 && str_alert(-1,'类别名称不能为空');
strlen($data['typeNumber']) < 1 && str_alert(-1,'参数错误');
$where['isDelete'] = 0;
$where['name'] = $data['name'];
$where['typeNumber'] = $data['typeNumber'];
$where['id !='] = $data['id']>0 ? $data['id'] :0;
$this->mysql_model->get_count('category',$where) > 0 && str_alert(-1,'类别名称重复');
return $data;
}
}
/* End of file welcome.php */
/* Location: ./application/controllers/welcome.php */