完成医院和站点设置、套餐缓存

main
yanzai 1 year ago
parent f8a887dabc
commit 472e0fc47b

@ -0,0 +1,83 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use DateTime;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class ComboController extends Controller
{
//获取套餐列表
public function UpdateCombo()
{
$hospital_id =request('hospital');
date_default_timezone_set('PRC');
$data=[
"价格下限"=>"0","价格上限"=>"999999","性别"=>null,"妇检"=>false,"请求来源"=>"小程序"
];
$peis=new PEISApiController();
$info= $peis::Post('套餐查询',$hospital_id,$data,false);
$successCount=0;//成功的数量
if(count($info['data'])>0){
$combos=$info['data'];
foreach ($combos as $c_key=>$combo){
$item=[];
$comboDetail= $peis::Post('套餐详情查询',$hospital_id,['套餐Id'=>$combo['Id']],false);
if($comboDetail['code']!=0) return \Yz::echoError1("套餐详情查询失败");
$comboDetail_list=$comboDetail['data'][0]['包含项目'];
foreach ($comboDetail_list as $key=>$v){
$item[]=[
'id'=>$v['Id'],
'name'=>$v['名称'],
'desc'=>$v['简介'],
];
}
$item=json_encode($item,JSON_UNESCAPED_UNICODE);
$db_combo=DB::table('combos')->where(['combo_id'=>$combo['Id']])->first();
$comboData=[
'hospital_id'=>$hospital_id,
'combo_id'=>$combo['Id'],
'name'=>$combo['名称'],
'original_price'=>$combo['原价'],
'price'=>$combo['价格'],
'items'=>$item,
'updated_at'=>date('Y-m-d H:i:s'),
];
if(!!$db_combo){
//如果存在套餐
$u=DB::table('combos')->where(['combo_id'=>$combo['Id']])->update($comboData);
}else{
//如果不存在套餐
$u= DB::table('combos')->insert($comboData);
}
if($u){
$successCount++;
}else{
return \Yz::echoError1('更新失败');
}
}
$hospital=DB::table('hospital')->where(['id'=>$hospital_id])->first();
if(!!$hospital->frequency){
$date = new DateTime();
$date->modify('+'.$hospital->frequency.' minutes');
$formatted_time = $date->format('Y-m-d H:i:s');
DB::table("hospital")->where(['id'=>$hospital_id])->update([
'next_time'=>$formatted_time
]);
}
return \Yz::Return(true,'操作完成',['success_count'=>$successCount,'combos_count'=>count($combos)]);
}else{
return \Yz::echoError1('未查询到套餐');
}
}
}

@ -51,13 +51,27 @@ class HospitalController extends Controller
{
$id = request('id');
$info=DB::table('hospital')
->select('id','name','code','address','longitude','latitude','logo','dev','tel','status')
->where(['id'=>$id,'is_del'=>0])->first();
if(!!$info){
$info->api_list= $info->api_list?implode(',',json_decode( $info->api_list)):'';
return \Yz::Return(true,'查询成功',$info);
}else{
return \Yz::echoError1("查询失败");
}
}
public function SaveCacheInfo()
{
$Info =request('Info');
$ex=DB::table('hospital')->where(['id'=>$Info['id']])->update([
'frequency'=>$Info['frequency'],
'api_list'=>json_encode($Info['api_list'],JSON_UNESCAPED_UNICODE)
]);
if($ex){
return \Yz::Return(true,"保存成功",[]);
}else{
return \Yz::echoError1("保存失败");
}
}
//获取
}

@ -0,0 +1,57 @@
<?php
namespace App\Http\Controllers\API\Admin\YeWu;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class PEISApiController extends Controller
{
public static function Api($url_code, $code)
{
$url = 'https://dqgatjzx-wx.sixinyun.com';
$api['套餐详情查询'] = "{$url}/PEISCommon/QueryComboDetail/{$code}";
$api['自选项目查询'] = "{$url}/PEISCommon/QueryGroups/{$code}";
$api['套餐查询'] = "{$url}/PEISCommon/QueryCombos/{$code}";
return $api["{$url_code}"] ?? $url_code;
}
public static function Post($url_code, $hospital_id, $data, $print = false)
{
$hospital = DB::table('hospital')->where(['id'=>$hospital_id,'status'=>1,'is_del'=>0])->first();
if (!$hospital) return \Yz::echoError1('医院不存在');
$code = $hospital->code;
$url = self::Api($url_code, $code);
// self::RequestLog($url, $data, $code, $url_code);
$data_string = json_encode($data, JSON_UNESCAPED_UNICODE);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json; charset=utf-8',
'Content-Length: ' . strlen($data_string)
]);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
$res_string = curl_exec($ch);
curl_close($ch);
if (!json_decode($res_string, true)) {
return \Yz::Return(false,'获取失败', [
'url' => $url,
'data' => $data,
'res' => $res_string
]);
}
$res = json_decode($res_string, true);
return [
'code' => $res['ResultCode'],
'message' => $res['ResultContent'],
'data' => $res['Records']
];
}
}

@ -9,7 +9,7 @@ use App\Services\Admin\YeWu\HealthCalendarService;
class healthCalendarController extends Controller
{
public function getList(Request $request){
$userid = $request->get('userid');//中间件产生的参数
$userid = $request->get('userid');//中间件产生的参数1
$group = $request->get('role');//中间件产生的参数
$page =request('page');
$pageSize =request('pageSize');

@ -58,12 +58,13 @@ Route::group(['middleware'=>['checktoken','log'],'prefix'=>'v1'],function () {
Route::post('admin/HospitalSave','App\Http\Controllers\API\Admin\YeWu\HospitalController@Save');
Route::post('admin/HospitalGetList','App\Http\Controllers\API\Admin\YeWu\HospitalController@GetList');
Route::post('admin/GetBaseInfoDetail','App\Http\Controllers\API\Admin\YeWu\HospitalController@GetBaseInfoDetail');
Route::post('admin/SaveCacheInfo','App\Http\Controllers\API\Admin\YeWu\HospitalController@SaveCacheInfo');
});
Route::post('admin/UpdateCombo','App\Http\Controllers\API\Admin\YeWu\ComboController@UpdateCombo')->middleware('log');

@ -1,3 +1,3 @@
ENV = 'development'
VITE_APP_API = '/api/'
VITE_APP_FILE = 'http://tijian-composite'
VITE_APP_FILE = 'http://tjweb.pi.sa0.online:88'

@ -136,4 +136,13 @@ export const HospitalGetList = (data={}) => {
//获取医院基本信息
export const GetBaseInfoDetail = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/GetBaseInfoDetail',data:data})
}
//更新缓存
export const UpdateCombo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'admin/UpdateCombo',data:data})
}
//更新缓存
export const SaveCacheInfo = (data={}) => {
return axios({url:import.meta.env.VITE_APP_API+'v1/admin/SaveCacheInfo',data:data})
}

@ -6,7 +6,7 @@
<el-button type="primary" style="margin-left: 10px;" @click="Add()"></el-button>
</el-form-item>
</el-row>
<el-table :data="tableData" style="width: 100%;" row-key="id">
<el-table :data="tableData" style="width: 100%;" row-key="id" v-loading="loading">
<el-table-column prop="name" label="医院名称">
<template #default="scope">
<div style="display: flex;align-items: center;">
@ -23,11 +23,12 @@
<el-tag v-if="scope.row.status==0" class="ml-2" type="danger"></el-tag>
</template>
</el-table-column>
<el-table-column prop="next_time" label="下次更新时间" />
<el-table-column prop="created_at" label="创建时间" />
<el-table-column label="操作" >
<template #default="scope">
<el-button type="primary" @click="Add(scope.row)" :icon="Edit" circle />
<el-button size="small" @click="Add(scope.row)" >缓存配置</el-button>
<el-button size="small" @click="CacheConfig(scope.row)" >缓存配置</el-button>
</template>
</el-table-column>
</el-table>
@ -42,7 +43,7 @@
<el-form-item label="Logo">
<el-upload class="avatar-uploader" :action="upfileurl" :headers="headerObj"
:show-file-list="false" :on-success="upLoadSuccess">
<img v-if="logo" :src="logo" class="avatar" />
<img v-if="logo" :src="logo" class="avatar" style="width: 60px;" />
<el-icon v-else class="avatar-uploader-icon">
<Plus />
</el-icon>
@ -80,6 +81,30 @@
</span>
</template>
</el-dialog>
<el-dialog v-model="CacheDialogVisible" title="缓存配置" width="50%">
<el-form :model="Info" label-width="100px" v-loading="loading">
<el-form-item label="频率(分钟)">
<el-input v-model="Info.frequency" />
</el-form-item>
<el-form-item label="接口列表">
<el-input v-model="Info.api_list" type="textarea" />
</el-form-item>
<el-form-item label="下次更新时间">
{{Info.next_time}}
</el-form-item>
<el-form-item>
<el-button @click="updateCache()"></el-button>
</el-form-item>
</el-form>
<template #footer>
<span class="dialog-footer">
<el-button @click="CacheDialogVisible = false">取消</el-button>
<el-button type="primary" @click="SaveCache()">
确定
</el-button>
</span>
</template>
</el-dialog>
</div>
</div>
</template>
@ -96,7 +121,8 @@
UpFileUrl,
HospitalSave,
HospitalGetList,
GetBaseInfoDetail
GetBaseInfoDetail,
UpdateCombo,SaveCacheInfo
} from '@/api/api.js'
import {
Edit
@ -108,6 +134,7 @@
let pageSize = ref(15) //
let total = 0 //
let dialogVisible = ref(false)
let CacheDialogVisible=ref(false);
const PageSizeChange = (e) => { //
pageSize.value = e
GetList()
@ -123,7 +150,7 @@
}
let logo = ref('');
//
let BaseUrl=import.meta.env.VITE_APP_FILE
let BaseUrl=ref(import.meta.env.VITE_APP_FILE)
const upLoadSuccess = (res) => {
logo.value =BaseUrl.value + res.data
Info.value.logo = res.data
@ -135,31 +162,38 @@
hospital: '',
domain: '',
})
const GetDetail=(row)=>{
loading.value = true
GetBaseInfoDetail({
id: row.id
}).then(res => {
loading.value = false
if (res.status) {
Info.value=res.data
logo.value =BaseUrl.value + res.data.logo
} else {
ElMessage.error(res.msg)
}
})
}
const Add = (row = null) => {
dialogVisible.value = true
Info.value = {
status: 1,
}
if (row) {
loading.value = true
GetBaseInfoDetail({
id: row.id
}).then(res => {
loading.value = false
if (res.status) {
Info.value=res.data
} else {
ElMessage.error(res.msg)
}
})
GetDetail(row)
}
}
const GetList = () => {
loading.value = true
HospitalGetList({
page: currentPage.value,
pageSize: pageSize.value
}).then(res => {
loading.value = false
if (res.status) {
tableData.value = res.data.list
total = res.data.count
@ -194,6 +228,45 @@
}
return str.split(",")
}
const CacheConfig=(row)=>{
CacheDialogVisible.value=true,
GetDetail(row)
}
//
const updateCache=()=>{
loading.value=true
UpdateCombo({hospital:Info.value.id}).then(res=>{
loading.value=false
if(res.status){
ElMessage({
message: "套餐包含"+res.data.combos_count+"条项目,成功更新"+res.data.success_count+"条",
type: 'success',
})
CacheDialogVisible.value=false
GetList()
}else{
ElMessage.error(res.msg)
}
})
}
//
const SaveCache=()=>{
Info.value.api_list = toArray(Info.value.api_list)
loading.value=true
SaveCacheInfo({Info: Info.value}).then(res=>{
loading.value=false
if(res.status){
ElMessage({
message: "保存成功",
type: 'success',
})
CacheDialogVisible.value=false
}else{
ElMessage.error(res.msg)
}
})
}
onMounted(() => {
GetList()
})

@ -24,7 +24,7 @@ export default defineConfig({
port: 5174,
proxy: {
'/api': {
target: 'http://tijian-composite/api', // 实际的API服务器地址
target: 'http://tjweb.pi.sa0.online:88/api', // 实际的API服务器地址
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, '') // 如果API地址有前缀可以进行转写
}

Loading…
Cancel
Save