admin
2020-07-14 eec7e789a87863c25d92c10ad5dfc22ad80c448d
fanli/src/main/java/com/yeshi/fanli/controller/client/v1/UserCouponController.java
@@ -1,8 +1,10 @@
package com.yeshi.fanli.controller.client.v1;
import java.io.PrintWriter;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
@@ -12,9 +14,13 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.JsonUtil;
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.exception.user.UserSystemCouponException;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.config.SystemCouponService;
@@ -26,6 +32,13 @@
import com.yeshi.fanli.service.inter.user.invite.UserInviteService;
import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil;
import com.yeshi.fanli.util.jd.JDUtil;
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.vo.homemodule.BannerVO;
import com.yeshi.fanli.vo.user.UserSystemCouponRecordVO;
import com.yeshi.fanli.vo.user.UserSystemCouponVO;
@@ -74,7 +87,20 @@
   
   @Resource
   private UserInviteService userInviteService;
   @Resource
   private RedisManager redisManager;
   @Resource
   private JDGoodsCacheUtil jdGoodsCacheUtil;
   @Resource
   private PinDuoDuoCacheUtil pinDuoDuoCacheUtil;
   /**
    * 用户券列表查询
    * 
@@ -98,7 +124,7 @@
         // 福利中心图片
         String topPicture = null;
         if (page == 1) {
            List<BannerVO> listswiper = swiperPictureService.getByBannerCardAndVersion("welfare_top",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
            List<BannerVO> listswiper = swiperPictureService.getByBannerCardAndVersion("welfare_top",acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()),acceptData.getSystem());
            if (listswiper != null && listswiper.size() > 0) {
               topPicture = listswiper.get(0).getSrc();
            }
@@ -172,23 +198,20 @@
      try {
         List<UserSystemCouponVO> resultList = UserSystemCouponService.getGoodsCouponList(uid, auctionId);
         if (resultList == null) {
            resultList = new ArrayList<UserSystemCouponVO>();
         }
         JSONObject dataTip = new JSONObject();
         dataTip.put("content", configService.get(ConfigKeyEnum.freeCouponTip.getKey()));
         dataTip.put("content", configService.getValue(ConfigKeyEnum.freeCouponTip.getKey(),acceptData.getSystem()));
         dataTip.put("fontColor", "#F14242");
         JSONObject data = new JSONObject();
         data.put("helpLink", configService.get(ConfigKeyEnum.freeCouponHelp.getKey()));
         data.put("helpLink", configService.getValue(ConfigKeyEnum.freeCouponHelp.getKey(),acceptData.getSystem()));
         data.put("tip", dataTip);
         data.put("count", resultList.size());
         data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList));
         out.print(JsonUtil.loadTrueResult(data));
      } catch (UserSystemCouponException e) {
         out.print(JsonUtil.loadFalseResult(e.getCode(), e.getMsg()));
      } catch (Exception e) {
@@ -197,11 +220,13 @@
      }
   }
   /**
    * 免单券使用记录 以及状态修改
    * 
    * @param acceptData
    * @param page
    * @param uid
    * @param out
    */
@@ -251,7 +276,7 @@
         }
         JSONObject data = new JSONObject();
         data.put("helpLink", configService.get(ConfigKeyEnum.rewardCouponHelp.getKey()));
         data.put("helpLink", configService.getValue(ConfigKeyEnum.rewardCouponHelp.getKey(),acceptData.getSystem()));
         data.put("count", resultList.size());
         data.put("result_list", JsonUtil.getApiCommonGson().toJson(resultList));
@@ -353,5 +378,113 @@
      }
   }
   
   /**
    * 查询免单券
    * @param acceptData
    * @param uid
    * @param auctionId
    * @param out
    */
   @RequestMapping(value = "getFreeCouponList", method = RequestMethod.POST)
   public void getFreeCouponList(AcceptData acceptData, Long uid, String goodsId, Integer goodsType, PrintWriter out) {
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult("用户未登录"));
         return;
      }
      if (goodsType == null || StringUtil.isNullOrEmpty(goodsId)) {
         out.print(JsonUtil.loadFalseResult("参数不完整"));
         return;
      }
      List<UserSystemCouponVO> list = UserSystemCouponService.getFreeCouponList(uid);
      if (list == null)
         list = new ArrayList<>();
      if (list.size() > 0) {
          boolean state = false;
          BigDecimal  priceLimit = BigDecimal.valueOf(9.9);
          switch(goodsType) {
             case Constant.SOURCE_TYPE_TAOBAO:
                state = checkCanUsedTB(Long.parseLong(goodsId), priceLimit);
                break;
             case Constant.SOURCE_TYPE_JD:
                state = checkCanUsedTB(Long.parseLong(goodsId), priceLimit);
                break;
             case Constant.SOURCE_TYPE_PDD:
                state = checkCanUsedTB(Long.parseLong(goodsId), priceLimit);
                break;
             default:
                break;
          }
          // 不能使用
          if (!state) {
             for (UserSystemCouponVO userCouponVO : list) {
               userCouponVO.setState(0);
               userCouponVO.setCouponPicture(userCouponVO.getCouponPictureInvalid());
               Map<String, Object> map = userCouponVO.getRemainDays();
               if (map != null) {
                  map.put("fontColor", "#CCCCCC");
               }
               userCouponVO.setRemainDays(map);
            }
          }
      }
      JSONObject dataTip = new JSONObject();
      dataTip.put("content", configService.getValue(ConfigKeyEnum.freeCouponTip.getKey(),acceptData.getSystem()));
      dataTip.put("fontColor", "#F14242");
      JSONObject data = new JSONObject();
      data.put("helpLink", configService.getValue(ConfigKeyEnum.freeCouponHelp.getKey(),acceptData.getSystem()));
      data.put("tip", dataTip);
      data.put("count", list.size());
      data.put("list", JsonUtil.getApiCommonGson().toJson(list));
      out.print(JsonUtil.loadTrueResult(data));
   }
   private boolean checkCanUsedTB(Long goodsId, BigDecimal priceLimit) {
      try {
         TaoBaoGoodsBrief goods = redisManager.getTaoBaoGoodsBrief(goodsId);
         if (goods == null)
            return false;
         BigDecimal quanPrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
         if (quanPrice.compareTo(priceLimit) <= 0)
            return true;
      } catch (TaobaoGoodsDownException e) {
         e.printStackTrace();
      }
      return false;
   }
   private boolean checkCanUsedJD(Long goodsId, BigDecimal priceLimit) {
      JDGoods goods = jdGoodsCacheUtil.getGoodsInfo(goodsId);
      if (goods == null)
         return false;
      BigDecimal quanPrice = JDUtil.getQuanPrice(goods);
      if (quanPrice.compareTo(priceLimit) <= 0)
         return true;
      return false;
   }
   private boolean checkCanUsedPDD(Long goodsId, BigDecimal priceLimit) {
      PDDGoodsDetail goods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId);
      if (goods == null)
         return false;
      BigDecimal quanPrice = PinDuoDuoUtil.getQuanPrice(goods);
      if (quanPrice.compareTo(priceLimit) <= 0)
         return true;
      return false;
   }
}