From 573c491b4a1ba60e12a5678a01c1546c0077c1ee Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 30 七月 2019 09:07:42 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/BindingAccountServiceImpl.java | 117 ++++++++++++++++++++++++++++++++-------------------------- 1 files changed, 64 insertions(+), 53 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/BindingAccountServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/BindingAccountServiceImpl.java index 2eed9df..f480c14 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/BindingAccountServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/BindingAccountServiceImpl.java @@ -1,6 +1,5 @@ package com.yeshi.fanli.service.impl.user; -import java.io.Serializable; import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; @@ -9,11 +8,6 @@ import javax.annotation.Resource; -import org.hibernate.HibernateException; -import org.hibernate.Query; -import org.hibernate.Session; -import org.hibernate.Transaction; -import org.springframework.orm.hibernate4.HibernateCallback; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,81 +16,78 @@ import com.alipay.api.DefaultAlipayClient; import com.alipay.api.request.AlipayFundTransToaccountTransferRequest; import com.alipay.api.response.AlipayFundTransToaccountTransferResponse; -import com.yeshi.fanli.dao.mybatis.AccountDetailsMapper; import com.yeshi.fanli.dao.mybatis.AlipayAccountValidNormalHistoryMapper; import com.yeshi.fanli.dao.mybatis.BindingAccountMapper; import com.yeshi.fanli.dao.mybatis.UserInfoMapper; -import com.yeshi.fanli.dao.user.BindingAccountDao; -import com.yeshi.fanli.entity.bus.user.AccountDetails; +import com.yeshi.fanli.dao.mybatis.money.UserMoneyDetailMapper; import com.yeshi.fanli.entity.bus.user.AlipayAccountValidNormalHistory; import com.yeshi.fanli.entity.bus.user.BindingAccount; +import com.yeshi.fanli.entity.bus.user.UserAccountBindingHistory; import com.yeshi.fanli.entity.bus.user.UserInfo; +import com.yeshi.fanli.entity.money.UserMoneyDetail; import com.yeshi.fanli.exception.AlipayAccountException; import com.yeshi.fanli.exception.AlipayTransferException; import com.yeshi.fanli.exception.BindingAccountException; +import com.yeshi.fanli.exception.money.UserMoneyDetailException; +import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.user.BindingAccountService; +import com.yeshi.fanli.service.inter.user.UserAccountBindingHistoryService; +import com.yeshi.fanli.service.inter.user.UserMoneyService; import com.yeshi.fanli.service.inter.user.UserNotificationService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.factory.AccountDetailsFactory; +import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; import net.sf.json.JSONObject; @Service public class BindingAccountServiceImpl implements BindingAccountService { - - @Resource - private BindingAccountDao bindingAccountDao; @Resource private BindingAccountMapper bindingAccountMapper; @Resource private AlipayAccountValidNormalHistoryMapper alipayAccountValidNormalHistoryMapper; @Resource private UserInfoMapper userInfoMapper; - @Resource - private AccountDetailsMapper accountDetailsMapper; + @Resource private UserNotificationService userNotificationService; + @Resource + private UserAccountBindingHistoryService userAccountBindingHistoryService; + + @Resource + private UserMoneyDetailMapper userMoneyDetailMapper; + + @Resource + private UserMoneyService userMoneyService; + public List<BindingAccount> getBindingAccountByUid(long uid) { - return bindingAccountDao.list("from BindingAccount ba where ba.userInfo.id=?", new Serializable[] { uid }); + return bindingAccountMapper.selectByUid(uid); } public void addBindingAccount(BindingAccount addAccount) throws BindingAccountException { - List<BindingAccount> list = bindingAccountDao.list( - "from BindingAccount ba where ba.userInfo.id=? and ba.type=?", - new Serializable[] { addAccount.getUserInfo().getId(), addAccount.getType() }); - if (list == null || list.size() == 0) { - bindingAccountDao.save(addAccount); + BindingAccount account = bindingAccountMapper.selectByUidAndType(addAccount.getUserInfo().getId(), + addAccount.getType()); + + if (account == null) { + bindingAccountMapper.insertSelective(addAccount); } else { throw new BindingAccountException(Constant.BA_EXIST); } } - public Integer deleteBindingAccount(final BindingAccount account) { - return (Integer) bindingAccountDao.excute(new HibernateCallback() { - - public Integer doInHibernate(Session session) throws HibernateException { - Transaction transaction = session.beginTransaction(); - Query delete = session.createQuery("delete BindingAccount ba where ba.userInfo.id=? and ba.type=?"); - delete.setLong(0, account.getUserInfo().getId()); - delete.setInteger(1, account.getType()); - int update = delete.executeUpdate(); - transaction.commit(); - return update; - } - - }); + @Transactional + public Integer deleteBindingAccount(BindingAccount account) { + BindingAccount oldAccount = bindingAccountMapper.selectByUidAndType(account.getUserInfo().getId(), + account.getType()); + if (oldAccount != null) + bindingAccountMapper.deleteByPrimaryKey(oldAccount.getId()); + return 1; } public BindingAccount getBindingAccountByUidAndType(long uid, int type) { - - List<BindingAccount> list = bindingAccountDao - .list("from BindingAccount ba where ba.userInfo.id=? and ba.type=?", new Serializable[] { uid, type }); - if (list != null && list.size() != 0) { - return list.get(0); - } - return null; + BindingAccount account = bindingAccountMapper.selectByUidAndType(uid, type); + return account; } @Override @@ -109,11 +100,11 @@ bindingAccount.setName(name); bindingAccount.setType(BindingAccount.TYPE_ALIPAY); bindingAccount.setUserInfo(new UserInfo(uid)); - bindingAccountDao.create(bindingAccount); + bindingAccountMapper.insertSelective(bindingAccount); } else { bindingAccount.setName(name); bindingAccount.setAccount(account); - bindingAccountDao.update(bindingAccount); + bindingAccountMapper.updateByPrimaryKeySelective(bindingAccount); } return bindingAccount; } @@ -153,13 +144,12 @@ UserInfo userInfo = userInfoMapper.selectByPrimaryKeyForUpdate(uid); if (userInfo.getMyHongBao().compareTo(new BigDecimal("0")) <= 0) - throw new AlipayAccountException(AlipayAccountException.CODE_NO_MONEY, "浣犵殑璐︽埛鐩墠娌℃湁浣欓锛屾殏鏃朵笉鑳界粦瀹氭敮浠樺疂鎻愮幇"); + throw new AlipayAccountException(AlipayAccountException.CODE_NO_MONEY, "浣犵殑璐︽埛鐩墠娌℃湁浣欓锛屾棤闇�缁戝畾鎻愮幇甯愬彿銆�"); // 闇�瑕佽浆璐﹂獙璇� BigDecimal money = new BigDecimal("0.1"); transferAlipayWithVerify(account, name); - // 鎵f - userInfoMapper.subHongBaoByUid(uid, money); + // 杞处鎴愬姛 // 鎻掑叆杞处鎴愬姛琛� AlipayAccountValidNormalHistory history = new AlipayAccountValidNormalHistory(); @@ -168,10 +158,21 @@ history.setName(name); history.setUid(uid); alipayAccountValidNormalHistoryMapper.insertSelective(history); - // 璧勯噾璁板綍 绔欏唴淇� - AccountDetails accountDetails = AccountDetailsFactory.create("-" + money.toString(), - AccountDetailsFactory.VALID_ALIPAY_ACCOUNT, null, null, new UserInfo(uid)); - accountDetailsMapper.insertSelective(accountDetails); + UserMoneyDetail userMoneyDetail = null; + // 鏂扮増璧勯噾 + try { + userMoneyDetail = UserMoneyDetailFactory.createExtractAccountValid(history, money); + } catch (UserMoneyDetailException e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + // 鎵f + userMoneyService.subUserMoney(uid, money, userMoneyDetail); + userNotificationService.alipayAccountValidRight(uid, money, account); } @@ -209,6 +210,17 @@ @Override public BindingAccount changeAlipayBindingWithVerify(Long uid, String name, String account) throws AlipayTransferException, AlipayApiException, AlipayAccountException { + BindingAccount bindingAccount = bindingAccountMapper.selectByUidAndType(uid, BindingAccount.TYPE_ALIPAY); + if (bindingAccount != null) { + // 楠岃瘉鏄惁7澶╁唴鏇存崲浜嗘墜鏈哄彿 + UserAccountBindingHistory history = userAccountBindingHistoryService.getLatestHistory(uid, + UserAccountBindingHistory.TYPE_PHONE); + // 鎵嬫満鍙锋洿鎹㈢粦瀹氱殑7澶╁唴涓嶈兘鎻愮幇 + if (history != null && !history.getFirst() + && (System.currentTimeMillis() - history.getCreateTime().getTime()) < 1000 * 60 * 60 * 24 * 7L) { + throw new AlipayAccountException(111, "淇敼鎵嬫満鍙�7澶╁唴涓嶅厑璁镐慨鏀规敮浠樺疂璐﹀彿"); + } + } try { validAlipayAccount(uid, account, name); @@ -220,7 +232,6 @@ throw new AlipayAccountException(e1.getCode(), e1.getMsg()); } - BindingAccount bindingAccount = bindingAccountMapper.selectByUidAndType(uid, BindingAccount.TYPE_ALIPAY); if (bindingAccount == null)// 鍒涘缓璐﹀彿 { bindingAccount = new BindingAccount(); @@ -254,7 +265,7 @@ caLatest.setTimeInMillis(latest.getCreateTime().getTime()); Calendar nowLatest = Calendar.getInstance(); if (caLatest.get(Calendar.MONTH) == nowLatest.get(Calendar.MONTH))// 涓婃鏇存敼鍜岀幇鍦ㄦ槸鍚屼竴涓湀 - throw new BindingAccountException(2, "鏈湀鏀粯瀹濈粦瀹氭鏁拌秴闄�"); + throw new BindingAccountException(2, "姣忔湀浠呭彲淇敼1娆℃彁鐜拌处鍙凤紝璇蜂笅鏈堝啀璇曞惂銆�"); } return true; } -- Gitblit v1.8.0