修改日志记录方式

main
yanzai 2 years ago
parent 426761164f
commit 4dc01cea38

@ -50,7 +50,8 @@ class AppointmentController extends Controller
'id_card_num'=>$info['id_card_num'],
'sex'=>$info['sex'],
'tel'=>$info['tel'],
'content'=>json_encode($info['content']),
//'content'=>json_encode($info['content']),
'content'=>isset($info['content'])?json_encode($info['content'],JSON_UNESCAPED_UNICODE):'',
'fee_type'=>$info['fee_type']
]);

@ -21,7 +21,7 @@ class PersonController extends Controller
$s=app()->make(PersonService::class);
return $s->GetPersonRecode(['openid'=>$openid,'group'=>$group]);
}
//获取用户pdf
//获取用户体检详情和pdf
public function GetPersonReportDetail(){
$sfz =request('sfz');
$info=DB::table('examination_records')->where(['id_card_num'=>$sfz]) ->orderBy('id', 'desc')->first();
@ -36,4 +36,27 @@ class PersonController extends Controller
}
}
//用户扫码跳转输入身份证和电话 查询用户体检详情和pdf
public function H5GetPersonReportDetail(){
$get_info =request('info');
if(!isset($get_info['sfz'])) return \Yz::echoError1('身份证不能为空');
if(!isset($get_info['tel'])) return \Yz::echoError1('电话不能为空');
$info=DB::table('examination_records')->where(['id_card_num'=>$get_info['sfz'],'tel'=>$get_info['tel']]) ->orderBy('id', 'desc')->first();
if($info){
$item=DB::table('report_result_item')
->where(['examination_id'=>$info->id])
->select(['item_name','item_result','flag'])->get();
$info->items=$item;
$accessTimeout = \JWT::GetGetSecretTimeOut();
$refreshTimeout = \JWT::GetRefreshTokenTimeOut();
$access_token = \JWT::BuildJWT('yz','access',$get_info['sfz'],'mH5user',$accessTimeout);
$refresh_token = \JWT::BuildJWT('yz','refresh',$get_info['sfz'],'',$refreshTimeout);
return \Yz::Return(true,'',['info'=>$info,'token'=>$access_token,'refresh_token'=>$refresh_token]);
}else{
return \Yz::echoError1('未找到相关体检信息');
}
}
}

@ -17,20 +17,23 @@ class Log
*/
public function handle(Request $request, Closure $next)
{
$insert_id=0;
$insert_id=self::requestLog($request,$insert_id); //记录请求时日志,不含返回信息
$response = $next($request);
//dd($response);
$content = $response->getContent();
$data = json_decode($content, true); // 解码响应内容为关联数组
// 在关联数组中添加 code 字段
$data['code'] = 200;
// $data['code'] = 200;
$data['code'] = $response->getStatusCode();
$modifiedContent = json_encode($data); // 编码修改后的关联数组为 JSON 字符串
$response->setContent($modifiedContent);
if(env('REQUEST_LOG') and $response->getStatusCode()==200){ //如果返回状态为200进行log
$ip=self::getTrustedProxiesIp(); //真实ip
$request_header=$request->header(); //请求头
//dd($response);
// dd($response);
$response_data = $response->getData(); //返回data,json格式
$post_data=$request->post(); //post请求数据
$get_data=$request->query(); //get请求
@ -43,7 +46,7 @@ class Log
'post_data'=>$post_data,
'get_data'=>$get_data,
'request_url'=>$request_url,
]);
],$insert_id);
}
@ -53,4 +56,23 @@ class Log
\request()->setTrustedProxies(\request()->getClientIps(),Request::HEADER_X_FORWARDED_FOR);
return \request()->getClientIp();
}
public static function requestLog($request,$insert_id){ //记录请求时日志,不含返回信息
if(env('REQUEST_LOG') ){ //如果返回状态为200进行log
$ip=self::getTrustedProxiesIp(); //真实ip
$request_header=$request->header(); //请求头
$post_data=$request->post(); //post请求数据
$get_data=$request->query(); //get请求
$request_url=$request->getPathInfo();//访问的接口地址
$log=app()->make(LogService::class);
return $log->RequestLog([
'ip'=>$ip,
'request_header'=>$request_header,
'post_data'=>$post_data,
'get_data'=>$get_data,
'request_url'=>$request_url,
],$insert_id);
}
}
}

@ -27,6 +27,10 @@ class HealthCheckupService
if(count($org_id)!=1) return \Yz::echoError1('机构码不存在');
$status=false;
//检查体检流水号是否存在,存在禁止再次插入。
$check_cunzai=DB::table('examination_records')->where('tijian_num',$CheckupInfo['tijian_num'])->get();
if(count($check_cunzai)>0) return \Yz::echoError1('此体检号已经存在,禁止创建');
DB::beginTransaction(); // 开始事务
try {
// 执行数据库操作
@ -42,9 +46,7 @@ class HealthCheckupService
// }
//检查体检流水号是否存在,存在禁止再次插入。
$check_cunzai=DB::table('examination_records')->where('tijian_num',$CheckupInfo['tijian_num'])->get();
if(count($check_cunzai)>0) return \Yz::echoError1('此体检号已经存在,禁止创建');
$img_url='';
if(isset($CheckupInfo['head_img'])){
$date = date("Ymd");

@ -3,13 +3,15 @@ namespace App\Services;
use Illuminate\Support\Facades\DB;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use mysql_xdevapi\Exception;
class LogService
{
public function RequestLog($arr){ //记录请求日志
public function RequestLog($arr,$id){ //记录请求日志
self::CheckTableName();
$table_name='zz_request_log_' . date('ym');
$response_data =self::JsonEncode($arr['response_data']);
$response_data =isset($arr['response_data'])?self::JsonEncode($arr['response_data']):'';
$header_data = self::JsonEncode($arr['request_header']);
$post_data = self::JsonEncode($arr['post_data']);
$get_data = json_encode($arr['get_data'], JSON_UNESCAPED_UNICODE);
@ -17,8 +19,28 @@ class LogService
$date = date("Y-m-d H:i:s", $milliseconds / 1000);
$formatted_date = sprintf("%s.%03d", $date, $milliseconds % 1000);
$i=DB::insert("insert into ".$table_name." (request_ip, response_data,header_data,post_data,get_data,request_url,create_time,update_time)
values (?,?,?,?,?,?,?,?)",[$arr['ip'],$response_data,$header_data,$post_data,$get_data,$arr['request_url'],$formatted_date,$formatted_date]);
// $i=DB::insert("insert into ".$table_name." (request_ip, response_data,header_data,post_data,get_data,request_url,create_time,update_time)
// values (?,?,?,?,?,?,?,?)",[$arr['ip'],$response_data,$header_data,$post_data,$get_data,$arr['request_url'],$formatted_date,$formatted_date]);
// var_dump($i);
if($id>0){
return DB::table($table_name)->where('id', $id)->update([
'response_data' => $response_data,
]);
}else{
return DB::table($table_name)->insertGetId([
'request_ip' => $arr['ip'],
'response_data' => $response_data,
'header_data' => $header_data,
'post_data' => $post_data,
'get_data' => $get_data,
'request_url' => $arr['request_url'],
'create_time' => $formatted_date,
'update_time' => $formatted_date
]);
}
}
public static function CheckTableName(){ // 查看日志表是否存在,每月一个表,如果没有就创建
$table_name='zz_request_log_' . date('ym');
@ -45,7 +67,7 @@ class LogService
$str_len = mb_strlen(json_encode($post_datum, JSON_UNESCAPED_UNICODE));
$str_size = $str_len / 1024;
if ($str_size > 10) {
$post_data["$key"] = 'Row size too large';
$post_data->$key= 'Row size too large';
}
}
$post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE);

@ -54,6 +54,7 @@ Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1'],function () {
Route::post('wxGetOpenid','App\Http\Controllers\API\mH5\LoginController@wxGetOpenid')->middleware('log'); //mH5手机用户获取openid
Route::post('AppLogin','App\Http\Controllers\API\mH5\LoginController@AppLogin')->middleware('log'); //APP嵌套h5登录参数APP内用户唯一id
Route::post('H5GetPersonReportDetail','App\Http\Controllers\API\mH5\PersonController@H5GetPersonReportDetail')->middleware('log');//用户扫码跳转输入身份证和电话 查询用户体检详情和pdf
Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1/mH5'],function () { //手机H5路由分组
Route::post('Register','App\Http\Controllers\API\mH5\PersonController@Register'); //手机H5端用户注册
Route::post('GetPersonRecode','App\Http\Controllers\API\mH5\PersonController@GetPersonRecode'); //查询用户本年度体检记录

@ -1,4 +1,4 @@
ENV = 'production'
VITE_APP_API = 'https://www.yanzai.vip/common/laravel/public/api/'
VITE_APP_FILE = 'https://www.yanzai.vip/common/laravel/public'
VITE_APP_API = 'http://223.71.106.251:33581/common/la/public/api/'
VITE_APP_FILE = 'http://223.71.106.251:33581/common/la/public'

@ -51,7 +51,7 @@
</el-table-column>
<el-table-column prop="date" label="预约时间" >
<template #default="scope">
{{scope.row.date.substring(0,10)}} (<span style="color:#1cb9d1">{{scope.row.time}}</span>)
<span v-if="scope.row.date"> {{scope.row.date.substring(0,10)}} (<span style="color:#1cb9d1">{{scope.row.time}}</span>)</span>
</template>
</el-table-column>
<!-- <el-table-column label="操作" width="100">

@ -1,5 +1,5 @@
ENV = 'production'
VITE_APP_API = 'https://www.yanzai.vip/common/laravel/public/api/'
VITE_APP_WXCODE_URL = 'http://www.yanzai.vip/common/laravel/public/wxLogin/production'
VITE_APP_FILE_URL= 'http://www.yanzai.vip/common/laravel/public/'
VITE_APP_API = 'http://223.71.106.251:33581/common/la/public/api/'
VITE_APP_WXCODE_URL = 'http://223.71.106.251:33581/common/la/public/wxLogin/production'
VITE_APP_FILE_URL= 'http://223.71.106.251:33581/common/la/public/'
VITE_APPID = "wx526430047d34c85c"

@ -34,6 +34,10 @@ export const UpFile = (data) => {
export const GetPersonReportDetail = (data) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/mH5/GetPersonReportDetail',data:data})
}
//用户扫码跳转输入身份证和电话 查询用户体检详情和pdf
export const H5GetPersonReportDetail = (data) => {
return axios({url:import.meta.env.VITE_APP_API+'H5GetPersonReportDetail',data:data})
}
//APP嵌套h5登录
export const AppLogin = (data) => {

@ -60,6 +60,10 @@ const router = createRouter({
path: '/previewReport',
name: 'PreviewReport',
component: () => import('../views/PreviewReport.vue')
},{
path: '/personReportLogin',
name: 'PersonReportLogin',
component: () => import('../views/PersonReportLogin.vue')
}]
})

@ -0,0 +1,133 @@
<template>
<div class="LoginMain">
<div class="info">
<div class="tip">查询体检信息</div>
<div class="label">身份证</div>
<div>
<van-field v-model="info.sfz" placeholder="请输入用户名" />
</div>
<div class="label">电话</div>
<div>
<van-field v-model="info.tel" placeholder="请输入用户名" />
</div>
<van-button type="primary" class="button" round @click="SearchInfo()"></van-button>
</div>
</div>
</template>
<script setup>
import {
ref,
onMounted
} from 'vue';
import {
useRoute,
useRouter
} from "vue-router"
import { H5GetPersonReportDetail} from "@/api/api.js";
import { showToast } from 'vant';
const route = useRoute()
const router = useRouter();
const login = () => {
loading.value=true
window.location.replace(import.meta.env.VITE_APP_WXCODE_URL)
}
let loading=ref(false)
let info=ref({
sfz:'',
tel:''
})
let buttonText=ref('开始预约')
const SearchInfo=()=>{
if(info.value.sfz=='' || info.value.tel==''){
showToast('请输入身份证和手机号码');
return false
}
H5GetPersonReportDetail({info:info.value}).then(res => {
loading.value=false
if (res.status) {
sessionStorage.setItem('sfz', info.value.sfz);
sessionStorage.setItem('token', res.data.token);
sessionStorage.setItem('refreshToken', res.data.refresh_token);
var token = sessionStorage.getItem('token');
if (token == res.data.token){
router.push('/showReport')
}
} else {
showToast(res.msg);
}
})
}
onMounted(() => {
let tijian_num =route.query.tijian_num
let logintype =route.query.logintype
sessionStorage.setItem('loginType', logintype);
sessionStorage.setItem('tijian_num', tijian_num);
let sloginType=sessionStorage.getItem('loginType');
console.log(sloginType)
if(sloginType=='undefined'){
console.log('denglu')
buttonText.value='开始预约'
}else{
console.log('report')
buttonText.value='查看报告'
}
//router.replace('/selectOrganization')
//window.location.href="http://localhostcommon/wxLogin"
})
</script>
<style scoped>
.LoginMain {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
background-image: url('../assets/image/login.jpg');
background-size: 100%;
background-repeat: no-repeat;
background-color: #afeefd;
background-position: top center;
}
.button{
width: 60%;
margin-top: 50%;
background-color: #33cdc9;
color:#fff;
border: 3px solid #e6f5fd;
}
.info {
position: relative;
top: -10px;
/* border: 1px solid red; */
border-radius: 10px;
background-color: #fff;
padding: 20px 20px;
}
.info .van-field {
border-bottom: 1px solid #ccc;
}
.info .label{
font-size: 18px;
color: #3f3f3f;
font-weight: 700;
margin: 20px auto 0px auto;
}
.button{
width: 100%;
background-color: #33cdc9;
border: 0px;
margin-top: 40px;
}
</style>
Loading…
Cancel
Save