admin
2020-05-19 744594ef1a2f530fc3e86ea9dc48b62247f79420
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackGiveRecordServiceImpl.java
@@ -2,7 +2,9 @@
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
@@ -20,10 +22,13 @@
import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
import com.yeshi.fanli.entity.bus.user.TokenRecord;
import com.yeshi.fanli.entity.bus.user.TokenRecord.TokenTypeEnum;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.redpack.RedPackDetail;
import com.yeshi.fanli.entity.redpack.RedPackDetail.RedPackDetailTypeEnum;
import com.yeshi.fanli.entity.redpack.RedPackGiveRecord;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.exception.redpack.RedPackGiveRecordException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
import com.yeshi.fanli.service.inter.redpack.RedPackBalanceService;
import com.yeshi.fanli.service.inter.redpack.RedPackConfigService;
@@ -31,6 +36,7 @@
import com.yeshi.fanli.service.inter.redpack.RedPackForbidService;
import com.yeshi.fanli.service.inter.redpack.RedPackGiveRecordService;
import com.yeshi.fanli.service.inter.user.TokenRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TokenUtil;
@@ -38,6 +44,7 @@
import com.yeshi.fanli.util.factory.RedPackDetailFactory;
import com.yeshi.fanli.util.rocketmq.MQMsgBodyFactory;
import com.yeshi.fanli.util.rocketmq.MQTopicName;
import com.yeshi.fanli.vo.redpack.RedPackGiveVO;
@Service
public class RedPackGiveRecordServiceImpl implements RedPackGiveRecordService {
@@ -65,6 +72,9 @@
   
   @Resource(name = "producer")
   private Producer producer;
   @Resource
   private UserInfoService userInfoService;
   @Override
   public RedPackGiveRecord selectByPrimaryKey(Long id) {
@@ -171,21 +181,25 @@
      try {
         redPackBalanceService.subRedPack(uid, amount, RedPackDetailFactory.createGiveOthers(giveRecord));
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
         throw new RedPackGiveRecordException(1, "红包创建失败");
      }
      UserRedPackGiftMQMsg msg = new UserRedPackGiftMQMsg();
      msg.setId(giveRecord.getId());
      msg.setUid(uid);
      Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.redPackGiftDrawback,
            msg);
      // 延迟一分钟
      message.setStartDeliverTime(endTime.getTime() + 1000 * 60);
      try {
         producer.send(message);
      } catch (Exception e) {
         throw new RedPackGiveRecordException(1, "红包创建失败");
      // 发送消息(非测试下)
      if (!Constant.IS_TEST) {
         UserRedPackGiftMQMsg msg = new UserRedPackGiftMQMsg();
         msg.setId(giveRecord.getId());
         msg.setUid(uid);
         Message message = MQMsgBodyFactory.create(MQTopicName.TOPIC_USER, UserTopicTagEnum.redPackGiftDrawback,   msg);
         message.setStartDeliverTime(endTime.getTime() + 1000 * 60); // 延迟一分钟
         try {
            producer.send(message);
         } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
            throw new RedPackGiveRecordException(1, "红包创建失败");
         }
      }
      return tips;
   }
@@ -228,4 +242,47 @@
      return giveRecord;
   }
   @Override
   public List<RedPackGiveVO> getGiveList(int page, int pageSzie, Long uid) {
      List<RedPackGiveVO> list = redPackGiveRecordMapper.getGiveList((page-1)*pageSzie, pageSzie, uid);
      if (list == null) {
         list = new ArrayList<RedPackGiveVO>();
      }
      if (list.isEmpty()) {
         return list;
      }
      String tips = redPackConfigService.getValueByKey("give_tips");
      String appLink = redPackConfigService.getValueByKey("app_down_link");
      String projectChineseName = Constant.systemCommonConfig.getProjectChineseName();
      for (RedPackGiveVO record: list) {
         Long receiveUid = record.getReceiveUid();
         if (receiveUid != null) {
            UserInfo userInfo = userInfoService.selectByPKey(receiveUid);
            record.setReceiveName(userInfo.getNickName());
            record.setReceivePortrait(userInfo.getPortrait());
            record.setReceiveTip("领取了你的红包");
         }
         TokenRecord token = tokenRecordService.getByTypeAndIdentify(TokenTypeEnum.redPack.name(),
               record.getId().toString());
         String desc = tips;
         while (desc.contains("{APP名称}")) {
            desc = desc.replace("{APP名称}", projectChineseName);
         }
         desc = desc.replace("{口令}", token.getToken()).replace("{下载链接}", appLink).replace("{面额}", record.getAmount().setScale(2).toString());
         record.setDesc(desc);
      }
      return list;
   }
   @Override
   public long countGiveList(Long uid) {
      return redPackGiveRecordMapper.countGiveList(uid);
   }
}