package com.yeshi.fanli.service.impl.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.MsgInviteDetailMapper; import com.yeshi.fanli.entity.bus.msg.MsgInviteDetail; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.exception.msg.MsgInviteDetailException; import com.yeshi.fanli.service.inter.msg.MsgInviteDetailService; import com.yeshi.fanli.service.inter.msg.UserMsgReadStateService; import com.yeshi.fanli.util.Constant; @Service public class MsgInviteDetailServiceImpl implements MsgInviteDetailService { @Resource private MsgInviteDetailMapper msgInviteDetailMapper; @Resource private UserMsgReadStateService userMsgReadStateService; @Override public void addMsgInviteDetail(MsgInviteDetail detail) throws MsgInviteDetailException { if (detail == null) throw new MsgInviteDetailException(1, "消息为空"); if (detail.getInviteUser() == null || detail.getMsgType() == null || detail.getUser() == null || detail.getDesc() == null) throw new MsgInviteDetailException(2, "消息内容不完整"); // 查询是否已存在该邀请ID MsgInviteDetail oldDetail = msgInviteDetailMapper.selectByThreeSaleId(detail.getInviteUser().getId()); if (oldDetail == null) { detail.setCreateTime(new Date()); detail.setUpdateTime(new Date()); detail.setRead(false); msgInviteDetailMapper.insertSelective(detail); } else { MsgInviteDetail update = new MsgInviteDetail(); update.setId(oldDetail.getId()); if (!detail.getInviteUser().getState()) { if (detail.getInviteUser().getExpire() == ThreeSale.EXPIRE_NORMAL) { update.setDesc("恭喜你,有新队员加入你的队列,若对方60天内未激活将会与你脱离邀请关系"); } else { update.setDesc("抱歉,该队员因60天内未激活,已脱离了你的队列,可以试着重新邀请"); } } else { update.setDesc("恭喜你,成功邀请一个队员"); } update.setUpdateTime(new Date()); update.setRead(false); msgInviteDetailMapper.updateByPrimaryKeySelective(update); } userMsgReadStateService.addInviteMsgUnReadCount(detail.getUser().getId(), 1); } @Override public List listMsgInviteDetail(Long uid, int page) { return msgInviteDetailMapper.listByUid(uid, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE); } @Override public long countMsgInviteDetail(Long uid) { return msgInviteDetailMapper.countByUid(uid); } @Override public void readMsgByUid(Long uid) { msgInviteDetailMapper.setMsgReadByUid(uid); } }