admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/service/impl/money/msg/MsgMoneyDetailServiceImpl.java
@@ -1,173 +1,134 @@
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.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.UserMsgReadStateService;
import com.yeshi.fanli.util.Constant;
@Service
public class MsgMoneyDetailServiceImpl implements MsgMoneyDetailService {
   @Resource
   private MsgMoneyDetailMapper msgMoneyDetailMapper;
   @Resource
   private UserMsgReadStateService userMsgReadStateService;
   @Override
   public void addMsgMoneyDetail(MsgMoneyDetail detail) throws MsgMoneyDetailException {
      if (detail == null)
         throw new MsgMoneyDetailException(1, "消息为空");
      if (detail.getMsgType() == MsgTypeMoneyTypeEnum.extract) {
         if (detail.getExtract() == null || detail.getUser() == 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);
         } else {
            MsgMoneyDetail update = new MsgMoneyDetail();
            update.setId(msg.getId());
            update.setUpdateTime(new Date());
            update.setRead(false);
            update.setStateDesc(detail.getStateDesc());
            msgMoneyDetailMapper.updateByPrimaryKeySelective(update);
         }
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.extractValid) {
         if (detail.getAlipayAccountValid() == null || detail.getUser() == 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);
         } else {
            MsgMoneyDetail update = new MsgMoneyDetail();
            update.setId(msg.getId());
            update.setUpdateTime(new Date());
            update.setRead(false);
            update.setStateDesc(detail.getStateDesc());
            msgMoneyDetailMapper.updateByPrimaryKeySelective(update);
         }
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.fanli) {
         if (detail.getMoney() == null || detail.getGoodsCount() == null || detail.getOrderId() == null
               || detail.getBalance() == null)
            throw new MsgMoneyDetailException(2, "消息信息不全");
         detail.setCreateTime(new Date());
         detail.setUpdateTime(new Date());
         detail.setRead(false);
         msgMoneyDetailMapper.insertSelective(detail);
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.invite
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.share) {
         if (detail.getMoney() == null || detail.getGoodsCount() == null || detail.getOrderCount() == null
               || detail.getBalance() == null)
            throw new MsgMoneyDetailException(2, "消息信息不全");
         detail.setCreateTime(new Date());
         detail.setUpdateTime(new Date());
         detail.setRead(false);
         msgMoneyDetailMapper.insertSelective(detail);
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.fanliWeiQuan
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.inviteWeiQuan
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.shareWeiQuan) {
         if (detail.getMoney() == null || detail.getOrderId() == null || detail.getBalance() == null)
            throw new MsgMoneyDetailException(2, "消息信息不全");
         detail.setCreateTime(new Date());
         detail.setUpdateTime(new Date());
         detail.setRead(false);
         msgMoneyDetailMapper.insertSelective(detail);
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.orderReward) {
         if (detail.getMoney() == null || detail.getOrderId() == null || detail.getBalance() == null)
            throw new MsgMoneyDetailException(2, "消息信息不全");
         detail.setCreateTime(new Date());
         detail.setUpdateTime(new Date());
         detail.setRead(false);
         msgMoneyDetailMapper.insertSelective(detail);
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.systemEqualize) {
         if (detail.getMoney() == null || detail.getOrderId() == null || detail.getBalance() == null)
            throw new MsgMoneyDetailException(2, "消息信息不全");
         detail.setCreateTime(new Date());
         detail.setUpdateTime(new Date());
         detail.setRead(false);
         msgMoneyDetailMapper.insertSelective(detail);
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.extractAutoWX) {
         if (detail.getMoney() == null || detail.getUser() == null)
            throw new MsgMoneyDetailException(2, "消息信息不全");
         MsgMoneyDetail msg = msgMoneyDetailMapper.selectBySourceIdAndMsgType(detail.getExtract().getId(),
               MsgTypeMoneyTypeEnum.extractAutoWX);
         if (msg == null) {
            detail.setCreateTime(new Date());
            detail.setUpdateTime(new Date());
            detail.setRead(false);
            msgMoneyDetailMapper.insertSelective(detail);
         } else {
            MsgMoneyDetail update = new MsgMoneyDetail();
            update.setId(msg.getId());
            update.setUpdateTime(new Date());
            update.setRead(false);
            update.setStateDesc(detail.getStateDesc());
            msgMoneyDetailMapper.updateByPrimaryKeySelective(update);
         }
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackGiveOff
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackReceiveOff
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackGiveBack
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackExchangePass
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackExchangeReject
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackOneStageReward
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackTwoStageReward
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackThreeStageReward
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackUseFail
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackUseSuccess
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackDeduct
            || detail.getMsgType() == MsgTypeMoneyTypeEnum.redPackForbid) {
         if (detail.getUser() == null)
            throw new MsgMoneyDetailException(2, "消息信息不全");
         detail.setCreateTime(new Date());
         detail.setUpdateTime(new Date());
         detail.setRead(false);
         msgMoneyDetailMapper.insertSelective(detail);
      } else if (detail.getMsgType() == MsgTypeMoneyTypeEnum.subSidy) {
         if (detail.getMoney() == null || detail.getUser() == null)
            throw new MsgMoneyDetailException(2, "消息信息不全");
         detail.setCreateTime(new Date());
         detail.setUpdateTime(new Date());
         detail.setRead(false);
         msgMoneyDetailMapper.insertSelective(detail);
      }
      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);
   }
}
package com.yeshi.fanli.service.impl.money.msg;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import com.yeshi.fanli.service.inter.msg.MsgOverViewsService;
import com.yeshi.fanli.util.factory.msg.MsgOverViewsFactory;
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;
   @Resource
   private MsgOverViewsService msgOverViewsService;
   @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);
            //加入消息索引
            msgOverViewsService.save(MsgOverViewsFactory.create(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);
            //更新消息索引时间
            msgOverViewsService.updateTime(MsgOverViewsFactory.create(detail).getId(), update.getUpdateTime());
            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);
            //加入消息索引
            msgOverViewsService.save(MsgOverViewsFactory.create(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);
            //更新消息索引时间
            msgOverViewsService.updateTime(MsgOverViewsFactory.create(detail).getId(), update.getUpdateTime());
            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);
         //加入消息索引
         msgOverViewsService.save(MsgOverViewsFactory.create(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 List<MsgMoneyDetail> listDetail(List<Long> ids) {
      return msgMoneyDetailMapper.listByPrimaryKeys(ids);
   }
   @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);
   }
}