admin
2020-06-16 5f13dcc8eaac7cd26c0ec41bd1b3efbb70a08180
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserCloudControllerV2.java
@@ -8,7 +8,6 @@
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -25,6 +24,7 @@
import com.yeshi.fanli.dto.aitaoker.QrcodeLoginDTO;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.cloud.CloudOrderMenuEnum;
import com.yeshi.fanli.entity.bus.user.cloud.UserCloud;
import com.yeshi.fanli.entity.bus.user.cloud.UserCloudGoods;
import com.yeshi.fanli.entity.bus.user.cloud.UserCloudGroup;
@@ -33,14 +33,13 @@
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate;
import com.yeshi.fanli.entity.goods.CommonGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.exception.user.cloud.UserCloudException;
import com.yeshi.fanli.exception.user.cloud.UserCloudGroupException;
import com.yeshi.fanli.exception.user.cloud.UserCloudOrderException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.cloud.UserCloudGoodsService;
@@ -50,13 +49,16 @@
import com.yeshi.fanli.service.inter.user.cloud.UserCloudService;
import com.yeshi.fanli.service.manger.alipay.UserCloudAlipayManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.RedisKeyEnum;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.aitaoker.AitaokerApiUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.util.suning.SuningUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.homemodule.BannerVO;
import com.yeshi.fanli.vo.user.cloud.CloudOrderMenuVO;
import com.yeshi.fanli.vo.user.cloud.UserCloudInfoVO;
import net.sf.json.JSONArray;
@@ -95,6 +97,12 @@
   
   @Resource
   private ConfigService configService;
   @Resource
   private RedisManager redisManager;
   @Resource
   private SwiperPictureService swiperPictureService;
   /**
    * 查询开通记录
@@ -173,11 +181,24 @@
         return;
      }
      List<CloudOrderMenuVO> listMenu = new ArrayList<>();
      CloudOrderMenuEnum[] menus = CloudOrderMenuEnum.values();
      for (CloudOrderMenuEnum menuEnum: menus) {
         CloudOrderMenuVO menuVO = new CloudOrderMenuVO();
         menuVO.setMoney(BigDecimal.valueOf(menuEnum.getMoney()) );
         menuVO.setType(menuEnum.name());
         menuVO.setDesc(menuEnum.getDescShow());
         listMenu.add(menuVO);
      }
      UserCloudInfoVO cloudInfoVO = new UserCloudInfoVO();
      cloudInfoVO.setNickName(userInfo.getNickName());
      cloudInfoVO.setPortrait(userInfo.getPortrait());
      cloudInfoVO.setOpenState(0); // 未开通
      cloudInfoVO.setListMenu(listMenu);
      // 是否开通
      UserCloud userCloud = userCloudService.getLastByUid(uid);
      if (userCloud == null) {
@@ -221,7 +242,15 @@
            }
         }
      }
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(cloudInfoVO));
      // 教程
      List<BannerVO> listBanner = swiperPictureService.getByBannerCard("cloud_course");
      if (listBanner != null && listBanner.size() > 0) {
         cloudInfoVO.setCourse(listBanner.get(0));
      }
      GsonBuilder gsonBuilder = new GsonBuilder();
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(gsonBuilder.create().toJson(cloudInfoVO)));
   }
   /**
@@ -376,7 +405,7 @@
    * @param out
    */
   @RequestMapping(value = "switchCircleState")
   public void switchCircleState(String callback, AcceptData acceptData, Long uid, Boolean state, PrintWriter out) {
   public void switchCircleState(String callback, AcceptData acceptData, Long uid, Integer state, PrintWriter out) {
      if (uid == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
         return;
@@ -385,8 +414,14 @@
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "状态不能为空"));
         return;
      }
      boolean reslut = false;
      if (state == 1) {
         reslut = true;
      }
      try {
         userCloudGroupService.switchCircleState(uid, state);
         userCloudGroupService.switchCircleState(uid, reslut);
      } catch (UserCloudGroupException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      }
@@ -435,7 +470,7 @@
    * @param out
    */
   @RequestMapping(value = "switchGroupState")
   public void switchGroupState(String callback, AcceptData acceptData, Long uid, Long id, Boolean state,
   public void switchGroupState(String callback, AcceptData acceptData, Long uid, Long id, Integer state,
         PrintWriter out) {
      if (uid == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
@@ -445,12 +480,60 @@
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "参数不能为空"));
         return;
      }
      boolean reslut = false;
      if (state == 1) {
         reslut = true;
      }
      try {
         userCloudGroupService.switchGroupState(uid, id, state);
         userCloudGroupService.switchGroupState(uid, id, reslut);
         // 获取最新群
         List<UserCloudGroup> list = userCloudGroupService.listGroupByUid(uid);
         if (list == null)
            list = new ArrayList<>();
         JSONObject data = new JSONObject();
         data.put("listGroup", list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (UserCloudGroupException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      }
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功"));
   }
   /**
    * 设置状态
    *
    * @param callback
    * @param acceptData
    * @param uid
    * @param type
    * @param out
    */
   @RequestMapping(value = "deleteGroup")
   public void switchGroupState(String callback, AcceptData acceptData, Long uid, Long id,
         PrintWriter out) {
      if (uid == null || id == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "参数不完整"));
         return;
      }
      try {
         userCloudGroupService.deleteGroup(uid, id);
         // 获取最新群
         List<UserCloudGroup> list = userCloudGroupService.listGroupByUid(uid);
         if (list == null)
            list = new ArrayList<>();
         JSONObject data = new JSONObject();
         data.put("listGroup", list);
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
      } catch (UserCloudGroupException e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg()));
      }
   }
   /**
@@ -480,27 +563,6 @@
      JSONArray array = new JSONArray();
      JSONObject data = new JSONObject();
      if (list.size() > 0) {
         List<Long> listGid = new ArrayList<Long>();
         for (UserCloudGoods cloudGoods : list) {
            CommonGoods commonGoods = cloudGoods.getCommonGoods();
            if (commonGoods == null) {
               continue;
            }
            listGid.add(commonGoods.getGoodsId());
         }
         // API网络接口验证是否在售
         List<TaoBaoGoodsBrief> listTaoKeGoods = null;
         try {
            listTaoKeGoods = TaoKeApiUtil.getBatchGoodsInfo(listGid);
         } catch (TaoKeApiException e) {
            e.printStackTrace();
         } catch (TaobaoGoodsDownException e) {
            e.printStackTrace();
         } catch (Exception e) {
            e.printStackTrace();
         }
         Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
               .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
         ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(acceptData.getPlatform(),
@@ -512,22 +574,6 @@
               continue;
            }
            // 淘宝商品验证在售
            if (commonGoods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
               if (listTaoKeGoods != null && listTaoKeGoods.size() > 0) {
                  int state = 1; // 默认停售
                  Long goodsId = commonGoods.getGoodsId();
                  for (TaoBaoGoodsBrief taoKeGoods : listTaoKeGoods) {
                     Long auctionId = taoKeGoods.getAuctionId();
                     if (goodsId == auctionId || goodsId.equals(auctionId)) {
                        state = 0; // 在售
                        break;
                     }
                  }
                  commonGoods.setState(state);
               }
            }
            // 判断是否已分享, 已分享显示已下架
            Integer state = cloudGoods.getState();
            if (state != null && state == UserCloudGoods.STATE_SHARED) {
@@ -536,7 +582,11 @@
                  commonGoods.setState(2);
               }
            }
            if (state != null && state == UserCloudGoods.STATE_INVALID) {
               commonGoods.setState(1);
            }
            GoodsDetailVO detailVO = GoodsDetailVOFactory.convertCommonGoods(commonGoods, paramsDTO);
            detailVO.setId(commonGoods.getId());
@@ -602,18 +652,26 @@
    * @param out
    */
   @RequestMapping(value = "switchState")
   public void switchState(String callback, AcceptData acceptData, Long uid, Integer type, Boolean state,
   public void switchState(String callback, AcceptData acceptData, Long uid, Integer type, Integer state,
         PrintWriter out) {
      if (uid == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
      if (uid == null || type == null || state == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "参数不完整"));
         return;
      }
      if (type == 1) {
         userCloudManageService.save(uid, state, null);
      } else {
         userCloudManageService.save(uid, null, state);
      boolean reslut = false;
      if (state == 1) {
         reslut = true;
      }
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("操作成功"));
      if (type == 1) {
         userCloudManageService.save(uid, reslut, null);
      } else {
         userCloudManageService.save(uid, null, reslut);
      }
      JSONObject data = new JSONObject();
      data.put("state", reslut);
      JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
   }
   /**
@@ -627,8 +685,7 @@
    * @param out
    */
   @RequestMapping(value = "pay")
   public void pay(String callback, AcceptData acceptData, Long uid, String type, HttpServletResponse response,
         PrintWriter out) {
   public void pay(String callback, AcceptData acceptData, Long uid, String type, PrintWriter out) {
      try {
         if (uid == null) {
            JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录"));
@@ -643,38 +700,50 @@
         // 创建支付信息
         String alipayForm = userCloudAlipayManager.getAlipayForm(uid, type);
         // 返回信息
         response.setContentType("text/html;charset=utf-8");
         PrintWriter print = response.getWriter();
         // 返回信息 - 缓存到session
         StringBuilder builder = new StringBuilder();
         builder.append("<html><head><title>alipay</title></head>");
         builder.append("<body>" + alipayForm + "</body></html>");
         JsonUtil.printMode(print, callback, builder.toString());
         print.close();
         // 缓存到redis- 一分钟
         String key = RedisKeyEnum.cloudAlipayLink.getKey() + uid + "_" + type;
         key = StringUtil.Md5(key);
         redisManager.cacheCommonString(key , builder.toString() , 60*10);
         String link = configService.get(ConfigKeyEnum.cloudAlipayJumpLink.getKey()) +"?key=%s";
         JSONObject dataObject = new JSONObject();
         dataObject.put("link", String.format(link, key));
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dataObject));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "创建支付信息失败"));
         LogHelper.errorDetailInfo(e);
      }
   }
   /**
    * 支付完成
    * 
    * @param callback
    * @param acceptData
    * @param id
    * @param out
    */
   @RequestMapping(value = "payEnd")
   public void payEnd(String callback, AcceptData acceptData, Long id, PrintWriter out) {
      if (id == null) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "参数信息缺失"));
   public void payEnd(String callback, AcceptData acceptData, Long uid, Long id, PrintWriter out) {
      if (uid == null || id == null) {
         out.print(JsonUtil.loadFalseResult(1, "参数信息缺失"));
         return;
      }
      try {
         // 检测是否支付完成
         userCloudAlipayManager.tradeQueryByOrderId(id);
         UserCloudOrder cloudOrder = userCloudOrderService.selectByPrimaryKey(id);
         JSONObject dataObject = new JSONObject();
         dataObject.put("money", cloudOrder.getMoney());
         JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(dataObject));
      } catch (Exception e) {
         JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "检测失败"));
         out.print(JsonUtil.loadFalseResult(1, "回调信息失败"));
         LogHelper.errorDetailInfo(e);
      }
   }