src/main/java/com/yeshi/buwan/controller/ECGoodsController.java
New file @@ -0,0 +1,52 @@ package com.yeshi.buwan.controller; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.yeshi.buwan.dao.tb.YouZhiHaoHuoGoodsDao; import com.yeshi.buwan.domain.tb.YouZhiHaoHuoGoods; import org.springframework.data.mongodb.core.query.Criteria; 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 javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.lang.reflect.Type; import java.math.BigDecimal; import java.util.Date; import java.util.List; @Controller @RequestMapping("ecgoods") public class ECGoodsController { @Resource private YouZhiHaoHuoGoodsDao youZhiHaoHuoGoodsDao; @ResponseBody @RequestMapping("tb/youzhihaohuo") public String youZhiHaoHuo(String data, HttpServletResponse response) { //删除1小时以前的数据 delete(); Type type = new TypeToken<List<YouZhiHaoHuoGoods>>() { }.getType(); List<YouZhiHaoHuoGoods> list = new Gson().fromJson(data, type); for (YouZhiHaoHuoGoods goods : list) { goods.setCreateTime(new Date()); goods.setPromotionPriceInt(goods.getPromotionPrice().multiply(new BigDecimal(100)).intValue()); youZhiHaoHuoGoodsDao.save(goods); } return ""; } private void delete() { Query query = new Query(); query.addCriteria(Criteria.where("createTime").lt(new Date(System.currentTimeMillis() - 1000 * 60 * 60))); youZhiHaoHuoGoodsDao.delete(query); } } src/main/java/com/yeshi/buwan/controller/api/TaoBaoController.java
New file @@ -0,0 +1,127 @@ 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.exception.taobao.TaoKeApiException; import com.yeshi.buwan.exception.taobao.TaoLiJinCreateException; import com.yeshi.buwan.util.*; 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 { 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<YouZhiHaoHuoGoods> 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) { 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) { 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, "mm_124933865_56750082_19509850444"); try { TaoLiJinDTO dto = TaoKeApiUtil.createTaoLiJin(auctionId, name, perface, totalNum, sendStartTime, sendEndTime, useStartTime, useEndTime, app); 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 (TaoLiJinCreateException e) { e.printStackTrace(); return JsonUtil.loadFalseJson("礼金创建失败"); } catch (TaoKeApiException e) { e.printStackTrace(); return JsonUtil.loadFalseJson("礼金创建失败"); } } } src/main/java/com/yeshi/buwan/dao/base/MongodbBaseDao.java
@@ -88,6 +88,10 @@ mongoTemplate.remove(query, getEntityClass()); } public void delete(Query query) { mongoTemplate.remove(query, getEntityClass()); } public void deleteByPrimaryKey(Object id) { Query query = Query.query(Criteria.where("_id").is(id)); mongoTemplate.remove(query, getEntityClass()); src/main/java/com/yeshi/buwan/dao/tb/YouZhiHaoHuoGoodsDao.java
New file @@ -0,0 +1,37 @@ package com.yeshi.buwan.dao.tb; import com.yeshi.buwan.domain.tb.YouZhiHaoHuoGoods; import com.yeshi.buwan.dao.base.MongodbBaseDao; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update; import org.springframework.stereotype.Repository; import java.util.Date; @Repository public class YouZhiHaoHuoGoodsDao extends MongodbBaseDao<YouZhiHaoHuoGoods>{ public void updateSelective(YouZhiHaoHuoGoods bean) { Query query = new Query(); Update update=new Update(); query.addCriteria(Criteria.where("itemId").is(bean.getItemId())); if(bean.getItemName() != null) { update.set("itemName", bean.getItemName()); } if(bean.getPic() != null) { update.set("pic", bean.getPic()); } if(bean.getPromotionPrice() != null) { update.set("promotionPrice", bean.getPromotionPrice()); } if(bean.getPrice() != null) { update.set("price", bean.getPrice()); } if(bean.getSellerNickName() != null) { update.set("sellerNickName", bean.getSellerNickName()); } update.set("updateTime", new Date()); update(query, update); } } src/main/java/com/yeshi/buwan/domain/tb/YouZhiHaoHuoGoods.java
New file @@ -0,0 +1,97 @@ package com.yeshi.buwan.domain.tb; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import java.math.BigDecimal; import java.util.Date; import java.util.List; @Document(collection = "tbYouZhiHaoHuoGoods") public class YouZhiHaoHuoGoods { @Id private String itemId; private String itemName; private String pic; private BigDecimal promotionPrice; private BigDecimal price; private String sellerNickName; private Date createTime; private Integer promotionPriceInt; private List<String> smallImage; public Integer getPromotionPriceInt() { return promotionPriceInt; } public void setPromotionPriceInt(Integer promotionPriceInt) { this.promotionPriceInt = promotionPriceInt; } public List<String> getSmallImage() { return smallImage; } public void setSmallImage(List<String> smallImage) { this.smallImage = smallImage; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public String getItemId() { return itemId; } public void setItemId(String itemId) { this.itemId = itemId; } public String getItemName() { return itemName; } public void setItemName(String itemName) { this.itemName = itemName; } public String getPic() { return pic; } public void setPic(String pic) { this.pic = pic; } public BigDecimal getPromotionPrice() { return promotionPrice; } public void setPromotionPrice(BigDecimal promotionPrice) { this.promotionPrice = promotionPrice; } public BigDecimal getPrice() { return price; } public void setPrice(BigDecimal price) { this.price = price; } public String getSellerNickName() { return sellerNickName; } public void setSellerNickName(String sellerNickName) { this.sellerNickName = sellerNickName; } } src/main/java/com/yeshi/buwan/dto/tb/TLJBuyHongBaoVO.java
New file @@ -0,0 +1,57 @@ package com.yeshi.buwan.dto.tb; import com.google.gson.annotations.Expose; public class TLJBuyHongBaoVO { @Expose private String tagName; @Expose private int total; @Expose private int left; @Expose private String money; @Expose private String tip; public String getTagName() { return tagName; } public void setTagName(String tagName) { this.tagName = tagName; } public int getTotal() { return total; } public void setTotal(int total) { this.total = total; } public int getLeft() { return left; } public void setLeft(int left) { this.left = left; } public String getMoney() { return money; } public void setMoney(String money) { this.money = money; } public String getTip() { return tip; } public void setTip(String tip) { this.tip = tip; } } src/main/java/com/yeshi/buwan/dto/tb/TaoBaoCouponCache.java
New file @@ -0,0 +1,116 @@ package com.yeshi.buwan.dto.tb; import org.springframework.data.mongodb.core.mapping.Document; import org.yeshi.utils.StringUtil; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; @Document(collection = "taoBaoCouponCache") public class TaoBaoCouponCache implements Serializable { private String id;//主键 private Long auctionId;//商品Id private String activityId;//券ID private BigDecimal couponAmount;//券面额 private BigDecimal couponStartPrice;//使用券的最小价格 private Date startTime;//券开始时间 private Date endTime;//券结束时间 private String pid;//推广位ID private String couponLink;//券链接 private Date createTime;//创建时间 private Date updateTime;//更新时间 public String createId() { return StringUtil.Md5(this.auctionId + "-" + this.activityId + "-" + this.pid); } public String getId() { return id; } public void setId(String id) { this.id = id; } public Long getAuctionId() { return auctionId; } public void setAuctionId(Long auctionId) { this.auctionId = auctionId; } public String getActivityId() { return activityId; } public void setActivityId(String activityId) { this.activityId = activityId; } public BigDecimal getCouponAmount() { return couponAmount; } public void setCouponAmount(BigDecimal couponAmount) { this.couponAmount = couponAmount; } public BigDecimal getCouponStartPrice() { return couponStartPrice; } public void setCouponStartPrice(BigDecimal couponStartPrice) { this.couponStartPrice = couponStartPrice; } public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public Date getEndTime() { return endTime; } public void setEndTime(Date endTime) { this.endTime = endTime; } public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } public String getCouponLink() { return couponLink; } public void setCouponLink(String couponLink) { this.couponLink = couponLink; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getUpdateTime() { return updateTime; } public void setUpdateTime(Date updateTime) { this.updateTime = updateTime; } } src/main/java/com/yeshi/buwan/dto/tb/TaoBaoGoodsBrief.java
New file @@ -0,0 +1,898 @@ package com.yeshi.buwan.dto.tb; import com.google.gson.annotations.Expose; import org.springframework.data.mongodb.core.index.Indexed; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; import java.io.Serializable; import java.math.BigDecimal; import java.util.Date; import java.util.List; /** * 淘宝商品信息 * * @author Administrator * */ public class TaoBaoGoodsBrief extends TaoBaoGoodsYuShouInfo implements Serializable { /** * */ private static final long serialVersionUID = 1L; //@org.yeshi.utils.mybatis.Column(name = "id") @Expose private Long id; @Field //@org.yeshi.utils.mybatis.Column(name = "rootCatId") private Integer rootCatId;// 0, 一级类目ID //@org.yeshi.utils.mybatis.Column(name = "eventCreatorId") private Integer eventCreatorId;// 0, @Field //@org.yeshi.utils.mybatis.Column(name = "leafCatId") private Integer leafCatId;// 50011277, 子类目id //@org.yeshi.utils.mybatis.Column(name = "debugInfo") private String debugInfo;// null, //@org.yeshi.utils.mybatis.Column(name = "rootCatScore") private Integer rootCatScore;// 0, @Field //@org.yeshi.utils.mybatis.Column(name = "sellerId") private Long sellerId;// 卖家Id @Field @Expose //@org.yeshi.utils.mybatis.Column(name = "userType") private Integer userType;// 0, @Field @Expose //@org.yeshi.utils.mybatis.Column(name = "shopTitle") private String shopTitle;// 店铺名称 @Field //@org.yeshi.utils.mybatis.Column(name = "pictUrl") @Expose private String pictUrl;// 主图链接 @Field //@org.yeshi.utils.mybatis.Column(name = "pictUrlWhite") @Expose private String pictUrlWhite;// 白底色图片链接 @Field //@org.yeshi.utils.mybatis.Column(name = "title") @Expose private String title;// 商品标题 @Field @Indexed //@org.yeshi.utils.mybatis.Column(name = "auctionId") @Expose private Long auctionId;// 商品ID @Field //@org.yeshi.utils.mybatis.Column(name = "couponLink") @Expose private String couponLink;// 优惠券链�? @Field //@org.yeshi.utils.mybatis.Column(name = "couponLinkTaoToken") @Expose private String couponLinkTaoToken;// @Field //@org.yeshi.utils.mybatis.Column(name = "couponActivityId") @Expose private String couponActivityId;// @Field //@org.yeshi.utils.mybatis.Column(name = "biz30day") @Expose private Integer biz30day;// 月销量 @Field //@org.yeshi.utils.mybatis.Column(name = "tkRate") @Expose private BigDecimal tkRate;// 佣金比例 �?��100 @Field //@org.yeshi.utils.mybatis.Column(name = "nick") @Expose private String nick;// "yoyo_808611", 店铺名称 //@org.yeshi.utils.mybatis.Column(name = "includeDxjh") @Expose private Integer includeDxjh;// 1:定向计划 @Field //@org.yeshi.utils.mybatis.Column(name = "reservePrice") @Expose private BigDecimal reservePrice;// 588, @Field //@org.yeshi.utils.mybatis.Column(name = "tkCommFee") @Expose private BigDecimal tkCommFee;// 32.04, @Field //@org.yeshi.utils.mybatis.Column(name = "totalFee") @Expose private BigDecimal totalFee;// 4814.43, @Field //@org.yeshi.utils.mybatis.Column(name = "totalNum") @Expose private Integer totalNum;// 229, 库存数量 @Field //@org.yeshi.utils.mybatis.Column(name = "zkPrice") @Expose private BigDecimal zkPrice;// 无线价格,在售价 @Field //@org.yeshi.utils.mybatis.Column(name = "dayLeft") @Expose private Integer dayLeft;// -17228, @Field //@org.yeshi.utils.mybatis.Column(name = "tk3rdRate") @Expose private String tk3rdRate;// null, @Field //@org.yeshi.utils.mybatis.Column(name = "auctionUrl") @Expose private String auctionUrl;// 商品链接 @Field //@org.yeshi.utils.mybatis.Column(name = "rlRate") @Expose private Double rlRate;// 69.72, //@org.yeshi.utils.mybatis.Column(name = "hasRecommended") @Expose private Integer hasRecommended;// 0, //@org.yeshi.utils.mybatis.Column(name = "hasSame") @Expose private Integer hasSame;// 0, //@org.yeshi.utils.mybatis.Column(name = "sameItemPid") @Expose private Long sameItemPid;// "-232381821", @Field //@org.yeshi.utils.mybatis.Column(name = "couponTotalCount") @Expose private Integer couponTotalCount;// 优惠券�?�? @Field //@org.yeshi.utils.mybatis.Column(name = "couponLeftCount") @Expose private Integer couponLeftCount;// 优惠券剩余数�? @Field //@org.yeshi.utils.mybatis.Column(name = "couponAmount") @Expose private BigDecimal couponAmount;// 优惠金额 @Field //@org.yeshi.utils.mybatis.Column(name = "eventRate") @Expose private String eventRate;// null, @Field //@org.yeshi.utils.mybatis.Column(name = "couponShortLink") @Expose private String couponShortLink;// 优惠券短�? @Field //@org.yeshi.utils.mybatis.Column(name = "couponInfo") @Expose private String couponInfo;// 优惠券信�? @Field //@org.yeshi.utils.mybatis.Column(name = "couponStartFee") @Expose private BigDecimal couponStartFee;// 优惠券起始优�? @Field //@org.yeshi.utils.mybatis.Column(name = "couponEffectiveStartTime") @Expose private String couponEffectiveStartTime;// "2017-02-04",优惠券开始时�? @Field //@org.yeshi.utils.mybatis.Column(name = "couponEffectiveEndTime") @Expose private String couponEffectiveEndTime;// 优惠券结束时�? //@org.yeshi.utils.mybatis.Column(name = "hasUmpBonus") @Expose private String hasUmpBonus;// null, //@org.yeshi.utils.mybatis.Column(name = "isBizActivity") @Expose private String isBizActivity;// null, //@org.yeshi.utils.mybatis.Column(name = "umpBonus") @Expose private String umpBonus;// null, @Field //@org.yeshi.utils.mybatis.Column(name = "rootCategoryName") @Expose private String rootCategoryName;// 一级分类名称 @Field //@org.yeshi.utils.mybatis.Column(name = "couponOriLink") @Expose private String couponOriLink;// 优惠券原始链�? @Field //@org.yeshi.utils.mybatis.Column(name = "userTypeName") @Expose private String userTypeName;// 用户类型 @Field //@org.yeshi.utils.mybatis.Column(name = "tkMktStatus") @Expose private String tkMktStatus; // 1:营销返利 @Field //@org.yeshi.utils.mybatis.Column(name = "totalSales") @Expose private Integer totalSales;// 229, 淘客30天月推广量 // 入库时间 //@org.yeshi.utils.mybatis.Column(name = "createtime") @Expose private Date createtime; // 更新时间 @Field //@org.yeshi.utils.mybatis.Column(name = "updatetime") @Expose private Date updatetime; //@org.yeshi.utils.mybatis.Column(name = "state") @Expose private Integer state;// 0-正常 1-商品下架 @Field //@org.yeshi.utils.mybatis.Column(name = "material_lib_type") private Integer materialLibType;//物料库类型 private String description;//推荐语 private boolean shopCoupon;//是否为店铺券 /* 新增字段 2018-7-16 ; 由于数据未从淘宝获取成功,暂不启用 */ public boolean isShopCoupon() { return shopCoupon; } public void setShopCoupon(boolean shopCoupon) { this.shopCoupon = shopCoupon; } public Integer getMaterialLibType() { return materialLibType; } public void setMaterialLibType(Integer materialLibType) { this.materialLibType = materialLibType; } // //@org.yeshi.utils.mybatis.Column(name = "catLeafName") private String leafName; // 子类目名称 // //@org.yeshi.utils.mybatis.Column(name = "isPrepay") private Integer isPrepay; // 是否加入消费者保障 1:是 0 否 // //@org.yeshi.utils.mybatis.Column(name = "shopDsr") private Integer shopDsr; // 店铺评分 // //@org.yeshi.utils.mybatis.Column(name = "ratesum") private Integer ratesum; // 卖家等级 // //@org.yeshi.utils.mybatis.Column(name = "rfdRate") private Integer rfdRate; // 退款率是否低于行业均值 // //@org.yeshi.utils.mybatis.Column(name = "goodRate") private Integer goodRate; // 好评率是否高于行业均值 // //@org.yeshi.utils.mybatis.Column(name = "payRate30") private Integer payRate30; // 成交转化是否高于行业均值 // //@org.yeshi.utils.mybatis.Column(name = "freeShipment") private Integer freeShipment; // 是否包邮 @Expose private String salesCount; @Expose private List<String> imgList; private String dxjhInfo; private String provcity; private BigDecimal minTkRate;//最小返利比例 public BigDecimal getMinTkRate() { return minTkRate; } public void setMinTkRate(BigDecimal minTkRate) { this.minTkRate = minTkRate; } public Date getUpdatetime() { return updatetime; } public void setUpdatetime(Date updatetime) { this.updatetime = updatetime; } public Integer getState() { return state; } public void setState(Integer state) { this.state = state; } public String getProvcity() { return provcity; } public void setProvcity(String provcity) { this.provcity = provcity; } public String getDxjhInfo() { return dxjhInfo; } public void setDxjhInfo(String dxjhInfo) { this.dxjhInfo = dxjhInfo; } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } public TaoBaoGoodsBrief() { this.eventCreatorId = 0; this.hasRecommended = 0; this.hasSame = 0; this.rootCatId = 0; this.rootCatScore = 0; this.sameItemPid = 0L; this.totalFee = new BigDecimal(0); this.couponStartFee = new BigDecimal(0); this.couponTotalCount = 0; this.dayLeft = 0; this.leafCatId = 0; this.couponAmount = new BigDecimal(0); this.rlRate = 0.0; this.couponLeftCount = 0; this.includeDxjh = 0; } public TaoBaoGoodsBrief(Long id) { super(); this.id = id; } public TaoBaoGoodsBrief(String shopTitle) { super(); this.shopTitle = shopTitle; } public List<String> getImgList() { return imgList; } public void setImgList(List<String> imgList) { this.imgList = imgList; } public Integer getRootCatId() { return rootCatId; } public void setRootCatId(Integer rootCatId) { this.rootCatId = rootCatId; } public Integer getEventCreatorId() { return eventCreatorId; } public void setEventCreatorId(Integer eventCreatorId) { this.eventCreatorId = eventCreatorId; } public Integer getLeafCatId() { return leafCatId; } public void setLeafCatId(Integer leafCatId) { this.leafCatId = leafCatId; } public String getDebugInfo() { return debugInfo; } public void setDebugInfo(String debugInfo) { this.debugInfo = debugInfo; } public Integer getRootCatScore() { return rootCatScore; } public void setRootCatScore(Integer rootCatScore) { this.rootCatScore = rootCatScore; } public Long getSellerId() { return sellerId; } public void setSellerId(Long sellerId) { this.sellerId = sellerId; } public Integer getUserType() { return userType; } public void setUserType(Integer userType) { this.userType = userType; } public String getShopTitle() { return shopTitle; } public void setShopTitle(String shopTitle) { this.shopTitle = shopTitle; } public String getPictUrl() { return pictUrl; } public void setPictUrl(String pictUrl) { this.pictUrl = pictUrl; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public Long getAuctionId() { return auctionId; } public void setAuctionId(Long auctionId) { this.auctionId = auctionId; } public String getCouponLink() { return couponLink; } public void setCouponLink(String couponLink) { this.couponLink = couponLink; } public String getCouponLinkTaoToken() { return couponLinkTaoToken; } public void setCouponLinkTaoToken(String couponLinkTaoToken) { this.couponLinkTaoToken = couponLinkTaoToken; } public String getCouponActivityId() { return couponActivityId; } public void setCouponActivityId(String couponActivityId) { this.couponActivityId = couponActivityId; } public Integer getBiz30day() { return biz30day; } public void setBiz30day(Integer biz30day) { this.biz30day = biz30day; } public BigDecimal getTkRate() { return tkRate; } public void setTkRate(BigDecimal tkRate) { this.tkRate = tkRate; } public String getNick() { return nick; } public void setNick(String nick) { this.nick = nick; } public Integer getIncludeDxjh() { return includeDxjh; } public void setIncludeDxjh(Integer includeDxjh) { this.includeDxjh = includeDxjh; } public BigDecimal getTkCommFee() { return tkCommFee; } public BigDecimal getReservePrice() { return reservePrice; } public void setReservePrice(BigDecimal reservePrice) { this.reservePrice = reservePrice; } public BigDecimal getTotalFee() { return totalFee; } public void setTotalFee(BigDecimal totalFee) { this.totalFee = totalFee; } public void setTkCommFee(BigDecimal tkCommFee) { this.tkCommFee = tkCommFee; } public Integer getTotalNum() { return totalNum; } public void setTotalNum(Integer totalNum) { this.totalNum = totalNum; } public BigDecimal getZkPrice() { return zkPrice; } public void setZkPrice(BigDecimal zkPrice) { this.zkPrice = zkPrice; } public Integer getDayLeft() { return dayLeft; } public void setDayLeft(Integer dayLeft) { this.dayLeft = dayLeft; } public String getTk3rdRate() { return tk3rdRate; } public void setTk3rdRate(String tk3rdRate) { this.tk3rdRate = tk3rdRate; } public String getAuctionUrl() { return auctionUrl; } public void setAuctionUrl(String auctionUrl) { this.auctionUrl = auctionUrl; } public Double getRlRate() { return rlRate; } public void setRlRate(Double rlRate) { this.rlRate = rlRate; } public Integer getHasRecommended() { return hasRecommended; } public void setHasRecommended(Integer hasRecommended) { this.hasRecommended = hasRecommended; } public Integer getHasSame() { return hasSame; } public void setHasSame(Integer hasSame) { this.hasSame = hasSame; } public Long getSameItemPid() { return sameItemPid; } public void setSameItemPid(Long sameItemPid) { this.sameItemPid = sameItemPid; } public Integer getCouponTotalCount() { return couponTotalCount; } public void setCouponTotalCount(Integer couponTotalCount) { this.couponTotalCount = couponTotalCount; } public Integer getCouponLeftCount() { return couponLeftCount; } public void setCouponLeftCount(Integer couponLeftCount) { this.couponLeftCount = couponLeftCount; } public BigDecimal getCouponAmount() { return couponAmount; } public void setCouponAmount(BigDecimal couponAmount) { this.couponAmount = couponAmount; } public String getEventRate() { return eventRate; } public void setEventRate(String eventRate) { this.eventRate = eventRate; } public String getCouponShortLink() { return couponShortLink; } public void setCouponShortLink(String couponShortLink) { this.couponShortLink = couponShortLink; } public String getCouponInfo() { return couponInfo; } public void setCouponInfo(String couponInfo) { this.couponInfo = couponInfo; } public BigDecimal getCouponStartFee() { return couponStartFee; } public void setCouponStartFee(BigDecimal couponStartFee) { this.couponStartFee = couponStartFee; } public String getCouponEffectiveStartTime() { return couponEffectiveStartTime; } public void setCouponEffectiveStartTime(String couponEffectiveStartTime) { this.couponEffectiveStartTime = couponEffectiveStartTime; } public String getCouponEffectiveEndTime() { return couponEffectiveEndTime; } public void setCouponEffectiveEndTime(String couponEffectiveEndTime) { this.couponEffectiveEndTime = couponEffectiveEndTime; } public String getHasUmpBonus() { return hasUmpBonus; } public void setHasUmpBonus(String hasUmpBonus) { this.hasUmpBonus = hasUmpBonus; } public String getIsBizActivity() { return isBizActivity; } public void setIsBizActivity(String isBizActivity) { this.isBizActivity = isBizActivity; } public String getUmpBonus() { return umpBonus; } public void setUmpBonus(String umpBonus) { this.umpBonus = umpBonus; } public String getRootCategoryName() { return rootCategoryName; } public void setRootCategoryName(String rootCategoryName) { this.rootCategoryName = rootCategoryName; } public String getCouponOriLink() { return couponOriLink; } public void setCouponOriLink(String couponOriLink) { this.couponOriLink = couponOriLink; } public String getUserTypeName() { return userTypeName; } public void setUserTypeName(String userTypeName) { this.userTypeName = userTypeName; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getTkMktStatus() { return tkMktStatus; } public void setTkMktStatus(String tkMktStatus) { this.tkMktStatus = tkMktStatus; } public String getSalesCount() { return salesCount; } public void setSalesCount(String salesCount) { this.salesCount = salesCount; } public Integer getIsPrepay() { return isPrepay; } public void setIsPrepay(Integer isPrepay) { this.isPrepay = isPrepay; } public Integer getShopDsr() { return shopDsr; } public void setShopDsr(Integer shopDsr) { this.shopDsr = shopDsr; } public Integer getRatesum() { return ratesum; } public void setRatesum(Integer ratesum) { this.ratesum = ratesum; } public Integer getRfdRate() { return rfdRate; } public void setRfdRate(Integer rfdRate) { this.rfdRate = rfdRate; } public Integer getGoodRate() { return goodRate; } public void setGoodRate(Integer goodRate) { this.goodRate = goodRate; } public Integer getPayRate30() { return payRate30; } public void setPayRate30(Integer payRate30) { this.payRate30 = payRate30; } public Integer getFreeShipment() { return freeShipment; } public void setFreeShipment(Integer freeShipment) { this.freeShipment = freeShipment; } public String getLeafName() { return leafName; } public void setLeafName(String leafName) { this.leafName = leafName; } public Integer getTotalSales() { return totalSales; } public void setTotalSales(Integer totalSales) { this.totalSales = totalSales; } public String getPictUrlWhite() { return pictUrlWhite; } public void setPictUrlWhite(String pictUrlWhite) { this.pictUrlWhite = pictUrlWhite; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } } src/main/java/com/yeshi/buwan/dto/tb/TaoBaoGoodsBriefExtra.java
New file @@ -0,0 +1,166 @@ package com.yeshi.buwan.dto.tb; import com.google.gson.annotations.Expose; import java.math.BigDecimal; public class TaoBaoGoodsBriefExtra extends TaoBaoGoodsBrief { /** * */ private static final long serialVersionUID = 1L; @Expose private boolean baoyou; @Expose private int shopType;// 0-无 1-淘宝 2-天猫 @Expose private TaoBaoQuanInfo taoBaoQuanInfo; @Expose private TaoBaoHongBaoInfo taoBaoHongBaoInfo; @Expose private int showType;// 0-没有红包与券 1-只有券 2-只有红包 3-有券和红包 @Expose private BigDecimal quanPrice; // 券后价 @Expose private String tbToken; @Expose private int collected; // 0-没有收藏 1-已收藏 @Expose private int moneyType;// 资金类型 1-返 2-奖 @Expose private int salesType;//销量类型:1-月销量 2-2小时销量 3-今日销量 @Expose private boolean coupon; // 是否有券 @Expose private boolean recommend; // 是否推荐 @Expose private String spreadMoney;// 推广红包 @Expose private TLJBuyHongBaoVO tljBuyHongBao; public TLJBuyHongBaoVO getTljBuyHongBao() { return tljBuyHongBao; } public void setTljBuyHongBao(TLJBuyHongBaoVO tljBuyHongBao) { this.tljBuyHongBao = tljBuyHongBao; } public int getMoneyType() { return moneyType; } public void setMoneyType(int moneyType) { this.moneyType = moneyType; } public int getSalesType() { return salesType; } public void setSalesType(int salesType) { this.salesType = salesType; } public String getTbToken() { return tbToken; } public void setTbToken(String tbToken) { this.tbToken = tbToken; } public BigDecimal getQuanPrice() { return quanPrice; } public void setQuanPrice(BigDecimal quanPrice) { this.quanPrice = quanPrice; } public int getShowType() { return showType; } public void setShowType(int showType) { this.showType = showType; } public boolean isBaoyou() { return baoyou; } public void setBaoyou(boolean baoyou) { this.baoyou = baoyou; } public int getShopType() { return shopType; } public void setShopType(int shopType) { this.shopType = shopType; } public TaoBaoQuanInfo getTaoBaoQuanInfo() { return taoBaoQuanInfo; } public void setTaoBaoQuanInfo(TaoBaoQuanInfo taoBaoQuanInfo) { this.taoBaoQuanInfo = taoBaoQuanInfo; } public TaoBaoHongBaoInfo getTaoBaoHongBaoInfo() { return taoBaoHongBaoInfo; } public void setTaoBaoHongBaoInfo(TaoBaoHongBaoInfo taoBaoHongBaoInfo) { this.taoBaoHongBaoInfo = taoBaoHongBaoInfo; } public int getCollected() { return collected; } public void setCollected(int collected) { this.collected = collected; } public boolean isCoupon() { return coupon; } public void setCoupon(boolean coupon) { this.coupon = coupon; } public boolean isRecommend() { return recommend; } public void setRecommend(boolean recommend) { this.recommend = recommend; } public String getSpreadMoney() { return spreadMoney; } public void setSpreadMoney(String spreadMoney) { this.spreadMoney = spreadMoney; } } src/main/java/com/yeshi/buwan/dto/tb/TaoBaoGoodsYuShouInfo.java
New file @@ -0,0 +1,122 @@ package com.yeshi.buwan.dto.tb; import java.math.BigDecimal; /** * 淘宝预售信息 * * @author Administrator * */ public class TaoBaoGoodsYuShouInfo { private String ysylClickUrl;// 预售有礼-推广链接 private String ysylTljFace;// 预售有礼-预估淘礼金(元) private String ysylTljSendTime;// 预售有礼-淘礼金发放时间 private String ysylTljUseEndTime;// 淘礼金使用结束时间 private String ysylTljUseStartTime;// 淘礼金使用开始时间 private BigDecimal ysylCommissionRate;// 预售有礼-佣金比例(%) private String presaleDiscountFeeText;// 预售商品-优惠信息 private String presaleTailEndTime;// 预售商品-付尾款结束时间(毫秒) private String presaleTailStartTime;// 预售商品-付尾款开始时间(毫秒) private String presaleEndTime;// 预售商品-付定金结束时间(毫秒) private String presaleStartTime;// 预售商品-付定金开始时间(毫秒) private String presaleDeposit;// 预售商品-定金(元) public String getPresaleTailEndTime() { return presaleTailEndTime; } public void setPresaleTailEndTime(String presaleTailEndTime) { this.presaleTailEndTime = presaleTailEndTime; } public String getPresaleTailStartTime() { return presaleTailStartTime; } public void setPresaleTailStartTime(String presaleTailStartTime) { this.presaleTailStartTime = presaleTailStartTime; } public String getPresaleEndTime() { return presaleEndTime; } public void setPresaleEndTime(String presaleEndTime) { this.presaleEndTime = presaleEndTime; } public String getPresaleStartTime() { return presaleStartTime; } public void setPresaleStartTime(String presaleStartTime) { this.presaleStartTime = presaleStartTime; } public String getPresaleDeposit() { return presaleDeposit; } public void setPresaleDeposit(String presaleDeposit) { this.presaleDeposit = presaleDeposit; } public String getYsylClickUrl() { return ysylClickUrl; } public void setYsylClickUrl(String ysylClickUrl) { this.ysylClickUrl = ysylClickUrl; } public String getYsylTljFace() { return ysylTljFace; } public void setYsylTljFace(String ysylTljFace) { this.ysylTljFace = ysylTljFace; } public String getYsylTljSendTime() { return ysylTljSendTime; } public void setYsylTljSendTime(String ysylTljSendTime) { this.ysylTljSendTime = ysylTljSendTime; } public String getYsylTljUseEndTime() { return ysylTljUseEndTime; } public void setYsylTljUseEndTime(String ysylTljUseEndTime) { this.ysylTljUseEndTime = ysylTljUseEndTime; } public String getYsylTljUseStartTime() { return ysylTljUseStartTime; } public void setYsylTljUseStartTime(String ysylTljUseStartTime) { this.ysylTljUseStartTime = ysylTljUseStartTime; } public BigDecimal getYsylCommissionRate() { return ysylCommissionRate; } public void setYsylCommissionRate(BigDecimal ysylCommissionRate) { this.ysylCommissionRate = ysylCommissionRate; } public String getPresaleDiscountFeeText() { return presaleDiscountFeeText; } public void setPresaleDiscountFeeText(String presaleDiscountFeeText) { this.presaleDiscountFeeText = presaleDiscountFeeText; } } src/main/java/com/yeshi/buwan/dto/tb/TaoBaoHead.java
New file @@ -0,0 +1,15 @@ package com.yeshi.buwan.dto.tb; public class TaoBaoHead { private int docsfound; public int getDocsfound() { return docsfound; } public void setDocsfound(int docsfound) { this.docsfound = docsfound; } } src/main/java/com/yeshi/buwan/dto/tb/TaoBaoHongBaoInfo.java
New file @@ -0,0 +1,45 @@ package com.yeshi.buwan.dto.tb; import com.google.gson.annotations.Expose; import java.math.BigDecimal; //密朵红包信息 public class TaoBaoHongBaoInfo { @Expose private BigDecimal hongbao; @Expose private String rate; /** * 0:红包 1:比率 */ @Expose private int type; public BigDecimal getHongbao() { return hongbao; } public void setHongbao(BigDecimal hongbao) { this.hongbao = hongbao; } public String getRate() { return rate; } public void setRate(String rate) { this.rate = rate; } public int getType() { return type; } public void setType(int type) { this.type = type; } } src/main/java/com/yeshi/buwan/dto/tb/TaoBaoQuanInfo.java
New file @@ -0,0 +1,102 @@ package com.yeshi.buwan.dto.tb; import com.google.gson.annotations.Expose; import java.math.BigDecimal; //淘宝优惠券信息 public class TaoBaoQuanInfo { @Expose private int couponTotalCount;// 优惠券总数 @Expose private int couponLeftCount;// 优惠券剩余数量 @Expose private BigDecimal couponAmount;// 优惠金额 @Expose private String couponInfo;// 优惠券信息 @Expose private BigDecimal couponStartFee;// 优惠券起始优惠 @Expose private String couponEffectiveStartTime; @Expose private String couponEffectiveEndTime; @Expose private BigDecimal couponPrice;// 券后价 @Expose private String couponLink;// 券的链接 public String getCouponLink() { return couponLink; } public void setCouponLink(String couponLink) { this.couponLink = couponLink; } public int getCouponTotalCount() { return couponTotalCount; } public void setCouponTotalCount(int couponTotalCount) { this.couponTotalCount = couponTotalCount; } public int getCouponLeftCount() { return couponLeftCount; } public void setCouponLeftCount(int couponLeftCount) { this.couponLeftCount = couponLeftCount; } public String getCouponInfo() { return couponInfo; } public void setCouponInfo(String couponInfo) { this.couponInfo = couponInfo; } public String getCouponEffectiveStartTime() { return couponEffectiveStartTime; } public void setCouponEffectiveStartTime(String couponEffectiveStartTime) { this.couponEffectiveStartTime = couponEffectiveStartTime; } public String getCouponEffectiveEndTime() { return couponEffectiveEndTime; } public void setCouponEffectiveEndTime(String couponEffectiveEndTime) { this.couponEffectiveEndTime = couponEffectiveEndTime; } public BigDecimal getCouponAmount() { return couponAmount; } public void setCouponAmount(BigDecimal couponAmount) { this.couponAmount = couponAmount; } public BigDecimal getCouponStartFee() { return couponStartFee; } public void setCouponStartFee(BigDecimal couponStartFee) { this.couponStartFee = couponStartFee; } public BigDecimal getCouponPrice() { return couponPrice; } public void setCouponPrice(BigDecimal couponPrice) { this.couponPrice = couponPrice; } } src/main/java/com/yeshi/buwan/dto/tb/TaoKeAppInfo.java
New file @@ -0,0 +1,62 @@ package com.yeshi.buwan.dto.tb; /** * 淘客的app信息 * * @author Administrator * */ public class TaoKeAppInfo { private String appKey; private String appSecret; public TaoKeAppInfo(String appKey, String appSecret) { this.appKey = appKey; this.appSecret = appSecret; } public TaoKeAppInfo(String appKey, String appSecret, String pid) { this.appKey = appKey; this.appSecret = appSecret; this.pid = pid; } public TaoKeAppInfo() { } private String pid; private String adzoneId; public String getAdzoneId() { return adzoneId; } public void setAdzoneId(String adzoneId) { this.adzoneId = adzoneId; } public String getAppKey() { return appKey; } public void setAppKey(String appKey) { this.appKey = appKey; } public String getAppSecret() { return appSecret; } public void setAppSecret(String appSecret) { this.appSecret = appSecret; } public String getPid() { return pid; } public void setPid(String pid) { this.pid = pid; } } src/main/java/com/yeshi/buwan/dto/tb/TaoLiJinDTO.java
New file @@ -0,0 +1,22 @@ package com.yeshi.buwan.dto.tb; public class TaoLiJinDTO { private String rightsId; private String sendUrl; public String getRightsId() { return rightsId; } public void setRightsId(String rightsId) { this.rightsId = rightsId; } public String getSendUrl() { return sendUrl; } public void setSendUrl(String sendUrl) { this.sendUrl = sendUrl; } } src/main/java/com/yeshi/buwan/exception/BaseException.java
New file @@ -0,0 +1,32 @@ package com.yeshi.buwan.exception; public class BaseException extends Exception { private static final long serialVersionUID = 1L; private int code; private String msg; public int getCode() { return code; } public String getMsg() { return msg; } public BaseException(int code, String msg) { this.code = code; this.msg = msg; } public BaseException(String msg) { this.msg = msg; } public BaseException() { } @Override public String getMessage() { return this.msg; } } src/main/java/com/yeshi/buwan/exception/taobao/TaoBaoAuthException.java
New file @@ -0,0 +1,21 @@ package com.yeshi.buwan.exception.taobao; import com.yeshi.buwan.exception.BaseException; //淘宝商品下架 public class TaoBaoAuthException extends BaseException { public static int CODE_NOT_REAL_NAME = 1;// 未实名 public static int CODE_OUT_OF_RULE = 2;// 违规 public static int CODE_OTHER = 3;// 其他错误 private static final long serialVersionUID = 1L; public TaoBaoAuthException(int code, String msg) { super(code, msg); } public TaoBaoAuthException() { super(); } } src/main/java/com/yeshi/buwan/exception/taobao/TaoBaoBuyRelationMapException.java
New file @@ -0,0 +1,17 @@ package com.yeshi.buwan.exception.taobao; import com.yeshi.buwan.exception.BaseException; //淘宝商品下架 public class TaoBaoBuyRelationMapException extends BaseException { private static final long serialVersionUID = 1L; public TaoBaoBuyRelationMapException(int code, String msg) { super(code, msg); } public TaoBaoBuyRelationMapException() { super(); } } src/main/java/com/yeshi/buwan/exception/taobao/TaoBaoConvertLinkException.java
New file @@ -0,0 +1,18 @@ package com.yeshi.buwan.exception.taobao; import com.yeshi.buwan.exception.BaseException; //淘宝转链异常 public class TaoBaoConvertLinkException extends BaseException { private static final long serialVersionUID = 1L; public TaoBaoConvertLinkException(int code, String msg) { super(code, msg); } public TaoBaoConvertLinkException() { super(); } } src/main/java/com/yeshi/buwan/exception/taobao/TaoBaoTokenException.java
New file @@ -0,0 +1,61 @@ package com.yeshi.buwan.exception.taobao; import java.util.Map; /** * 淘客API异常 * * @author Administrator * */ public class TaoBaoTokenException extends Exception { private int code; private String msg; private Map<String, String> params; public Map<String, String> getParams() { return params; } public void setParams(Map<String, String> params) { this.params = params; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public TaoBaoTokenException() { } public TaoBaoTokenException(int code, String msg) { this.code = code; this.msg = msg; } public TaoBaoTokenException(int code, String msg, Map<String, String> params) { this.code = code; this.msg = msg; this.params = params; } @Override public String getMessage() { return String.format("错误码为:%s 错误信息为:%s", code + "", msg); } } src/main/java/com/yeshi/buwan/exception/taobao/TaoBaoTokenParseException.java
New file @@ -0,0 +1,21 @@ package com.yeshi.buwan.exception.taobao; import com.yeshi.buwan.exception.BaseException; public class TaoBaoTokenParseException extends BaseException { // 商品已下架 public static int CODE_GOODS_OFFLINE = 10000; // 解析结果为空 public static int CODE_NULL = 20011; /** * */ private static final long serialVersionUID = 1L; public TaoBaoTokenParseException(int code, String msg) { super(code, msg); } } src/main/java/com/yeshi/buwan/exception/taobao/TaoKeApiException.java
New file @@ -0,0 +1,73 @@ package com.yeshi.buwan.exception.taobao; import java.util.Map; /** * 淘客API异常 * * @author Administrator * */ public class TaoKeApiException extends Exception { // 淘宝APPkey的请求限制 public static final int CODE_APPKEY_LIMIT = 1; // 无可用app public static final int CODE_NO_USE = 2; // api请求错误 public static final int CODE_API_ERROR = 3; // 其他错误 public static final int CODE_OTHER = 4; private int code; private String msg; private Map<String, String> params; public Map<String, String> getParams() { return params; } public void setParams(Map<String, String> params) { this.params = params; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public TaoKeApiException() { } public TaoKeApiException(int code, String msg) { this.code = code; this.msg = msg; } public TaoKeApiException(int code, String msg, Map<String, String> params) { this.code = code; this.msg = msg; this.params = params; } @Override public String getMessage() { return String.format("错误码为:%s 错误信息为:%s", code + "", msg); } } src/main/java/com/yeshi/buwan/exception/taobao/TaoLiJinCreateException.java
New file @@ -0,0 +1,25 @@ package com.yeshi.buwan.exception.taobao; import com.yeshi.buwan.exception.BaseException; /** * 淘礼金创建异常 * * @author Administrator */ public class TaoLiJinCreateException extends BaseException { public TaoLiJinCreateException(int code, String msg) { super(code, msg); } public TaoLiJinCreateException() { super(); } // 商品支持创建红包 public static final int CODE_TLJ_FORBIDDEN = 101; // 官方账户余额不足 public static final int CODE_TLJ_NO_MONEY = 102; } src/main/java/com/yeshi/buwan/exception/taobao/TaoLiJinException.java
New file @@ -0,0 +1,29 @@ package com.yeshi.buwan.exception.taobao; import com.yeshi.buwan.exception.BaseException; //淘客异常 //{"result":{"msg_code":"FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR","msg_info":"今日该商品淘礼金创建数已超上限,请您明日再试","success":false},"request_id":"10p30v02qadkq"} //{"result":{"msg_code":"ASSET_ACCOUNT_BALANCE_NOT_ENOUGH","msg_info":"账户预算不足","success":false},"request_id":"5caz9izr7jqp"} public class TaoLiJinException extends BaseException { //今日该商品淘礼金创建数已超上限 public final static String CODE_FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR = "FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR"; //账户预算不足 public final static String CODE_ASSET_ACCOUNT_BALANCE_NOT_ENOUGH = "ASSET_ACCOUNT_BALANCE_NOT_ENOUGH"; public static int CODE_NOT_REAL_NAME = 1;// 未实名 public static int CODE_OUT_OF_RULE = 2;// 违规 public static int CODE_OTHER = 3;// 其他错误 private static final long serialVersionUID = 1L; public TaoLiJinException(int code, String msg) { super(code, msg); } public TaoLiJinException() { super(); } } src/main/java/com/yeshi/buwan/exception/taobao/TaobaoGoodsDownException.java
New file @@ -0,0 +1,17 @@ package com.yeshi.buwan.exception.taobao; import com.yeshi.buwan.exception.BaseException; //淘宝商品下架 public class TaobaoGoodsDownException extends BaseException { private static final long serialVersionUID = 1L; public TaobaoGoodsDownException(int code, String msg) { super(code, msg); } public TaobaoGoodsDownException() { super(); } } src/main/java/com/yeshi/buwan/exception/taobao/TaobaoGoodsUpdateException.java
New file @@ -0,0 +1,17 @@ package com.yeshi.buwan.exception.taobao; import com.yeshi.buwan.exception.BaseException; //淘宝商品更新异常 public class TaobaoGoodsUpdateException extends BaseException { private static final long serialVersionUID = 1L; public TaobaoGoodsUpdateException(int code, String msg) { super(code, msg); } public TaobaoGoodsUpdateException() { super(); } } src/main/java/com/yeshi/buwan/util/tb/TaoBaoHttpUtil.java
New file @@ -0,0 +1,324 @@ package com.yeshi.buwan.util.tb; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpException; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.methods.multipart.FilePart; import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity; import org.apache.commons.httpclient.methods.multipart.Part; import org.apache.commons.httpclient.methods.multipart.StringPart; import org.apache.commons.httpclient.params.HttpConnectionManagerParams; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.util.EntityUtils; import java.io.*; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; public class TaoBaoHttpUtil { public static String get(String url) { return get(url, true); } public static String get(String url, boolean isProxy) { HttpClient client = new HttpClient(); GetMethod method = new GetMethod(url); try { client.executeMethod(method); return convertInputStreamToString(method.getResponseBodyAsStream()); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } public static String get(String url, Map<String, String> params, boolean proxy) { HttpClient client = new HttpClient(); // client.getHostConfiguration().setProxy("192.168.1.122", 8888); try { Iterator<String> keys = params.keySet().iterator(); url += "?"; while (keys.hasNext()) { String key = keys.next(); url += String.format("%s=%s&", key, URLEncoder.encode(params.get(key), "UTF-8")); } // System.out.println("url"+url); GetMethod method = new GetMethod(url); // 3S的响应超时 HttpConnectionManagerParams hparams = new HttpConnectionManagerParams(); hparams.setConnectionTimeout(3000); client.getHttpConnectionManager().setParams(hparams); /* * if(proxy){ Address address = ProxyUtil.getAddressProxy(); * if(address != null){ HttpConnectionManagerParams hparams = new * HttpConnectionManagerParams(); * hparams.setConnectionTimeout(3500); * client.getHttpConnectionManager().setParams(hparams); * client.getHostConfiguration().setProxy(address.getIp(),address. * getPort()); } } */ // client.getHostConfiguration().setProxy("192.168.1.122",8888); client.executeMethod(method); String result = method.getResponseBodyAsString(); return result; } catch (Exception e) { e.printStackTrace(); } return ""; } public static String get(String url, Map<String, String> params, Map<String, String> headers, boolean proxy) { HttpClient client = new HttpClient(); try { Iterator<String> keys = params.keySet().iterator(); url += "?"; while (keys.hasNext()) { String key = keys.next(); url += String.format("%s=%s&", key, URLEncoder.encode(params.get(key), "UTF-8")); } System.out.println(url); GetMethod method = new GetMethod(url); if (headers != null) { keys = headers.keySet().iterator(); while (keys.hasNext()) { String key = keys.next(); headers.get(key); method.setRequestHeader(key, headers.get(key)); } } /* * if(proxy){ Address address = ProxyUtil.getAddressProxy(); * if(address != null){ HttpConnectionManagerParams hparams = new * HttpConnectionManagerParams(); * hparams.setConnectionTimeout(3500); * client.getHttpConnectionManager().setParams(hparams); * client.getHostConfiguration().setProxy(address.getIp(),address. * getPort()); } } */ // client.getHostConfiguration().setProxy("120.92.118.64", 10000); client.executeMethod(method); String result = method.getResponseBodyAsString(); return result; } catch (Exception e) { e.printStackTrace(); } return ""; } public static String taoKeGet(Map<String, String> params) { // 聚石塔服务器环境 118.178.179.189 // result = get("http://118.178.179.189/taoke/", params, false); // if (StringUtil.isNullOrEmpty(result)) //https://eco.taobao.com/router/rest //http://gw.api.taobao.com/router/rest String result = get("https://eco.taobao.com/router/rest", params, false); return result; } public static String get(String url, Map<String, String> params) { // TODO 淘宝的所有请求需要走聚石塔 // http://118.178.179.189/taoke/ return get(url, params, false); } public static String get(String url, String charset) { HttpClient client = new HttpClient(); GetMethod method = new GetMethod(url); try { client.executeMethod(method); BufferedReader reader = new BufferedReader( new InputStreamReader(method.getResponseBodyAsStream(), "ISO-8859-1")); String tmp = null; String htmlRet = ""; while ((tmp = reader.readLine()) != null) { htmlRet += tmp + "\r\n"; } return new String(htmlRet.getBytes(charset), "UTF-8"); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } public static InputStream getAsInputStream(String url) { HttpClient client = new HttpClient(); GetMethod method = new GetMethod(url); try { client.executeMethod(method); return method.getResponseBodyAsStream(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } public static InputStream getImage(String url) { HttpClient client = new HttpClient(); GetMethod method = new GetMethod(url); try { method.setRequestHeader("Content-Type", "image/jpeg"); client.executeMethod(method); return method.getResponseBodyAsStream(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } public static String post(String url) { HttpClient client = new HttpClient(); PostMethod method = new PostMethod(url); method.addRequestHeader("Content-Type", "text/html;charset=UTF-8"); method.setRequestHeader("Content-Type", "text/html;charset=UTF-8"); try { client.executeMethod(method); return convertInputStreamToString(method.getResponseBodyAsStream()); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } public static String post(String url, Map<String, String> map) { Iterator<String> its = map.keySet().iterator(); NameValuePair[] params = new NameValuePair[map.keySet().size()]; int p = 0; while (its.hasNext()) { String key = its.next(); NameValuePair np = new NameValuePair(key, map.get(key)); params[p] = np; p++; } HttpClient client = new HttpClient(); PostMethod method = new PostMethod(url); method.addRequestHeader("Content-Type", "text/html;charset=UTF-8"); method.setRequestHeader("Content-Type", "text/html;charset=UTF-8"); method.setRequestBody(params); try { client.executeMethod(method); return convertInputStreamToString(method.getResponseBodyAsStream()); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } public static String post(String url, Map<String, String> map, Map<String, String> headers) { org.apache.http.client.HttpClient client = new DefaultHttpClient(); HttpPost httpRequst = new HttpPost(url);// 创建HttpPost对象 List<org.apache.http.NameValuePair> params = new ArrayList<org.apache.http.NameValuePair>(); Iterator<String> its = map.keySet().iterator(); while (its.hasNext()) { String key = its.next(); params.add(new BasicNameValuePair(key, map.get(key))); } try { HttpEntity entity = new UrlEncodedFormEntity(params, "UTF-8"); httpRequst.setEntity(entity); HttpResponse httpResponse = client.execute(httpRequst); if (httpResponse.getStatusLine().getStatusCode() == 200) { HttpEntity httpEntity = httpResponse.getEntity(); String result = EntityUtils.toString(httpEntity, "UTF-8");// 取出应答字符�? return result; } } catch (Exception e) { e.printStackTrace(); } return ""; // Iterator<String> its = map.keySet().iterator(); } private static String convertInputStreamToString(InputStream inputStream) { BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); StringBuffer stringBuffer = new StringBuffer(); String str = ""; try { while ((str = br.readLine()) != null) { stringBuffer.append(str); } } catch (IOException e) { e.printStackTrace(); } return stringBuffer.toString(); } @SuppressWarnings("deprecation") public static String post(String url, String entity) { HttpClient client = new HttpClient(); PostMethod method = new PostMethod(url); method.addRequestHeader("Content-Type", "text/html;charset=UTF-8"); method.setRequestHeader("Content-Type", "text/html;charset=UTF-8"); method.setRequestBody(entity); try { client.executeMethod(method); return convertInputStreamToString(method.getResponseBodyAsStream()); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } public static String postInputStream(String url, File file) throws FileNotFoundException { HttpClient client = new HttpClient(); PostMethod postMethod = new PostMethod(url); /* * postMethod.addRequestHeader("Content-Type", * "text/html;charset=UTF-8"); * postMethod.setRequestHeader("Content-Type", * "text/html;charset=UTF-8"); */ Part[] parts = { new StringPart("filename", file.getName()), new StringPart("filelength", file.length() + ""), new StringPart("content-type", "image/jpg"), new FilePart("file", file) }; postMethod.setRequestEntity(new MultipartRequestEntity(parts, postMethod.getParams())); try { client.executeMethod(postMethod); return convertInputStreamToString(postMethod.getResponseBodyAsStream()); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return ""; } } src/main/java/com/yeshi/buwan/util/tb/TaoKeApiUtil.java
New file @@ -0,0 +1,124 @@ package com.yeshi.buwan.util.tb; import com.yeshi.buwan.dto.tb.TaoKeAppInfo; import com.yeshi.buwan.dto.tb.TaoLiJinDTO; import com.yeshi.buwan.exception.taobao.TaoKeApiException; import com.yeshi.buwan.exception.taobao.TaoLiJinCreateException; import net.sf.json.JSONObject; import org.yeshi.utils.StringUtil; import org.yeshi.utils.TimeUtil; import java.math.BigDecimal; import java.util.Date; import java.util.HashMap; import java.util.Map; //淘宝客API接口 public class TaoKeApiUtil { public static String getTKToken(String logo, String text, String url) { if (text == null) return null; if (text.length() < 5) text = "好货:" + text; Map<String, String> map = new HashMap<>(); map.put("method", "taobao.tbk.tpwd.create"); map.put("url", url); map.put("text", text); map.put("logo", logo); String resultStr = TaoKeBaseUtil.baseRequestForThreeTimes(map, true); JSONObject data = JSONObject.fromObject(resultStr); if (data.optJSONObject("tbk_tpwd_create_response").optJSONObject("data") != null) return data.optJSONObject("tbk_tpwd_create_response").optJSONObject("data").optString("model"); return null; } // 淘礼金创建 //{"result":{"msg_code":"FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR","msg_info":"今日该商品淘礼金创建数已超上限,请您明日再试","success":false},"request_id":"10p30v02qadkq"} //{"result":{"msg_code":"ASSET_ACCOUNT_BALANCE_NOT_ENOUGH","msg_info":"账户预算不足","success":false},"request_id":"5caz9izr7jqp"} public static TaoLiJinDTO createTaoLiJin(Long auctionId, String name, BigDecimal perface, int totalNum, Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime, TaoKeAppInfo app) throws TaoLiJinCreateException, TaoKeApiException { Map<String, String> map = new HashMap<>(); map.put("method", "taobao.tbk.dg.vegas.tlj.create"); map.put("adzone_id", app.getPid().split("_")[3]); map.put("item_id", auctionId + ""); map.put("total_num", totalNum + ""); map.put("name", name); map.put("user_total_win_num_limit", "1"); map.put("security_switch", "false"); map.put("per_face", perface.toString()); map.put("send_start_time", TimeUtil.getGernalTime(sendStartTime.getTime(), "yyyy-MM-dd HH:mm:ss")); if (sendEndTime != null) map.put("send_end_time", TimeUtil.getGernalTime(sendEndTime.getTime(), "yyyy-MM-dd HH:mm:ss")); if (useEndTime != null) { map.put("use_end_time", TimeUtil.getGernalTime(useEndTime.getTime(), "yyyy-MM-dd")); map.put("use_end_time_mode", "2"); } if (useStartTime != null) map.put("use_start_time", TimeUtil.getGernalTime(useStartTime.getTime(), "yyyy-MM-dd")); try { String result = TaoKeBaseUtil.baseRequestForThreeTimes(map, app); JSONObject json = JSONObject.fromObject(result); System.out.println(json); JSONObject root = json.optJSONObject("tbk_dg_vegas_tlj_create_response"); if (root != null && root.optJSONObject("result") != null) { if (root.optJSONObject("result").optBoolean("success")) { JSONObject modelJson = root.optJSONObject("result").optJSONObject("model"); TaoLiJinDTO dto = new TaoLiJinDTO(); dto.setRightsId(modelJson.optString("rights_id")); dto.setSendUrl(modelJson.optString("send_url")); return dto; } else { } // 接口返回异常 String msgCode = root.optJSONObject("result").optString("msg_code"); if (!StringUtil.isNullOrEmpty(msgCode)) { switch (msgCode) { case "FAIL_BIZ_ITEM_FORBIDDEN": throw new TaoLiJinCreateException(TaoLiJinCreateException.CODE_TLJ_FORBIDDEN, "该商品不支持创建淘礼金红包"); case "FAIL_BIZ_ACCOUNT_UN_PAID": case "PRE_FREEZE_ASSET_ACCOUNT_ERROR": throw new TaoLiJinCreateException(TaoLiJinCreateException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足"); default: throw new TaoKeApiException(Integer.parseInt(msgCode), root.toString()); } } } } catch (TaoKeApiException e) { throw e; } return null; } /** * 获取淘宝系统时间 * * @return */ public static Date getTaoBaoSystemTime() { Map<String, String> map = new HashMap<>(); map.put("method", "taobao.time.get"); try { JSONObject json = TaoKeBaseUtil.baseRequest(map, false); String time = json.optJSONObject("time_get_response").optString("time"); return new Date(TimeUtil.convertToTimeTemp(time, "yyyy-MM-dd HH:mm:ss")); } catch (Exception e) { e.printStackTrace(); } return null; } } src/main/java/com/yeshi/buwan/util/tb/TaoKeBaseUtil.java
New file @@ -0,0 +1,335 @@ package com.yeshi.buwan.util.tb; import com.show.api.util.StringUtils; import com.yeshi.buwan.dto.tb.TaoKeAppInfo; import com.yeshi.buwan.exception.taobao.TaoKeApiException; import net.sf.json.JSONObject; import org.yeshi.utils.HttpUtil; import org.yeshi.utils.StringUtil; import org.yeshi.utils.TimeUtil; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class TaoKeBaseUtil { private static TaoKeAppInfo taoKeAppInfo = null; private static long lastTime = 0; public static JSONObject baseRequest(Map<String, String> param, boolean needAdzoneId) throws TaoKeApiException { // 复制params Map<String, String> params = new HashMap<>(); if (param != null) { Iterator<String> its = param.keySet().iterator(); while (its.hasNext()) { String key = its.next(); params.put(key, param.get(key)); } } // 获取有效的APPKey TaoKeAppInfo app = getAvailableTaoKeAppInfo(); if (app == null) throw new TaoKeApiException(TaoKeApiException.CODE_NO_USE, "无appkey可用"); // 签名 params.put("app_key", app.getAppKey()); params.put("sign_method", "md5"); params.put("v", "2.0"); params.put("timestamp", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); params.put("format", "json"); if (needAdzoneId) params.put("adzone_id", app.getAdzoneId()); params.put("sign", getSign(params, "md5", app).toUpperCase()); String result = TaoBaoHttpUtil.taoKeGet(params); JSONObject data = JSONObject.fromObject(result); if (data != null) { if (data.optJSONObject("error_response") != null && data.optJSONObject("error_response").optInt("code") == 7 && "accesscontrol.limited-by-app-access-count" .equalsIgnoreCase(data.optJSONObject("error_response").optString("sub_code"))) { reportAppInvalid(app.getAppKey()); throw new TaoKeApiException(TaoKeApiException.CODE_APPKEY_LIMIT, "淘宝请求限制:" + result, params); } else if (data.optJSONObject("error_response") != null) { throw new TaoKeApiException(TaoKeApiException.CODE_API_ERROR, result, params); } } else throw new TaoKeApiException(TaoKeApiException.CODE_OTHER, ":" + result, params); reValid(app.getAppKey()); return data; } /** * 服务商请求 * * @param param * @param session * @return * @throws TaoKeApiException JSONObject 返回类型 * @throws * @Title: baseScRequest * @Description: */ public static JSONObject baseScRequest(Map<String, String> param, TaoKeAppInfo app, String session, String targetAppKey) throws TaoKeApiException { // 复制params Map<String, String> params = new HashMap<>(); if (param != null) { Iterator<String> its = param.keySet().iterator(); while (its.hasNext()) { String key = its.next(); params.put(key, param.get(key)); } } if (app == null) throw new TaoKeApiException(TaoKeApiException.CODE_NO_USE, "无appkey可用"); // 签名 params.put("app_key", app.getAppKey()); params.put("sign_method", "md5"); params.put("v", "2.0"); params.put("timestamp", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); params.put("format", "json"); params.put("session", session); // params.put("target_app_key", targetAppKey); params.put("sign", getSign(params, "md5", app).toUpperCase()); String result = TaoBaoHttpUtil.taoKeGet(params); JSONObject data = JSONObject.fromObject(result); if (data != null) { if (data.optJSONObject("error_response") != null && data.optJSONObject("error_response").optInt("code") == 7 && "accesscontrol.limited-by-app-access-count" .equalsIgnoreCase(data.optJSONObject("error_response").optString("sub_code"))) { reportAppInvalid(app.getAppKey()); throw new TaoKeApiException(TaoKeApiException.CODE_APPKEY_LIMIT, "淘宝请求限制:" + result, params); } else if (data.optJSONObject("error_response") != null) { throw new TaoKeApiException(TaoKeApiException.CODE_API_ERROR, result, params); } } else throw new TaoKeApiException(TaoKeApiException.CODE_OTHER, ":" + result, params); // reValid(app.getAppKey()); return data; } public static JSONObject baseRequest(Map<String, String> param, TaoKeAppInfo app) throws TaoKeApiException { // 复制params Map<String, String> params = new HashMap<>(); if (param != null) { Iterator<String> its = param.keySet().iterator(); while (its.hasNext()) { String key = its.next(); params.put(key, param.get(key)); } } // 获取有效的APPKey if (app == null) throw new TaoKeApiException(TaoKeApiException.CODE_NO_USE, "无appkey可用"); // 签名 params.put("app_key", app.getAppKey()); params.put("sign_method", "md5"); params.put("v", "2.0"); params.put("timestamp", TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss")); params.put("format", "json"); if (!StringUtil.isNullOrEmpty(app.getAdzoneId())) params.put("adzone_id", app.getAdzoneId()); params.put("sign", getSign(params, "md5", app).toUpperCase()); String result = TaoBaoHttpUtil.taoKeGet(params); JSONObject data = JSONObject.fromObject(result); if (data != null) { if (data.optJSONObject("error_response") != null && data.optJSONObject("error_response").optInt("code") == 7 && "accesscontrol.limited-by-app-access-count" .equalsIgnoreCase(data.optJSONObject("error_response").optString("sub_code"))) { reportAppInvalid(app.getAppKey()); throw new TaoKeApiException(TaoKeApiException.CODE_APPKEY_LIMIT, "淘宝请求限制:" + result, params); } else if (data.optJSONObject("error_response") != null) { throw new TaoKeApiException(TaoKeApiException.CODE_API_ERROR, result, params); } } else throw new TaoKeApiException(TaoKeApiException.CODE_OTHER, ":" + result, params); reValid(app.getAppKey()); return data; } /** * 重复3次请求,降低出错概率 * * @param params * @return */ public static String baseRequestForThreeTimes(Map<String, String> params, boolean needAdzoneId) { JSONObject data = null; int count = 0; String result = null; while (data == null && count < 2) { count++; try { data = baseRequest(params, needAdzoneId); } catch (TaoKeApiException e) { // 记录现场 if (e.getCode() == TaoKeApiException.CODE_API_ERROR) { result = e.getMsg(); } } } if (!StringUtil.isNullOrEmpty(result)) { try { data = JSONObject.fromObject(result); } catch (Exception e) { } } if (data != null) return data.toString(); else return new JSONObject().toString(); } public static String baseRequestForThreeTimes(Map<String, String> params, TaoKeAppInfo app) { JSONObject data = null; int count = 0; while (data == null && count < 3) { count++; try { data = baseRequest(params, app); } catch (TaoKeApiException e) { } } if (data != null) return data.toString(); else return new JSONObject().toString(); } /** * 获取签名参数 * * @param params * @param signMethod * @param app * @return */ public static String getSign(Map<String, String> params, String signMethod, TaoKeAppInfo app) { // 第一步:检查参数是否已经排序 String[] keys = params.keySet().toArray(new String[0]); Arrays.sort(keys); // 第二步:把所有参数名和参数值串在一起 StringBuilder query = new StringBuilder(); if ("md5".equals(signMethod)) { query.append(app.getAppSecret()); } for (String key : keys) { String value = params.get(key); if (StringUtils.areNotEmpty(key, value)) { query.append(key).append(value); } } query.append(app.getAppSecret()); return StringUtil.Md5(query.toString()); } static TaoKeAppInfo getAvailableTaoKeAppInfo() { if (System.currentTimeMillis() - lastTime > 1000 * 20L) taoKeAppInfo = null; if (taoKeAppInfo == null) { System.out.println("请求。。。。。"); String result = null; try { result = HttpUtil.get("http://193.112.35.168:8091/tb/taoke/getcanuseapp"); } catch (Exception e) { } // 接口请求失败,默认设置成影视大全IOS的媒体信息 if (StringUtil.isNullOrEmpty(result)) { taoKeAppInfo = new TaoKeAppInfo(); taoKeAppInfo.setAdzoneId("381938426"); taoKeAppInfo.setAppKey("24838852"); taoKeAppInfo.setAppSecret("bc8265e2bf8d8115329d652f9d3d4cd8"); taoKeAppInfo.setPid("mm_124933865_43788020_381938426"); lastTime = System.currentTimeMillis(); return taoKeAppInfo; } JSONObject data = JSONObject.fromObject(result); if (data.optInt("code") == 0) { TaoKeAppInfo info = new TaoKeAppInfo(); info.setAppKey(data.optJSONObject("data").optString("appkey")); info.setAppSecret(data.optJSONObject("data").optString("appsecret")); info.setPid(data.optJSONObject("data").optString("pid")); String[] sts = info.getPid().split("_"); info.setAdzoneId(sts[sts.length - 1]); taoKeAppInfo = info; lastTime = System.currentTimeMillis(); } else {// 防止所有的失效 taoKeAppInfo = new TaoKeAppInfo(); taoKeAppInfo.setAdzoneId("381938426"); taoKeAppInfo.setAppKey("24838852"); taoKeAppInfo.setAppSecret("bc8265e2bf8d8115329d652f9d3d4cd8"); taoKeAppInfo.setPid("mm_124933865_43788020_381938426"); return taoKeAppInfo; } } return taoKeAppInfo; } static void filterTaoKeResponse(String result, TaoKeAppInfo app) { if (!StringUtil.isNullOrEmpty(result)) { try { JSONObject data = JSONObject.fromObject(result); if (data != null) { if (data.optJSONObject("error_response") != null && data.optJSONObject("error_response").optInt("code") == 7) { reportAppInvalid(app.getAppKey()); } } else { } } catch (Exception e) { } } } static Map<String, Integer> invalidMap = new HashMap<>(); /** * 报告该APPKey不能用 * * @param appkey */ static void reportAppInvalid(String appkey) { if (invalidMap == null) return; // 错误三次后再真正上报 if (invalidMap.get(appkey) == null) invalidMap.put(appkey, 1); else invalidMap.put(appkey, invalidMap.get(appkey) + 1); if (invalidMap.get(appkey) < 4) return; invalidMap.put(appkey, 0); HttpUtil.get("http://193.112.35.168:8091/tb/taoke/reportappcannotuse?appkey=" + appkey); lastTime = 0; } /** * APPKey恢复可用 * * @param appKey */ static void reValid(String appKey) { if (invalidMap == null) return; Integer count = invalidMap.get(appKey); if (count != null && count > 0) invalidMap.put(appKey, count - 1); } public static void setAppValid() { HttpUtil.get("http://193.112.35.168:8091/tb/taoke/setappcanuse"); } } src/test/java/com/hxh/spring/test/GeneralTest.java
@@ -5,6 +5,7 @@ import com.yeshi.buwan.dao.video.VideoResourceVersionMapDao; import com.yeshi.buwan.domain.goldcorn.GoldCornTaskActionDetail; import com.yeshi.buwan.domain.pptv.PPTVPlayProcessRecord; import com.yeshi.buwan.domain.tb.YouZhiHaoHuoGoods; import com.yeshi.buwan.domain.video.VideoResourceVersionMap; import com.yeshi.buwan.domain.vip.VideoBuyRecord; import com.yeshi.buwan.service.inter.video.VideoResourceVersionMapService; @@ -17,7 +18,7 @@ @org.junit.Test public void createDao() { try { SpringComponentGenerater.createMongoDao(new MongoDBDaoData.Builder().setBaseDaoClass(MongodbBaseDao.class).setDaoPackageName("com.yeshi.buwan.dao.pptv").setEntityClass(PPTVPlayProcessRecord.class).create(), "D:\\workspace\\BuWan\\src\\main\\java\\com\\yeshi\\buwan\\dao\\pptv\\"); SpringComponentGenerater.createMongoDao(new MongoDBDaoData.Builder().setBaseDaoClass(MongodbBaseDao.class).setDaoPackageName("com.yeshi.buwan.dao.tb").setEntityClass(YouZhiHaoHuoGoods.class).create(), "D:\\workspace\\BuWan\\src\\main\\java\\com\\yeshi\\buwan\\dao\\tb\\"); } catch (Exception e) { e.printStackTrace(); } src/test/java/com/hxh/spring/test/PPTVTest.java
@@ -1,12 +1,16 @@ package com.hxh.spring.test; import com.google.gson.Gson; import com.yeshi.buwan.dao.juhe.pptv.PPTVProgramDao; import com.yeshi.buwan.dao.juhe.pptv.PPTVSeriesDao; import com.yeshi.buwan.dao.juhe.pptv.PPTVSeriesProgramMapDao; import com.yeshi.buwan.dao.juhe.pptv.VideoPPTVMapDao; import com.yeshi.buwan.job.video.PPTVVideoUpdate; import com.yeshi.buwan.pptv.PPTVApiUtil; import com.yeshi.buwan.pptv.PPTVUtil; import com.yeshi.buwan.pptv.entity.PPTVSeries; import com.yeshi.buwan.pptv.entity.PPTVSeriesProgramMap; import com.yeshi.buwan.pptv.entity.VideoPPTVMap; import com.yeshi.buwan.service.inter.LoginUserService; import com.yeshi.buwan.service.inter.juhe.PPTVService; import com.yeshi.buwan.util.StringUtil; @@ -45,8 +49,15 @@ @Resource private PPTVSeriesDao pptvSeriesDao; @Resource private PPTVProgramDao pptvProgramDao; @Resource private PPTVSeriesProgramMapDao pptvSeriesProgramMapDao; @Resource private VideoPPTVMapDao videoPPTVMapDao; @Resource @@ -69,8 +80,34 @@ // continue; // } // System.out.println(s.getName() + ":" + s.getInfoID()); PPTVSeries series = pptvService.getSeriesDetail("381096"); Query query = new Query(); query.addCriteria(new Criteria().orOperator(Criteria.where("programType").regex("电影"), Criteria.where("programType2").regex("电影"))); List<String> list = new ArrayList<>(); List<PPTVSeries> seriesList = pptvSeriesDao.findList(query); for (PPTVSeries series : seriesList) { VideoPPTVMap map = pptvService.selectVideoPPTVMapByPPInfo(series.getInfoID(), null); if (map != null && map.getProgramCode() == null) { series = pptvService.getSeriesDetail(series.getInfoID()); map.setSeriesCode(series.getSeriesCode()); map.setProgramCode(series.getSeries().get(0).getProgramCode()); videoPPTVMapDao.save(map); } else { if (map == null) { list.add(series.getInfoID()); // series = PPTVApiUtil.getDetail(series.getSeriesCode()); series = pptvService.getSeriesDetail(series.getInfoID()); pptvService.addToVideoInfo(series); } } } System.out.println(new Gson().toJson(list)); // } }