| | |
| | | package com.yeshi.fanli.service.manger.money;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.stereotype.Component;
|
| | | import org.springframework.transaction.annotation.Transactional;
|
| | |
|
| | | import com.yeshi.fanli.entity.money.TeamEincomeRecord;
|
| | | import com.yeshi.fanli.entity.money.UserMoneyDetail;
|
| | | import com.yeshi.fanli.exception.ParamsException;
|
| | | import com.yeshi.fanli.exception.money.TeamEincomeRecordException;
|
| | | import com.yeshi.fanli.exception.money.UserMoneyDetailException;
|
| | | import com.yeshi.fanli.service.inter.money.TeamEincomeRecordService;
|
| | | import com.yeshi.fanli.service.inter.money.UserMoneyService;
|
| | | import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
|
| | | import com.yeshi.fanli.util.TimeUtil;
|
| | | import com.yeshi.fanli.util.factory.UserMoneyDetailFactory;
|
| | | import com.yeshi.fanli.util.factory.money.TeamEincomeRecordFactory;
|
| | |
|
| | | /**
|
| | | * 团队收益管理
|
| | |
| | | @Component
|
| | | public class TeamEincomeManager {
|
| | |
|
| | | @Resource
|
| | | private TeamEincomeRecordService teamEincomeRecordService;
|
| | |
|
| | | @Resource
|
| | | private UserMoneyService userMoneyService;
|
| | |
|
| | | @Resource
|
| | | private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
|
| | |
|
| | | /**
|
| | | * @throws ParamsException |
| | | * @throws TeamEincomeRecordException |
| | | * 添加团队奖金
|
| | | * @Title: addTeamReward
|
| | | * @Description:
|
| | |
| | | * void 返回类型
|
| | | * @throws
|
| | | */
|
| | | public void addTeamReward(Long uid, Date preSendTime,int sourceType) {
|
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void addTeamReward(Long uid, Date preSendTime, BigDecimal money, int sourceType)
|
| | | throws TeamEincomeRecordException, ParamsException {
|
| | | String day = TimeUtil.getGernalTime(preSendTime.getTime(), "yyyy-MM-dd");
|
| | | TeamEincomeRecord record = TeamEincomeRecordFactory.createTeamReward(day, uid, money, sourceType, null);
|
| | | teamEincomeRecordService.addTeamEincomeRecord(record);
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | * void 返回类型
|
| | | * @throws
|
| | | */
|
| | | public void addTeamSubsidy(Long uid, String taskKey,int sourceType) {
|
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void addTeamSubsidy(Long uid, Date preSendTime, BigDecimal money, int sourceType)
|
| | | throws TeamEincomeRecordException, ParamsException {
|
| | | String day = TimeUtil.getGernalTime(preSendTime.getTime(), "yyyy-MM-dd");
|
| | | TeamEincomeRecord record = TeamEincomeRecordFactory.createTeamSubsidy(day, uid, money, sourceType, null);
|
| | | teamEincomeRecordService.addTeamEincomeRecord(record);
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | * void 返回类型
|
| | | * @throws
|
| | | */
|
| | | public void addTeamDividents(Long uid, Date preSendTime) {
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void addTeamDividents(Long uid, Date preSendTime, BigDecimal money)
|
| | | throws TeamEincomeRecordException, ParamsException {
|
| | | String day = TimeUtil.getGernalTime(preSendTime.getTime(), "yyyy-MM-dd");
|
| | | TeamEincomeRecord record = TeamEincomeRecordFactory.createTeamDividents(day, uid, money, null);
|
| | | teamEincomeRecordService.addTeamEincomeRecord(record);
|
| | | }
|
| | |
|
| | | /**
|
| | | * @throws UserMoneyDetailException |
| | | * 团队收益 到账到用户余额
|
| | | * @Title: addTOUserAccount
|
| | | * @Description: |
| | | * @param day
|
| | | * @param uid |
| | | * void 返回类型
|
| | | * @throws
|
| | | */
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void addTeamIncomeTOUserAccount(Date preSendTime, Long uid) throws UserMoneyDetailException {
|
| | |
|
| | | List<Integer> typeList = new ArrayList<>();
|
| | | typeList.add(TeamEincomeRecord.TYPE_TEAM_SUBSIDY);
|
| | | typeList.add(TeamEincomeRecord.TYPE_TEAM_REWARD);
|
| | |
|
| | | Date now = new Date();
|
| | | List<TeamEincomeRecord> list = teamEincomeRecordService.listCanRecieveRecord(preSendTime, uid, typeList);
|
| | | BigDecimal money = new BigDecimal(0);
|
| | | for (TeamEincomeRecord record : list) {
|
| | | record = teamEincomeRecordService.selectByPrimaryKeyForUpdate(record.getId());
|
| | | money = money.add(record.getMoney());
|
| | | teamEincomeRecordService.setRecieved(record.getId());
|
| | | }
|
| | |
|
| | | UserMoneyDetail detail = UserMoneyDetailFactory.createTeamReward(uid, money, preSendTime);
|
| | |
|
| | | userMoneyService.addUserMoney(uid, money, detail);
|
| | | // 发送消息
|
| | | BigDecimal balance = userMoneyService.getBalance(uid);
|
| | | userMoneyMsgNotificationService.teamReceive(uid, money, balance, now);
|
| | | }
|
| | |
|
| | | @Transactional(rollbackFor = Exception.class)
|
| | | public void addTeamDividentsTOUserAccount(Date preSendTime, Long uid) throws UserMoneyDetailException {
|
| | | List<Integer> typeList = new ArrayList<>();
|
| | | typeList.add(TeamEincomeRecord.TYPE_TEAM_DIVIDENTS);
|
| | | Date now = new Date();
|
| | | List<TeamEincomeRecord> list = teamEincomeRecordService.listCanRecieveRecord(preSendTime, uid, typeList);
|
| | | BigDecimal money = new BigDecimal(0);
|
| | | for (TeamEincomeRecord record : list) {
|
| | | record = teamEincomeRecordService.selectByPrimaryKeyForUpdate(record.getId());
|
| | | money = money.add(record.getMoney());
|
| | | teamEincomeRecordService.setRecieved(record.getId());
|
| | | }
|
| | |
|
| | | UserMoneyDetail detail = UserMoneyDetailFactory.createTeamDividents(uid, money, preSendTime);
|
| | |
|
| | | userMoneyService.addUserMoney(uid, money, detail);
|
| | | // 发送消息
|
| | | BigDecimal balance = userMoneyService.getBalance(uid);
|
| | | userMoneyMsgNotificationService.teamDividend(uid, money, balance, now);
|
| | | }
|
| | |
|
| | | }
|