package com.caimei.modules.user.service; import com.caimei.modules.user.dao.CmUserBalanceWithdrawalsDao; import com.caimei.modules.user.entity.CmUserBalanceWithdrawals; import com.caimei.modules.user.dao.CmUserBalanceRecordDao; import com.caimei.modules.user.dao.CmUserDao; import com.caimei.modules.user.entity.CmUser; import com.caimei.modules.user.entity.CmUserBalanceRecord; import com.caimei.utils.MathUtil; import com.thinkgem.jeesite.common.persistence.Page; import com.thinkgem.jeesite.common.service.CrudService; import com.thinkgem.jeesite.common.utils.StringUtils; import com.thinkgem.jeesite.modules.sys.entity.User; import com.thinkgem.jeesite.modules.sys.utils.UserUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * 会所余额提现Service * * @author lijun * @version 2019-11-12 */ @Service @Transactional(readOnly = true) public class CmUserBalanceWithdrawalsService extends CrudService { @Resource CmUserBalanceWithdrawalsDao cmUserBalanceWithdrawalsDao; @Resource private CmUserDao cmUserDao; @Resource private CmUserBalanceRecordDao cmUserBalanceRecordDao; public CmUserBalanceWithdrawals get(String id) { CmUserBalanceWithdrawals withdrawals = super.get(id); setUserName(withdrawals); return withdrawals; } private void setUserName(CmUserBalanceWithdrawals withdrawals) { if (withdrawals != null) { if (StringUtils.isNotBlank(withdrawals.getApplicant())) { User user = UserUtils.get(withdrawals.getApplicant()); if (user != null) { withdrawals.setApplicantName(user.getName()); } } if (StringUtils.isNotBlank(withdrawals.getReviewer())) { User user = UserUtils.get(withdrawals.getReviewer()); if (user != null) { withdrawals.setReviewerName(user.getName()); } } } } public List findList(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) { return super.findList(cmUserBalanceWithdrawals); } public Page findPage(Page page, CmUserBalanceWithdrawals cmUserBalanceWithdrawals) { Page withdrawalsPage = super.findPage(page, cmUserBalanceWithdrawals); List withdrawalsList = withdrawalsPage.getList(); if (withdrawalsList != null && withdrawalsList.size() > 0) { for (CmUserBalanceWithdrawals withdrawals : withdrawalsList) { setUserName(withdrawals); } } return withdrawalsPage; } @Transactional(readOnly = false) public void save(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) { CmUser cmUser = cmUserDao.get(String.valueOf(cmUserBalanceWithdrawals.getUserID())); if (MathUtil.compare(cmUser.getAbleUserMoney(), cmUserBalanceWithdrawals.getWithdrawalsFee()) > -1) { //余额必须大于等于提现金额 User user = UserUtils.getUser(); Date date = new Date(); cmUserBalanceWithdrawals.setAddDate(date); cmUserBalanceWithdrawals.setApplicant(user.getId()); cmUserBalanceWithdrawals.setStatus("0"); cmUserBalanceWithdrawals.setDelFlag("0"); cmUserBalanceWithdrawalsDao.insert(cmUserBalanceWithdrawals); } } @Transactional(readOnly = false) public void delete(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) { cmUserBalanceWithdrawalsDao.deleteById(Integer.valueOf(cmUserBalanceWithdrawals.getId())); } @Transactional(readOnly = false) public void deleteById(Integer id) { cmUserBalanceWithdrawalsDao.deleteById(id); } @Transactional(readOnly = false) public void withdrawalReviewData(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) { User user = UserUtils.getUser(); Date time = new Date(); if (StringUtils.isNotBlank(cmUserBalanceWithdrawals.getReason())) { //审核不通过 cmUserBalanceWithdrawals.setStatus("2"); cmUserBalanceWithdrawals.setReviewer(user.getId()); cmUserBalanceWithdrawals.setReviewTime(time); cmUserBalanceWithdrawalsDao.update(cmUserBalanceWithdrawals); } else { //审核通过 cmUserBalanceWithdrawals.setStatus("1"); cmUserBalanceWithdrawals.setReviewer(user.getId()); cmUserBalanceWithdrawals.setReviewTime(time); cmUserBalanceWithdrawals.setPayTime(time); cmUserBalanceWithdrawalsDao.update(cmUserBalanceWithdrawals); //添加余额收支记录 CmUserBalanceRecord cmUserBalanceRecord = new CmUserBalanceRecord(); cmUserBalanceRecord.setUserId(cmUserBalanceWithdrawals.getUserID().intValue()); cmUserBalanceRecord.setType("2"); cmUserBalanceRecord.setBalanceType("5"); cmUserBalanceRecord.setAddDate(time); //提现金额 BigDecimal withdrawalsFee = cmUserBalanceWithdrawals.getWithdrawalsFee(); cmUserBalanceRecord.setAmount(String.valueOf(withdrawalsFee)); cmUserBalanceRecord.setWithdrawalsId(Integer.parseInt(cmUserBalanceWithdrawals.getId()));//提现信息ID cmUserBalanceRecord.setDelFlag("0"); cmUserBalanceRecordDao.insertUserBalanceRecord(cmUserBalanceRecord); //更新用户余额总金额 CmUser cmUser = cmUserDao.get(String.valueOf(cmUserBalanceWithdrawals.getUserID())); cmUser.setUserID(cmUserBalanceWithdrawals.getUserID().intValue()); BigDecimal sub = MathUtil.sub(cmUser.getAbleUserMoney(), withdrawalsFee); cmUser.setAbleUserMoney(sub.doubleValue()); cmUser.setUserMoney(sub.doubleValue()); cmUserDao.updateMoney(cmUser); } } @Transactional(readOnly = false) public void withdrawalEditSave(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) { cmUserBalanceWithdrawalsDao.update(cmUserBalanceWithdrawals); } @Transactional(readOnly = false) public void rollBackApply(CmUserBalanceWithdrawals cmUserBalanceWithdrawals) { //撤销提现记录 cmUserBalanceRecordDao.updateByWithdrawalsId(cmUserBalanceWithdrawals.getId()); //撤销用户余额金额 CmUser cmUser = cmUserDao.get(String.valueOf(cmUserBalanceWithdrawals.getUserID())); BigDecimal userMoney = MathUtil.add(cmUser.getAbleUserMoney(), cmUserBalanceWithdrawals.getWithdrawalsFee()); cmUser.setAbleUserMoney(userMoney.doubleValue()); cmUser.setUserMoney(userMoney.doubleValue()); cmUserDao.updateMoney(cmUser); //撤销提现记录 cmUserBalanceWithdrawals.setStatus("0"); cmUserBalanceWithdrawals.setReviewTime(null); cmUserBalanceWithdrawals.setReviewer(null); cmUserBalanceWithdrawals.setPayTime(null); cmUserBalanceWithdrawalsDao.update(cmUserBalanceWithdrawals); } }