yujian
2019-10-28 9319c42fe02d041cee260ca0db8df67bcdf1ea0a
fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinOriginServiceImpl.java
@@ -1,26 +1,15 @@
package com.yeshi.fanli.service.impl.tlj;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.tlj.UserTaoLiJinOriginMapper;
import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
import com.yeshi.fanli.dto.msg.MsgOtherTaoLiJinContentDTO;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinGiveRecord;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinOrigin.TaoLiJinOriginEnum;
import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.money.UserMoneyExtraService;
import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
@@ -31,148 +20,68 @@
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
@Service
public class UserTaoLiJinOriginServiceImpl implements UserTaoLiJinOriginService {
public class UserTaoLiJinOriginServiceImpl implements UserTaoLiJinOriginService{
   @Resource(name = "taskExecutor")
   private TaskExecutor executor;
   @Resource
   private UserTaoLiJinOriginMapper userTaoLiJinOriginMapper;
   @Resource
   private UserMoneyExtraService userMoneyExtraService;
   @Resource
   private UserInfoExtraService userInfoExtraService;
   @Resource
   private UserTaoLiJinDetailService userTaoLiJinDetailService;
   @Resource
   private UserOtherMsgNotificationService userOtherMsgNotificationService;
   @Resource
   private ConfigTaoLiJinService configTaoLiJinService;
   @Resource
   private UserTaoLiJinRecordService userTaoLiJinRecordService;
   @Resource
   private UserTaoLiJinReportService userTaoLiJinReportService;
   @Override
   public void updateByPrimaryKeySelective(UserTaoLiJinOrigin record) {
      userTaoLiJinOriginMapper.updateByPrimaryKeySelective(record);
   }
   @Override
   public BigDecimal countMoneyByDate(long uid, int dateType) {
      return userTaoLiJinOriginMapper.countMoneyByDate(uid, dateType);
   }
   @Override
   public long countByUidAndOrigin(long uid, String origin) {
      return userTaoLiJinOriginMapper.countByUidAndOrigin(uid, origin);
   }
   @Override
   public UserTaoLiJinOrigin getByUidAndOrigin(long uid, String origin) {
      return userTaoLiJinOriginMapper.getByUidAndOrigin(uid, origin);
   }
   @Override
   public UserTaoLiJinOrigin getRankByThisMonth(long uid, String type) {
      return userTaoLiJinOriginMapper.getRankByThisMonth(uid, type);
   }
   @Override
   public List<UserTaoLiJinOrigin> getSurplusLiJin(long uid) {
      return userTaoLiJinOriginMapper.getSurplusLiJin(uid);
   }
   @Override
   @Transactional
   public UserTaoLiJinOrigin receiveFriendsGive(Long uid, BigDecimal money) throws UserTaoLiJinOriginException {
      if (uid == null || money == null) {
         throw new UserTaoLiJinOriginException(1, "参数不能为空");
      }
      // 添加红包余额
      userMoneyExtraService.addTaoLiJin(uid, money, false);
      // 添加新增记录
      UserTaoLiJinOrigin origin = saveOrigin(uid, 1, money, TaoLiJinOriginEnum.friendsGive);
      // 红包明细
      userTaoLiJinDetailService.createAddDetail(origin);
      // 消息
      executor.execute(new Runnable() {
         @Override
         public void run() {
            try {
               MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO();
               content.setState("红包增加");
               content.setSource("好友赠送");
               content.setMoney(money);
               userOtherMsgNotificationService.taoLiJinMsg(uid, "", content);
            } catch (Exception e) {
               LogHelper.errorDetailInfo(e);
            }
         }
      });
      return origin;
   }
   @Override
   @Transactional
   public void giveSendBack(Long uid, UserTaoLiJinGiveRecord record) throws UserTaoLiJinOriginException {
      if (uid == null || record == null) {
         throw new UserTaoLiJinOriginException(1, "参数不能为空");
      }
      BigDecimal money = record.getAmount();
      // 添加红包余额
      userMoneyExtraService.addTaoLiJin(uid, money, false);
      // 添加新增记录
      saveOrigin(uid, 1, money, TaoLiJinOriginEnum.giveSendBack);
      // 红包明细
      UserTaoLiJinDetail detail = new UserTaoLiJinDetail();
      detail.setUid(uid);
      detail.setMoney(money);
      detail.setType(TaoLiJinDetailTypeEnum.giveBack);
      detail.setTitle(TaoLiJinDetailTypeEnum.giveBack.getDesc());
      detail.setCreateTime(new Date());
      userTaoLiJinDetailService.insertSelective(detail);
      executor.execute(new Runnable() {
         @Override
         public void run() {
            // 退回消息
            String beiZhu = "请到我的-推广红包查看";
            SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm");
            MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
            msgOther.setType(MsgOtherGiveContentDTO.TYEP_TLJ);
            msgOther.setTitle("推广红包退回");
            msgOther.setGiveType("你赠送的¥" + money + "元推广红包未被领取");
            msgOther.setGiveTime(sd.format(record.getGiveTime()));
            msgOther.setReturnTime(sd.format(new Date()));
            userOtherMsgNotificationService.tokenGiveMsg(record.getGiveUid(), beiZhu, msgOther);
         }
      });
   }
   // 添加新增记录
   public UserTaoLiJinOrigin saveOrigin(Long uid, int type, BigDecimal money, TaoLiJinOriginEnum originEnum) {
      UserTaoLiJinOrigin taoLiJinOrigin = new UserTaoLiJinOrigin();
      taoLiJinOrigin.setUid(uid);
      taoLiJinOrigin.setType(type);
      taoLiJinOrigin.setOrigin(originEnum);
      taoLiJinOrigin.setMoney(money);
      taoLiJinOrigin.setMoneySurplus(money);
      taoLiJinOrigin.setCreateTime(new Date());
      taoLiJinOrigin.setUpdateTime(new Date());
      taoLiJinOrigin.setRemark(originEnum.getDesc());
      userTaoLiJinOriginMapper.insertSelective(taoLiJinOrigin);
      return taoLiJinOrigin;
   }
}