/*
* Powered By zhangyunhua
* Web Site: http://www.hehenian.com
* Since 2008 - 2014
*/
package com.hehenian.biz.component.activity.impl;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.hehenian.biz.common.account.dataobject.AccountUserDo;
import com.hehenian.biz.common.activity.dataobject.ActivityAuthDo;
import com.hehenian.biz.common.activity.dataobject.ActivityLockDo;
import com.hehenian.biz.common.exception.BusinessException;
import com.hehenian.biz.common.util.CalculateUtils;
import com.hehenian.biz.component.account.IUserComponent;
import com.hehenian.biz.component.activity.IActivityAuthComponent;
import com.hehenian.biz.dal.account.IUserDao;
import com.hehenian.biz.dal.activity.IActivityAuthDao;
import com.hehenian.biz.dal.activity.IActivityLockDao;
/**
* @author zhangyunhua
* @version 1.0
* @since 1.0
*/
@Component("activityAuthComponent")
public class ActivityAuthComponentImpl implements IActivityAuthComponent {
@Autowired
private IActivityAuthDao activityAuthDao;
@Autowired
private IUserDao userDao;
@Autowired
private IUserComponent userComponent;
@Autowired
private IActivityLockDao activityLockDao;
/**
* 根据ID 查询
*
* @parameter id
*/
public ActivityAuthDo getById(int id) {
return activityAuthDao.getById(id);
}
/**
* 根据条件查询列表
*/
public List<ActivityAuthDo> selectActivityAuth(Map<String, Object> parameterMap) {
return activityAuthDao.selectActivityAuth(parameterMap);
}
/**
* 更新
*/
public int updateActivityAuthById(ActivityAuthDo newActivityAuthDo) {
int result = activityAuthDao.updateActivityAuthById(newActivityAuthDo);
if (result < 1) {
throw new BusinessException("更新失败");
}
return result;
}
/**
* 新增
*/
public int addActivityAuth(ActivityAuthDo newActivityAuthDo) {
return activityAuthDao.addActivityAuth(newActivityAuthDo);
}
/**
* 删除
*/
public int deleteById(int id) {
return activityAuthDao.deleteById(id);
}
public ActivityAuthDo getByOrdId(ActivityAuthDo activityAuthDo) {
return activityAuthDao.getByOrdId(activityAuthDo);
}
@Override
public ActivityAuthDo getByFromUserIdAndToUserId(Long fromUserId, Long toUserId) {
return activityAuthDao.getByFromUserIdAndToUserId(fromUserId, toUserId);
}
@Override
public boolean updateTransferAuth(long usrCustId, long inUsrCustId, double authAmt) {
AccountUserDo fromUserDo = userDao.getUserByCustId(usrCustId + "");
AccountUserDo toUserDo = userDao.getUserByCustId(inUsrCustId + "");
ActivityAuthDo localActivityAuthDo = activityAuthDao.getByFromUserIdAndToUserId(fromUserDo.getId(),
toUserDo.getId());
ActivityAuthDo activityAuthDo = new ActivityAuthDo();
activityAuthDo.setAuthId(localActivityAuthDo.getAuthId());
Double authedAmt = getAuthAmtByFromUserIdAndToUserId(fromUserDo.getId(), toUserDo.getId());// 已授权金额
if (CalculateUtils.gt(CalculateUtils.sub(authAmt, authedAmt), 0d)) {
authAmt = CalculateUtils.sub(authAmt, authedAmt);
}
activityAuthDo.setAuthAmount(authAmt);
activityAuthDo.setAuthStatus(1);// 授权成功
updateActivityAuthById(activityAuthDo);
// 修改用户账户的锁定金额
AccountUserDo userDo = new AccountUserDo();
userDo.setId(fromUserDo.getId());
userDo.setLockAmount(authAmt);
userComponent.updateAmount(userDo);
ActivityLockDo activityLockDo = new ActivityLockDo();
activityLockDo.setOrdId(localActivityAuthDo.getOrdId());
activityLockDo.setUserId(fromUserDo.getId());
activityLockDo.setAmount(authAmt);
activityLockDo.setLockType(0);// 0-锁定
activityLockDo.setStatus(1);// 1-成功
activityLockDao.addActivityLock(activityLockDo);
return true;
}
@Override
public Double getAuthAmtByFromUserIdAndToUserId(Long fromUserId, Long toUserId) {
Double authAmt = activityAuthDao.getAuthAmtByFromUserIdAndToUserId(fromUserId, toUserId);
return (authAmt == null ? 0d : authAmt);
}
}