<?php
namespace app\controller;
use app\controller\Acl;
use app\model\Mould as Moulds;
use think\facade\{Db,Filesystem};
use think\exception\ValidateException;
class Mould extends Acl{
public function record(){
$input=input('post.');
if(existFull($input,['page','limit'])){
$sql=fastSql($input,[
['name','fullLike'],
['key','fullLike']
]) $count = Moulds::where($sql)->count() $info = Moulds::where($sql)->page($input['page'],$input['limit'])->order(['key'=>'asc','sort'=>'asc'])->select() $result=[
'state'=>'success',
'count'=>$count,
'info'=>$info
] }else{
$result=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($result);
}
public function save(){
$input=input('post.');
if(isset($input['id'])){
try {
empty($input['id'])?$this->validate($input,'app\validate\Mould'):$this->validate($input,'app\validate\Mould.update');
} catch (ValidateException $e) {
return json(['state'=>'error','info'=>$e->getError()]);
exit;
}
Db::startTrans();
try {
if(empty($input['id'])){
Moulds::create($input);
pushLog('新增模板[ '.$input['name'].' ]') }else{
Moulds::update($input);
pushLog('更新模板[ '.$input['name'].' ]') }
Db::commit();
$result=['state'=>'success'];
} catch (\Exception $e) {
Db::rollback();
$result=['state'=>'error','info'=>'内部错误,操作已撤销!'];
}
}else{
$result=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($result);
}
public function get(){
$input=input('post.');
if(existFull($input,['id'])){
$result=[
'state'=>'success',
'info'=>Moulds::where([['id','=',$input['id']]])->find()
];
}else{
$result=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($result);
}
public function copy(){
$input=input('post.');
if(existFull($input,['id'])){
$find=Moulds::where([['id','=',$input['id']]])->find()->toArray();
pushLog('复制模板[ '.$find['name'].' ]') unset($find['id']) $find['name']=$find['name'].'|复制';
Moulds::create($find);
$result=['state'=>'success'];
}else{
$result=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($result);
}
public function del(){
$input=input('post.');
if(existFull($input,['id'])){
$find=Db::name('mould')->where([['id','=',$input['id']]])->find();
Db::startTrans();
try {
Db::name('mould')->where([['id','=',$input['id']]])->delete();
pushLog('删除模板[ '.$find['name'].' ]')
Db::commit();
$result=['state'=>'success'];
} catch (\Exception $e) {
Db::rollback();
$result=['state'=>'error','info'=>'内部错误,操作已撤销!'];
}
}else{
$result=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($result);
}
public function import(){
delOverdueFile('static.upload.mould') $file=request()->file('file') if(empty($file)){
$result=['state'=>'error','info'=>'传入数据不完整!'];
}else{
try{
validate(['file'=>['fileSize'=>1024*1024,'fileExt'=>'md']])->check(['file'=>$file]);
$fileInfo = Filesystem::disk('upload')->putFile('mould', $file, 'uniqid');
$filePath = pathChange('static.upload').$fileInfo;
$json=json_decode(file_get_contents($filePath),true);
if(existFull($json,['name','key','source','code','data'])){
$createInfo=Moulds::create($json);
pushLog('导入模板[ '.$createInfo['name'].' ]') $result=['state'=>'success'];
}else{
$result=['state'=>'error','info'=>'模板文件参数不正确!'];
}
}catch(ValidateException $e) {
$result=['state'=>'error','info'=>$e->getMessage()] }
}
return json($result);
}
public function exports(){
delOverdueFile('static.file.mould') $input=input('get.');
if(existFull($input,['parm']) && is_array($input['parm'])){
pushLog('导出打印模板') $info=Moulds::where([['id','in',$input['parm']]])->order(['id'=>'desc'])->select()->toArray() $zipFile=[];
foreach ($info as $infoVo) {
unset($infoVo['id']);
$fileName = str_replace(['/','\\',':','*','"','<','>','|','?'],'_',$infoVo['name']);
$filePath = pathChange('static.file.mould').$fileName.'.md';
file_put_contents($filePath,json_encode($infoVo));
$zipFile[]=$filePath;
}
buildZip('模板文件',$zipFile);
}else{
return json(['state'=>'error','info'=>'传入数据不完整!']);
}
}
public function find(){
$input=input('post.');
if(existFull($input,['id'])){
$mould=Moulds::where([['id','=',$input['id']]])->find();
$result=[
'state'=>'success',
'info'=>$mould
] }else{
$result=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($result);
}
public function select(){
$input=input('post.');
if(existFull($input,['key'])){
$moulds=Moulds::where([['key','in',$input['key']]])->order(['sort'=>'asc'])->select();
$result=[
'state'=>'success',
'info'=>$moulds
] }else{
$result=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($result);
}
public function update(){
$input=input('post.');
if(existFull($input,['id','code'])){
Moulds::where([['id','=',$input['id']]])->update(['code'=>$input['code']]);
$result=['state'=>'success',];
}else{
$result=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($result);
}
}