package project.wallet.consumer;
|
|
import java.sql.PreparedStatement;
|
import java.sql.SQLException;
|
|
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
public class WalletDaoImpl implements WalletDao {
|
|
private JdbcTemplate jdbcTemplate;
|
|
@Override
|
public void update(final WalletMessage walletMessage) {
|
if(walletMessage.getLockMoney()!=0d||walletMessage.getFreezeMoney()!=0d) {
|
updateLockAndFreeze(walletMessage);
|
return ;
|
}
|
String sql = "UPDATE T_WALLET SET MONEY=ROUND(MONEY+?,8) WHERE PARTY_ID=?";
|
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
|
@Override
|
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
ps.setDouble(1, walletMessage.getMoney());
|
ps.setString(2, walletMessage.getPartyId().toString());
|
}
|
|
@Override
|
public int getBatchSize() {
|
return 1;
|
}
|
});
|
|
}
|
|
/**
|
* 附加锁定金额和冻结金额更新
|
* @param walletMessage
|
*/
|
public void updateLockAndFreeze(final WalletMessage walletMessage) {
|
String sql = "UPDATE T_WALLET SET MONEY=ROUND(MONEY+?,8),LOCK_MONEY=ROUND(LOCK_MONEY+?,8),FREEZE_MONEY=ROUND(FREEZE_MONEY+?,8) WHERE PARTY_ID=?";
|
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
|
@Override
|
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
ps.setDouble(1, walletMessage.getMoney());
|
ps.setDouble(2, walletMessage.getLockMoney());
|
ps.setDouble(3, walletMessage.getFreezeMoney());
|
ps.setString(4, walletMessage.getPartyId().toString());
|
}
|
|
@Override
|
public int getBatchSize() {
|
return 1;
|
}
|
});
|
|
}
|
|
@Override
|
public void update(final WalletExtendMessage walletExtendMessage) {
|
if(walletExtendMessage.getLockVolumn() != 0 || walletExtendMessage.getFreezeVolumn() != 0) {
|
updateLockAndFreeze(walletExtendMessage);
|
return;
|
}
|
if (walletExtendMessage.getFrozenAmount() == 0) {
|
String sql = "UPDATE T_WALLET_EXTEND SET AMOUNT=ROUND(AMOUNT+?,8) WHERE PARTY_ID=? AND WALLETTYPE=? ";
|
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
@Override
|
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
ps.setDouble(1, walletExtendMessage.getVolumn());
|
ps.setString(2, walletExtendMessage.getPartyId().toString());
|
ps.setString(3, walletExtendMessage.getWalletType());
|
}
|
@Override
|
public int getBatchSize() {
|
return 1;
|
}
|
});
|
} else {
|
String sql = "UPDATE T_WALLET_EXTEND SET AMOUNT = ROUND(AMOUNT + ?, 8), FROZEN_AMOUNT = ROUND(FROZEN_AMOUNT + ?, 8) WHERE PARTY_ID = ? AND WALLETTYPE = ? ";
|
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
@Override
|
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
ps.setDouble(1, walletExtendMessage.getVolumn());
|
ps.setDouble(2, walletExtendMessage.getFrozenAmount());
|
ps.setString(3, walletExtendMessage.getPartyId().toString());
|
ps.setString(4, walletExtendMessage.getWalletType());
|
}
|
@Override
|
public int getBatchSize() {
|
return 1;
|
}
|
});
|
}
|
}
|
|
public void updateLockAndFreeze(final WalletExtendMessage walletExtendMessage) {
|
String sql = "UPDATE T_WALLET_EXTEND SET AMOUNT=ROUND(AMOUNT+?,8),LOCK_AMOUNT=ROUND(LOCK_AMOUNT+?,8),FREEZE_AMOUNT=ROUND(FREEZE_AMOUNT+?,8) WHERE PARTY_ID=? AND WALLETTYPE=? ";
|
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
|
|
@Override
|
public void setValues(PreparedStatement ps, int i) throws SQLException {
|
ps.setDouble(1, walletExtendMessage.getVolumn());
|
ps.setDouble(2, walletExtendMessage.getLockVolumn());
|
ps.setDouble(3, walletExtendMessage.getFreezeVolumn());
|
ps.setString(4, walletExtendMessage.getPartyId().toString());
|
ps.setString(5, walletExtendMessage.getWalletType());
|
}
|
|
@Override
|
public int getBatchSize() {
|
return 1;
|
}
|
});
|
|
}
|
|
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
|
this.jdbcTemplate = jdbcTemplate;
|
}
|
|
}
|