fix: 完善荣誉成绩录取院校模块

This commit is contained in:
lwh 2023-04-23 20:00:31 +08:00
parent fb0127e90d
commit 23d73d3502
19 changed files with 515 additions and 73 deletions

View File

@ -25,7 +25,11 @@ class Achievement extends BaseController
$params = $request->param();
$con = [];
$con = Tool::getOptionalQuery(['school_category_guid', '='], ['achievement_title', 'LIKE'],);
$con = Tool::getOptionalQuery(
['a.school_category_guid', '='],
['a.achievement_title', 'LIKE'],
['a.achievement_content', 'LIKE'],
);
$query = ModelAchievement::where($con)
->field([
@ -50,6 +54,8 @@ class Achievement extends BaseController
*/
public function editAchievement(Request $request): array
{
Db::startTrans();
try {
$params = $request->param();
$this->validate($params, [
'school_category_guid|录取院校' => 'require',
@ -68,7 +74,12 @@ class Achievement extends BaseController
'achievement_sub_content',
'achievement_sort'
])->save($params);
Db::commit();
return msg('编辑成功!');
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
}
/**
@ -76,6 +87,8 @@ class Achievement extends BaseController
*/
public function addAchievement(Request $request): array
{
Db::startTrans();
try {
$params = $request->param();
$this->validate($params, [
'school_category_guid|录取院校' => 'require',
@ -94,7 +107,12 @@ class Achievement extends BaseController
'achievement_sub_content',
'achievement_sort'
]);
Db::commit();
return msg('添加成功!');
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
}
/**
@ -102,6 +120,8 @@ class Achievement extends BaseController
*/
public function deleteAchievement(Request $request): array
{
Db::startTrans();
try {
$params = $request->param();
$this->validate($params, [
'achievement_guid' => 'require',
@ -110,7 +130,12 @@ class Achievement extends BaseController
'achievement_guid' => explode(',', $params['achievement_guid'])
])->select();
$achievement->delete();
Db::commit();
return msg('删除成功!');
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
}
/**
@ -119,15 +144,11 @@ class Achievement extends BaseController
public function exportExcel(Request $request)
{
$params = $request->param();
$select = ModelAchievement::field([
'school_category_guid',
'achievement_title',
'achievement_content',
'achievement_sub_content',
'achievement_sort'
])
->order('achievement_sort', 'asc')
->select();
$params['limit'] = 10000;
// if (isset($params['signup_guids']) && $params['signup_guids']) {
// $con['signup.signup_guid'] = explode(',', $params['signup_guids']);
// }
$select = self::getAchievementList($request)['data'];
return ModelAchievement::exportExcel($select);
}
@ -137,7 +158,10 @@ class Achievement extends BaseController
public function downloadTemplate(Request $request)
{
$params = $request->param();
$data = array_values(ModelAchievement::EXCELFIELD);
$data = [
array_values(ModelAchievement::EXCELFIELD),
['清华大学美术学院', '2016年', '刘畅、潘欣玥', '录取清华大学', "1"]
];
$excel = (new Excel())->exporTsheet($data);
$excel->save('录取院校成绩导入模板.xlsx');
}

View File

@ -0,0 +1,177 @@
<?php
namespace app\admin\controller\HonoraryAchievement;
use app\BaseController;
use app\common\model\HonoraryAchievement\SchoolLeaders as ModelSchoolLeaders;
use app\Request;
use think\Validate;
use think\exception\ValidateException;
use think\facade\Filesystem;
use app\common\arw\adjfut\src\Excel;
use app\common\arw\adjfut\src\UploadFile;
use app\common\exception\Tool;
use think\facade\Db;
use think\facade\Env;
class SchoolLeaders extends BaseController
{
/**
* 获取录取学院领军者列表
*/
public function getSchoolLeadersList(Request $request): array
{
$params = $request->param();
$con = [];
$con = Tool::getOptionalQuery(['a.school_category_guid', '='], ['school_leaders_name', 'LIKE'],['school_leaders_school', 'LIKE'],);
$query = ModelSchoolLeaders::where($con)
->field([
'a.school_leaders_id',
'a.school_leaders_guid',
'a.school_category_guid',
'b.school_category_name',
'a.school_leaders_name',
'a.school_leaders_school',
'a.school_leaders_img',
'a.school_leaders_sort'
])
->alias('a')
->leftjoin('school_category b', 'a.school_category_guid = b.school_category_guid')
->order('school_leaders_sort', 'asc');
return msg("获取录取学院领军者列表成功!", $query);
}
/**
* 编辑录取学院领军者
*/
public function editSchoolLeaders(Request $request): array
{
Db::startTrans();
try {
$params = $request->param();
$this->validate($params, [
'school_category_guid|录取院校' => 'require',
'school_leaders_name|名称' => 'require',
'school_leaders_school|所属院校' => 'require',
'school_leaders_img|图片' => 'require'
]);
$model = ModelSchoolLeaders::where('school_leaders_guid', $params['school_leaders_guid'])->find();
if (!$model) throwErrorMsg("该录取学院领军者不存在", 1);
$model->allowField([
'school_leaders_update_user_guid',
'school_category_guid',
'school_leaders_name',
'school_leaders_school',
'school_leaders_img',
'school_leaders_sort'
])->save($params);
Db::commit();
return msg('编辑成功!');
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
}
/**
* 添加录取学院领军者
*/
public function addSchoolLeaders(Request $request): array
{
Db::startTrans();
try {
$params = $request->param();
$this->validate($params, [
'school_category_guid|录取院校' => 'require',
'school_leaders_name|名称' => 'require',
'school_leaders_school|所属院校' => 'require',
'school_leaders_img|图片' => 'require'
]);
$model = ModelSchoolLeaders::create($params, [
'school_leaders_guid',
'school_leaders_create_user_guid',
'school_leaders_update_user_guid',
'school_category_guid',
'school_leaders_name',
'school_leaders_school',
'school_leaders_img',
'school_leaders_sort'
]);
Db::commit();
return msg('添加成功!');
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
}
/**
* 删除录取学院领军者
*/
public function deleteSchoolLeaders(Request $request): array
{
Db::startTrans();
try {
$params = $request->param();
$this->validate($params, [
'school_leaders_guid' => 'require',
]);
$school_leaders = ModelSchoolLeaders::where([
'school_leaders_guid' => explode(',', $params['school_leaders_guid'])
])->select();
$school_leaders->delete();
Db::commit();
return msg('删除成功!');
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
}
/**
* 导出Excel
*/
public function exportExcel(Request $request)
{
$params = $request->param();
$params['limit'] = 10000;
// if (isset($params['signup_guids']) && $params['signup_guids']) {
// $con['signup.signup_guid'] = explode(',', $params['signup_guids']);
// }
$select = self::getSchoolLeadersList($request)['data'];
return ModelSchoolLeaders::exportExcel($select);
}
/**
* 下载导入模板
*/
public function downloadTemplate(Request $request)
{
$params = $request->param();
$data = [
array_values(ModelSchoolLeaders::EXCELFIELD),
['清华大学美术学院', '糖金金', '广州第一大学', "1"]
];
$excel = (new Excel())->exporTsheet($data);
$excel->save('录取学院领军者导入模板.xlsx');
}
/**
* 导入excel
*/
public function importExcel(Request $request)
{
$file = new UploadFile('uploads', 'fileExt:xlsx');
$file->putFile('school_leaders');
$msg = ModelSchoolLeaders::importExcel($file);
return [
'code' => 0,
'msg' => $msg
];
}
}

View File

@ -268,4 +268,23 @@ class Dictionary extends BaseModel
};
return $dictionary_name;
}
/**
* 获取字典集合(二级)指定字名称的值
*
* @param array $dictionary_data 字典集合
* @param string $dictionary_name 字典名称
* @return string|null
*/
public static function getDataDictionaryValue(array $dictionary_data, string $dictionary_name)
{
$dictionary_value = null;
foreach ($dictionary_data as $dictionary) {
if ($dictionary['dictionary_name'] == $dictionary_name) {
$dictionary_value = $dictionary['dictionary_value'];
break;
}
};
return $dictionary_value;
}
}

View File

@ -9,6 +9,7 @@ use app\common\arw\adjfut\src\Excel;
use app\Request;
use app\common\exception\Tool;
use think\facade\Db;
use app\common\model\Dictionary\Dictionary as ModelDictionary;
class EnrolAq extends BaseModel
{
@ -115,6 +116,13 @@ class EnrolAq extends BaseModel
'回答状态'
]];
foreach ($select as $key => $val) {
// 字典取值
$show_status = ModelDictionary::getDictionaryData('show_status');
$answer_status = ModelDictionary::getDictionaryData('answer_status');
$val['enrol_aq_status'] = ModelDictionary::getDataDictionaryName($show_status, $val['enrol_aq_status']);
$val['enrol_aq_answer_status'] = ModelDictionary::getDataDictionaryName($answer_status, $val['enrol_aq_answer_status']);
$data[] = [
$val['enrol_aq_question'],
$val['enrol_aq_answer'],
@ -127,10 +135,4 @@ class EnrolAq extends BaseModel
$excel->save('招生问答.xlsx');
}
// public function getEnrolAqStatusBoolAttr($value)
// {
// return $value == 1 ? false : true;
// }
}

View File

@ -8,7 +8,9 @@ use think\model\concern\SoftDelete;
use app\common\arw\adjfut\src\Excel;
use app\Request;
use app\common\exception\Tool;
use PSpell\Dictionary;
use think\facade\Db;
use app\common\model\HonoraryAchievement\SchoolCategory as ModelSchoolCategory;
class Achievement extends BaseModel
{
@ -61,21 +63,26 @@ class Achievement extends BaseModel
// excel导入/下载模板表头
public const EXCELFIELD = [
'school_category_guid' => '录取院校',
'school_category_name' => '录取院校',
'achievement_title' => '标题',
'achievement_content' => '内容',
'achievement_sub_content' => '副内容',
'achievement_sort' => '排序',
];
//排序字段
public $order_field = 'achievement_sort';
/**
* 新增前
*/
public static function onBeforeInsert(self $model): void
{
// self::checkRepeatData($model);
Tool::sortInsertProc(
self::class,
$model->achievement_sort,
['school_category_guid' => $model->school_category_guid]
);
$model->completeCreateField();
}
@ -84,7 +91,12 @@ class Achievement extends BaseModel
*/
public static function onBeforeUpdate(self $model): void
{
// self::checkRepeatData($model);
Tool::sortEditProc(
self::class,
$model->achievement_guid,
$model->achievement_sort,
['school_category_guid' => $model->school_category_guid]
);
$model->completeUpdateField();
}
@ -93,9 +105,11 @@ class Achievement extends BaseModel
*/
public static function onBeforeDelete(self $model): void
{
Tool::sortDeleteProc(self::class, $model->school_category_guid);
$model->completeDeleteField();
}
/**
* 导出Excel
*/
@ -110,7 +124,7 @@ class Achievement extends BaseModel
]];
foreach ($select as $key => $val) {
$data[] = [
$val['school_category_guid'],
$val['school_category_name'],
$val['achievement_title'],
$val['achievement_content'],
$val['achievement_sub_content'],
@ -142,7 +156,7 @@ class Achievement extends BaseModel
foreach ($data as $line => $value) {
try {
$model = self::importExcelInit($value);
$msg[] = "{$line} <span style='color:#27af49'>新增成功!</span><br>";
$msg[] = "{$line} <span style='color:#27af49'>{$model->school_category_name}】的{$model->achievement_title}数据 新增成功!</span><br>";
} catch (\Throwable $th) {
$msg[] = "{$line} <span style='color:red'>{$th->getMessage()}</span><br>";
}
@ -160,17 +174,26 @@ class Achievement extends BaseModel
*/
public static function importExcelInit($value)
{
$school_category_guid = $value['school_category_guid'];
$school_category_name = $value['school_category_name'];
$achievement_title = $value['achievement_title'];
$achievement_content = $value['achievement_content'];
$achievement_sub_content = $value['achievement_sub_content'];
$achievement_sort = $value['achievement_sort'];
return self::create([
// 录取院校
$school_category = ModelSchoolCategory::where('school_category_name',$school_category_name)->find();
if(!$school_category) throwErrorMsg( $school_category_name . " 录取院校不存在!");
else $school_category_guid = $school_category->school_category_guid;
$model = self::create([
'school_category_guid' => $school_category_guid,
'achievement_title' => $achievement_title,
'achievement_content' => $achievement_content,
'achievement_sub_content' => $achievement_sub_content,
'achievement_sort' => $achievement_sort,
]);
$model['school_category_name'] = $school_category_name;
return $model;
}
}

View File

@ -9,6 +9,7 @@ use app\common\arw\adjfut\src\Excel;
use app\Request;
use app\common\exception\Tool;
use think\facade\Db;
use app\common\model\HonoraryAchievement\SchoolCategory as ModelSchoolCategory;
class SchoolCategory extends BaseModel
{

View File

@ -0,0 +1,196 @@
<?php
namespace app\common\model\HonoraryAchievement;
use app\common\arw\adjfut\src\Validate;
use app\BaseModel;
use think\model\concern\SoftDelete;
use app\common\arw\adjfut\src\Excel;
use app\Request;
use app\common\exception\Tool;
use think\facade\Db;
use app\common\model\HonoraryAchievement\SchoolCategory as ModelSchoolCategory;
class SchoolLeaders extends BaseModel
{
use SoftDelete;
// 删除字段
protected $deleteTime = 'school_leaders_delete_time';
// 设置主键名
protected $pk = 'school_leaders_guid';
// 设置废弃字段
protected $disuse = [];
// 设置字段信息
protected $schema = [
"school_leaders_id" => "int",
"school_leaders_nameschool_leaders_nameschool_leaders_name" => "string",
"school_category_guid" => "string",
"school_leaders_name" => "string",
"school_leaders_school" => "string",
"school_leaders_img" => "string",
"school_leaders_sort" => "int",
"school_leaders_create_time" => "datetime",
"school_leaders_create_user_guid" => "string",
"school_leaders_update_time" => "datetime",
"school_leaders_update_user_guid" => "string",
"school_leaders_delete_time" => "datetime",
"school_leaders_delete_user_guid" => "string",
];
// 设置json类型字段
protected $json = [''];
// 开启自动写入时间戳字段
protected $autoWriteTimestamp = 'datetime';
// 创建时间
protected $createTime = 'school_leaders_create_time';
// 修改时间
protected $updateTime = 'school_leaders_update_time';
// excel导入/下载模板表头
public const EXCELFIELD = [
'school_category_name' => '录取院校',
'school_leaders_name' => '领军者名称',
'school_leaders_school' => '领军者所属院校',
'school_leaders_sort' => '领军者排序',
];
//排序字段
public $order_field = 'school_leaders_sort';
/**
* 新增前
*/
public static function onBeforeInsert(self $model): void
{
Tool::sortInsertProc(
self::class,
$model->school_leaders_sort,
['school_category_guid' => $model->school_category_guid]
);
$model->completeCreateField();
}
/**
* 更新前
*/
public static function onBeforeUpdate(self $model): void
{
Tool::sortEditProc(
self::class,
$model->school_leaders_guid,
$model->school_leaders_sort,
['school_category_guid' => $model->school_category_guid]
);
$model->completeUpdateField();
}
/**
* 删除前
*/
public static function onBeforeDelete(self $model): void
{
Tool::sortDeleteProc(self::class, $model->school_category_guid);
$model->completeDeleteField();
}
/**
* 导出Excel
*/
public static function exportExcel($select)
{
$data = [[
'录取院校',
'名称',
'所属院校',
'图片',
'排序'
]];
foreach ($select as $key => $val) {
$data[] = [
$val['school_category_name'],
$val['school_leaders_name'],
$val['school_leaders_school'],
Excel::ExportImgFiled($val['school_leaders_img']),
$val['school_leaders_sort'],
];
}
$excel = (new Excel())->exporTsheet($data);
$excel->save('录取学院领军者.xlsx');
}
/**
* 导入excel
*/
public static function importExcel($file)
{
$msg = [];
Db::startTrans();
try {
$excel = new Excel($file);
$data = $excel->parseExcel(
Tool::getExcelRule(self::EXCELFIELD),
[
'titleLine' => [1]
]
);
if (!$data) throwErrorMsg('excel无数据', 1);
$msg = [];
foreach ($data as $line => $value) {
try {
$model = self::importExcelInit($value);
$msg[] = "{$line} <span style='color:#27af49'>【{$model->school_category_name}】的{$model->school_leaders_name} 新增成功!</span><br>";
} catch (\Throwable $th) {
$msg[] = "{$line} <span style='color:red'>{$th->getMessage()}</span><br>";
}
}
Db::commit();
return implode(', ', $msg);
} catch (\Throwable $th) {
Db::rollback();
throw $th;
}
}
/**
* 导入excel初始化
*/
public static function importExcelInit($value)
{
$school_category_name = $value['school_category_name'];
$school_leaders_name = $value['school_leaders_name'];
$school_leaders_school = $value['school_leaders_school'];
$school_leaders_sort = $value['school_leaders_sort'];
// 录取院校
$school_category = ModelSchoolCategory::where('school_category_name',$school_category_name)->find();
if(!$school_category) throwErrorMsg( $school_category_name . " 录取院校不存在!");
else $school_category_guid = $school_category->school_category_guid;
$model = self::create([
'school_category_guid' => $school_category_guid,
'school_leaders_name' => $school_leaders_name,
'school_leaders_school' => $school_leaders_school,
'school_leaders_sort' => $school_leaders_sort,
]);
$model['school_category_name'] = $school_category_name;
return $model;
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.