You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
3.7 KiB

<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/4/12
* Time: 16:05
*/
namespace app\modules\mch\models;
use app\models\FileGroup;
class FileForm extends MchModel
{
public $store_id;
public $group;
/**
* 获得分组数据
*/
public function getData()
{
$data = FileGroup::find()->where(['store_id' => $this->store_id, 'is_delete' => 0])->asArray()->all();
$default_data = $this->defaultData();
if (!$data) {
return [
'code'=>0,
'data' => $default_data
];
} else {
return [
'code'=>0,
'data' => array_merge($default_data, $data)
];
}
}
private function defaultData()
{
return [
[
'id' => -1,
'name' => '全部',
'is_default' => 1,
],
[
'id' => 0,
'name' => '未分组',
'is_default' => 1,
],
];
}
/**
* 保存分组数据
*/
public function saveData()
{
$data = FileGroup::find()->where(['store_id' => $this->store_id, 'is_delete' => 0])->asArray()->all();
$group = json_decode($this->group, true);
if (!$data) {
foreach ($group as $index => $value) {
if ($index == 0 || $index == 1) {
continue;
}
$model = new FileGroup();
$model->name = $value['name'];
$model->store_id = $this->store_id;
$model->is_default = 0;
$model->is_delete = 0;
$model->addtime = time();
$model->save();
}
} else {
foreach ($group as $index => $value) {
if ($index == 0 || $index == 1) {
continue;
}
if (isset($value['id'])) {
foreach ($data as $key => $item) {
if ($item['id'] == $value['id']) {
if ($value['name'] != $item['name'] || $value['is_delete'] != $item['is_delete']) {
$file = FileGroup::findOne($value['id']);
$file->attributes = $value;
$file->save();
}
}
}
} else {
$model = new FileGroup();
$model->name = $value['name'];
$model->store_id = $this->store_id;
$model->is_default = 0;
$model->is_delete = 0;
$model->addtime = time();
$model->save();
}
}
}
return [
'code' => 0,
'msg' => '成功'
];
}
//保存单个分组信息
public function save()
{
$group = json_decode($this->group, true);
if (isset($group['id'])) {
$model = FileGroup::findOne($group['id']);
$model->is_delete = $group['is_delete'];
$model->is_default = $group['is_default'];
} else {
$model = new FileGroup();
$model->is_delete = 0;
$model->addtime = time();
$model->store_id = $this->store_id;
$model->is_default = 0;
}
$model->name = $group['name'];
if ($model->save()) {
return $this->getData();
} else {
return $this->getErrorResponse($model);
}
}
}