package com.yeshi.fanli.controller.h5;
|
|
import com.yeshi.common.entity.taobao.TaoKeAppInfo;
|
import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO;
|
import com.yeshi.fanli.entity.SystemEnum;
|
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
|
import com.yeshi.fanli.entity.taobao.SearchFilter;
|
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
|
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
|
import com.yeshi.fanli.service.manger.goods.TaoBaoLinkManager;
|
import com.yeshi.fanli.util.StringUtil;
|
import com.yeshi.fanli.util.TaoBaoConstant;
|
import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil;
|
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
|
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
import com.yeshi.fanli.vo.goods.CouponInfoVO;
|
import com.yeshi.fanli.vo.goods.GoodsDetailExtraVO;
|
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
|
import com.yeshi.fanli.vo.goods.MoneyInfoVO;
|
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
|
import net.sf.json.JSONObject;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.yeshi.utils.JsonUtil;
|
import org.yeshi.utils.taobao.TbImgUtil;
|
|
import javax.annotation.Resource;
|
import java.io.PrintWriter;
|
import java.math.BigDecimal;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
/**
|
* 布丸相关的H5代码接口
|
*/
|
@Controller
|
@RequestMapping("api/apph5/v1/buwan")
|
public class BuWanH5Controller {
|
|
@Resource
|
private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
|
|
@Resource
|
private TaoBaoGoodsCacheUtil taoBaoGoodsCacheUtil;
|
|
@Resource
|
private HongBaoManageService hongBaoManageService;
|
|
@Resource
|
private TaoBaoLinkManager taoBaoLinkManager;
|
|
|
private String pid = "mm_124933865_56750082_19509700484";
|
|
/**
|
* 获取商品列表
|
*
|
* @param sign
|
* @param key
|
* @param page
|
* @param callback
|
* @param out
|
*/
|
@RequestMapping(value = "getGoodsList")
|
public void getGoodsList(String sign, String key, int page, String callback, PrintWriter out) {
|
//搜索内容
|
if (StringUtil.isNullOrEmpty(key))
|
return;
|
SearchFilter sf = new SearchFilter();
|
sf.setPage(page);
|
sf.setPageSize(20);
|
sf.setKey(key);
|
sf.setSort(TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW);
|
GoodsMoneyConfigParamsDTO configParamsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android",
|
"60", SystemEnum.flq);
|
|
List<GoodsDetailVO> goodsList = new ArrayList<>();
|
TaoBaoSearchResult result = taoBaoGoodsCacheUtil.getSearchResult(sf);
|
if (result == null) {
|
result = TaoKeApiUtil.searchWuLiao(sf, null, null);
|
taoBaoGoodsCacheUtil.saveSearchResult(sf, result);
|
}
|
if (result != null) {
|
for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
|
GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goods, configParamsDTO);
|
goodsList.add(goodsVO);
|
}
|
}
|
long count = 0;
|
if (result != null)
|
count = result.getPageEntity().getTotalCount();
|
JSONObject data = new JSONObject();
|
data.put("list", goodsList);
|
data.put("count", count);
|
JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
|
}
|
|
|
private GoodsMoneyConfigParamsDTO getParamsDTO(String platform, String version, Long uid, SystemEnum system) {
|
UserLevelEnum level = UserLevelEnum.daRen;
|
if (level == null)
|
level = UserLevelEnum.daRen;
|
|
return orderHongBaoMoneyComputeService.getShowComputeRate(platform, version, level, system);
|
}
|
|
|
@RequestMapping(value = "getGoodsDetail")
|
public void getGoodsDetail(String sign, long id, String callback, PrintWriter out) {
|
GoodsDetailExtraVO extraVO = new GoodsDetailExtraVO();
|
extraVO.setIsNative(false);
|
TaoBaoGoodsBrief goods = null;
|
SystemEnum system = SystemEnum.flq;
|
TaoKeAppInfo info = new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, pid);
|
try {
|
goods = TaoKeApiUtil.searchGoodsDetail(id, info);
|
if (goods.getTkRate() == null || new BigDecimal(0).compareTo(goods.getTkRate()) == 0) {
|
TaoBaoGoodsBrief linkInfo = TaoKeApiUtil.specialConvertCoupon(goods.getAuctionId(), info, null, null);
|
if (linkInfo != null) {
|
goods.setAuctionUrl(linkInfo.getAuctionUrl());
|
goods.setCouponLink(linkInfo.getCouponLink());
|
goods.setTkRate(linkInfo.getTkRate());
|
}
|
}
|
} catch (NumberFormatException e) {
|
e.printStackTrace();
|
} catch (TaobaoGoodsDownException e) {
|
}
|
|
TaoBaoGoodsBrief tb = goods;
|
|
|
if (tb == null) {
|
out.print(JsonUtil.loadFalseResult(2, "商品不存在"));
|
return;
|
}
|
|
if (tb.getImgList() == null) {
|
tb.setImgList(new ArrayList<>());
|
}
|
|
List<String> finalImgList = new ArrayList<>();
|
for (String img : tb.getImgList()) {
|
finalImgList.add(TbImgUtil.getTBSizeImg(img, 600));
|
}
|
|
if (finalImgList.size() == 0) {
|
finalImgList.add(tb.getPictUrl());
|
}
|
|
if (!StringUtil.isNullOrEmpty(tb.getPictUrlWhite()))
|
finalImgList.add(0, tb.getPictUrlWhite());
|
|
// 移除相同图片
|
if (finalImgList.size() > 0)
|
for (int i = 0; i < finalImgList.size(); i++) {
|
if (i < finalImgList.size() - 1)
|
if (TbImgUtil.getTBSizeImg(finalImgList.get(i), 600)
|
.equalsIgnoreCase(TbImgUtil.getTBSizeImg(finalImgList.get(i + 1), 600))) {
|
finalImgList.remove(i--);
|
}
|
}
|
|
tb.setImgList(finalImgList);
|
|
GoodsMoneyConfigParamsDTO paramsDTO = getParamsDTO("android", "60", null, SystemEnum.flq);
|
paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system));
|
|
GoodsDetailVO goodsDetail = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
|
|
extraVO.setDetailUrl("http://apph5.banliapp.com/apppage/goods_img.html?id=" + id);
|
|
int moneyType = 1;
|
extraVO.setFanliValid(true);
|
|
MoneyInfoVO goodsMoney = goodsDetail.getMoneyInfo();
|
if (goodsMoney != null) {
|
goodsMoney.setMoneyType(moneyType);
|
}
|
|
if (goodsDetail.isHasCoupon()) {
|
// 设置couponList
|
List<CouponInfoVO> couponInfoList = new ArrayList<>();
|
couponInfoList.add(goodsDetail.getCouponInfo());
|
goodsDetail.setCouponInfoList(couponInfoList);
|
}
|
|
String url = goods.getAuctionUrl();
|
if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) {
|
url = goods.getCouponLink();
|
}
|
|
String token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url);
|
JSONObject object = new JSONObject();
|
object.put("extra", JsonUtil.getApiCommonGson().toJson(extraVO));
|
object.put("goods", JsonUtil.getApiCommonGson().toJson(goodsDetail));
|
object.put("token", token);
|
JsonUtil.printMode(out,callback,JsonUtil.loadTrueResult(object.toString()));
|
}
|
|
}
|