diff --git a/app/Http/Controllers/Admin/EmailRecordController.php b/app/Http/Controllers/Admin/EmailRecordController.php new file mode 100644 index 0000000..77ebb88 --- /dev/null +++ b/app/Http/Controllers/Admin/EmailRecordController.php @@ -0,0 +1,220 @@ +all(); + $list = $this->model->where(function ($query) use ($all) { + if (isset($all['filter']) && !empty($all['filter'])) { + foreach ($all['filter'] as $condition) { + $key = $condition['key'] ?? null; + $op = $condition['op'] ?? null; + $value = $condition['value'] ?? null; + if (!isset($key) || !isset($op) || !isset($value)) { + continue; + } + // 等于 + if ($op == 'eq') { + $query->where($key, $value); + } + // 不等于 + if ($op == 'neq') { + $query->where($key, '!=', $value); + } + // 大于 + if ($op == 'gt') { + $query->where($key, '>', $value); + } + // 大于等于 + if ($op == 'egt') { + $query->where($key, '>=', $value); + } + // 小于 + if ($op == 'lt') { + $query->where($key, '<', $value); + } + // 小于等于 + if ($op == 'elt') { + $query->where($key, '<=', $value); + } + // 模糊搜索 + if ($op == 'like') { + $query->where($key, 'like', '%' . $value . '%'); + } + // 否定模糊搜索 + if ($op == 'notlike') { + $query->where($key, 'not like', '%' . $value . '%'); + } + // 范围搜索 + if ($op == 'range') { + list($from, $to) = explode(',', $value); + if (empty($from) || empty($to)) { + continue; + } + $query->whereBetween($key, [$from, $to]); + } + } + } + })->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc'); + if (isset($all['is_export']) && !empty($all['is_export'])) { + $list = $list->get()->toArray(); + $export_fields = $all['export_fields'] ?? []; + // 导出文件名字 + $tableName = $this->model->getTable(); + $filename = (new CustomForm())->getTableComment($tableName); + return Excel::download(new BaseExport($export_fields, $list, $tableName), $filename . date('YmdHis') . '.xlsx'); + } else { + // 输出 + $list = $list->paginate($all['page_size'] ?? 20); + } + return $this->success($list); + } + + /** + * @OA\Get( + * path="/api/admin/email-record/show", + * tags={"邮件发送配置"}, + * summary="详情", + * description="", + * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"), + * @OA\Parameter(name="show_relation", in="query", @OA\Schema(type="string"), required=false, description="需要输出的关联关系数组,填写输出指定数据"), + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Response( + * response="200", + * description="暂无" + * ) + * ) + */ + public function show() + { + $all = \request()->all(); + $messages = [ + 'title.required' => '标题必填', + ]; + $validator = Validator::make($all, [ + 'title' => 'required' + ], $messages); + if ($validator->fails()) { + return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); + } + $detail = $this->model->with('emailRecordUsers.user')->find($all['id']); + return $this->success($detail); + } + + /** + * @OA\Post( + * path="/api/admin/email-record/save", + * tags={"邮件发送配置"}, + * summary="保存", + * description="", + * @OA\Parameter(name="id", in="query", @OA\Schema(type="integer", format="int64"), required=true, description="ID(存在则更新,不存在则新增)"), + * @OA\Parameter(name="time", in="query", @OA\Schema(type="string", format="date"), required=false, description="发送时间"), + * @OA\Parameter(name="subject", in="query", @OA\Schema(type="string", maxLength=255), required=false, description="主题"), + * @OA\Parameter(name="email_template_id", in="query", @OA\Schema(type="string", format="mediumtext"), required=false, description="邮件模版id"), + * @OA\Parameter(name="email_record_users", in="query", @OA\Schema(type="string", format="mediumtext"), required=false, description="二维数组,包括建明:user_id"), + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="认证token"), + * @OA\Response( + * response="200", + * description="操作成功" + * ) + * ) + */ + public function save() + { + $all = \request()->all(); + DB::beginTransaction(); + try { + if (isset($all['id'])) { + $model = $this->model->find($all['id']); + if (empty($model)) { + return $this->fail([ResponseCode::ERROR_BUSINESS, '数据不存在']); + } + } else { + $model = $this->model; + $all['admin_id'] = $this->getUserId(); + $all['department_id'] = $this->getUser()->department_id; + } + $original = $model->getOriginal(); + $model->fill($all); + $model->save(); + DB::commit(); + // 记录日志 + $this->saveLogs($original, $model); + return $this->success($model); + } catch (\Exception $exception) { + DB::rollBack(); + return $this->fail([$exception->getCode(), $exception->getMessage()]); + } + } + + /** + * @OA\Get( + * path="/api/admin/email-record/destroy", + * tags={"邮件发送配置"}, + * summary="删除", + * description="", + * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"), + * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), + * @OA\Response( + * response="200", + * description="暂无" + * ) + * ) + */ + public function destroy() + { + return parent::destroy(); + } + +} diff --git a/app/Http/Controllers/Admin/EmailTemplateController.php b/app/Http/Controllers/Admin/EmailTemplateController.php index 3686f6f..b3717bd 100644 --- a/app/Http/Controllers/Admin/EmailTemplateController.php +++ b/app/Http/Controllers/Admin/EmailTemplateController.php @@ -11,6 +11,7 @@ use App\Models\CourseContentEvaluationAsk; use App\Models\CourseContentEvaluationForm; use App\Models\CustomForm; use App\Models\CustomFormField; +use App\Models\EmailTemplate; use App\Models\SupplyDemand; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Validator; @@ -25,14 +26,14 @@ class EmailTemplateController extends BaseController */ public function __construct() { - parent::__construct(new Calendar()); + parent::__construct(new EmailTemplate()); } /** * @OA\Get( - * path="/api/admin/calendars/index", - * tags={"日历管理"}, + * path="/api/admin/email-template/index", + * tags={"邮件模版管理"}, * summary="列表", * description="", * @OA\Parameter(name="is_export", in="query", @OA\Schema(type="string"), required=false, description="是否导出0否1是"), @@ -44,7 +45,6 @@ class EmailTemplateController extends BaseController * @OA\Parameter(name="sort_name", in="query", @OA\Schema(type="string"), required=false, description="排序字段名字"), * @OA\Parameter(name="sort_type", in="query", @OA\Schema(type="string"), required=false, description="排序类型"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"), - * @OA\Parameter(name="keyword", in="query", @OA\Schema(type="string"), required=true, description="关键词"), * @OA\Response( * response="200", * description="暂无" @@ -122,8 +122,8 @@ class EmailTemplateController extends BaseController /** * @OA\Get( - * path="/api/admin/calendars/show", - * tags={"日历管理"}, + * path="/api/admin/email-template/show", + * tags={"邮件模版管理"}, * summary="详情", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"), @@ -139,31 +139,29 @@ class EmailTemplateController extends BaseController { $all = \request()->all(); $messages = [ - 'id.required' => 'Id必填', + 'title.required' => '标题必填', ]; $validator = Validator::make($all, [ - 'id' => 'required' + 'title' => 'required' ], $messages); if ($validator->fails()) { return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]); } - $detail = $this->model->with('courseContent')->find($all['id']); + $detail = $this->model->find($all['id']); return $this->success($detail); } /** * @OA\Post( - * path="/api/admin/calendars/save", - * tags={"日历管理"}, + * path="/api/admin/email-template/save", + * tags={"邮件模版管理"}, * summary="保存", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="integer", format="int64"), required=true, description="ID(存在则更新,不存在则新增)"), - * @OA\Parameter(name="course_content_id", in="query", @OA\Schema(type="integer"), required=false, description="课程课堂ID"), - * @OA\Parameter(name="date", in="query", @OA\Schema(type="string", format="date"), required=false, description="日期(YYYY-MM-DD)"), - * @OA\Parameter(name="title", in="query", @OA\Schema(type="string", maxLength=255), required=false, description="标题"), - * @OA\Parameter(name="content", in="query", @OA\Schema(type="string", format="mediumtext"), required=false, description="内容"), - * @OA\Parameter(name="start_time", in="query", @OA\Schema(type="string", format="date-time"), required=false, description="开始时间(YYYY-MM-DD HH:MM:SS)"), - * @OA\Parameter(name="end_time", in="query", @OA\Schema(type="string", format="date-time"), required=false, description="结束时间(YYYY-MM-DD HH:MM:SS)"), + * @OA\Parameter(name="title", in="query", @OA\Schema(type="integer"), required=false, description="标题"), + * @OA\Parameter(name="description", in="query", @OA\Schema(type="string", format="date"), required=false, description="描述"), + * @OA\Parameter(name="content", in="query", @OA\Schema(type="string", maxLength=255), required=false, description="邮件内容"), + * @OA\Parameter(name="var", in="query", @OA\Schema(type="string", format="mediumtext"), required=false, description="变量描述"), * @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="认证token"), * @OA\Response( * response="200", @@ -178,8 +176,8 @@ class EmailTemplateController extends BaseController /** * @OA\Get( - * path="/api/admin/calendars/destroy", - * tags={"日历管理"}, + * path="/api/admin/email-template/destroy", + * tags={"邮件模版管理"}, * summary="删除", * description="", * @OA\Parameter(name="id", in="query", @OA\Schema(type="string"), required=true, description="id"), diff --git a/app/Http/Controllers/Mobile/UserController.php b/app/Http/Controllers/Mobile/UserController.php index 0efb971..76ab4ab 100755 --- a/app/Http/Controllers/Mobile/UserController.php +++ b/app/Http/Controllers/Mobile/UserController.php @@ -240,7 +240,8 @@ class UserController extends CommonController $query->where('start_date', '<=', $nowDate)->where('end_date', '>=', $nowDate); })->first(); if ($course_signs) { - $course_signs->qrcode = $doorRepository->getEmpQrCodeByCourse($course_signs, $out); + //$course_signs->qrcode = $doorRepository->getEmpQrCodeByCourse($course_signs, $out); + $course_signs->qrcode = ''; } // 是否有资格进入校友库 $enter_schoolmate = User::whereHas('courseSigns', function ($query) { diff --git a/app/Models/EmailRecord.php b/app/Models/EmailRecord.php index 089aedc..448d1d5 100755 --- a/app/Models/EmailRecord.php +++ b/app/Models/EmailRecord.php @@ -8,6 +8,10 @@ use Illuminate\Support\Facades\Cache; class EmailRecord extends SoftDeletesModel { + public function emailRecordUsers() + { + return $this->hasMany(EmailRecordUser::class, 'email_record_id', 'id'); + } } diff --git a/app/Models/EmailRecordUser.php b/app/Models/EmailRecordUser.php index 2e00a71..3df9e13 100755 --- a/app/Models/EmailRecordUser.php +++ b/app/Models/EmailRecordUser.php @@ -8,6 +8,10 @@ use Illuminate\Support\Facades\Cache; class EmailRecordUser extends SoftDeletesModel { + public function user() + { + return $this->hasOne(User::class, 'id', 'user_id'); + } } diff --git a/routes/api.php b/routes/api.php index af9ee1f..66d95b2 100755 --- a/routes/api.php +++ b/routes/api.php @@ -205,10 +205,16 @@ Route::group(["namespace" => "Admin", "prefix" => "admin"], function () { Route::get('calendars/destroy', [\App\Http\Controllers\Admin\CalendarsController::class, "destroy"]); // 邮件模版 - Route::get('email-template/index', [\App\Http\Controllers\Admin\EmailTemplatesController::class, "index"]); - Route::get('email-template/show', [\App\Http\Controllers\Admin\EmailTemplatesController::class, "show"]); - Route::post('email-template/save', [\App\Http\Controllers\Admin\EmailTemplatesController::class, "save"]); - Route::get('email-template/destroy', [\App\Http\Controllers\Admin\EmailTemplatesController::class, "destroy"]); + Route::get('email-template/index', [\App\Http\Controllers\Admin\EmailTemplateController::class, "index"]); + Route::get('email-template/show', [\App\Http\Controllers\Admin\EmailTemplateController::class, "show"]); + Route::post('email-template/save', [\App\Http\Controllers\Admin\EmailTemplateController::class, "save"]); + Route::get('email-template/destroy', [\App\Http\Controllers\Admin\EmailTemplateController::class, "destroy"]); + + // 邮件发送配置 + Route::get('email-record/index', [\App\Http\Controllers\Admin\EmailRecordController::class, "index"]); + Route::get('email-record/show', [\App\Http\Controllers\Admin\EmailRecordController::class, "show"]); + Route::post('email-record/save', [\App\Http\Controllers\Admin\EmailRecordController::class, "save"]); + Route::get('email-record/destroy', [\App\Http\Controllers\Admin\EmailRecordController::class, "destroy"]); });