package com.yeshi.buwan.controller.api; import com.google.gson.Gson; import com.yeshi.buwan.dao.tb.YouZhiHaoHuoGoodsDao; import com.yeshi.buwan.domain.tb.YouZhiHaoHuoGoods; import com.yeshi.buwan.dto.tb.TaoKeAppInfo; import com.yeshi.buwan.dto.tb.TaoLiJinDTO; import com.yeshi.buwan.util.*; import com.yeshi.buwan.util.log.LoggerUtil; import com.yeshi.buwan.util.tb.DaTaoKeApiUtil; import com.yeshi.buwan.util.tb.TaoKeApiUtil; import com.yeshi.buwan.vo.AcceptData; import net.sf.json.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.math.BigDecimal; import java.util.Date; import java.util.List; @Controller @RequestMapping("api/v2/tb") public class TaoBaoController { public final static String PID = "mm_124933865_56750082_19509850444"; Logger logger = LoggerFactory.getLogger(TaoBaoController.class); @Resource private YouZhiHaoHuoGoodsDao youZhiHaoHuoGoodsDao; @Resource private RedisManager redisManager; @RequestMapping("getYouZhiGoodsList") @ResponseBody public String getYouZhiGoodsList(AcceptData acceptData, int page) { Query query = new Query(); query.with(new Sort(new Sort.Order(Sort.Direction.ASC, "promotionPriceInt"))); query.skip((page - 1) * Constant.pageCount); query.limit(Constant.pageCount); List list = youZhiHaoHuoGoodsDao.findList(query); for (YouZhiHaoHuoGoods goods : list) { BigDecimal money = goods.getPromotionPrice().subtract(new BigDecimal("1.8")); money = money.compareTo(new BigDecimal(0)) < 0 ? new BigDecimal(0) : money; goods.setPromotionPrice(money); } long count = youZhiHaoHuoGoodsDao.count(query); JSONObject data = new JSONObject(); data.put("list", list); data.put("count", count); return JsonUtil.loadTrueJson(data.toString()); } @RequestMapping("getYouZhiGoodsDetail") @ResponseBody public String getYouZhiGoodsDetail(AcceptData acceptData, String id) { YouZhiHaoHuoGoods goods = youZhiHaoHuoGoodsDao.get(id); JSONObject data = new JSONObject(); data.put("goods", new Gson().toJson(goods)); data.put("token", "8(TIh2X2LmQgv)/"); data.put("url", "https://m.tb.cn/h.4qbqpt4"); return JsonUtil.loadTrueJson(new Gson().toJson(data)); } public static final String TAOBAO_AUTH_APPKEY = "24980167"; public static final String TAOBAO_AUTH_APPSECRET = "e0a2e05deabf5ce039b52e5b492d5382"; @RequestMapping("createLiJin") @ResponseBody public String createLiJin(AcceptData acceptData, String id, String pid) { if (StringUtil.isNullOrEmpty(pid)) { pid = PID; } YouZhiHaoHuoGoods goods = youZhiHaoHuoGoodsDao.get(id); if (goods == null) { return JsonUtil.loadFalseJson("商品已下架"); } String identify = StringUtil.isNullOrEmpty(acceptData.getUtdId()) ? acceptData.getDevice() : acceptData.getUtdId(); String userKey = "tb-yzsp-" + StringUtil.Md5(identify); String countStr = redisManager.getCommonString(userKey); if (!StringUtil.isNullOrEmpty(countStr) && Integer.parseInt(countStr) > 20) { String link = DaTaoKeApiUtil.convertLink(Long.parseLong(id), pid); String token = TaoKeApiUtil.getTKToken(goods.getPic(), goods.getItemName(), link); JSONObject data = new JSONObject(); data.put("token", token); data.put("url", link); return JsonUtil.loadTrueJson(data.toString()); // return JsonUtil.loadFalseJson("只能创建20次礼金"); } Date startDate = new Date(); Date endDate = new Date(TimeUtil.convertGernalTime(TimeUtil.getGernalTime(startDate.getTime() + 1000 * 60 * 60 * 24L, "yyyyMMdd"), "yyyyMMdd")); Long auctionId = Long.parseLong(goods.getItemId()); String name = "影视大全礼金红包"; BigDecimal perface = new BigDecimal(1); int totalNum = 1; java.util.Date sendStartTime = startDate; Date sendEndTime = endDate; java.util.Date useStartTime = startDate; java.util.Date useEndTime = endDate; TaoKeAppInfo app = new TaoKeAppInfo(TAOBAO_AUTH_APPKEY, TAOBAO_AUTH_APPSECRET, pid); try { TaoLiJinDTO dto = TaoKeApiUtil.createTaoLiJin(auctionId, name, perface, totalNum, sendStartTime, sendEndTime, useStartTime, useEndTime, app); LoggerUtil.getTestLogger().info("淘礼金创建结果:{}-{}", id, new Gson().toJson(dto)); redisManager.increase(userKey, (int) ((endDate.getTime() - startDate.getTime()) / 1000)); String token = TaoKeApiUtil.getTKToken(goods.getPic(), goods.getItemName(), dto.getSendUrl()); JSONObject data = new JSONObject(); data.put("token", token); data.put("url", dto.getSendUrl()); return JsonUtil.loadTrueJson(data.toString()); } catch (Exception e) { String link = DaTaoKeApiUtil.convertLink(Long.parseLong(id), pid); String token = TaoKeApiUtil.getTKToken(goods.getPic(), goods.getItemName(), link); JSONObject data = new JSONObject(); data.put("token", token); data.put("url", link); return JsonUtil.loadTrueJson(data.toString()); } } }