ASP+ACCESS基于WEB车辆管理系统

3.1  系统需求分析

该过程是个不断认识不断细化的过程。这里所要完成的工作是深入描述软件的功能和性能,确定软件的设计限制和软件同其他系统元素的接口细节,从而奠定软件的开发基础。

  1. 性能需求:该系统中,管理员模块只有管理人员才能对其进行操作,一般的登陆用户无权操作,系统管理人员要进行身分验证才能进入界面操作。登陆驾驶员也要进行身份验证方可进行操作操作。
  2. 功能需求:我们设计的系统要完成的功能模块如下:

一: 车辆管理(车辆维修管理,车辆报废管理等)

二: 车辆管理(车辆建立,车辆查询,车辆删除,车辆变更查询等.)

三: 车辆运营管理(车辆运营表,车辆运营查询,清空车辆运营表)

四:驾驶员管理(驾驶员管理,驾驶员查询等)

五:耗材管理(对于油,车的耗材类管理)

六:计划管理(训练,保养,维修等预定的计划)

七:系统维护(系统备份,系统还原,系统检查)

  1. 环境需求:客户端应有IE或其它浏览器,服务器端应有Windows2000,WindowsNT,或Windows98 ,服务器软件应有pws或IIS,硬件要求386以上的计算机。
  2. 界面需求:本软件是面向大众,界面友好,操作简单灵活,根据界面上的提示便可完成一系列动作。

3.3  系统结构

该系统的整个结构图如下所示:

各功能模块是相互独立的,一个模块的内部与另一个模块的内部是不相关的,每个模块留出一个接口供其他模块调用。或者使用POST方式进行表单提交,用?后面带函数和参数的方式,进行模块与模块间的信息传递。有部分模块是通用的,比如连接数据库模块,它需要经常用到,所以独立出来是最好的选择。

4.1 登陆模块

本模块所要实现在功能是重要的,对于用户来说,登陆前后的区别在于:登陆之前不是本的成员,无权操作,无权浏览;之后有权查询也有权操作。

用户提交信息用HTML表单完成,需文件Index.asp。系统自动登陆用ASP操作数据库完成,需要连接文件User_Login.asp。

用户在Index.asp文件中输入个人信息,提交到user_login.asp文件。并由这个ASP文件进行数据库动作,根据不同的动作结果,系统将作出不同的信息反馈给用户。

这是登陆处理模块的中心,user_login.asp文件很简单:直接调用其中的登陆函数action进行动作,结构如图所示。

     登陆程序被调用后,先检查该用户是否已经登陆过,按是否登陆进行分枝选择:对已经是登陆的用户显示相应信息,或将新用户加入的数据库中,即为该用户登陆。

判断条件是通过action函数实现的,该函数利用提取的表单字段值对数据库进行查询。如果查询到结果。则表明该用户经在数据库中,即该用户是登陆了。如果记录集为空则表明该用户是非法登陆。

编辑修改管理员是通过user_login.asp来实现的,这个方法是模块的中心,也比较复杂,其结构如图所示。

车辆查询登记:

代码分析:

<% 

       If request("action") = "save" Then

              Call save()

       ElseIf request("action") = "edit" Then

              Call edit()

       ElseIf request("action") = "del" Then

              Call del()

       ElseIf request("action") = "outlist" Then

              Call outlist()

       ElseIf request("action") = "saveoutlist" Then

              Call saveoutlist()

       Else

              Call list()

       End If 

End Sub

Sub list()%>

<script language="javascript">

function browse(id){location.href='<%=filename%>?action=edit&mode=browse&id='+id;}

function del(id){if(confirm("删除车辆信息,将会删除与其相关的所有信息\n确实要删除吗?")){location.href='<%=filename%>?action=del&id='+id;}}

function edit(id){location.href='<%=filename%>?action=edit&mode=update&id='+id;}

</script>

<%

sql="select * from [车辆基本特征] where Id >0"

If Request("zd")<>"" then

       sql = sql & " and " & Request("zd") & " = '" & Request("keyword") & "'"

End if

If Request("order") = "" Then

       sql = sql & " order by id desc"

Else

       If split(Request("order"),"|")(1) = "1" Then

              sql = sql & " order by "&split(Request("order"),"|")(0)&" asc"

       Else

              sql = sql & " order by "&split(Request("order"),"|")(0)&" desc"

       End If

End If

'================================

'新建一个类

'================================

Set jumbotpage=new ShowMorePage

jumbotpage.getconn=conn

jumbotpage.getsql = sql

jumbotpage.pagesize=pagesize

set rs=jumbotpage.getrs()

%>

<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">

       <tr>

              <td><%jumbotpage.showpage()%></td>

       </tr>

</table>

<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">

       <tr class="bg_tabletop" align=center>

              <td width=* align="center"><b><%Call OrderBy("车号","车号")%></b></td>

            <td width=* align="center"><b><%Call OrderBy("厂牌型号","厂牌型号")%></b></td>

            <td width=* align="center"><b><%Call OrderBy("车辆类型","车辆类型")%></b></td>

            <td width=* align="center"><b><%Call OrderBy("车辆颜色","车辆颜色")%></b></td>

            <td width=* align="center"><b><%Call OrderBy("所属单位","所属单位")%></b></td>

              <td width=* align="center"><b>操作</b></td>

       </tr>

<%

If rs.recordcount > 0 Then

       for i=1 to jumbotpage.GetCurPageNum '当前页的记录数目

              %>

       <tr class="bg_tablebody" align=center>

              <td><a href=Menu_Vehicle_Circumstance_Introduction.asp?action=edit&mode=browse&id=<%=rs("Id")%>><% =rs("车号")%></a></td>

              <td><% =rs("厂牌型号")%></td>

              <td><% =rs("车辆类型")%></td>

              <td align="center"><% =rs("车辆颜色")%></td>

              <td><% =rs("所属单位")%></td>

              <!--#include file="Inc/Menu_Operate.asp"-->

       </tr>

              <%

              rs.movenext

       Next

End If

%>

</table>

<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">

       <tr>

              <td><%jumbotpage.showpage()%></td>

       </tr>

</table>

<form action="<%=filename%>?action=list" method=get name="thisform" onSubmit="return Validator.Validate(this,2)">

<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain" id='searchpage'>

<tr class="bg_tabletop" align=center>

<td colspan="2"><b>查询记录</b></td>

</tr>

<tr class="bg_tablebody">

<td width="150" align=right>字段:<select size="1" name="zd">

<option value="" selected>==全部==</option>

<option value="车号" <%If Request("zd") = "车号" Then%>selected<%End If%>>车号</option>

<option value="车辆类型" <%If Request("zd") = "车辆类型" Then%>selected<%End If%>>车辆类型</option>

<option value="所属单位" <%If Request("zd") = "所属单位" Then%>selected<%End If%>>所属单位</option>

</select></td>

<td>= <input type=text name="keyword" size=25 value='<% =Request("keyword")%>'></td>

</tr>

</table>

<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">

<tr class="bg_tablebottom">

<td align=center><input title='搜索' type="image" src="Images/btn/Search1.gif" class='picbutton'></td>

</tr>

</table>

</form>

<%End Sub%>

<%

Sub del()

       Set rs = conn.execute("select * from [车辆基本特征] where id=" & Request("id"))

       ch = rs("车号")

       Set rs = Nothing

       'conn.execute("delete from [技术检查状态记录] where [车号]='" & ch & "'")

       'conn.execute("delete from [车辆保险] where [车号]='" & ch & "'")

       'conn.execute("delete from [事故记录] where [车号]='" & ch & "'")

       'conn.execute("delete from [车辆变更登记] where [车号]='" & ch & "'")

       'conn.execute("delete from [油料登记] where [车号]='" & ch & "'")

       'conn.execute("delete from [车辆保险] where [车号]='" & ch & "'")

       'conn.execute("delete from [派车登记] where [车号]='" & ch & "'")

       'conn.execute("delete from [车辆使用成本] where [车号]='" & ch & "'")

       'conn.execute("delete from [车辆使用杂费] where [车号]='" & ch & "'")

       'conn.execute("delete from [车辆年审情况] where [车号]='" & ch & "'")

       conn.execute("delete from [车辆基本特征] where id=" & Request("id"))

       Response.write "<script>history.go(-1);</script>"

End Sub

%>

<%Sub edit()

Dim readonly,mode,id

mode=Request("mode")

id=Request("id")

Set rs = server.CreateObject ("Adodb.recordset")

sql="select * from [车辆基本特征]"

If mode="update" Then

       sql = sql & " where id=" & id

       readonly=""

ElseIf mode="insert" Then

       readonly=""

Else

       sql = sql & " where id=" & id

       readonly="readonly"

End If

rs.open sql,conn,3,3

%>

<form action='<%=filename%>?action=save&mode=<%=mode%>&id=<%=id%>' method=post name='thisform' onSubmit='return Validator.Validate(this,2)'>

<div id='printpage'>

<table width='100%' cellspacing='1' cellpadding='5' align=center class='bg_tablemain'>

<tr class="bg_tablebody">

<td width="19%" align=right>车号:</td>

<td width="31%"><input type=text name=ch size=12 value="<%=FormatValue1(mode,rs("车号"))%>" <%=readonly%> dataType="CarNumber" msg="车号不正确"> <%If mode <>"browse" Then%><font color="#FF0000">*</font>(格式:军A-00000)<%End If%></td>

<td width="19%" align=right>编配日期:</td>

<td width="31%"><input type=text name="bprq" size=12 value="<%=FormatValue1(mode,rs("编配日期"))%>" <%=readonly%> dataType="Date" msg="日期格式为“<%=Date()%>”">

<%If mode<>"browse" Then%>

  <input type="button" onClick="SelectDate('bprq')" value="选择">

  <input type="button" onClick="CancelDate('bprq')" value="取消">

<%End If%>

</td>

</tr>

<tr class="bg_tablebody">

<td align=right>厂牌型号:</td>

<td><div style="position:absolute;width:0px;height:0px;overflow:visible;">

<div style="position:absolute;top:21px;left:0px;visibility:hidden;text-align:left;overflow:visible;" id=cpxhdiv>

<iframe marginWidth=0 marginHeight=0 src="Select_Option.asp?tablename=车辆基本特征&itemname=厂牌型号&idname=cpxh" frameBorder=0 width=180 scrolling=yes height=60></iframe>

</div>

</div>

<div style="visibility:visible;"><input name="cpxh" type="text" id="cpxh" value="<%=FormatValue1(mode,rs("厂牌型号"))%>" size=25 <%=readonly%> onClick="ShowOrHidden('cpxhdiv')"></div>

</td>

<td align=right>车辆类型:</td>

<td><div style="position:absolute;width:0px;height:0px;overflow:visible;">

<div style="position:absolute;top:21px;left:0px;visibility:hidden;text-align:left;overflow:visible;" id=cllxdiv>

<iframe marginWidth=0 marginHeight=0 src="Select_Option.asp?tablename=车辆基本特征&itemname=车辆类型&idname=cllx" frameBorder=0 width=120 scrolling=yes height=60></iframe>

</div>

</div>

<div style="visibility:visible;"><input name="cllx" type="text" id="cllx" value="<%=FormatValue1(mode,rs("车辆类型"))%>" size=12 <%=readonly%> onClick="ShowOrHidden('cllxdiv')"></div>

</td>

</tr>

<tr class="bg_tablebody">

<td align=right>总金额:</td>

<td><input type=text name=zje size=10 value="<%=FormatValue1(mode,rs("总金额"))%>" <%=readonly%>>

  (万元)</td>

<td align=right>车架号:</td>

<td><input type=text name=cjh size=25 value="<%=FormatValue1(mode,rs("车架号"))%>" <%=readonly%>></td>

 </tr>

 <tr class="bg_tablebody">

<td align=right>发动机号:</td>

<td><input type=text name=fdjh size=25 value="<%=FormatValue1(mode,rs("发动机号"))%>" <%=readonly%>></td>

<td align=right>总质量:</td>

<td><input type=text name=zzl size=8 value="<%=FormatValue1(mode,rs("总质量"))%>" <%=readonly%>>

  (吨)</td>

 </tr>

 <tr class="bg_tablebody">

<td align=right>核定载质量:</td>

<td><input type=text name=hdzzl size=6 value="<%=FormatValue1(mode,rs("核定吨位"))%>" <%=readonly%>>

  (吨)</td>

<td align=right>核定座位:</td>

<td><input type=text name=hdzw size=6 value="<%=FormatValue1(mode,rs("核定座位"))%>" <%=readonly%>>

  (人)</td>

 </tr>

 <tr class="bg_tablebody">

<td align=right>车辆颜色:</td>

<td colspan="3"><div style="position:absolute;width:0px;height:0px;overflow:visible;">

<div style="position:absolute;top:21px;left:0px;visibility:hidden;text-align:left;overflow:visible;" id=csysdiv>

<iframe marginWidth=0 marginHeight=0 src="Select_Option.asp?tablename=车辆基本特征&itemname=车辆颜色&idname=csys" frameBorder=0 width=60 scrolling=yes height=60></iframe>

</div>

</div>

<div style="visibility:visible;"><input name="csys" type="text" id="csys" value="<%=FormatValue1(mode,rs("车辆颜色"))%>" size=8 <%=readonly%> onClick="ShowOrHidden('csysdiv')"></div>

</td>

</tr>

<tr class="bg_tablebody">

<td align=right>所属单位:</td>

<td colspan="3"><div style="position:absolute;width:0px;height:0px;overflow:visible;">

<div style="position:absolute;top:21px;left:0px;visibility:hidden;text-align:left;overflow:visible;" id=ssdwdiv>

<iframe marginWidth=0 marginHeight=0 src="Select_Option.asp?tablename=车辆基本特征&itemname=所属单位&idname=ssdw" frameBorder=0 width=100 scrolling=yes height=60></iframe>

</div>

</div>

<div style="visibility:visible;"><input name="ssdw" type="text" id="ssdw" value="<%=FormatValue1(mode,rs("所属单位"))%>" size=12 <%=readonly%> onClick="ShowOrHidden('ssdwdiv')"> <%If mode <>"browse" Then%><font color="#FF0000">*</font>(如:业务科...)<%End If%></div>

</td>

</tr>

<tr class="bg_tablebody">

<td align=right>备注:</td>

<td colspan="3"><input type=text name=bz size=40 value="<%=FormatValue1(mode,rs("备注"))%>" <%=readonly%>></td>

</tr>

<%If mode <>"insert" Then%>

<tr class="bg_tablebody">

<td align=right>车辆照片:</td>

<td colspan=5><%If mode<>"insert" Then%><img id='crzp' src="<%=rs("车辆照片")%>" border="1" width="320" height="240"><%Else%><img src="picture/blank.gif" border="1" width="300" height="180"><%End If%></td>

</tr>

<%End If%>

<%If mode="update" Then%>

<tr class="bg_tablebody" id=adv1 style="display:">

<td align=right>车辆照片:</td>

<td colspan=5><iframe marginWidth=0 marginHeight=0 src="Pic_upload.asp?path1=Vehicle&path2=crzp&fileid=<%=rs("id")%>" frameBorder=0 width=400 scrolling=no height=20></iframe></td>

</tr>

<%End If%>

</table>

</div>

<table width=100% cellspacing="1" cellpadding="5" align=center class="bg_tablemain">

<tr class="bg_tablebottom">

<td align=center><!--#include file="Inc/Btn_Bttm.asp"-->

&nbsp;&nbsp;

<%If mode="update" Then%>

<input id=advcheck name="showit" type=checkbox value=1 οnclick=showpic() checked>

<span id=advance1>相关图片上传</span>

<%End If%>

3.车辆统计查询:

代码分析:

<%

dim total(100,2)

Set rs = server.CreateObject ("Adodb.recordset")

sql="select [所属单位] from [车辆基本特征] group by [所属单位]"

rs.open sql,conn,3,3

j = 0

hj = 0

If rs.eof Then

       Response.write "单位无车辆"

Else

       do while not rs.eof

              j = j + 1

              sybm = rs("所属单位")

              total(j,2) = sybm

              number = 0

              sql ="select * from [车辆基本特征] where [所属单位]='"&sybm&"'"

              Set rss = server.CreateObject ("Adodb.recordset")

              rss.open sql,conn,3,3

              If not rss.eof Then

                     number = rss.recordcount

              End If

              total(j,1)=number

              hj = hj + number

              Rs.movenext

       Loop

       CountMy = hj

       total_no=j

       all_width = total_no * 100 + 30

       total_width = total_no * 100

       Call table1(total,20,34,all_width,300,total_width)

       Set rs = nothing

       Set rs = server.CreateObject ("Adodb.recordset")

       sql="select [车辆类型],count(车辆类型) from [车辆基本特征] group by [车辆类型]"

       rs.open sql,conn,3,3

       str = ""

       n = 0

       do while not rs.eof

              If n > 0 Then str = str & ","

              str = str & rs(0) & ":" & rs(1) & "辆"

              n = n + 1

              Rs.movenext

       Loop

Set rs = nothing

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/14416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS7离线安装Nginx

目录 1. 安装gcc2. 安装g3. 安装openssl4. 安装pcre5. 安装zlib6. 安装Nginx7. 启动nginx8. 开放80端口9. 访问测试10. 设置开机自启 Nginx离线安装需要依赖gcc、g环境&#xff0c;安装前要先检查linux系统中是否自带gcc和g&#xff0c;如果没有就需要先进行安装。 然后再安装o…

【MySQL精通之路】InnoDB(4)-架构图

下图显示了构成InnoDB存储引擎体系结构的内存和磁盘结构。有关每个结构的信息 请参阅“内存中的InnoDB结构”和“磁盘上的InnoDB结构”。

Jmeter+prometheus+grafana性能测试

文章目录 Jmeterprometheusgrafana性能测试背景目标设计思路原理案例启发 Jmeterprometheusgrafana性能测试 背景 ​ 在现代社会中&#xff0c;人们对于应用程序的响应速度和性能体验提出了越来越高的要求。无论是电子商务网站、社交媒体平台还是企业级软件系统&#xff0c;都…

6款网站登录页(附带源码)

6款网站登录页 效果图及部分源码123456 领取源码下期更新预报 效果图及部分源码 1 部分源码 <style>* {margin: 0;padding: 0;}html {height: 100%;}body {height: 100%;}.container {height: 100%;background-image: linear-gradient(to right, #fbc2eb, #a6c1ee);}.l…

ipad协议849最新版

ipad协议其实就是模拟ipad端微信的人工操作&#xff0c;跟微信服务器通信。协议的关键点主要是PB协议、mmtls、06加密算法、rqt算法、aes加密、rsa加密等&#xff0c;只要把这些点拿下&#xff0c;就可以模拟官方微信的所有功能了&#xff0c;还可以模拟android、pc、mac端的登…

flutter开发实战-美颜前后对比图效果实现

flutter开发实战-美颜前后对比图效果实现 最近使用代码中遇到了图片前后对比&#xff0c;这里使用的是CustomClipper来实现 一、CustomClipper 我们实现CustomClipper子类来实现美颜后的图片裁剪功能 getClip()是用于获取剪裁区域的接口&#xff0c;由于图片大小是6060&am…

Flash与EEPROM

文章目录 1. 分类2. 工作原理2.1 擦除操作2.2 写入操作 3. 参考资料 1. 分类 2. 工作原理 在存储数据之前&#xff0c;先擦除存储区域&#xff08;写成全1&#xff09;&#xff0c;进行存储时&#xff0c;将对应位写为0。 注&#xff1a;这里编程不能反向&#xff0c;若写错了…

嵌入式岗位,你有能力,你同样可以拿到高薪资

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 就算你进去了&#xff0…

用手机打印需要下载什么软件

在快节奏的现代生活中&#xff0c;打印需求无处不在&#xff0c;无论是工作文件、学习资料还是生活小贴士&#xff0c;都可能需要一纸呈现。然而&#xff0c;传统的打印方式往往受限于时间和地点&#xff0c;让人倍感不便。今天&#xff0c;就为大家推荐一款便捷又省钱的手机打…

做OZON怎么选择物流,OZON物流Xingyuan

随着跨境电商的蓬勃发展&#xff0c;OZON作为俄罗斯领先的电商平台&#xff0c;吸引了大量中国卖家入驻。然而&#xff0c;物流作为跨境电商的关键环节&#xff0c;其选择对于卖家来说至关重要。本文将围绕“做OZON怎么选择物流”这一问题&#xff0c;深度解析OZON物流Xingyuan…

“云加”万里信,共赴山海约,解密协同云官网设计之路

门户的设计改版是怎样的&#xff1f;本文从浪潮海岳云加案例出发&#xff0c;手把手带你认识完整系统的门户设计升级。 一、升级背景 1、云加官网作为云加产品对外唯一官方门户&#xff0c;承载整个云加业务售前及售中的核心渠道&#xff0c;是用户接触云加产品的重要渠道之一…

解决GoLand无法Debug

goland 调试的的时候提示如下错误 WARNING: undefined behavior - version of Delve is too old for Go version 1.22.3 (maximum supported v 其实个原因是因为正在使用的Delve调试器版本太旧&#xff0c;无法兼容当前的Go语言版本1.22.3。Delve是Go语言的一个调试工具&#…

构建稳健、高效与安全的企业级API网关

在现代企业信息化建设中&#xff0c;各种微服务架构系统以及不同类型的管理系统广泛兴起&#xff0c;平台中的数据安全逐渐成为企业重视的部分&#xff0c;在iPaaS系统中&#xff0c;一个名为“企业级API网关”的功能出现在大众眼中&#xff0c;随着企业信息化建设的不断深入&a…

vue3+ts+vant4 实现购物车 前端代码

一、功能效果 二、前端代码 购物车的vue代码 <template><van-nav-bar left-text"返回" title"购物车" click-left"onClickLeft"><template #right><van-popover v-model:show"showPopover" placement"bot…

Transormer(2)-位置编码

位置编码公式 偶数位置用sin,奇数位置用cos. d_model 表示token的维度&#xff1b;pos表示token在序列中的位置&#xff1b;i表示每个token编码的第i个位置&#xff0c;属于[0,d_model)。 torch实现 import math import torch from torch import nn from torch.autograd im…

移动云ECS主机:未来云计算的驱动力

文章目录 前言一、移动云云主机ECS云主机ECS产品优势云主机ECS产品功能云主机ECS应用场景 二、移动云云主机ECS选购三、移动云云主机ECS配置四、移动云云主机ECS牛刀小试五、移动云云主机ECS安装部署消息中间件RocketMQ云主机ECS安装RocketMQ云主机ECS配置RocketMQ云主机ECS启动…

ubuntu22部署Docker私有仓库Harbor (http https方式)

harbor日志&#xff1a;/var/log/harbor 前置安装配置 需先安装docker和docker-compose&#xff1a; 0.配置清华大学apt源并安装docker #信任 Docker 的 GPG 公钥: sudo apt-get install ca-certificates curl gnupg curl -fsSL https://download.docker.com/linux/ubunt…

网络安全快速入门(十五) linux用户管理

14.1 前言 前面我们已经大概了解了Linux的网络链接&#xff0c;今天我们来看看Linux用户管理的一些基础操作&#xff0c;话不多说&#xff0c;我们来开始吧&#xff01;&#xff01; 14.2 用户的基础知识 我们先了解一些有关linux用户的一些基础知识&#xff0c;我们从Linux用…

HQL面试题练习 —— 互相关注

目录 1 题目2 建表语句3 题解 1 题目 现有用户关注者列表记录表 t_user_follower&#xff0c;有两个字段&#xff0c;用户ID&#xff08;user_id&#xff09;&#xff0c;关注者列表&#xff08;follower_ids)&#xff0c;关注者列表中是关注用户的用户ID&#xff0c;数据样例如…

sharded jedis pipelined 执行后 数据并未存入redis

前言 因为历史原因&#xff0c;在某个同步菜单操作的方法中先清除缓存&#xff0c;然后在初始化缓存。本来很正常的逻辑&#xff0c;但是这个清除是db查询获取所有的菜单 然后循环一条条删除 然后在db查询有效的菜单操作 在循环一条条插进去 经统计这个菜单操作大概有个7千个 …