文档章节

Atm撰写卡点20170814

猿声啼不住
 猿声啼不住
发布于 2017/08/14 22:57
字数 455
阅读 3
收藏 0

1、随机生成六位卡号

private int createCard() {
		Random random = new Random();
		String msg = "";
		for (int i = 0; i < 6; i ++) {
			int num = random.nextInt(10);
			msg += String.valueOf(num);
			
		}
		int cardNum = Integer.parseInt(msg);
		return cardNum;
}

2、校验存款取款中 卡号是否为用户的

if (userId != card.getUserId().intValue()) {
	throw new AtmException("这卡不是你的,你都要取啊?");
}

3、银行卡删除选择逻辑删除,改变数据库字段status的状态 ,操作sql语句写死status为1才能执行操作

<select id="listCardByUserId" resultMap="cardResultMap">
		select id, user_id, card_num, balance, create_time, create_time, modify_time from atm_card 
		where user_id=#{userId} and status=1
		order by id desc
		limit #{offSet}, #{pageNum}
</select>
public void deleteCard(int userId, int cardId) {
		SqlSession session = null;
		try {
			session = DataBaseUtils.getSqlSession(false);
			CardMapper cardMapper = session.getMapper(CardMapper.class);
			Card card = cardMapper.getCardByCardId(cardId, null);
			if (null == card) {
				throw new AtmException("该卡不存在");
			}
			
			if (userId != card.getUserId().intValue()) {
				throw new AtmException("这卡不是你的,别瞎删啊");
			}
			
			int rows = cardMapper.updateStatus(cardId, 0);
			if (1 != rows) {
				throw new AtmException("该卡删除失败");
			}
			session.commit();
		} catch (AtmException ae) {
			session.rollback();
			throw new AtmException(ae.getMessage());
		}
		
}

4、在思考传入参数是什么的时候,先看下业务逻辑,看看需要什么参数,随时取添加就好

5、浏览器——servlet——controller——sevice——mapper——DB——表,atm总体流程

6、用Jquery需要在站点根目录下放js文件夹里放jquery-mini.js;

7、当传递的参数多的时候 要注意类型、名称,尤其是顺序,有些null的异常就是这么引起的,简直爆炸;

8、用Ajax时候注意取值的方式以及调转到其他页面时候要注意参数的传递

function deposit() {
    		$.ajax({
                url:'/atm/deposit.do',
                type:'POST', //GET
                async:true,    //或false,是否异步
                data:{
                	amount:$('#amount').val(),
                	cardId:$('#cardId').val(),
                	
                },
                timeout:5000,    //超时时间
                dataType:'json',    //返回的数据格式:json/xml/html/script/jsonp/text
                beforeSend:function(xhr){
                    console.log(xhr)
                    console.log('发送前')
                },
                success:function(data,textStatus,jqXHR){
                    var obj = data;
                    alert(obj.success);
                    
                    if (!data.success) {
                    	alert(data.message);
                    	return;
                    }
                    
                    window.location.href='/atm/listDetail.do?cardId=${bankCard.id }';
                    
                },
                error:function(xhr,textStatus){
                    console.log('错误')
                    console.log(xhr)
                    console.log(textStatus)
                },
                complete:function(){
                    console.log('结束')
                }
            });
    	}

 

© 著作权归作者所有

猿声啼不住
粉丝 0
博文 13
码字总数 4397
作品 0
无锡
私信 提问
苹果内购配置最新2017版本

总纲 集成苹果内购只需要做四个板块的内容 一、协议配置(贵公司只做这个内容) 二、内购项目创建 三、增加内购测试账号 四、内购代码编写 Snip20170815_119.png 准备工作 集成苹果的内购之前...

摸着石头过河_崖边树
2017/08/15
0
0
需求详解

引言 很多人像老黄牛一样辛辛苦苦做了很多年软件开发,但却连“需求”到底是什么都不清楚。当然,没有人自己会承认这点! 2. 什么是需求? 凡事都有一个开头,软件项目也不例外,对于软件项目...

无寄语
2016/08/20
33
0
LANE仿真原理和网络组成

以下内容摘自笔者的《网络工程师必读——接入网与交换网》一书: 1. LANE仿真基本原理 顾名思义,LANE(Emulated LAN)的功能是在ATM网络上仿真LAN,所得的局域网称之为ELAN(Emulated LAN,...

第三方那块
2017/11/25
0
0
关于C语言的 一个程序设计 实在不会 大家帮帮这个可怜的孩子

ATM模拟系统(★★★★) 基本功能:设计一个系统来模拟ATM运行,基本功能包括:设置、登录、查询、取款和转账。 一级菜单显示“1.设置、2.登录3.退出”。用户输入自己的选择后,进入相应的二...

我只是个学生
2018/06/22
137
2
深度学习数学基础一--最小二乘法

之前总是先上手一些比较高级的神经网络算法,CNN,RNN等。可是总觉得有些知识原理总是羁绊着我进一步理解。这才意识到基础的重要性。所以,就一点一点的从基础数学最小二乘法开始。这里用到的...

zenRRan
2017/08/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MongoDB系列-在复制集(replication)以及分片(Shard)中创建索引

关注我,可以获取最新知识、经典面试题以及微服务技术分享   在使用MongoDB时,在创建索引会涉及到在复制集(replication)以及分片(Shard)中创建,为了最大限度地减少构建索引的影响,在副本...

ccww_
19分钟前
16
0
SAP HANA数据库multi container模式JDBC链接connection refused

报错如下信息 com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap://xxx.xxx.xxx.xxx:30015 [Cannot connect to host xxx.xxx.xxx.xxx:30015 [C......

flash胜龙
44分钟前
31
0
c++ 虚基类

c++ 虚基类 p556

天王盖地虎626
51分钟前
83
0
k8s删除Terminating状态的命名空间

背景: 我们都知道在k8s中namespace有两种常见的状态,即Active和Terminating状态,其中后者一般会比较少见,只有当对应的命名空间下还存在运行的资源,但是该命名空间被删除时才会出现所谓的...

Andy-xu
今天
72
0
seata源码阅读笔记

seata源码阅读笔记 本文没有seata的使用方法,怎么使用seata可以参考官方示例,详细的很。 本文基于v0.8.0版本,本文没贴代码。 seata中的三个重要部分: TC:事务协调器,维护全局事务和分支...

东都大狼狗
今天
44
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部