package com.yeshi.fanli.service.impl.order.dividents;
|
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import com.yeshi.fanli.dao.mybatis.order.dividents.TeamDividentsSourceOrderUserMapMapper;
|
import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceOrderUserMap;
|
import com.yeshi.fanli.exception.ParamsException;
|
import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderUserMapService;
|
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
|
@Service
|
public class TeamDividentsSourceOrderUserMapServiceImpl implements TeamDividentsSourceOrderUserMapService {
|
|
@Resource
|
private TeamDividentsSourceOrderUserMapMapper teamDividentsSourceOrderUserMapMapper;
|
|
@Override
|
public TeamDividentsSourceOrderUserMap selectByPrimaryKeyForUpdate(Long id) {
|
return teamDividentsSourceOrderUserMapMapper.selectByPrimaryKeyForUpdate(id);
|
}
|
|
@Transactional
|
@Override
|
public void send(Long id) {
|
TeamDividentsSourceOrderUserMap map = teamDividentsSourceOrderUserMapMapper.selectByPrimaryKeyForUpdate(id);
|
if (map == null)
|
return;
|
if (map.getState() == TeamDividentsSourceOrderUserMap.STATE_JS) {
|
TeamDividentsSourceOrderUserMap update = new TeamDividentsSourceOrderUserMap();
|
update.setId(id);
|
update.setState(TeamDividentsSourceOrderUserMap.STATE_YILINGQU);
|
update.setSendTime(new Date());
|
update.setUpdateTime(new Date());
|
teamDividentsSourceOrderUserMapMapper.updateByPrimaryKeySelective(update);
|
}
|
}
|
|
@Override
|
public void addDividentsSourceOrderUserMap(TeamDividentsSourceOrderUserMap map) throws ParamsException {
|
if (map == null || map.getMoney() == null || map.getRate() == null || map.getSourceOrder() == null
|
|| map.getSourceUid() == null || map.getTargetUid() == null || map.getType() == null) {
|
throw new ParamsException(1, "参数不完整");
|
}
|
|
List<Integer> typeList = new ArrayList<Integer>();
|
typeList.add(map.getType());
|
long count = teamDividentsSourceOrderUserMapMapper.count(map.getSourceOrder().getId(), null, map.getTargetUid(),
|
null, null, typeList);
|
if (count > 0)
|
return;
|
|
if (map.getCreateTime() == null)
|
map.setCreateTime(new Date());
|
|
teamDividentsSourceOrderUserMapMapper.insertSelective(map);
|
}
|
|
@Override
|
public List<TeamDividentsSourceOrderUserMap> listCanSend(Long sourceUid, Date maxPreSendTime, int page,
|
int pageSize) {
|
|
List<Integer> stateList = new ArrayList<Integer>();
|
stateList.add(TeamDividentsSourceOrderUserMap.STATE_JS);
|
return teamDividentsSourceOrderUserMapMapper.list(null, sourceUid, null, maxPreSendTime, stateList, null,
|
(page - 1) * pageSize, pageSize);
|
}
|
|
@Override
|
public long countCanSend(Long sourceUid, Date maxPreSendTime) {
|
List<Integer> stateList = new ArrayList<Integer>();
|
stateList.add(TeamDividentsSourceOrderUserMap.STATE_JS);
|
return teamDividentsSourceOrderUserMapMapper.count(null, sourceUid, null, maxPreSendTime, stateList, null);
|
}
|
|
@Override
|
public long countBySourceOrderId(Long sourceOrderId) {
|
return teamDividentsSourceOrderUserMapMapper.count(sourceOrderId, null, null, null, null, null);
|
}
|
|
@Override
|
public List<TeamDividentsSourceOrderUserMap> listBySourceOrderId(Long sourceOrderId) {
|
return teamDividentsSourceOrderUserMapMapper.list(sourceOrderId, null, null, null, null, null, 0, 10000);
|
}
|
|
@Override
|
public List<Long> listCanSendSourceUidByPreSendTime(Date preSendTime, int page, int count) {
|
return teamDividentsSourceOrderUserMapMapper.listCanSendSourceUidByPreSendTime(preSendTime, (page - 1) * count,
|
count);
|
}
|
|
@Override
|
public Long countCanSendSourceUidByPreSendTime(Date preSendTime) {
|
return teamDividentsSourceOrderUserMapMapper.countCanSendSourceUidByPreSendTime(preSendTime);
|
}
|
|
@Transactional
|
@Override
|
public void invalidBySourceOrderId(Long sourceOrderId) {
|
List<TeamDividentsSourceOrderUserMap> mapList = listBySourceOrderId(sourceOrderId);
|
if (mapList != null)
|
for (TeamDividentsSourceOrderUserMap map : mapList) {
|
if (map.getState() == TeamDividentsSourceOrderUserMap.STATE_FK
|
|| map.getState() == TeamDividentsSourceOrderUserMap.STATE_JS) {
|
|
TeamDividentsSourceOrderUserMap update = new TeamDividentsSourceOrderUserMap();
|
update.setId(map.getId());
|
update.setUpdateTime(new Date());
|
update.setState(TeamDividentsSourceOrderUserMap.STATE_SX);
|
teamDividentsSourceOrderUserMapMapper.updateByPrimaryKeySelective(update);
|
}
|
}
|
}
|
|
@Override
|
public void invalidOrderBySourceUid(Long sourceUid, String beiZhu) {
|
List<Integer> stateList = new ArrayList<>();
|
stateList.add(TeamDividentsSourceOrderUserMap.STATE_FK);
|
stateList.add(TeamDividentsSourceOrderUserMap.STATE_JS);
|
teamDividentsSourceOrderUserMapMapper.invalidOrderBySourceUid(sourceUid, beiZhu, stateList);
|
}
|
|
@Transactional
|
@Override
|
public void orderSettle(Long sourceOrderId, Date preSendTime, BigDecimal income) {
|
List<TeamDividentsSourceOrderUserMap> mapList = listBySourceOrderId(sourceOrderId);
|
if (mapList != null)
|
for (TeamDividentsSourceOrderUserMap map : mapList) {
|
if (map.getState() == TeamDividentsSourceOrderUserMap.STATE_FK) {
|
|
TeamDividentsSourceOrderUserMap update = new TeamDividentsSourceOrderUserMap();
|
update.setId(map.getId());
|
update.setMoney(MoneyBigDecimalUtil.div(income.multiply(map.getRate()), new BigDecimal(100), 3));
|
update.setUpdateTime(new Date());
|
update.setState(TeamDividentsSourceOrderUserMap.STATE_JS);
|
update.setPreSendTime(preSendTime);
|
teamDividentsSourceOrderUserMapMapper.updateByPrimaryKeySelective(update);
|
}
|
}
|
}
|
|
@Transactional
|
@Override
|
public void updateMoney(Long sourceOrderId, BigDecimal income) {
|
List<TeamDividentsSourceOrderUserMap> mapList = listBySourceOrderId(sourceOrderId);
|
if (mapList != null)
|
for (TeamDividentsSourceOrderUserMap map : mapList) {
|
if (map.getState() == TeamDividentsSourceOrderUserMap.STATE_FK) {
|
TeamDividentsSourceOrderUserMap update = new TeamDividentsSourceOrderUserMap();
|
update.setId(map.getId());
|
update.setMoney(MoneyBigDecimalUtil.div(income.multiply(map.getRate()), new BigDecimal(100), 3));
|
update.setUpdateTime(new Date());
|
teamDividentsSourceOrderUserMapMapper.updateByPrimaryKeySelective(update);
|
}
|
}
|
}
|
|
}
|