如何使用ssm实现科技银行业务管理系统+vue

news2024/12/25 13:06:38

@TOC

ssm743科技银行业务管理系统+vue

第一章 绪论

1.1 研究背景

在现在社会,对于信息处理方面,是有很高的要求的,因为信息的产生是无时无刻的,并且信息产生的数量是呈几何形式的增加,而增加的信息如何存储以及短时间分析检索,也是有时效性的,所以,不管是任何的企业和个人,只要需要处理信息,必然是要寻找到一个适合自己的解决方案,而软件开发商和数据库提供商就是为了解决这些问题。相比之前人工信息处理的水平,现代的信息处理方法是完胜以前的信息处理方法。开发一个符合自己需求的信息管理系统,可以把整个信息处理的过程变得很有规范,并且很有水准,让整个信息处理变成一个自动化的过程,并且在数据处理结果之中直接设定好检索标准,或者是多条件检索标准,通过数据分析获得自己需要的内容,这都是信息化的好处。当一切信息数据存在小小的存储介质之中,那么数据迁移备份的重要性也变得更加简洁,可以设置自动化远程备份,自动化远程处理,不管是使用过程还是维护过程,都会变得更加的高效和整洁,最重要的成本上面的控制,可以极限减少,开源节流,不外如是,减少社会资源的浪费,也是计算机技术的存在的一个优势。所以,对于科技银行业务信息的管理,一方面为了提高科技银行业务信息的管理水平,另一方面为了提高科技银行业务信息的维护水平,科技银行业务管理系统的开发就显得十分有必要了。

1.2 研究意义

科技银行业务管理系统不仅可以保证信息安全的前提下提高信息处理水平,更重要的是提高了信息使用者以及所有者的管理水平。信息的出现,必须经过人为的处理,人们才能接受和使用,所以提高了信息处理水准就显得极为重要。采用计算机技术,会发现在数据传递方面,有着急速的传递,不管是距离多远,都可以实时抵达,不管数据量多大,都能在短时间进行处理完毕,让人为的可出错性变低,工作量变少。科技银行业务管理系统的出现,让科技银行业务信息的管理跟上了信息时代的步伐,不仅可以在全时间段提供着稳定的处理速度以及处理水准,更能完美的保证了数据的可靠性。不仅如此,科技银行业务管理系统在使用上面也是得心应手,操作起来极其的简单,只要认识字就行,页面设计相当不错,不用过多的考虑或者寻找,就能使用。总而言之,科技银行业务管理系统在信息资源的处理方面,表现是极其的出色,不仅提高了管理水准,也让数据的迁移变得更加方便。

1.3 研究内容

本文总共分六章来对科技银行业务管理系统进行介绍,研究内容具体安排如下:

第一章:通过资料查询,和对调研资料的总结,对科技银行业务管理系统的背景和科技银行业务管理系统的意义进行说明;

第二章:选择适合本系统的技术和工具并对其进行说明;

第三章:分析科技银行业务管理系统开发可行性问题,研究本系统的性能,对本系统使用者的功能进行分析。

第四章:细分功能,利用功能结构图来展示系统的详细功能,同时设计数据库,包括E-R图和数据表的设计;

第五章:展示科技银行业务管理系统的实现界面和实现的功能;

第六章:测试科技银行业务管理系统,检测系统的功能能否可用,以及发现并解决系统功能运行的问题。

第二章 开发环境与技术

科技银行业务管理系统的开发需要的软件环境和技术下面将介绍一下。

2.1 Java语言

Java语言流行至今,依然是后台程序开发人员从业者需要学习的技能之一,并且可以不断的进行深造,可以用Java解决各种各样的问题。Java是一种面向对象的语言,这一点对Java语言的发展功不可没。万物皆对象,很生动的对自然存在的各种环境,各种问题提供了一个解决思路,人类对世界的认知就是从一个一个事物慢慢领悟的,对行为的认知就是事物之间的联系进行认知的,对各种事物之间的联系组成了人类对世界的认知。而Java语言关于编程描述的方法,符合人类对自然界的认知方法。一切自然界的信息如果要进行存储处理,如果只是信息存储的话,也需要对其定义,信息即数据,进而推导,符合数据要求格式的类型,就是符合人类认知事物的类型。Java语言面向对象就是这样理解的,符合人类正常思维。Java不仅仅是运行不挑环境,开发符合人类正常认知,并且还衍生出其他的好的特性,比如安全系数比较高,因为不牵扯到硬件指针,不存在直接访问内存,这样应对计算机病毒的入侵有着很好的防范。Java是一种很好的开发语言。

2.2 JDK简介

JDK这个是Java开发所必须的东西。Java开发必须用JDK,运行必须用JRE,而JDK往往携带了JRE环境,也就是说只要安装了JDK就不需要再去重复性的安装JRE,所以JDK这款开发Java的必备品也就很受欢迎。一台电脑上可以安装多个版本的JDK,并且可以对不同的项目指定不同的JDK,这一点做的相当的友好。如果一台电脑默认没有安装过JDK是不需要配置环境变量,就可以直接访问JDK的,这一点对于初学者来讲,起码配置环境变量方面就方便了很多。JDK目前最新版本是JDK17,版本已经很高了,但是不管是学习还是使用,一般都喜欢用比较稳定的版本,比如JDK1.7或者JDK1.8版本。

2.3 Eclipse开发工具

对于用于开发Java语言的工具来讲,从一开始就是MyEclipse,因为是开源免费的,许多教学机构或者是学校,如果大批量用收费的开发工具来进行讲课,是一种资金的浪费,所以选择MyEclipse作为开发工具,是许多Java学习人员的入门必备。但是随着Java语言功能越来越多,MyEclipse虽然是免费的,但是如果项目需要某些插件的话,需要手动去对应插件的官网进行下载,有时候插件还会被屏蔽,不仅仅在配置开发环境方面造成一定的困难,还会让开发的雄心变弱。Eclipse就在这样的情况下诞生了,秉承于MyEclipse的操作习惯,把一些常用的插件给集成到一个软件里,比如常用的JDK,Tomcat等插件,直接安装Eclipse就可以使用,不需要另外的安装其他的插件,会让使用过MyEclipse的人员用起来很顺手,操作也比较简单。在公司里进行开发也有很多程序员用的都是Eclipse作为开发工具,有效的提升开发效率。可以同时开发许多项目,不同的项目可以选择不同的工作空间,每个独立的工作空间都可以进行单独的配置,可以对Tomcat端口进行修改,也可以在同一个Tomcat里面启动很多个网站项目,在操作方面更加便捷。

第三章 系统分析

一般来说,开发系统不是一拍脑袋就解决的事情,需要有个严谨的分析,并且逐条实现的过程,而系统分析只是系统开发的前奏而已,后续还会有相关的系统实现,系统设计等。

3.1可行性分析

系统是否可以正常实现操作流程,实现操作目的,符合操作流程,这些都可以提前进行分析论证。提前进行分析在开发之前是很重要的,并且进行书面记载,有助于开发流程的缜密性。

3.1.1运行可行性分析

开发科技银行业务管理系统必然是有运行条件的,开发条件和运行条件都可以进行分析。首先从运行角度上讲,只是作为一个科技银行业务管理系统的运行环境,不是超大型商业项目,只是运行一个毕业设计,数据量有限,并发条件有限,所以用常规的内存大于4G,CPU双核以上,基本上就能满足运行的硬件需要,硬盘的话常规的大于60G的即可。

3.1.2技术可行性分析

一切可以实现B/S模式的技术很多,而正好在学校就学习了相关的开发技术,采用已经有基础的学习来进行扩展更丰富的功能,从技术上面是不需要太多的重复性投入,可以更快的进行开发,技术可行。

3.1.3经济可行性分析

经济主要考虑投入与获利之间的比例问题,科技银行业务管理系统开发投入只需要现有的,不必要另外购买的电脑就可以进行使用,一切开放性所用到的工具和资料都可以在图书馆以及互联网上面得到相应的免费资讯,这些都决定了经济上面的投入是不需要太多的。项目功能属于常规功能,没有多并发超用户同时访问的需求,所以也不需要考虑太多的资金投入,所以经济可行。

通过各个方面的研究分析,确定了开发之前这些可行性分析是很有必要的,增加了开发的信心,提高了开发效率,让开发的流程更加的具体化。

3.2系统流程分析

本项目在处理数据方面,必须规定其流程,要让每个步骤都要符合设定预期。注册的结果可以说只有两种结果,一个是成功,一个是失败,成功就会把注册时候输入的数据写入到数据库表里存储,如果失败则提示提示失败,并且不写入数据库。因为两种结果,所以要对数据的合法性进行判断,而数据的合法性需要对每条信息进行判断,主要对哪条信息判断,这些都要有流程。

图3.1用户注册流程图

登录是所有系统必不可少的功能之一。虽然不起眼,但是却是一件不可缺少的事情,登录的作用主要代表着当前操作用户是某人,当然,登录的时候是需要输入账号和密码的,都正确才可以登录,登录的时候会对输入的信息进行判断的。

图3.2 用户登录流程图

数据的添加是一件比较严肃的事情,必须判断正确与否,不然随意的添加可能会导致数据库设定与实际数据输入要求不一致,导致数据丢失的问题,所以必须根据数据设定要求,在输入数据的时候就进行判断输入信息是否合法。

图3.3 信息添加流程图

3.3 系统性能分析

在软件开发的环节,有一个很重要的步骤,那就是关于性能需求分析的环节。如果不对软件的性能需求进行分析和预估,那么后果是很严重的。比如国内的12306,如果只是一个用户登录注册,查票购票退票,那么很容易开发出来,但是同时几百万人次的不同操作,如果没有对这个需求的提前分析预估,还是按照十个八个的并发操作进行软件开发,那肯定是上线就崩溃直接就下线的结果。所以说性能需求是很重要的一个环节。一般系统需求从下面几个角度同时考虑。

3.3.1系统的安全性

一个系统是否安全,不仅仅只是考虑用户的密码是否经过了加密,也更需要考虑数据存储的安全性,比如可以把数据库专门放到一个局域网里的服务器,让主服务器代码远程连接数据库,因为代码服务器与数据服务器的物理分离,如果代码服务器被破解,起码用户数据还有机会保存。

3.3.2系统易维护性

系统长时间运营,肯定需要进行维护。那么维护所需要带来的是性能的提升还是并发数量的提升,这些都是需要考虑的,系统不仅仅要容易维护,数据容易迁移备份,还要符合其他特性。

3.3.3系统可扩展性

系统的功能不可能一成不变的,随时可能会加一些其他的模块,比如有些商场用户积分的问题,这些开始都没有这项设定,后续想加的功能,那么就需要在不改变其原来的功能的前提下,对积分相关模块进行升级,这些就是系统设计之初需要考虑的问题,尽量开发模块化。

综上所述,性能需求必须在符合业务逻辑之外,考虑是否会出现其他的各种情况的一种分析,还必须能解决可能会出现的问题的一种需求分析。所以说,系统的性能需求分析是必不可少的一个环节。

3.4系统功能分析

系统功能主要针对主要模块功能进行分析,暂时不考虑非典型性的问题,只要能满足正确操作流程即可。

科技银行业务管理系统设置的角色有管理员,审核人员,业务人员,用户等。

(1)管理员

管理员对贷款,理财产品,审核人员,业务人员,银行卡,存款,取款,转账,账户注销等信息进行管理。对管理员的功能进行分析之后,将使用图3.4的管理员用例图来描述管理员的功能。

图3.4 管理员用例图

(2)审核人员

审核人员负责审核贷款购买,审核理财产品购买,审核银行卡补办,审核存款,取款,转账,账户注销等信息。对审核人员的功能进行分析之后,将使用图3.5的审核人员用例图来描述审核人员的功能。

图3.5 审核人员用例图

(3)业务人员

业务人员新增贷款信息,新增理财产品信息,管理贷款和理财产品信息。对业务人员的功能进行分析之后,将使用图3.6的业务人员用例图来描述业务人员的功能。

图3.6 业务人员用例图

(4)用户

用户新增并管理理财产品购买以及新增并管理贷款购买信息,新增并管理存款,取款,转账以及账户注销等信息。对用户的功能进行分析之后,将使用图3.7的用户用例图来描述用户的功能。

图3.7 用户用例图

第四章 系统设计

4.1功能模块设计

本小节运用功能结构图来描述管理员具备的详细的功能,对管理员的功能结构图绘制结果如图4.1所示。管理员对贷款,理财产品,审核人员,业务人员,银行卡,存款,取款,转账,账户注销等信息进行管理。

图4.1 管理员功能结构图

本小节运用功能结构图来描述审核人员具备的详细的功能,对审核人员的功能结构图绘制结果如图4.2所示。审核人员负责审核贷款购买,审核理财产品购买,审核银行卡补办,审核存款,取款,转账,账户注销等信息。

图4.2 审核人员功能结构图

本小节运用功能结构图来描述业务人员具备的详细的功能,对业务人员的功能结构图绘制结果如图4.3所示。业务人员新增贷款信息,新增理财产品信息,管理贷款和理财产品信息。

图4.3 业务人员功能结构图

本小节运用功能结构图来描述用户具备的详细的功能,对用户的功能结构图绘制结果如图4.4所示。用户新增并管理理财产品购买以及新增并管理贷款购买信息,新增并管理存款,取款,转账以及账户注销等信息。

图4.4 用户功能结构图

4.2数据库设计

在系统后台选择数据库的时候,首先第一条就是要满足使用需要,只要满足使用需要,再对数据库的使用友好度和性能上进行分析。选择当前分布最广发的关系型数据库是完全能满足需要的,并且在数据的设计上也有完美的设计顺序,最重要的是符合人们的直观要求。

4.2.1数据库E-R图

下面主要是描述E-R图模型的。对于用户的需求,要具体化,比如有个角色需要有登录,那么最基本的设定必须有账号和密码,那么像姓名,性别其他的对象关系,其实是有从属关系的,通过这样具体化分析,可以得到数据的格式要求,并且能得到数据之间的直接关系。然后可以通过专业的Visio工具来进行E-R图的创建,遵守约定的E-R图表达方式,就可以对数据进行图标形式的描述,并且之间的关系更容易理解。

(1)图4.4即为理财产品购买这个实体所拥有的属性值。

图4.4 理财产品购买实体属性图

(2)图4.5即为审核人员这个实体所拥有的属性值。

图4.5 审核人员实体属性图

(3)图4.6即为用户这个实体所拥有的属性值。

图4.6 用户实体属性图

  1. 图4.7即为贷款购买这个实体所拥有的属性值。

图4.7 贷款购买实体属性图

(5)图4.8即为上面介绍的实体中存在的联系。

图4.8 实体间关系E-R图

4.2.2 数据库表结构

在程序开发的过程中,系统设计里面包含有数据库的设计,一般都在功能设计的后面进行数据设计,为什么有这样的顺序呢?那是有原因的。数据库设计不能凭空想象,必须符合数据的定义,而数据只是在使用过程之中产生,其实并没有具体化的表现,所以要把数据进行结构的整理,字段的规划。比如用户账号可能是中文或者英文,以及数字形式存在,更或者可能包含一些符号,那么账号字段的设计就只能是文本形式存在,不能是数据形式或者是时间形式存在,以此类推,数据表结构的设计就是在对系统的具体实现数据进行描述规划的一种行为。所以在这个环节尤其要注意,否则可能使用过程中会发现很多不可预料的问题。

对本系统的数据库的要求就是,要严格遵循数据实现原则,符合数据定义范式。对每个表都要进行具体分析,并且表之间的关系更应该有逻辑性,如果违反前面的要求,那么数据很有可能出现问题,所以要把数据之间的关系用E-R图形式画出来,这样理解起来更直观,更不容易出错,效率也更高。

表4.1 贷款表

字段注释类型
id (主键)主键int(11)
yewurenyuan_id业务人员int(11)
daikuan_uuid_number贷款编号varchar(200)
daikuan_name贷款名称varchar(200)
daikuan_huankuan还款日期varchar(200)
daikuan_types贷款类型int(11)
daikuan_jine贷款总额decimal(10,2)
daikuan_yue贷款月份int(11)
daikuan_meiyue_jine每月还款decimal(10,2)
daikuan_lilv利率varchar(200)
daikuan_content贷款介绍text
insert_time发布时间timestamp
create_time创建时间timestamp

表4.2 贷款购买表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
yinhangka_id银行卡int(11)
daikuan_id贷款int(11)
daikuan_goumai_uuid_number贷款购买编号varchar(200)
insert_time购买时间timestamp
daikuan_goumai_yesno_types审核状态int(11)
daikuan_goumai_yesno_text审核意见text
daikuan_goumai_shenhe_time审核时间timestamp
create_time创建时间timestamp

表4.3 理财产品表

字段注释类型
id (主键)主键int(11)
yewurenyuan_id业务人员int(11)
licaicanpin_uuid_number理财产品编号varchar(200)
licaicanpin_name理财产品名称varchar(200)
licaicanpin_types理财产品类型int(11)
licaicanpin_jine每份/元decimal(10,2)
licaicanpin_fenshu剩余份数int(11)
licaicanpin_content理财产品介绍text
insert_time发布理财产品时间timestamp
create_time创建时间timestamp

表4.4 理财产品购买表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
licaicanpin_id理财产品int(11)
licaicanpin_goumai_uuid_number理财产品购买编号varchar(200)
licaicanpin_goumai_fenshu购买份数decimal(10,2)
licaicanpin_goumai_huafei花费总额decimal(10,2)
insert_time购买时间timestamp
licaicanpin_goumai_yesno_types审核状态int(11)
licaicanpin_goumai_yesno_text审核意见text
licaicanpin_goumai_shenhe_time审核时间timestamp
create_time创建时间timestamp

表4.5 审核人员表

字段注释类型
id (主键)主键int(11)
username账户varchar(200)
password密码varchar(200)
shenherenyuan_uuid_number审核人员工号varchar(200)
shenherenyuan_name审核人员姓名varchar(200)
shenherenyuan_phone审核人员手机号varchar(200)
shenherenyuan_id_number审核人员身份证号varchar(200)
shenherenyuan_photo审核人员头像varchar(200)
sex_types性别int(11)
shenherenyuan_email电子邮箱varchar(200)
create_time创建时间timestamp

表4.6 管理员表

字段注释类型
id (主键)主键bigint(20)
username用户名varchar(100)
password密码varchar(100)
role角色varchar(100)
addtime新增时间timestamp

表4.7 业务人员表

字段注释类型
id (主键)主键int(11)
username账户varchar(200)
password密码varchar(200)
yewurenyuan_uuid_number业务员工号varchar(200)
yewurenyuan_name业务人员姓名varchar(200)
yewurenyuan_phone业务人员手机号varchar(200)
yewurenyuan_id_number业务人员身份证号varchar(200)
yewurenyuan_photo业务人员头像varchar(200)
sex_types性别int(11)
yewurenyuan_email电子邮箱varchar(200)
create_time创建时间timestamp

表4.8 银行卡表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
yinhangka_uuid_number银行卡卡号varchar(200)
kaihudi_types开户地int(11)
yinghangka_money卡余额decimal(10,2)
yinhangka_phone绑定手机号varchar(200)
yinhangka_email绑定邮箱varchar(200)
kaihu_time开户时间timestamp
yinhangka_content银行卡备注text
insert_time添加时间timestamp
create_time创建时间timestamp

表4.9 银行卡补办表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
yinhangka_id银行卡int(11)
yinhangkabuban_uuid_number补办编号varchar(200)
insert_time申请时间timestamp
yinhangkabuban_content补办原因text
yinhangkabuban_yesno_types审核状态int(11)
yinhangkabuban_yesno_text审核意见text
yinhangkabuban_shenhe_time审核时间timestamp
create_time创建时间timestamp

表4.10 银行卡金额记录表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
yinhangka_id银行卡int(11)
yinhangka_jinejilu_uuid_number记录编号varchar(200)
jilu_types记录类型int(11)
yinhangka_jinejilu_money记录金额decimal(10,2)
yinhangka_jinejilu_content记录备注text
insert_time记录时间timestamp
create_time创建时间timestamp

表4.11 用户表

字段注释类型
id (主键)主键int(11)
username账户varchar(200)
password密码varchar(200)
yonghu_uuid_number用户唯一编号varchar(200)
yonghu_name用户姓名varchar(200)
yonghu_phone用户手机号varchar(200)
yonghu_id_number用户身份证号varchar(200)
yonghu_photo用户头像varchar(200)
sex_types性别int(11)
zhuxiao_types是否注销int(11)
yonghu_email电子邮箱varchar(200)
create_time创建时间timestamp

表4.12 预约存款表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
yinhangka_id银行卡int(11)
shenherenyuan_id审核人员int(11)
yuyuecunkuan_uuid_number预约编号varchar(200)
yuyuecunkuan_money存款金额decimal(10,2)
yuyuecunkuan_content存款详情text
insert_time申请时间timestamp
yuyuecunkuan_time预约日期date
yuyuecunkuan_yesno_types审核状态int(11)
yuyuecunkuan_yesno_text审核意见text
yuyuecunkuan_shenhe_time审核时间timestamp
create_time创建时间timestamp

表4.13 预约取款表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
yinhangka_id银行卡int(11)
yuyuequkuan_uuid_number预约编号varchar(200)
yuyuequkuan_money取款金额decimal(10,2)
yuyuequkuan_content取款详情text
insert_time申请时间timestamp
yuyuequkuan_time预约日期date
yuyuequkuan_yesno_types审核状态int(11)
yuyuequkuan_yesno_text审核意见text
yuyuequkuan_shenhe_time审核时间timestamp
create_time创建时间timestamp

表4.14 账户注销表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
zhanghuzhuxiao_uuid_number注销编号varchar(200)
insert_time申请时间timestamp
zhanghuzhuxiao_content注销原因text
zhanghuzhuxiao_yesno_types审核状态int(11)
zhanghuzhuxiao_yesno_text审核意见text
zhanghuzhuxiao_shenhe_time审核时间timestamp
create_time创建时间timestamp

表4.15 转账表

字段注释类型
id (主键)主键int(11)
yonghu_id用户int(11)
yinhangka_id银行卡int(11)
shenherenyuan_id审核人员int(11)
zhuanzhang_uuid_number转账流水号varchar(200)
shoukuanfang_name收款方姓名varchar(200)
shoukuanfang_zhanghu收款方账户varchar(200)
zhuanzhang_money转账金额decimal(10,2)
zhuanzhang_content转账备注text
insert_time转账时间timestamp
zhuanzhang_types转账状态int(11)
zhuanzhang_yesno_types审核状态int(11)
zhuanzhang_yesno_text审核意见text
zhuanzhang_shenhe_time审核时间timestamp
create_time创建时间timestamp

打开新的 phpMyAdmin 窗口

第五章 系统实现

程序开发人员对功能具体实现后,都要描述自己编写的功能实现,一般都通过文字描述功能,实现用图片截图的形式出现,通过这样的设定,可以让更多得人明白系统的实现结果,达到更容易理解程序操作的目的。

5.1 管理员功能实现

5.1.1 审核人员管理

管理员点击导航栏的审核人员管理链接就进入审核人员管理界面。审核人员管理界面如图5.1所示。本功能允许管理员对审核人员的手机号码,性别,审核人员姓名进行修改,查看,添加。

图5.1 审核人员管理界面

5.1.2 业务人员管理

管理员点击导航栏的业务人员管理链接就进入业务人员管理界面。业务人员管理界面如图5.2所示。本功能允许管理员对业务人员的头像,业务人员手机号,业务人员姓名等信息进行修改,添加。

图5.2 业务人员管理界面

5.1.3 银行卡管理

管理员点击导航栏的银行卡管理链接就进入银行卡管理界面。银行卡管理界面如图5.3所示。本功能允许管理员查看银行卡卡号,开户地,卡余额,绑定手机号,开户时间等信息,可以查看银行卡详情。

图5.3 银行卡管理界面

5.2 审核人员功能实现

5.2.1 理财产品购买管理

审核人员点击导航栏的理财产品购买管理链接就进入理财产品购买管理界面。理财产品购买管理界面如图5.4所示。审核人员对用户购买的理财产品进行审核,查看用户购买的理财产品的详情。

图5.4 理财产品购买管理界面

5.2.2 银行卡补办管理

审核人员点击导航栏的银行卡补办管理链接就进入银行卡补办管理界面。银行卡补办管理界面如图5.5所示。本功能允许审核人员审核用户申请补办的银行卡信息,以及查看银行卡补办的详情。

图5.5 银行卡补办管理界面

5.2.3 取款管理

审核人员点击导航栏的取款管理链接就进入取款管理界面。取款管理界面如图5.6所示。本功能允许审核人员审核用户取款信息,查看用户取款金额等信息。

图5.6 取款管理界面

5.3 业务人员功能实现

5.3.1 贷款管理

业务人员点击导航栏的贷款管理链接就进入贷款管理界面。贷款管理界面如图5.7所示。本功能允许业务人员新增贷款业务,查询贷款信息,查看贷款总额,每月还款信息,利率等信息。

图5.7 贷款管理界面

5.3.2 理财产品管理

业务人员点击导航栏的理财产品管理链接就进入理财产品管理界面。理财产品管理界面如图5.8所示。本功能允许业务人员新增理财产品业务,查看理财产品剩余份数,理财产品名称等信息。

图5.8 理财产品管理界面

5.4 用户功能实现

5.4.1 银行卡管理

用户点击导航栏的银行卡管理链接就进入银行卡管理界面。银行卡管理界面如图5.9所示。本功能允许用户新增银行卡信息,查看银行卡的开户地,开户时间,绑定邮箱等信息。

图5.9 银行卡管理界面

5.4.2 存款管理

用户点击导航栏的存款管理链接就进入存款管理界面。存款管理界面如图5.10所示。本功能允许用户选择银行卡,然后登记存款信息,查看存款详情,包括存款金额,预约日期,申请时间,审核意见等信息。

图5.10存款管理界面

5.4.3 理财产品购买管理

用户点击导航栏的理财产品购买管理链接就进入理财产品购买管理界面。理财产品购买管理界面如图5.11所示。本功能允许用户新增理财产品购买信息,查看理财产品购买详情。

图5.11理财产品购买管理界面

5.4.4 贷款购买管理

用户点击导航栏的贷款购买管理链接就进入贷款购买管理界面。贷款购买管理界面如图5.12所示。本功能允许用户新增贷款购买信息,查看贷款购买审核状态以及审核意见,查看贷款购买详情。

图5.12贷款购买管理界面

YuyuecunkuanServiceImpl.java
package com.service.impl;

import com.utils.StringUtil;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import com.dao.YuyuecunkuanDao;
import com.entity.YuyuecunkuanEntity;
import com.service.YuyuecunkuanService;
import com.entity.view.YuyuecunkuanView;

/**
 * 预约存款 服务实现类
 */
@Service("yuyuecunkuanService")
@Transactional
public class YuyuecunkuanServiceImpl extends ServiceImpl<YuyuecunkuanDao, YuyuecunkuanEntity> implements YuyuecunkuanService {

    @Override
    public PageUtils queryPage(Map<String,Object> params) {
        if(params != null && (params.get("limit") == null || params.get("page") == null)){
            params.put("page","1");
            params.put("limit","10");
        }
        Page<YuyuecunkuanView> page =new Query<YuyuecunkuanView>(params).getPage();
        page.setRecords(baseMapper.selectListView(page,params));
        return new PageUtils(page);
    }


}

YinhangkaJinejiluController.java

package com.controller;

import java.io.File;
import java.math.BigDecimal;
import java.net.URL;
import java.text.SimpleDateFormat;
import com.alibaba.fastjson.JSONObject;
import java.util.*;
import org.springframework.beans.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import com.service.TokenService;
import com.utils.*;
import java.lang.reflect.InvocationTargetException;

import com.service.DictionaryService;
import org.apache.commons.lang3.StringUtils;
import com.annotation.IgnoreAuth;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.entity.*;
import com.entity.view.*;
import com.service.*;
import com.utils.PageUtils;
import com.utils.R;
import com.alibaba.fastjson.*;

/**
 * 银行卡金额记录
 * 后端接口
 * @author
 * @email
*/
@RestController
@Controller
@RequestMapping("/yinhangkaJinejilu")
public class YinhangkaJinejiluController {
    private static final Logger logger = LoggerFactory.getLogger(YinhangkaJinejiluController.class);

    @Autowired
    private YinhangkaJinejiluService yinhangkaJinejiluService;


    @Autowired
    private TokenService tokenService;
    @Autowired
    private DictionaryService dictionaryService;

    //级联表service
    @Autowired
    private YonghuService yonghuService;
    @Autowired
    private YinhangkaService yinhangkaService;

    @Autowired
    private ShenherenyuanService shenherenyuanService;
    @Autowired
    private YewurenyuanService yewurenyuanService;


    /**
    * 后端列表
    */
    @RequestMapping("/page")
    public R page(@RequestParam Map<String, Object> params, HttpServletRequest request){
        logger.debug("page方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));
        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永不会进入");
        else if("用户".equals(role))
            params.put("yonghuId",request.getSession().getAttribute("userId"));
        else if("审核人员".equals(role))
            params.put("shenherenyuanId",request.getSession().getAttribute("userId"));
        else if("业务人员".equals(role))
            params.put("yewurenyuanId",request.getSession().getAttribute("userId"));
        if(params.get("orderBy")==null || params.get("orderBy")==""){
            params.put("orderBy","id");
        }
        PageUtils page = yinhangkaJinejiluService.queryPage(params);

        //字典表数据转换
        List<YinhangkaJinejiluView> list =(List<YinhangkaJinejiluView>)page.getList();
        for(YinhangkaJinejiluView c:list){
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(c, request);
        }
        return R.ok().put("data", page);
    }

    /**
    * 后端详情
    */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") Long id, HttpServletRequest request){
        logger.debug("info方法:,,Controller:{},,id:{}",this.getClass().getName(),id);
        YinhangkaJinejiluEntity yinhangkaJinejilu = yinhangkaJinejiluService.selectById(id);
        if(yinhangkaJinejilu !=null){
            //entity转view
            YinhangkaJinejiluView view = new YinhangkaJinejiluView();
            BeanUtils.copyProperties( yinhangkaJinejilu , view );//把实体数据重构到view中

                //级联表
                YonghuEntity yonghu = yonghuService.selectById(yinhangkaJinejilu.getYonghuId());
                if(yonghu != null){
                    BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYonghuId(yonghu.getId());
                }
                //级联表
                YinhangkaEntity yinhangka = yinhangkaService.selectById(yinhangkaJinejilu.getYinhangkaId());
                if(yinhangka != null){
                    BeanUtils.copyProperties( yinhangka , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段
                    view.setYinhangkaId(yinhangka.getId());
                    view.setYinhangkaYonghuId(yinhangka.getYonghuId());
                }
            //修改对应字典表字段
            dictionaryService.dictionaryConvert(view, request);
            return R.ok().put("data", view);
        }else {
            return R.error(511,"查不到数据");
        }

    }

    /**
    * 后端保存
    */
    @RequestMapping("/save")
    public R save(@RequestBody YinhangkaJinejiluEntity yinhangkaJinejilu, HttpServletRequest request){
        logger.debug("save方法:,,Controller:{},,yinhangkaJinejilu:{}",this.getClass().getName(),yinhangkaJinejilu.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
        if(false)
            return R.error(511,"永远不会进入");
        else if("用户".equals(role))
            yinhangkaJinejilu.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));

        Wrapper<YinhangkaJinejiluEntity> queryWrapper = new EntityWrapper<YinhangkaJinejiluEntity>()
            .eq("yonghu_id", yinhangkaJinejilu.getYonghuId())
            .eq("yinhangka_id", yinhangkaJinejilu.getYinhangkaId())
            .eq("yinhangka_jinejilu_uuid_number", yinhangkaJinejilu.getYinhangkaJinejiluUuidNumber())
            .eq("jilu_types", yinhangkaJinejilu.getJiluTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        YinhangkaJinejiluEntity yinhangkaJinejiluEntity = yinhangkaJinejiluService.selectOne(queryWrapper);
        if(yinhangkaJinejiluEntity==null){
            yinhangkaJinejilu.setInsertTime(new Date());
            yinhangkaJinejilu.setCreateTime(new Date());
            yinhangkaJinejiluService.insert(yinhangkaJinejilu);
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }

    /**
    * 后端修改
    */
    @RequestMapping("/update")
    public R update(@RequestBody YinhangkaJinejiluEntity yinhangkaJinejilu, HttpServletRequest request){
        logger.debug("update方法:,,Controller:{},,yinhangkaJinejilu:{}",this.getClass().getName(),yinhangkaJinejilu.toString());

        String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            yinhangkaJinejilu.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));
        //根据字段查询是否有相同数据
        Wrapper<YinhangkaJinejiluEntity> queryWrapper = new EntityWrapper<YinhangkaJinejiluEntity>()
            .notIn("id",yinhangkaJinejilu.getId())
            .andNew()
            .eq("yonghu_id", yinhangkaJinejilu.getYonghuId())
            .eq("yinhangka_id", yinhangkaJinejilu.getYinhangkaId())
            .eq("yinhangka_jinejilu_uuid_number", yinhangkaJinejilu.getYinhangkaJinejiluUuidNumber())
            .eq("jilu_types", yinhangkaJinejilu.getJiluTypes())
            ;

        logger.info("sql语句:"+queryWrapper.getSqlSegment());
        YinhangkaJinejiluEntity yinhangkaJinejiluEntity = yinhangkaJinejiluService.selectOne(queryWrapper);
        if(yinhangkaJinejiluEntity==null){
            yinhangkaJinejiluService.updateById(yinhangkaJinejilu);//根据id更新
            return R.ok();
        }else {
            return R.error(511,"表中有相同数据");
        }
    }



    /**
    * 删除
    */
    @RequestMapping("/delete")
    public R delete(@RequestBody Integer[] ids){
        logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());
        yinhangkaJinejiluService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }


    /**
     * 批量上传
     */
    @RequestMapping("/batchInsert")
    public R save( String fileName, HttpServletRequest request){
        logger.debug("batchInsert方法:,,Controller:{},,fileName:{}",this.getClass().getName(),fileName);
        Integer yonghuId = Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId")));
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            List<YinhangkaJinejiluEntity> yinhangkaJinejiluList = new ArrayList<>();//上传的东西
            Map<String, List<String>> seachFields= new HashMap<>();//要查询的字段
            Date date = new Date();
            int lastIndexOf = fileName.lastIndexOf(".");
            if(lastIndexOf == -1){
                return R.error(511,"该文件没有后缀");
            }else{
                String suffix = fileName.substring(lastIndexOf);
                if(!".xls".equals(suffix)){
                    return R.error(511,"只支持后缀为xls的excel文件");
                }else{
                    URL resource = this.getClass().getClassLoader().getResource("../../upload/" + fileName);//获取文件路径
                    File file = new File(resource.getFile());
                    if(!file.exists()){
                        return R.error(511,"找不到上传文件,请联系管理员");
                    }else{
                        List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件
                        dataList.remove(0);//删除第一行,因为第一行是提示
                        for(List<String> data:dataList){
                            //循环
                            YinhangkaJinejiluEntity yinhangkaJinejiluEntity = new YinhangkaJinejiluEntity();
//                            yinhangkaJinejiluEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            yinhangkaJinejiluEntity.setYinhangkaId(Integer.valueOf(data.get(0)));   //银行卡 要改的
//                            yinhangkaJinejiluEntity.setYinhangkaJinejiluUuidNumber(data.get(0));                    //记录编号 要改的
//                            yinhangkaJinejiluEntity.setJiluTypes(Integer.valueOf(data.get(0)));   //记录类型 要改的
//                            yinhangkaJinejiluEntity.setYinhangkaJinejiluMoney(data.get(0));                    //记录金额 要改的
//                            yinhangkaJinejiluEntity.setYinhangkaJinejiluContent("");//详情和图片
//                            yinhangkaJinejiluEntity.setInsertTime(date);//时间
//                            yinhangkaJinejiluEntity.setCreateTime(date);//时间
                            yinhangkaJinejiluList.add(yinhangkaJinejiluEntity);


                            //把要查询是否重复的字段放入map中
                                //记录编号
                                if(seachFields.containsKey("yinhangkaJinejiluUuidNumber")){
                                    List<String> yinhangkaJinejiluUuidNumber = seachFields.get("yinhangkaJinejiluUuidNumber");
                                    yinhangkaJinejiluUuidNumber.add(data.get(0));//要改的
                                }else{
                                    List<String> yinhangkaJinejiluUuidNumber = new ArrayList<>();
                                    yinhangkaJinejiluUuidNumber.add(data.get(0));//要改的
                                    seachFields.put("yinhangkaJinejiluUuidNumber",yinhangkaJinejiluUuidNumber);
                                }
                        }

                        //查询是否重复
                         //记录编号
                        List<YinhangkaJinejiluEntity> yinhangkaJinejiluEntities_yinhangkaJinejiluUuidNumber = yinhangkaJinejiluService.selectList(new EntityWrapper<YinhangkaJinejiluEntity>().in("yinhangka_jinejilu_uuid_number", seachFields.get("yinhangkaJinejiluUuidNumber")));
                        if(yinhangkaJinejiluEntities_yinhangkaJinejiluUuidNumber.size() >0 ){
                            ArrayList<String> repeatFields = new ArrayList<>();
                            for(YinhangkaJinejiluEntity s:yinhangkaJinejiluEntities_yinhangkaJinejiluUuidNumber){
                                repeatFields.add(s.getYinhangkaJinejiluUuidNumber());
                            }
                            return R.error(511,"数据库的该表中的 [记录编号] 字段已经存在 存在数据为:"+repeatFields.toString());
                        }
                        yinhangkaJinejiluService.insertBatch(yinhangkaJinejiluList);
                        return R.ok();
                    }
                }
            }
        }catch (Exception e){
            e.printStackTrace();
            return R.error(511,"批量插入数据异常,请联系管理员");
        }
    }






}

YinhangkaServiceImpl.java
package com.service.impl;

import com.utils.StringUtil;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import com.dao.YinhangkaDao;
import com.entity.YinhangkaEntity;
import com.service.YinhangkaService;
import com.entity.view.YinhangkaView;

/**
 * 银行卡 服务实现类
 */
@Service("yinhangkaService")
@Transactional
public class YinhangkaServiceImpl extends ServiceImpl<YinhangkaDao, YinhangkaEntity> implements YinhangkaService {

    @Override
    public PageUtils queryPage(Map<String,Object> params) {
        if(params != null && (params.get("limit") == null || params.get("page") == null)){
            params.put("page","1");
            params.put("limit","10");
        }
        Page<YinhangkaView> page =new Query<YinhangkaView>(params).getPage();
        page.setRecords(baseMapper.selectListView(page,params));
        return new PageUtils(page);
    }


}

utils.js
import storage from './storage';
import menu from './menu';
/**
 * 是否有权限
 * @param {*} key
 */
export function isAuth(tableName,key) {
    let role = storage.get("role");
    if(!role){
        role = '管理员';
    }
    let menus = menu.list();
    for(let i=0;i<menus.length;i++){
        if(menus[i].roleName==role){
            for(let j=0;j<menus[i].backMenu.length;j++){
                for(let k=0;k<menus[i].backMenu[j].child.length;k++){
                    if(tableName==menus[i].backMenu[j].child[k].tableName){
                        let buttons = menus[i].backMenu[j].child[k].buttons.join(',');
                        return buttons.indexOf(key) !== -1 || false
                    }
                }
            }
        }
    }
    // for(let i=0;i<menus.length;i++){
    //     if(menus[i].roleName==role){
    //         for(let j=0;j<menus[i].backMenu.length;j++){
    //             if(menus[i].backMenu[j].tableName==tableName){
    //                 let buttons = menus[i].backMenu[j].child[0].buttons.join(',');
    //                 return buttons.indexOf(key) !== -1 || false
    //             }
    //         }
    //     }
    // }
    return false;
}

/**
 *  * 获取当前时间(yyyy-MM-dd hh:mm:ss)
 *   */
export function getCurDateTime() {
    let currentTime = new Date(),
    year = currentTime.getFullYear(),
    month = currentTime.getMonth() + 1 < 10 ? '0' + (currentTime.getMonth() + 1) : currentTime.getMonth() + 1,
    day = currentTime.getDate() < 10 ? '0' + currentTime.getDate() : currentTime.getDate(),
    hour = currentTime.getHours(),
    minute = currentTime.getMinutes(),
    second = currentTime.getSeconds();
    return year + "-" + month + "-" + day + " " +hour +":" +minute+":"+second;
}

/**
 *  * 获取当前日期(yyyy-MM-dd)
 *   */
export function getCurDate() {
    let currentTime = new Date(),
    year = currentTime.getFullYear(),
    month = currentTime.getMonth() + 1 < 10 ? '0' + (currentTime.getMonth() + 1) : currentTime.getMonth() + 1,
    day = currentTime.getDate() < 10 ? '0' + currentTime.getDate() : currentTime.getDate();
    return year + "-" + month + "-" + day;
}

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。

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

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

相关文章

移除元素

移除元素 题目链接&#xff1a;移除元素 示例 1&#xff1a; 输入&#xff1a;nums [3,2,2,3], val 3 输出&#xff1a;2, nums [2,2,_,_] 解释&#xff1a;你的函数函数应该返回 k 2, 并且 nums 中的前两个元素均为 2。 你在返回的 k 个元素之外留下了什么并不重要&…

URL从输入到⻚面显示的过程(详细版)

URL从输入到⻚面显示的过程&#xff08;详细版&#xff09; 浏览器中输入网址 DNS 解析域名得到 IP 地址 DNS 解析首先会从你的浏览器的缓存中去寻找是否有这个网址对应的 IP 地址&#xff0c;如果没有就向OS系统的 DNS 缓存中寻找&#xff0c;如果没有就是路由器的 DNS 缓存&…

C++之 友元重载 以及最常用的几种友元函数

在之前的友元中就曾经讲过&#xff0c;我们为了去访问修改私有成员中的数据时&#xff0c;只能通过公有的办法去进行访问操作&#xff0c;非常的局限。所以C引用了友元函数&#xff0c;只要加上friend关键字&#xff0c;C的这个类&#xff0c;会自动把这个函数的权限拉到类内&a…

无水印短视频素材下载网站有哪些?十个高清无水印视频素材网站分享

你知道怎么下载无水印视频素材吗&#xff1f;今天小编就给大家推荐十个高清无水印视频素材下载的网站&#xff0c;如果你也是苦于下载高清无水印的短视频素材&#xff0c;赶紧来看看吧&#xff5e; 1. 稻虎网 首推的是稻虎网。这个网站简直就是短视频创作者的宝库。无论你需要…

编程魔法:基于LLM的AI function开发,如何实现高效数据生成?

基于大语言模型&#xff08;LLM&#xff09;的AI function开发&#xff0c;简直就是现代编程界的“魔法棒”&#xff01; 你好&#xff0c;我是三桥君 最近三桥君有个任务&#xff0c;需要造一些测试数据&#xff0c;比如姓名、手机号、银行卡号、邮箱啥的&#xff0c;用来做测…

每日OJ题_牛客_添加逗号_模拟_C++_Java

目录 牛客_添加逗号_模拟 题目解析 C代码1 C代码2 Java代码 牛客_添加逗号_模拟 添加逗号_牛客题霸_牛客网 题目解析 读取输入&#xff1a;读取一行字符串。分割字符串&#xff1a;使用空格将字符串分割成单词数组。拼接字符串&#xff1a;将单词数组中的每个单词用逗号…

群晖安装Gitea(代码托管工具)

一、Gitea介绍 Gitea 是一款开源的轻量级代码托管平台,可以为团队和开发者提供了一个易于部署、运行快速、使用体验良好的自建 Git 服务。相比于其它自部署代码托管平台,Gitea 的设计更加轻量,对系统资源的占用相对较少,能够在较低配置的服务器上流畅运行。相比于其他代码…

嘉楠科技AI芯片K230-初探

勘智K230 介绍入门购买开发板 安装开机开发学习点亮第1个LED点亮屏幕预览摄像头代码离线运行 在线训练平台 参考 介绍 K230芯片是嘉楠科技 Kendryte系列AIoT芯片中的最新一代SoC产品。该芯片采用全新的多异构单元加速计算架构&#xff0c;集成了2个RISC-V高能效计算核心&#x…

Spring系列 BeanPostProcessor

文章目录 BeanPostProcessor注册时机执行时机 InstantiationAwareBeanPostProcessorSmartInstantiationAwareBeanPostProcessor 本文源码基于spring-beans-5.3.31 参考&#xff1a;https://docs.spring.io/spring-framework/reference/core/beans/factory-extension.html#beans…

【ASE】第四课_高亮显示效果(手动切换)

今天我们一起来学习ASE插件&#xff0c;希望各位点个关注&#xff0c;一起跟随我的步伐 今天我们来学习高亮的效果。 思路&#xff1a; 1.添加纹理贴图和法线贴图&#xff0c;环境光遮挡贴图 2.添加高亮的参数&#xff0c;并设置 3.手搓一个边缘光,通过高亮参数调节 4.将模…

微信小程序——音乐播放器

目的 掌握swiper组件、scroll-view组件的使用掌握image组件的使用掌握音频API的使用掌握slider组件的使用 内容 了音乐小程序项目的完整开发流程&#xff0c;其开发步骤包括页面结构的分析、样式的设计、组件的运用等。通过本章的学习&#xff0c;读者能够掌握小程序的基本交…

聚星文社——绘唐科技有什么区别!

聚星文社和绘唐科技是两个不同的公司&#xff0c;有一些区别。下面是它们的一些区别&#xff1a; 绘唐科技——聚星文社https://iimenvrieak.feishu.cn/docx/ZhRNdEWT6oGdCwxdhOPcdds7nof 行业领域&#xff1a;聚星文社主要从事文化娱乐行业&#xff0c;包括出版、影视制作等&…

点餐小程序实战教程14点餐功能

目录 1 功能分析2 初始化菜品的数量3 加入购物车4 显示购物车5 最终的效果总结 上一篇我们讲解了如果通过扫码实现餐桌信息显示&#xff0c;本篇我们介绍一下点餐的功能。 1 功能分析 点餐的话一般我们是在菜品点击号或者-号来加入购物车&#xff0c;加入购物车之后还可以修改…

APP 安全测试项总结

一、安装包测试 1.1、关于反编译 目的是为了保护公司的知识产权和安全方面的考虑等&#xff0c;一些程序开发人员会在源码中硬编码一些敏感信息&#xff0c;如密码。而且若程序内部一些设计欠佳的逻辑&#xff0c;也可能隐含漏洞&#xff0c;一旦源码泄漏&#xff0c;安全隐患…

Temporal Dynamic Quantization for Diffusion Models阅读

文章目录 AbstractIntroductionBackgrounds and Related Works2.1 扩散模型2.2 量化2.3 量化感知训练和训练后量化 TemporalDynamic Quantization3.1 量化方法3.2 扩散模型量化的挑战3.3 TDQ模块的实现3.4 工程细节时间步的频率编码TDQ模块的初始化 Experimental SetupResults5…

#git 问题failed to resolve head as a valid ref

问题如下&#xff1a; 解决方法&#xff1a; 1、运行 git fsck --full 可以查看具体error信息&#xff0c;一般都是head索引问题 2、.git\refs\heads\xxx&#xff08;当前分支&#xff09;txt编辑器打开显示乱码&#xff0c;而不是hash编码 3、在.git\logs\refs\heads\xxx&a…

如何评价 Python 语言的运行速度

Python 作为一门编程语言&#xff0c;其运行速度一直是业界讨论的焦点。它的简洁语法和广泛的应用使得它在开发过程中非常高效&#xff0c;然而&#xff0c;运行速度与一些更底层的编程语言相比存在一定的劣势。这是否是由于 Python 语法的简洁性所带来的代价&#xff1f;我们可…

心觉:自我暗示语“正确姿势”的科学解释

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作185/1000天 “如何重塑高效学习的潜意识”这个系列文章其实昨天已经写完了 在写这个系列文章的时候&#xff0c;我突然有一个关于…

宠物空气净化器该怎么选?希喂、美的、有哈这三款有推荐的吗?

终于要到国庆了&#xff0c;这可是打工人除春节外最长的假期&#xff01;在外上班后&#xff0c;回家的次数越来越少了&#xff0c;这次国庆肯定要回去陪陪父母。这票是真难买啊&#xff0c;候补了我一个多星期才买到。本来以为最困难的问题已经解决了&#xff0c;又想到我家猫…

Mamba以及我们看的第一篇MambaOcc

0. 简介 深度学习架构有很多&#xff0c;但近些年最成功的莫过于 Transformer&#xff0c;其已经在多个应用领域确立了自己的主导地位。如此成功的一大关键推动力是注意力机制&#xff0c;这能让基于 Transformer 的模型关注与输入序列相关的部分&#xff0c;实现更好的上下文…