package com.yeshi.fanli.service.impl.money.msg;
|
|
import java.util.Date;
|
import java.util.List;
|
|
import javax.annotation.Resource;
|
|
import org.springframework.stereotype.Service;
|
|
import com.yeshi.fanli.dao.mybatis.msg.MsgMoneyDetailMapper;
|
import com.yeshi.fanli.entity.bus.msg.MsgExtra;
|
import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail;
|
import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
|
import com.yeshi.fanli.exception.msg.MsgMoneyDetailException;
|
import com.yeshi.fanli.service.inter.money.msg.MsgMoneyDetailService;
|
import com.yeshi.fanli.service.inter.msg.MsgExtraService;
|
import com.yeshi.fanli.service.inter.msg.UserMsgReadStateService;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
|
@Service
|
public class MsgMoneyDetailServiceImpl implements MsgMoneyDetailService {
|
|
@Resource
|
private MsgMoneyDetailMapper msgMoneyDetailMapper;
|
|
@Resource
|
private UserMsgReadStateService userMsgReadStateService;
|
|
@Resource
|
private MsgExtraService msgExtraService;
|
|
@Override
|
public void addMsgMoneyDetail(MsgMoneyDetail detail) throws MsgMoneyDetailException {
|
if (detail == null || detail.getUser() == null || StringUtil.isNullOrEmpty(detail.getExtraInfo()))
|
throw new MsgMoneyDetailException(1, "消息信息不全");
|
if (detail.getMsgType() == MsgTypeMoneyTypeEnum.extract) {
|
if (detail.getExtract() == null)
|
throw new MsgMoneyDetailException(2, "消息信息不全");
|
MsgMoneyDetail msg = msgMoneyDetailMapper.selectBySourceIdAndMsgType(detail.getExtract().getId(),
|
MsgTypeMoneyTypeEnum.extract);
|
if (msg == null) {
|
detail.setCreateTime(new Date());
|
detail.setUpdateTime(new Date());
|
detail.setRead(false);
|
msgMoneyDetailMapper.insertSelective(detail);
|
msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY);
|
} else {
|
MsgMoneyDetail update = new MsgMoneyDetail();
|
update.setId(msg.getId());
|
update.setUpdateTime(new Date());
|
update.setRead(false);
|
update.setStateDesc(detail.getStateDesc());
|
msgMoneyDetailMapper.updateByPrimaryKeySelective(update);
|
msgExtraService.addMsgExtra(update.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY);
|
}
|
} else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.extractValid) {
|
if (detail.getAlipayAccountValid() == null)
|
throw new MsgMoneyDetailException(2, "消息信息不全");
|
MsgMoneyDetail msg = msgMoneyDetailMapper.selectBySourceIdAndMsgType(detail.getAlipayAccountValid().getId(),
|
MsgTypeMoneyTypeEnum.extractValid);
|
if (msg == null) {
|
detail.setCreateTime(new Date());
|
detail.setUpdateTime(new Date());
|
detail.setRead(false);
|
msgMoneyDetailMapper.insertSelective(detail);
|
msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY);
|
} else {
|
MsgMoneyDetail update = new MsgMoneyDetail();
|
update.setId(msg.getId());
|
update.setUpdateTime(new Date());
|
update.setRead(false);
|
update.setStateDesc(detail.getStateDesc());
|
msgMoneyDetailMapper.updateByPrimaryKeySelective(update);
|
msgExtraService.addMsgExtra(update.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY);
|
}
|
} else {
|
detail.setCreateTime(new Date());
|
detail.setUpdateTime(new Date());
|
detail.setRead(false);
|
msgMoneyDetailMapper.insertSelective(detail);
|
msgExtraService.addMsgExtra(detail.getId(), detail.getExtraInfo(), MsgExtra.MSG_TYPE_MONEY);
|
}
|
userMsgReadStateService.addMoneyMsgUnReadCount(detail.getUser().getId(), 1);
|
}
|
|
@Override
|
public List<MsgMoneyDetail> listMsgMoneyDetail(Long uid, int page) {
|
return msgMoneyDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE);
|
}
|
|
@Override
|
public long countMsgMoneyDetail(Long uid) {
|
return msgMoneyDetailMapper.countByUid(uid);
|
}
|
|
@Override
|
public void readMsgByUid(Long uid) {
|
msgMoneyDetailMapper.setMsgReadByUid(uid);
|
}
|
|
|
@Override
|
public MsgMoneyDetail selectByPrimaryKey(Long id) {
|
return msgMoneyDetailMapper.selectByPrimaryKey(id);
|
}
|
|
@Override
|
public void deleteByPrimaryKey(Long id) {
|
msgMoneyDetailMapper.deleteByPrimaryKey(id);
|
msgExtraService.deleteByPidAndType(id, MsgExtra.MSG_TYPE_MONEY);
|
}
|
}
|