1.搭建环境

2.common

Account

public class Account implements Serializable {private Long id;private String cardno;private String password;private Double balance;private Long status;

Record

public class Record implements Serializable {private long id;private String cardno;private String transactiondate;private double expense;private double income;private double balance;private String transactiontype;private String remark;private String starttime;private String endtime;

AccountService

public interface AccountService {//1.登录Map<String,Object> login(Account account);//2.根据卡号查询余额Double findBalance(Account account);//3.修改密码String updatePWd(Account account);
}

RecordService

public interface RecordService {//1.转账String transferAccounts(String currentCardNo,String targetCardNo,Double money);//2.分页查询PageInfo<Map<String,Object>> showPage(Integer pageno, Record record);
}
3.provider结构

AccountMapper
public interface AccountMapper {//1.查询账号详情:根据卡号查,根据卡号密码查,根据卡号查余额Account findAccountInfo(Account account);//2.修改密码@Update("update account set password=#{password} where cardno#{cardno}")int updatePassword(Account account);//3.修改账号余额@Update("update account set balance=#{balance} where cardno#{cardno}")int updateBalance(Account account);
}
RecordMapper
public interface RecordMapper {//1.添加转出的交易记录@Insert("insert into record(cardno,transactiondate,expense,income,balance,transactiontype) values(#{cardno},now(),#{expense},0.0,#{balance},'转出')")int addExpenseRecord(Record record);//2.添加转入的交易记录@Insert("insert into record(cardno,transactiondate,expense,income,balance,transactiontype) values(#{cardno},now(),#{income},0.0,#{balance},'转入')")int addIncomeRecord(Record record);//3.根据交易日期分页查询,按照日期升序排列List<Map<String,Object>> showData(Record record);
}

AccountServiceImpl

@Service
@Transactional
public class AccountServiceImpl implements AccountService {@Autowiredprivate AccountMapper accountMapper;//登录@Overridepublic Map<String, Object> login(Account account) {Map<String, Object> map = new HashMap<String, Object>();//根据卡号查询Account loginuser = accountMapper.findAccountInfo(account);//判断卡号是否存在if (loginuser == null) {map.put("msg", "登录失败,你输入卡号不存在!");return map;}if(loginuser!=null){//判断密码是否正确if (!loginuser.getPassword().equals(account.getPassword())){map.put("msg","登录失败,您输入的密码不正确!");return map;}//判断账号是否被冻结if (loginuser.getStatus()==0){map.put("msg","登录失败,您的账号已冻结!");return map;}}//登录成功map.put("loginuser",loginuser);return map;}//查询余额@Overridepublic Double findBalance(Account account) {//根据卡号查询return accountMapper.findAccountInfo(account).getBalance();}//修改密码@Overridepublic String updatePWd(Account account) {String pwd = accountMapper.findAccountInfo(account).getPassword();if (!pwd.equals(account.getPassword())){return "旧密码输入错误!";}//修改accountMapper.updatePassword(account);return "success";}
}

RecordServiceImpl

public class RecordServiceImpl implements RecordService {@Autowiredprivate RecordMapper recordMapper;@Autowiredprivate AccountMapper accountMapper;//转账public String transferAccounts(String currentCardNo, String targetCardNo, Double money) {//查询目标账号Account targetAccount=accountMapper.findAccountInfo(new Account(targetCardNo,null,null));//判断目标卡号是否存在if(targetAccount==null){return "转账失败,目标账号不存在!";}//判断目标账号是否冻结if (targetAccount!=null && targetAccount.getStatus()==0){return "转账失败,目标账号已冻结";}//查询当前账号Account currentAccount=accountMapper.findAccountInfo(new Account(currentCardNo,null,null));//判断当前账号余额是否 >= 转账金额if (currentAccount!=null){if (currentAccount.getBalance()<money){return "转账失败,转出账号余额不足!";}}//当前账号余额减少currentAccount.setBalance(currentAccount.getBalance()-money);accountMapper.updateBalance(targetAccount);//目标账号余额增加targetAccount.setBalance(targetAccount.getBalance()+money);accountMapper.updateBalance(targetAccount);//当前账号转出交易记录Record currentAccountRecord=new Record(currentCardNo,money,null,currentAccount.getBalance());recordMapper.addExpenseRecord(currentAccountRecord);//目标账号转入交易记录Record targetAccountRecord=new Record(targetCardNo,null,money,targetAccount.getBalance());recordMapper.addIncomeRecord(targetAccountRecord);return "success";}//分页@Overridepublic PageInfo<Map<String, Object>> showPage(Integer pageno, Record record) {PageHelper.startPage(pageno,3);List<Map<String,Object>> list=recordMapper.showData(record);return new PageInfo<Map<String,Object>>(list);}
}

ProviderApplication

@MapperScan("cn.kgc.mapper")
@ImportResource("classpath:spring-provider.xml")
resource>mapper

AccountMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.kgc.mapper.AccountMapper"><select id="findAccountInfo" resultType="Account" parameterType="Account">SELECT * FROM account WHERE cardno=#{cardno}<if test="password!=null">AND password=#{password}</if></select>
</mapper>

RecordMapper.xml

<mapper namespace="cn.kgc.mapper.RecordMapper"><select id="showData" parameterType="Record" resultType="map">SELECT * from record WHERE cardno=#{cardno}<if test="starttime!=null and endtime!=nulll">AND transactiondate BETWEEN #{starttime} AND #{endtime}</if>ORDER BY transactiondate ASC</select>
</mapper>

application.properties

server.port=9090spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/bankonline
spring.datasource.username=root
spring.datasource.password=123.mybatis.type-aliases-package=cn.kgc.vomybatis.mapper-locations=mapper/*.xmlpagehelper.helper-dialect=mysql

spring-provider.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- 提供方应用信息,用于计算依赖关系 --><dubbo:application name="myprovider" /><!-- 使用zookeeper注册中心暴露服务地址,我的zookeeper是架在本地的 --><dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" timeout="60000"/><!-- 用dubbo协议在20880端口暴露服务 --><dubbo:protocol name="dubbo" port="20880" /><!-- 用户服务接口 --><dubbo:service interface="cn.kgc.service.AccountService" ref="accountService"/><bean id="accountService" class="cn.kgc.service.AccountServiceImpl"/><dubbo:service interface="cn.kgc.service.RecordService" ref="recordService"/><bean id="recordService" class="cn.kgc.service.RecordServiceImpl"/>
</beans>

4.consumer

CenterController

@RestController
public class CenterController {@Autowiredprivate AccountService accountService;@Autowiredprivate RecordService recordService;//登录@RequestMapping("/login.do")public Map<String,Object> login(Account account){return accountService.login(account);}//查询余额@RequestMapping("/balance.do")public Double findBalance(Account account){return accountService.findBalance(account);}//修改密码@RequestMapping("/pwd.do")public String updatePWd(Account account){return accountService.updatePWd(account);}//转账@RequestMapping("/ta.do")public String transferAccounts(String currentCardNo,String targetCardNo,Double money){return recordService.transferAccounts(currentCardNo,targetCardNo,money);}//分页@RequestMapping("/page.do")public PageInfo<Map<String,Object>> showPage(Integer pageno, Record record){return recordService.showPage(pageno,record);}
}

ConsumerApplication

@ImportResource("classpath:spring-consumer.xml")

rvice.transferAccounts(currentCardNo,targetCardNo,money);
}
//分页
@RequestMapping("/page.do")
public PageInfo<Map<String,Object>> showPage(Integer pageno, Record record){
return recordService.showPage(pageno,record);
}
}


ConsumerApplication```java
@ImportResource("classpath:spring-consumer.xml")

spingboot银行案例相关推荐

  1. Rasa课程、Rasa培训、Rasa面试系列 金融银行案例Bot 多种状态转换-转账及信用卡支付

    Rasa课程.Rasa培训.Rasa面试系列 金融银行案例Bot 多种状态转换的方式 用户对话单个回合的切换:rewind + followup + AA_CONTINUE_FORM 用户填写表单进行 ...

  2. 【Java】简单银行案例实现

    功能实现 此案例可以实现简单的,银行卡注册,登录,以及登陆后,实现存钱.取钱(可跨银行).以及存取操作完成后的查询余额功能. 1.定义一个Bank类,需要定义银行卡类型,容量: public clas ...

  3. 银行案例启示:莫把客户投诉当小事

     点击上方蓝字关注我们  在这个客户维权意识越来越强的时代,客户对产品和服务的要求越来越苛刻,信息也越来越透明,无论任何企业或政府机构,只要是企图以消费者权益换取自身利益,都有可能引来客户抱怨与投诉, ...

  4. 基于统一开发平台的微服务架构转型升级之路 | 某国有大型银行案例

    分享某国有大型银行统一开发平台的建设历程,重点介绍其当前正在建设的微服务开发平台中的关键点和实践经验. 转载本文需注明出处:微信公众号EAWorld,违者必究. 引言: 某银行是一家国有大型银行,从2 ...

  5. java面向对象银行案例_Java程序设计-面向对象分析案例:银行储蓄系统.ppt

    面向对象分析 1 基本过程 2 需求陈述 3 建立对象模型 4 建立动态模型 5 建立功能模型 6 定义服务 1 面向对象分析的基本过程 在面向对象建模的过程中,系统分析员必须认真向领域专家学习. 在 ...

  6. 银行案例分析:识别个人贷款客户画像,实现精准营销与风险防范

    作为商业银行最主要的业务活动,也是收益最大的活动,贷款于银行的重要性不言而喻.又由于个人贷款是银行贷款不可或缺的一部分,那么了解个人贷款客户画像就有助于银行对客户进行精准销售和风险识别. # 选手介绍 ...

  7. 精准营销中的价值与实现—银行案例

    前段时间在B站看了一个sas出品的培训精准营销的视频,介绍的案例比较具有实践意义与实操价值,于是把部分ppt进行了截图,以供日后学习.工作使用. 视频地址: 精准营销中分析的价值与实现(上) 精准营销 ...

  8. (spingboot入门案例)SpingBoot整合mybatis(mySql)

    仅供参考 目录结构: 环境: idea,mysql(8.0.29) 1.新建项目 1. 2.Project SDK选择自己对应的java版本 url选第二个,使用阿里的镜像:http://start. ...

  9. 网易云信助力长沙银行打造远程视频银行 | 字母点评数字化先锋案例

    关于"数字化先锋"系列 数字化转型是迈向数字经济社会的重要一步,是数字化技术与传统产业融合的重要进程.在数字化的探索中,不乏先锋者的身影,这些"数字化先锋"凭借 ...

  10. python 银行数据分析_银行业务概述_Python数据分析行业案例课程--信用评分方法_数据挖掘与分析视频-51CTO学院...

    注意: 1. 本行业案例课程为Python 3 数据分析系列课程的行业案例部分,学员请务必先观看课程介绍免费视频,确认已学习本课程所需Python分析技能. 2. 本课程的核心目的是协助学员学习具体业 ...

最新文章

  1. 对于Python开发者,这本书绝对算得上此生必读之作
  2. ​redis实现消息队列
  3. 每天60秒读懂世界20211127
  4. 文档加载完后执行相关事件
  5. 牛客题霸 反转链表 C++题解/答案
  6. aliyun maven 添加jar_Maven介绍及安装
  7. poj1811(pollard_rho模板)
  8. 未来,语音识别可能应用于哪些商业化场景?
  9. 2016-2017-2 20155309 南皓芯《java程序设计》第八周学习总结
  10. 运行深度学习代码时报错RuntimeError: CUDA out of memory. Tried to allocate 482.00 MiB
  11. 【学习笔记】大数据可视化简介
  12. 现代密码学-密钥管理技术
  13. Python 安装包环境小问题:WARNING: The repository located at pypi.douban.com is not a trusted or secure host a
  14. Mac 如何强制关机?
  15. 从“棱镜门”事件看数据安全如何保护
  16. docker基础操作
  17. java处理word文档 替换文本 水印 页眉
  18. android指南针程序,如何在Android上制作精确的指南针
  19. 练习4-11 统计素数并求和(素数的函数)
  20. sa387gr11cl2是什么材料,sa387gr11cl2美标钢板性能介绍

热门文章

  1. java获取图片详情信息
  2. Grassland fire kills 22 in Southwest China(中国西南草原大火致22人死亡)
  3. 气象统计分析 实习六 气象要素线性趋势分析方法
  4. 欧姆龙 CJ1W-CRM21软件配置用
  5. python大数据运维工程师_Linux云计算运维工程师路线图(集群、虚拟化、K8S、Docker、智能化、Python大数据)...
  6. 对待能力强,不服管得人,或者说是他压根就不服你,经常你让他去做某件事情,他总是有自己的理由拒绝或者是打折扣,常发生在刚上任,或者找些难题为难你
  7. 自定义dialog (构建者模式打造自定义dialog)
  8. svg图片在Safari上不显示
  9. Android开发怎么获取美工素材
  10. kafka总结。。。