yujian
2019-08-27 d8359ddb48dab5cc797a9d552e11fde571f4920c
fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralExchangeRecordServiceImpl.java
@@ -1,6 +1,6 @@
package com.yeshi.fanli.service.impl.integral;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
@@ -8,9 +8,15 @@
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dao.mybatis.integral.IntegralExchangeRecordMapper;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.integral.IntegralExchange;
import com.yeshi.fanli.entity.integral.IntegralExchange.ExchangeTypeEnum;
import com.yeshi.fanli.entity.integral.IntegralExchangeRecord;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.integral.CodePublishRecordService;
import com.yeshi.fanli.service.inter.integral.IntegralExchangeRecordService;
import com.yeshi.fanli.service.inter.integral.IntegralExchangeService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.util.StringUtil;
@Service
@@ -22,6 +28,14 @@
   @Resource
   private IntegralExchangeService integralExchangeService;
   
   @Resource
   private UserInfoExtraService userInfoExtraService;
   @Resource
   private CodePublishRecordService codePublishRecordService;
   @Override
   public List<IntegralExchange> listExchange(long start, int count, Long uid){
      List<IntegralExchange> listValid = integralExchangeService.listValidCache(start, count);
@@ -29,24 +43,106 @@
         return listValid;
      }
      
      List<Long> listId = new ArrayList<Long>();
      for(IntegralExchange integralExchange: listValid) {
         listId.add(integralExchange.getId());
      boolean hasCode = false;
      try {
         UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
         if (userInfoExtra != null && !StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
            hasCode = true;
         }
      } catch (Exception e) {
         LogHelper.errorDetailInfo(e);
      }
      
      List<Long> listRecord = integralExchangeRecordMapper.listRecordByExchangeIds(listId);
      for(IntegralExchange integralExchange: listValid) {
         String progress = integralExchange.getProgress();
      for(int i = 0; i < listValid.size(); i++) {
         IntegralExchange exchange = listValid.get(i);
         ExchangeTypeEnum type = exchange.getType();
         if (type == null) {
            listValid.remove(i);
            i --;
            continue;
         }
         Long id = exchange.getId();
         if (type == ExchangeTypeEnum.freeCouponBuy) {
            // 注:因自购免单券,一个用户只能兑换一次,则当前用户一旦兑换成功,自购免单券兑换入口永久在当前用户金币兑换列表中消失。
            long num = integralExchangeRecordMapper.countRecordByUid(id, uid, null);
            if (num >= 1) {
               listValid.remove(i);
               i --;
               continue;
            }
         }
         // 邀请码激活卡,兑换项,如果当前用户已经激活了邀请功能,则不需要显示该兑换项。
         if (type == ExchangeTypeEnum.inviteCodeActivate) {
            if (hasCode) {
               listValid.remove(i);
               i --;
               continue;
            }
            // 兑换一次之后隐藏
            long num = integralExchangeRecordMapper.countRecordByUid(id, uid, null);
            if  (num >= 1) {
               listValid.remove(i);
               i --;
               continue;
            }
         }
         // 邀请码发布卡,兑换项,如果当前用户未激活邀请功能,则不需要显示该兑换项。
         if (type == ExchangeTypeEnum.inviteCodePublish) {
            if (!hasCode) {
               listValid.remove(i);
               i --;
               continue;
            }
            if(codePublishRecordService.countValidRecord(uid) > 0) {
               exchange.setBtnName("去查看");
               exchange.setNeedJump(true);
            }
         }
         String progress = exchange.getProgress();
         if (StringUtil.isNullOrEmpty(progress))
            continue;
         
         int exchange = 0;
         if (listRecord != null && listRecord.size() >0 && listRecord.contains(integralExchange.getId()))
            exchange = 1;
         // 自购免单券-只能兑换一次
         if (type == ExchangeTypeEnum.freeCouponBuy) {
            long num = integralExchangeRecordMapper.countRecordByUid(id, uid, null);
            if  (num >= 1) {
               listValid.remove(i);
               i --;
               continue;
            }
         }
         
         progress = progress.replace("{已兑换}", exchange + "").replace("{上限数}", integralExchange.getUpperLimit() + "");
         integralExchange.setProgress(progress);
         // 今日兑换情况
         long num = integralExchangeRecordMapper.countRecordByUid(id, uid, 1);
         Integer upperLimit = exchange.getUpperLimit();
         if (upperLimit == null) {
            progress = progress.replace("{已兑换}", num + "").replace("/{上限数}", "");
         } else {
            progress = progress.replace("{已兑换}", num + "").replace("{上限数}", exchange.getUpperLimit() + "");
         }
         exchange.setProgress(progress);
      }
      return listValid;
   }
   @Override
   public long countRecordByUid(long exchangeid, Long uid, Integer today){
      return integralExchangeRecordMapper.countRecordByUid(exchangeid, uid, today);
   }
   @Override
   public void addExchangeRecord(long exchangeid, Long uid){
      IntegralExchangeRecord record = new IntegralExchangeRecord();
      record.setExchangeId(exchangeid);
      record.setUid(uid);
      record.setCreateTime(new Date());
      integralExchangeRecordMapper.insertSelective(record);
   }
}