Merge branch 'master' of 47.101.48.251:/data/git/bd-fangke

master
lion 3 years ago
commit 621617a252

@ -2,10 +2,13 @@
namespace App\Http\Controllers\Admin;
use App\Helpers\ResponseCode;
use App\Models\Admin;
use App\Models\Department;
use App\Models\OperateLog;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Rap2hpoutre\FastExcel\FastExcel;
use Spatie\Permission\Models\Role;
class AdminController extends CommonController
@ -240,4 +243,65 @@ class AdminController extends CommonController
}
}
/**
* @OA\Post (
* path="/api/admin/import",
* tags={"后台管理"},
* summary="导入数据",
* description="",
* @OA\Parameter(name="file", in="query", @OA\Schema(type="object"), required=true, description="文件"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"),
* @OA\Response(
* response="200",
* description="导入用户"
* )
* )
*/
public function import(Request $request)
{
$file = $request->file('file');
//判断文件是否有效
if (!($request->hasFile('file') && $file->isValid())) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '文件不存在或无效']);
}
//获取文件大小
$img_size = floor($file->getSize() / 1024);
if ($img_size >= 5 * 1024) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '文件必须小于5M']);
}
//过滤文件后缀
$ext = $file->getClientOriginalExtension();
if (!in_array($ext, ['xls', 'xlsx', 'csv'])) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '仅支持xls/xlsx/csv格式']);
}
$tempFile = $file->getRealPath();
$dataArray = (new FastExcel)->import($tempFile)->toArray();
// 获取所有key
$keyList = array_keys($dataArray[0]);
if (!in_array('GID登录用户名', $keyList)) {
return $this->fail([ResponseCode::ERROR_BUSINESS, 'GID登录用户名字段不存在']);
}
if (!in_array('部门', $keyList)) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '部门字段不存在']);
}
if (!in_array('姓名', $keyList)) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '姓名字段不存在']);
}
if (!in_array('手机号码', $keyList)) {
return $this->fail([ResponseCode::ERROR_BUSINESS, '手机号码字段不存在']);
}
$list = [];
foreach ($dataArray as $key => $value) {
$departmentId = Department::where('name', $value['部门'])->value('id');
$whereArray = ['name' => $value['姓名']];
$updateDataArray = ['name' => $value['姓名'], 'username' => $value['GID登录用户名'],
'department_id' => $departmentId,
'mobile' => $value['手机号码'],
'password'=> \Illuminate\Support\Facades\Hash::make("Admin" . date("Y"))
];
Admin::updateOrCreate($whereArray, $updateDataArray);
}
return $this->success($list);
}
}

@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin;
use App\Models\Study;
use App\Models\StudyAsk;
use App\Models\StudyLog;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Validator;
use App\Helpers\ResponseCode;
@ -44,6 +45,36 @@ class StudyController extends CommonController
return $this->success($list);
}
/**
* @OA\Get(
* path="/api/admin/study/study-log",
* tags={"学习资料管理"},
* summary="学习记录",
* description="",
* @OA\Parameter(name="keyword", in="query", @OA\Schema(type="string"), required=false, description="关键词"),
* @OA\Parameter(name="page_size", in="query", @OA\Schema(type="string"), required=false, description="每页显示的条数"),
* @OA\Parameter(name="page", in="query", @OA\Schema(type="string"), required=false, description="页码"),
* @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\Response(
* response="200",
* description="暂无"
* )
* )
*/
public function studyLog()
{
$all = request()->all();
$list = StudyLog::with('user')->where(function ($query) use ($all) {
if (isset($all['keyword'])) {
$query->where('content', 'like', '%' . $all['keyword'] . '%');
}
})->orderBy($all['sort_name'] ?? 'id', $all['sort_type'] ?? 'desc')
->paginate($all['page_size'] ?? 20);
return $this->success($list);
}
/**
* @OA\Get(
* path="/api/admin/study/show",

@ -277,6 +277,9 @@ class VisitController extends CommonController
* @OA\Parameter(name="ask", in="query", @OA\Schema(type="string"), required=true, description="问题json"),
* @OA\Parameter(name="expire_day", in="query", @OA\Schema(type="string"), required=true, description="有效天数"),
* @OA\Parameter(name="type", in="query", @OA\Schema(type="string"), required=true, description="类型 init型"),
* @OA\Parameter(name="name", in="query", @OA\Schema(type="string"), required=true, description="名字"),
* @OA\Parameter(name="idcard", in="query", @OA\Schema(type="string"), required=true, description="身份证"),
* @OA\Parameter(name="mobile", in="query", @OA\Schema(type="string"), required=true, description="手机号"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"),
* @OA\Response(
* response="200",
@ -294,4 +297,39 @@ class VisitController extends CommonController
return $this->success($model);
}
/**
* @OA\Post(
* path="/api/mobile/visit/idcard-check",
* tags={"小程序-学习"},
* summary="保存学习记录",
* description="",
* @OA\Parameter(name="idcard", in="query", @OA\Schema(type="string"), required=true, description="身份证数组"),
* @OA\Parameter(name="token", in="query", @OA\Schema(type="string"), required=true, description="token"),
* @OA\Response(
* response="200",
* description="暂无"
* )
* )
*/
public function idcardCheck()
{
$all = request()->all();
$messages = [
'idcard.required' => '身份证数组必填'
];
$validator = Validator::make($all, [
'idcard' => 'required'
], $messages);
if ($validator->fails()) {
return $this->fail([ResponseCode::ERROR_PARAMETER, implode(',', $validator->errors()->all())]);
}
$model = new StudyLog();
$list = $model->whereIn('idcard', $all['idcard'])->pluck('idcard');
$diff = collect($all['idcard'])->diffAssoc($list);
if($diff->isNotEmpty()){
$diff = array_values($diff->toArray());
}
return $this->success($diff);
}
}

@ -10,4 +10,9 @@ class StudyLog extends CommonModel
'content'=>'json',
'ask'=>'json',
];
public function user(){
return $this->hasOne(User::class,'id','user_id');
}
}

@ -0,0 +1,33 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('study_logs', function (Blueprint $table) {
$table->string('name')->comment('姓名')->nullable();
$table->string('mobile')->comment('手机号')->nullable();
$table->string('idcard')->comment('身份证号')->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('study_logs', function (Blueprint $table) {
//
});
}
};

@ -23,6 +23,7 @@ Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
Route::get("admin/gate/user-list", [\App\Http\Controllers\Admin\GateController::class, "uerList"]);
Route::get("admin/gate/visit-list", [\App\Http\Controllers\Admin\GateController::class, "visitList"]);
Route::get("admin/gate/use-code", [\App\Http\Controllers\Admin\GateController::class, "useCode"]);
Route::post("admin/import", [\App\Http\Controllers\Admin\AdminController::class, "import"]);
// 后台
Route::group(["namespace" => "Admin", "prefix" => "admin", "middleware" => "sanctum.jwt:admin,rbac"], function () {
@ -47,6 +48,7 @@ Route::group(["namespace" => "Admin", "prefix" => "admin", "middleware" => "sanc
// 学习资料管理
Route::get("study/index", [\App\Http\Controllers\Admin\StudyController::class, "index"]);
Route::get("study/study-log", [\App\Http\Controllers\Admin\StudyController::class, "studyLog"]);
Route::get("study/show", [\App\Http\Controllers\Admin\StudyController::class, "show"]);
Route::post("study/save", [\App\Http\Controllers\Admin\StudyController::class, "save"]);
Route::get("study/destroy", [\App\Http\Controllers\Admin\StudyController::class, "destroy"]);
@ -97,7 +99,9 @@ Route::group(["namespace" => "Mobile", "prefix" => "mobile", "middleware" => "sa
Route::get('visit/visit-area', [\App\Http\Controllers\Mobile\VisitController::class, 'visitArea']);
Route::get('visit/visit-time', [\App\Http\Controllers\Mobile\VisitController::class, 'visitTime']);
Route::get('visit/ask-log', [\App\Http\Controllers\Mobile\VisitController::class, 'askLog']);
Route::post('visit/ask-save', [\App\Http\Controllers\Mobile\VisitController::class, 'askSave']);
Route::post('visit/idcard-check', [\App\Http\Controllers\Mobile\VisitController::class, 'idcardCheck']);
});

Loading…
Cancel
Save