fanli/src/main/java/com/yeshi/fanli/controller/client/ShareController.java
@@ -26,6 +26,7 @@ import com.yeshi.fanli.exception.ShareGoodsException; import com.yeshi.fanli.exception.share.UserShareGoodsRecordException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; import com.yeshi.fanli.service.inter.goods.ShareGoodsService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.monitor.MonitorService; @@ -61,6 +62,9 @@ @Resource private UserShareGoodsGroupService userShareGoodsGroupService; @Resource private CommonGoodsService commonGoodsService; // 获取商品分享链接 @RequestMapping(value = "getGoodsShareUrl") fanli/src/main/java/com/yeshi/fanli/controller/client/UserMoneyController.java
@@ -26,6 +26,7 @@ import com.google.gson.stream.JsonWriter; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.money.UserMoneyDetail.UserMoneyDetailTypeEnum; import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.UserMoneyDetailService; import com.yeshi.fanli.util.MoneyBigDecimalUtil; @@ -51,6 +52,9 @@ @Resource private UserInfoService userInfoService; @Resource private HongBaoV2Service hongBaoV2Service; /** * 新版资金详情(1.4.9) @@ -226,7 +230,7 @@ typeList.add(UserMoneyDetailTypeEnum.invite); typeList.add(UserMoneyDetailTypeEnum.inviteWeiQuan); typeList.add(UserMoneyDetailTypeEnum.inviteAndShare); minDate = new Date(0L); maxDate = new Date(timeStamp); vo.setTotalInviteMoney( @@ -254,6 +258,16 @@ vo.setTotalShareMoney( userMoneyDetailService.statisticUserTypeMoneyWithDate(uid, typeList, minDate, maxDate).abs()); maxDate = new Date(timeStamp); minDate = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(timeStamp, "yyyy-MM"), "yyyy-MM")); // 本月未到账 vo.setMonthUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithCreateTime(uid, minDate, maxDate)); // 全部未到账 minDate = new Date(0); vo.setTotalUnRecievedMoney(hongBaoV2Service.getUnRecievedMoneyWithCreateTime(uid, minDate, maxDate)); Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create(); out.print(JsonUtil.loadTrueResult(gson.toJson(vo))); } fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java
@@ -8,9 +8,6 @@ import javax.annotation.Resource; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -32,6 +29,8 @@ import com.yeshi.fanli.entity.taobao.TaoBaoLink; import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; import com.yeshi.fanli.exception.ShareGoodsException; import com.yeshi.fanli.exception.share.UserShareGoodsRecordException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.config.SystemConfigService; @@ -50,9 +49,13 @@ import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.ThreadUtil; import com.yeshi.fanli.util.Utils; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import net.sf.json.JSONArray; import net.sf.json.JSONObject; @Controller @RequestMapping("api/h5/v1/webRecommend") @@ -102,7 +105,7 @@ @Resource private UserShareGoodsGroupService userShareGoodsGroupService; /** * * 方法说明: 推荐轮播商品信息 @@ -264,75 +267,107 @@ out.print(JsonUtil.loadFalseResult(1, "请上传id")); return; } List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService.getConfigByTypeCache(PidUser.TYPE_SHARE_GOODS); UserShareGoodsHistory shareHistory = null; String pid = configList.get(0).getDefaultPid(); if (!StringUtil.isNullOrEmpty(uid)) { try { uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); TBPid tbPid = tbPidService.getTBPid(Long.parseLong(uid), PidUser.TYPE_SHARE_GOODS); if (tbPid != null) pid = tbPid.getPid(); // 查询该PID,UID,商品ID下是否有这个商品的信息 // 判断这个产品是否从APP中分享而来 try { shareHistory = shareGoodsService.getShareGoodsHistoryDetail(Long.parseLong(uid), Long.parseLong(id)); } catch (Exception e) { } userShareGoodsGroupService.updateBrowseRecord(Long.parseLong(uid), Long.parseLong(id), 1); } catch (Exception e) { } uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); } TaoBaoGoodsBrief goods = null; try { String token = null; if (!StringUtil.isNullOrEmpty(uid)) { // 查询是否有分享记录 UserShareGoodsHistory shareHistory = null; try { shareHistory = shareGoodsService.getShareGoodsHistoryDetail(Long.parseLong(uid), Long.parseLong(id)); } catch (NumberFormatException e) { e.printStackTrace(); } catch (ShareGoodsException e) { e.printStackTrace(); } if (shareHistory != null) {// 有分享记录 token = shareHistory.getTkCode(); goods = redisManager.getTaoBaoGoodsTemp(Long.parseLong(id)); if (goods == null) try { goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id)); } catch (NumberFormatException e) { e.printStackTrace(); } catch (TaobaoGoodsDownException e) { e.printStackTrace(); } } else {// 没有分享记录,需要直接分享 List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService .getConfigByTypeCache(PidUser.TYPE_SHARE_GOODS); String pid = null; TBPid tbPid = tbPidService.getTBPid(Long.parseLong(uid), PidUser.TYPE_SHARE_GOODS); if (tbPid != null) pid = tbPid.getPid(); else { pid = configList.get(0).getDefaultPid(); } // 获取 TaoKeAppInfo app = new TaoKeAppInfo(); app.setAdzoneId(pid.split("_")[3]); app.setAppKey(configList.get(0).getAppKey()); app.setAppSecret(configList.get(0).getAppSecret()); app.setPid(pid); try { goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app); } catch (NumberFormatException e) { e.printStackTrace(); } catch (TaobaoGoodsDownException e) { e.printStackTrace(); } if (goods != null) { String url = goods.getAuctionUrl(); if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) { url = goods.getCouponLink(); } token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url); } } } else { List<TaoBaoUnionConfig> configList = taoBaoUnionConfigService .getConfigByTypeCache(PidUser.TYPE_SHARE_GOODS); String pid = configList.get(0).getDefaultPid(); TaoKeAppInfo app = new TaoKeAppInfo(); app.setAdzoneId(pid.split("_")[3]); app.setAppKey(configList.get(0).getAppKey()); app.setAppSecret(configList.get(0).getAppSecret()); app.setPid(pid); goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app); } catch (NumberFormatException e) { e.printStackTrace(); } catch (TaobaoGoodsDownException e) { e.printStackTrace(); try { goods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(id), app); } catch (NumberFormatException e) { e.printStackTrace(); } catch (TaobaoGoodsDownException e) { e.printStackTrace(); } if (goods != null) { String url = goods.getAuctionUrl(); if (!StringUtil.isNullOrEmpty(goods.getCouponLink())) { url = goods.getCouponLink(); } token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url); } } if (goods == null) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); return; } // 券后价 BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods); TaoBaoLink link = null; if (shareHistory != null) { link = new TaoBaoLink(); link.setTaoToken(shareHistory.getTkCode()); } else { link = new TaoBaoLink(); try { String url = goods.getCouponLink(); if (StringUtil.isNullOrEmpty(url)) url = goods.getAuctionUrl(); String tbk = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), url); link.setTaoToken(tbk); } catch (Exception e) { link = null; } } if (link == null) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("淘口令生成失败"))); if (StringUtil.isNullOrEmpty(token)) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("口令生成失败"))); return; } // 券后价 BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods); TaoBaoLink link = new TaoBaoLink(); link.setTaoToken(token); JSONObject data = new JSONObject(); data.put("title", goods.getTitle()); @@ -348,6 +383,22 @@ data.put("reservePrice", goods.getReservePrice()); data.put("shopType", goods.getUserType() == 1 ? 2 : 1); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); final String tempUid = uid; ThreadUtil.run(new Runnable() { @Override public void run() { try { if (!StringUtil.isNullOrEmpty(tempUid)) userShareGoodsGroupService.updateBrowseRecord(Long.parseLong(tempUid), Long.parseLong(id), 1); } catch (NumberFormatException e) { e.printStackTrace(); } catch (UserShareGoodsRecordException e) { e.printStackTrace(); } } }); return; } } fanli/src/main/java/com/yeshi/fanli/dao/mybatis/HongBaoV2Mapper.java
@@ -81,6 +81,16 @@ BigDecimal getUnRecievedFanLiMoney(Long uid); /** * 根据创建时间与用户ID获取未到账的金额 * * @param uid * @param minDate * @param maxDate * @return */ BigDecimal getUnRecievedMoneyWithCreateTime(@Param("uid")Long uid, @Param("minDate") Date minDate, @Param("maxDate") Date maxDate); /** * 根据红包类型获取结算列表 * * @param type fanli/src/main/java/com/yeshi/fanli/mapping/hongbao/HongBaoV2Mapper.xml
@@ -230,7 +230,7 @@ NOW()>=hb_pre_get_time limit #{count} </select> <select id="countInviteOrderCountByUidAndSettleTime" resultType="java.lang.Long"> SELECT COUNT(h.hb_id) FROM yeshi_ec_hongbao_v2 h LEFT JOIN yeshi_ec_hongbao_order ho ON h.`hb_pid`=ho.`ho_hongbao_id` LEFT JOIN @@ -242,6 +242,19 @@ </select> <select id="getUnRecievedMoneyWithCreateTime" resultType="java.math.BigDecimal"> SELECT SUM(h.`hb_money`) FROM yeshi_ec_hongbao_v2 h WHERE h.`hb_uid`=#{uid} AND (h.`hb_state`=1 OR h.`hb_state`=2) and hb_create_time>=#{minDate} and #{maxDate} > hb_create_time </select> <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">delete from yeshi_ec_hongbao_v2 where hb_id = #{id,jdbcType=BIGINT} </delete> fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java
@@ -32,9 +32,11 @@ import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig; import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; import com.yeshi.fanli.exception.ShareGoodsException; import com.yeshi.fanli.exception.goods.CommonGoodsException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; import com.yeshi.fanli.service.inter.goods.ShareGoodsService; import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; @@ -47,6 +49,8 @@ import com.yeshi.fanli.util.ImageUtil; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.ThreadUtil; import com.yeshi.fanli.util.factory.CommonGoodsFactory; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; @@ -86,6 +90,9 @@ @Resource private UserShareGoodsRecordService userShareGoodsRecordService; @Resource private CommonGoodsService commonGoodsService; @Override public void addShareGoodsHistory(UserShareGoodsHistory history) { UserShareGoodsHistory userShareGoodsHistory = userShareGoodsHistoryMapper @@ -98,7 +105,6 @@ } else userShareGoodsHistoryMapper.insertSelective(history); } @Override @@ -391,6 +397,8 @@ goods.setAuctionUrl(taoBaoLink.getClickUrl()); } // 保存商品详情 // 创建淘口令 TaoBaoLink tbLink = new TaoBaoLink(); tbLink.setAuctionId(goods.getAuctionId()); @@ -411,6 +419,10 @@ tbLink.setGoods(goods); // 存储分享商品的信息,用于加快分享网页接口请求速度 if (Constant.IS_OUTNET) redisManager.saveTaoBaoGoodsBriefTemp(goods); return tbLink; } fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/HongBaoV2ServiceImpl.java
@@ -751,4 +751,13 @@ BigDecimal money = hongBaoV2Mapper.getUnRecievedFanLiMoney(uid); return money == null ? new BigDecimal(0) : money; } @Override public BigDecimal getUnRecievedMoneyWithCreateTime(Long uid, Date minDate, Date maxDate) { BigDecimal money = hongBaoV2Mapper.getUnRecievedMoneyWithCreateTime(uid, minDate, maxDate); if (money == null) return new BigDecimal(0); else return money; } } fanli/src/main/java/com/yeshi/fanli/service/inter/hongbao/HongBaoV2Service.java
@@ -1,6 +1,7 @@ package com.yeshi.fanli.service.inter.hongbao; import java.math.BigDecimal; import java.util.Date; import java.util.List; import com.yeshi.fanli.dto.HongBaoDTO; @@ -100,5 +101,14 @@ * @return */ BigDecimal getUnRecievedFanLiMoney(Long uid); /** * 尚未到账的金额 * @param uid * @param minDate * @param maxDate * @return */ BigDecimal getUnRecievedMoneyWithCreateTime(Long uid,Date minDate,Date maxDate); } fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java
@@ -39,7 +39,7 @@ private TaoBaoShopService taoBaoShopService; @Resource private TaoBaoUnionConfigService taoBaoUnionConfigService; private TaoBaoUnionConfigService taoBaoUnionConfigService; @Resource private ConfigService configService; @@ -131,6 +131,30 @@ } /** * 临时存储淘宝的商品详情 * * @param goods */ public void saveTaoBaoGoodsBriefTemp(TaoBaoGoodsBrief goods) { if (goods == null) return; String key = "taobao-goods-temp-" + goods.getAuctionId(); if (Constant.IS_OUTNET) { // 暂存4个小时的分享 cacheCommonString(key, JsonUtil.getSimpleGson().toJson(goods), 60 * 60 * 4); } } public TaoBaoGoodsBrief getTaoBaoGoodsTemp(Long auctionId) { String key = "taobao-goods-temp-" + auctionId; String value = getCommonString(key); if (!StringUtil.isNullOrEmpty(value)) { return JsonUtil.getSimpleGson().fromJson(value, TaoBaoGoodsBrief.class); } return null; } /** * 删除缓存 * * @param auctionId fanli/src/main/java/com/yeshi/fanli/util/taobao/TaoKeApiUtil.java
@@ -224,25 +224,24 @@ } return null; } public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<Long> listId) throws TaoKeApiException,TaobaoGoodsDownException { public static List<TaoBaoGoodsBrief> getBatchGoodsInfo(List<Long> listId) throws TaoKeApiException, TaobaoGoodsDownException { if (listId == null || listId.size() == 0) { throw new TaobaoGoodsDownException(1,"淘宝商品ID不能为空"); throw new TaobaoGoodsDownException(1, "淘宝商品ID不能为空"); } if ( listId.size() > 40) { throw new TaobaoGoodsDownException(1,"淘宝商品ID不能超过40个"); if (listId.size() > 40) { throw new TaobaoGoodsDownException(1, "淘宝商品ID不能超过40个"); } StringBuffer ids = new StringBuffer(); for (Long id: listId) { for (Long id : listId) { ids.append(id + ","); } return getBatchGoodsInfos(ids.substring(0, ids.length() -1)); return getBatchGoodsInfos(ids.substring(0, ids.length() - 1)); } /** * 获取商品详情,简版 @@ -1436,6 +1435,29 @@ return result; } /** * 从淘宝链接中解析商品ID(高级接口) * @param link * @return */ public static String parseAuctionIdFromLink(String link) { Map<String, String> map = new HashMap<>(); map.put("method", "taobao.tbk.item.click.extract"); map.put("click_url", link + ""); JSONObject resultJSON = null; try { resultJSON = TaoKeBaseUtil.baseRequest(map, true); } catch (TaoKeApiException e) { e.printStackTrace(); } if (resultJSON == null) return null; return null; } private static TaoBaoGoodsBrief parseWuLiaoItemFromMaterialId(JSONObject item) { TaoBaoGoodsBrief goods = new TaoBaoGoodsBrief(); // 设置成320*320的图片尺寸 fanli/src/main/java/com/yeshi/fanli/vo/money/UserMoneyStatisticVO.java
@@ -12,6 +12,24 @@ private BigDecimal totalRecievedMoney;// 累计到账 private BigDecimal totalShareMoney;// 累计分享奖金 private BigDecimal totalInviteMoney;// 累计邀请奖金 private BigDecimal monthUnRecievedMoney;// 本月未到账 private BigDecimal totalUnRecievedMoney; // 全部未到账 public BigDecimal getMonthUnRecievedMoney() { return monthUnRecievedMoney; } public void setMonthUnRecievedMoney(BigDecimal monthUnRecievedMoney) { this.monthUnRecievedMoney = monthUnRecievedMoney; } public BigDecimal getTotalUnRecievedMoney() { return totalUnRecievedMoney; } public void setTotalUnRecievedMoney(BigDecimal totalUnRecievedMoney) { this.totalUnRecievedMoney = totalUnRecievedMoney; } public BigDecimal getBalanceMoney() { return balanceMoney;