jdbc Service 层 转账业务 事务
service 层对应接口
package com.service;
import com.entity.T_Account;
public interface T_AccountService {
public void registerService(T_Account t_account);
public boolean loginService(T_Account t_account);
public void transfer_accounts(T_Account t_account,String toCardNum,Double money );
}
service 层对应接口 的 实现类
package com.service;
import com.dao.T_AccountDao;
import com.dao.T_AccoutDaoImpl;
import com.entity.T_Account;
import com.util.JDBCUtil;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Scanner;
public class T_AccountServiceImpl implements T_AccountService {
T_AccountDao t_accountDao = new T_AccoutDaoImpl ();
@Override
public void registerService(T_Account t_account) {
T_Account byCardNum = t_accountDao.findByCardNum (t_account.getCardNum ());
if (byCardNum == null) {
t_accountDao.insert (t_account);
} else {
System.out.println ("该用户已经注册,请直接登录!!!!");
}
}
@Override
public boolean loginService(T_Account t_account) {
T_Account byCardNumAndPass = t_accountDao.findByCardNumAndPass (t_account);
if (byCardNumAndPass != null) {
System.out.println ("欢迎使用本银行操作系统!!!");
return true;
} else {
System.out.println ("用户名和密码不正确,请核实后重新登录!!!");
return false;
}
}
@Override
public void transfer_accounts(T_Account t_account, String toCardNum,double money) {
Connection conn = JDBCUtil.getConnection ();
try {
conn.setAutoCommit (false);
T_Account user = t_accountDao.findByCardNumAndPass (t_account);
if (user != null) {
T_Account touser = t_accountDao.findByCardNum (toCardNum);
if (touser != null) {
double balabce1 = user.getBalabce ();
System.out.println ("账户余额="+balabce1);
if (balabce1 > money) {
double poundageMoney = money * 0.05;
double changeBalabcel = balabce1 - money - poundageMoney;
user.setBalabce (changeBalabcel);
t_accountDao.updateBalance (user.getCardNum (), user.getBalabce ());
double tobalabce = touser.getBalabce ();
double changeToBalabce = tobalabce + money;
touser.setBalabce (changeToBalabce);
t_accountDao.updateBalance (touser.getCardNum (),touser.getBalabce ());
} else if (balabce1 == money) {
Scanner scanner = new Scanner (System.in);
System.out.println ("您的转账金额等于您的账户余额,手续费将在转账金额中扣除,是否同意转账?");
System.out.println ("同意选1,不同意选2");
int i = scanner.nextInt ();
System.out.println ("接收到的参数i="+i);
if(i==1) {
double poundageMoney = money * 0.05;
double changeBalabcel = balabce1 - money;
user.setBalabce (changeBalabcel);
t_accountDao.updateBalance (user.getCardNum (), user.getBalabce ());
double tobalabce = touser.getBalabce ();
double changeToBalabce = tobalabce + money - poundageMoney;
touser.setBalabce (changeToBalabce);
t_accountDao.updateBalance (touser.getCardNum (), touser.getBalabce ());
}else {
System.out.println ("请更改转账金额之后,在操作!!!");
}
} else {
throw new RuntimeException ("您的余额不足,请更改转账金额");
}
} else {
throw new RuntimeException ("收款用户不存在,请核实后在操作 ");
}
} else {
throw new RuntimeException ("用户名或密码不正确");
}
conn.commit ();
} catch (Exception e) {
e.printStackTrace ();
try {
conn.rollback ();
} catch (SQLException e1) {
e1.printStackTrace ();
}
} finally {
System.out.println ("感谢您的使用,欢迎下次光临!!!!");
JDBCUtil.close (conn, null);
}
}
}