fanli/src/main/java/com/yeshi/fanli/controller/client/v1/GoodsController.java
@@ -30,6 +30,7 @@ import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service; import com.yeshi.fanli.service.inter.monitor.MonitorService; import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TLJFreeBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService; @@ -90,6 +91,10 @@ @Resource private IntegralGetService integralGetService; @Resource private TLJFreeBuyGoodsService tljFreeBuyGoodsService; private void doTaoLiJinBuy(AcceptData acceptData, Long uid, Long auctionId, PrintWriter out) { JSONObject data = new JSONObject(); @@ -127,6 +132,7 @@ integralGetService.addTaoLiJinBuy(uid, auctionId); } /** * 获取淘宝的分享链接 @@ -183,7 +189,7 @@ doTaoLiJinBuy(acceptData, uid, auctionId, out); return; } ClientTBPid clientTBPid = null; String dpid = null; @@ -239,16 +245,8 @@ // 是返利商品库的商品 if (specialConvert) { if (!StringUtil.isNullOrEmpty(specialId)) { if (source != null && "taolijin".equals(source)) { boolean isNewUser = userInfoExtraService.isNewUser(uid); if (isNewUser) { // 判定为老用户: // 新人只要使用了新人红包,也就是那1块钱,那么,他看到的分享爆款中的商品-就只能分享。 long countRecord = userTaoLiJinRecordService.countRecordByUid(uid); if (countRecord == 0) { taoBaoLink = shareGoodsService.getTaoLiJinLinkForBuy(uid, specialId, auctionId, null); } } if (source != null && "taolijin_free_buy".equals(source)) { taoBaoLink = shareGoodsService.getTaoLiJinLinkForBuy(uid, specialId, auctionId, null); } if (taoBaoLink == null) { @@ -276,17 +274,9 @@ LogHelper.errorDetailInfo(e, "uid:" + uid, null); } if (!StringUtil.isNullOrEmpty(relationId)) {// if (source != null && "taolijin".equals(source)) { boolean isNewUser = userInfoExtraService.isNewUser(uid); if (isNewUser) { // 判定为老用户: // 新人只要使用了新人红包,也就是那1块钱,那么,他看到的分享爆款中的商品-就只能分享。 long countRecord = userTaoLiJinRecordService.countRecordByUid(uid); if (countRecord == 0) { taoBaoLink = shareGoodsService.getTaoLiJinLinkForBuy(uid, specialId, auctionId, if (source != null && "taolijin_free_buy".equals(source)) { taoBaoLink = shareGoodsService.getTaoLiJinLinkForBuy(uid, specialId, auctionId, TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID); } } } else { taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(uid, auctionId, relationId, TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID); @@ -316,6 +306,12 @@ // 获得金币 integralGetService.addCouponRebate(uid); } catch (ShareGoodsException e) { if (e.getCode() == 1001) { out.print(JsonUtil.loadFalseResult(1001, e.getMsg())); } else { out.print(JsonUtil.loadFalseResult(1, e.getMsg())); } } catch (Exception e) { LogHelper.errorDetailInfo(e); fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsControllerV2.java
@@ -2,9 +2,7 @@ import java.io.PrintWriter; import java.math.BigDecimal; import java.text.ParseException; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; @@ -13,7 +11,6 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.DateUtil; import org.yeshi.utils.HttpUtil; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.taobao.TbImgUtil; @@ -26,10 +23,8 @@ import com.yeshi.fanli.dto.pdd.PDDPromotionUrl; import com.yeshi.fanli.dto.pdd.PDDSearchFilter; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinNewbies; import com.yeshi.fanli.entity.bus.user.ShamUser; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.goods.CollectionGoodsV2; import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.jd.JDGoodsClass; @@ -435,7 +430,6 @@ extraVO.setH5Url(h5Url); } String tips = null; String helpLink = null; boolean fanliValid = true; boolean shareValid = true; @@ -500,24 +494,6 @@ otherInfo.setReduceHongBao(newUserHongBao); goodsDetail.setOtherInfo(otherInfo); tips = "你不是“新用户”无法使用新人红包0元购买。"; UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra != null && userInfoExtra.getFirstLoginTime() != null) { try { int days = DateUtil.daysBetween2(userInfoExtra.getFirstLoginTime(), new Date()); if (days < Constant.TLJ_NEW_USER_DEFINE){ UserTaoLiJinNewbies winDetail = userTaoLiJinNewbiesService.selectByPrimaryKey(uid); if (winDetail == null || winDetail.getEndTime().getTime() < java.lang.System.currentTimeMillis() || winDetail.getMoney().compareTo(couponPrice) < 0) { tips = "新人红包不足,请换个商品再试或继续领取到足额新人红包。"; } else { tips = null; } } } catch (ParseException e) { e.printStackTrace(); } } } else {// 普通购买 OtherInfo otherInfo = new OtherInfo(); RewardCouponVO rewardCoupon = new RewardCouponVO(); @@ -539,7 +515,6 @@ } extraVO.setFanliValid(fanliValid); extraVO.setShareValid(shareValid); extraVO.setTips(tips); MoneyInfoVO goodsMoney = goodsDetail.getMoneyInfo(); if (goodsMoney != null) { fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RedPackControllerV2.java
@@ -88,10 +88,10 @@ @Resource private SwiperPictureService swiperPictureService; @Resource private UserSystemCouponService userSystemCouponService; @Resource private RedPackForbidService redPackForbidService; @@ -118,7 +118,8 @@ BigDecimal yesterdayUse = zero; BigDecimal thisMonthUse = zero; BigDecimal lastMonthUse = zero; BigDecimal balance = redPackBalanceService.getBalance(uid);; BigDecimal balance = redPackBalanceService.getBalance(uid); ; if (balance == null) { balance = zero; } else { @@ -191,12 +192,9 @@ * * @param acceptData * @param uid * @param index * List最末的主键ID * @param year * 年份 * @param month * 月份 * @param index List最末的主键ID * @param year 年份 * @param month 月份 * @param out */ @RequestMapping(value = "getMoneyDetails") @@ -379,7 +377,7 @@ @RequestMapping(value = "getBasicInfo") public void getBasicInfo(AcceptData acceptData, Long uid, String callback, PrintWriter out) { if (uid == null || uid <= 0) { out.print(JsonUtil.loadFalseResult(1, "用户未登录")); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录")); return; } @@ -395,19 +393,19 @@ } else { data.put("inviteCode", ""); } // long freeCouponCount= userSystemCouponService.countUsableFreeCouponForBuy(uid); long rewardCouponCount= userSystemCouponService.countUsableRewardCoupon(uid); data.put("freeCouponCount", freeCouponCount); data.put("rewardCouponCount", rewardCouponCount); long freeCouponCount = userSystemCouponService.countUsableFreeCouponForBuy(uid); long rewardCouponCount = userSystemCouponService.countUsableRewardCoupon(uid); data.put("freeCouponCount", freeCouponCount); data.put("rewardCouponCount", rewardCouponCount); if (!StringUtil.isNullOrEmpty(callback)) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } else } else { out.print(JsonUtil.loadTrueResult(data)); } } } fanli/src/main/java/com/yeshi/fanli/controller/client/v2/UserAccountControllerV2.java
@@ -349,15 +349,15 @@ * @param out */ @RequestMapping(value = "getVIPInfo") public void getVIPInfo(AcceptData acceptData, Long uid, PrintWriter out) { public void getVIPInfo(String callback, AcceptData acceptData, Long uid, PrintWriter out) { if (uid == null || uid <= 0) { out.print(JsonUtil.loadFalseResult("用户id为空")); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "用户未登录")); return; } UserInfo userInfo = userInfoService.selectByPKey(uid); if (userInfo == null) { out.print(JsonUtil.loadFalseResult("该用户不存在")); JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(1, "该用户不存在")); return; } @@ -416,6 +416,11 @@ vo.setLimitHongBao(Long.parseLong(userVipConfigService.getValueByKey("require_shop_buy"))); vo.setLimitMoney(new BigDecimal(userVipConfigService.getValueByKey("require_fan_money"))); vo.setLimitgoldCoin(new BigDecimal(userVipConfigService.getValueByKey("require_gold_coin"))); out.print(JsonUtil.loadTrueResult(vo)); if (!StringUtil.isNullOrEmpty(callback)) { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(vo))); } else { out.print(JsonUtil.loadTrueResult(vo)); } } } fanli/src/main/java/com/yeshi/fanli/job/TaoLiJinJob.java
@@ -11,7 +11,6 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.yeshi.fanli.entity.taobao.ShareHotGoods; import com.yeshi.fanli.entity.taobao.TLJBuyGoods; import com.yeshi.fanli.entity.taobao.TLJFreeBuyGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -19,7 +18,6 @@ import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService; import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TLJFreeBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; @@ -28,7 +26,6 @@ import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinReportService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; @@ -38,9 +35,6 @@ @Resource private UserTaoLiJinReportService userTaoLiJinReportService; @Resource private ShareHotGoodsService shareHotGoodsService; @Resource private TLJBuyGoodsService tljBuyGoodsService; @@ -60,28 +54,7 @@ @Resource private TLJFreeBuyGoodsService tljFreeBuyGoodsService; /** * 每天凌晨过5分钟验证 */ @Scheduled(cron = "0 2 0 * * ?") public void updateShareTLJGoods() { if (!Constant.IS_TASK) return; LogHelper.test("验证爆款商品库商品"); String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"); List<ShareHotGoods> list = shareHotGoodsService.listByDay(day, 15); int count = 0; for (int i = 0; i < list.size(); i++) { if (count >= 10) break; boolean success = shareHotGoodsService.verifyCanCreateTLJ(list.get(i).getGoods().getAuctionId(), new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT)); if (success) { count++; } } } /** * 每天凌晨5点过10分钟验证 fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsServiceImpl.java
@@ -25,9 +25,7 @@ import com.yeshi.fanli.dao.mybatis.share.PidUserMapper; import com.yeshi.fanli.dto.taobao.TaoLiJinDTO; import com.yeshi.fanli.entity.bus.share.UserShareGoodsHistory; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinRecord; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserMoneyExtra; import com.yeshi.fanli.entity.taobao.PidUser; import com.yeshi.fanli.entity.taobao.TBPid; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -39,7 +37,7 @@ import com.yeshi.fanli.exception.taobao.TaoKeApiException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.exception.tlj.TaoLiJinCreateException; import com.yeshi.fanli.exception.tlj.UserTaoLiJinRecordException; import com.yeshi.fanli.exception.tlj.UserTaoLiJinNewbiesException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.config.ConfigService; import com.yeshi.fanli.service.inter.goods.CommonGoodsService; @@ -47,6 +45,7 @@ import com.yeshi.fanli.service.inter.money.UserMoneyExtraService; import com.yeshi.fanli.service.inter.monitor.BusinessEmergent110Service; import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; import com.yeshi.fanli.service.inter.redpack.UserTaoLiJinNewbiesService; import com.yeshi.fanli.service.inter.taobao.TLJBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TaoBaoUnionConfigService; import com.yeshi.fanli.service.inter.taobao.UserTLJBuyHistoryService; @@ -119,6 +118,9 @@ @Resource private BusinessEmergent110Service businessEmergent110Service; @Resource private UserTaoLiJinNewbiesService userTaoLiJinNewbiesService; @Override public void addShareGoodsHistory(UserShareGoodsHistory history) { UserShareGoodsHistory userShareGoodsHistory = userShareGoodsHistoryMapper @@ -677,39 +679,31 @@ @Override public TaoBaoLink getTaoLiJinLinkForBuy(Long uid, String specialId, Long auctionId, String pid) throws ShareGoodsException { if (uid == null || uid <= 0) { if (uid == null || uid <= 0) throw new ShareGoodsException(1, "用户ID不能为空"); } if (auctionId == null || auctionId <= 0) { throw new ShareGoodsException(2, "商品ID不能为空"); } // 用户剩余可以淘礼金验证 UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid); if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) { throw new ShareGoodsException(101, "红包余额不足"); } if (auctionId == null || auctionId <= 0) throw new ShareGoodsException(1, "商品ID不能为空"); TaoKeAppInfo app = new TaoKeAppInfo(); app.setAppKey(TaoBaoConstant.TAOBAO_AUTH_APPKEY); app.setAppSecret(TaoBaoConstant.TAOBAO_AUTH_APPSECRET); if (pid == null) if (pid == null) { app.setPid(TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT); else } else { app.setPid(pid); TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, app); if (goods == null) { throw new ShareGoodsException(1, ""); } TaoBaoGoodsBrief goods = TaoKeApiUtil.specialConvertCoupon(auctionId, app); if (goods == null) throw new ShareGoodsException(1, "转链接失败"); String taoLiJinLink = null; try { goods.setAuctionId(auctionId); UserTaoLiJinRecord createUserTaoLiJin = userTaoLiJinRecordService.createSelfBuyTaoLiJin(uid, 1, goods); taoLiJinLink = createUserTaoLiJin.getSendUrl(); } catch (UserTaoLiJinRecordException e) { throw new ShareGoodsException(e.getCode(), e.getMsg()); taoLiJinLink = userTaoLiJinNewbiesService.createTaoLiJinForBuy(goods, uid); } catch (UserTaoLiJinNewbiesException e1) { throw new ShareGoodsException(e1.getCode(), e1.getMsg()); } TaoBaoLink taoBaoLink = new TaoBaoLink(); @@ -717,7 +711,6 @@ taoBaoLink.setClickUrl(goods.getAuctionUrl()); taoBaoLink.setCouponLink(taoLiJinLink); taoBaoLink.setGoods(goods); return taoBaoLink; } fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinNewbiesServiceImpl.java
@@ -1,31 +1,48 @@ package com.yeshi.fanli.service.impl.tlj; import java.math.BigDecimal; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.annotation.Resource; import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.DateUtil; import com.yeshi.fanli.dao.mybatis.tlj.UserTaoLiJinNewbiesMapper; import com.yeshi.fanli.dto.taobao.TaoLiJinDTO; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinDetail.TaoLiJinDetailTypeEnum; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinNewbies; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; import com.yeshi.fanli.entity.push.DeviceActive; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.TaoKeAppInfo; import com.yeshi.fanli.exception.taobao.TaoKeApiException; import com.yeshi.fanli.exception.tlj.TaoLiJinCreateException; import com.yeshi.fanli.exception.tlj.UserTaoLiJinNewbiesException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService; import com.yeshi.fanli.service.inter.push.DeviceActiveService; import com.yeshi.fanli.service.inter.redpack.UserTaoLiJinNewbiesService; import com.yeshi.fanli.service.inter.taobao.TLJFreeBuyGoodsService; import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService; import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TaoBaoConstant; import com.yeshi.fanli.util.annotation.RequestSerializableByKeyService; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import com.yeshi.fanli.vo.redpack.TaoLiJinWinDetailVO; @Service @@ -48,6 +65,18 @@ @Resource private JumpDetailV2Service jumpDetailV2Service; @Resource(name = "taskExecutor") private TaskExecutor executor; @Resource private TLJFreeBuyGoodsService tljFreeBuyGoodsService; @Resource private UserTaoLiJinDetailService userTaoLiJinDetailService; @Resource private TaoBaoBuyRelationMapService taoBaoBuyRelationMapService; @Override @@ -152,17 +181,18 @@ BigDecimal rate = new BigDecimal(randomNum/100).setScale(2, BigDecimal.ROUND_DOWN); money = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.sub(Constant.TLJ_NEW_USER_MONEY,redPackWin.getMoney()),rate); } if (money.compareTo(new BigDecimal(0)) <= 0) return null; money = money.setScale(2); // 插入领取记录 int num = 1; BigDecimal balance = null; if (redPackWin == null) { balance = money; // 注册开始 有效期 Date endDate = DateUtil.plusDayDate(Constant.TLJ_NEW_USER_LIMIT, firstLoginTime); redPackWin = new UserTaoLiJinNewbies(); redPackWin.setId(uid); redPackWin.setNum(1); @@ -177,6 +207,16 @@ num = redPackWin.getNum() + 1; balance = MoneyBigDecimalUtil.add(money, redPackWin.getMoney()); } // 明细 UserTaoLiJinDetail detail = new UserTaoLiJinDetail(); detail.setUid(uid); detail.setMoney(money); detail.setTitle(TaoLiJinDetailTypeEnum.add.getDesc()); detail.setType(TaoLiJinDetailTypeEnum.add); detail.setCreateTime(new Date()); userTaoLiJinDetailService.insertSelective(detail); Map<String,String> map = new HashMap<String,String>(); map.put("url", configTaoLiJinService.getValueByKey("new_user_free_buy_list")); @@ -194,10 +234,148 @@ return winDetailVO; } @RequestSerializableByKeyService(key = "#uid") @Transactional(rollbackFor = Exception.class) @Override public String createTaoLiJinForBuy(TaoBaoGoodsBrief goods, Long uid) throws UserTaoLiJinNewbiesException { if (uid == null || uid <= 0 || goods == null) throw new UserTaoLiJinNewbiesException(1,"参数信息缺失"); if (goods == null || goods.getCouponAmount() == null || goods.getCouponAmount().compareTo(new BigDecimal(0)) == 0) { executor.execute(new Runnable() { @Override public void run() { tljFreeBuyGoodsService.deleteByGoodsId(goods.getId()); } }); throw new UserTaoLiJinNewbiesException(1, "该商品非免单商品"); } BigDecimal money = TaoBaoUtil.getAfterUseCouplePrice(goods); if (money.compareTo(new BigDecimal(1.0)) < 0 && money.compareTo(new BigDecimal(2.0)) > 0) { executor.execute(new Runnable() { @Override public void run() { tljFreeBuyGoodsService.deleteByGoodsId(goods.getId()); } }); throw new UserTaoLiJinNewbiesException(1, "该商品非免单商品"); } UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra == null || userInfoExtra.getFirstLoginTime() == null) throw new UserTaoLiJinNewbiesException(1001, "你不是“新用户”无法使用新人红包0元购买。"); try { int days = DateUtil.daysBetween2(userInfoExtra.getFirstLoginTime(), new Date()); if (days > Constant.TLJ_NEW_USER_DEFINE) throw new UserTaoLiJinNewbiesException(1001, "你不是“新用户”无法使用新人红包0元购买。"); } catch (ParseException e1) { throw new UserTaoLiJinNewbiesException(1, "日期信息计算失败"); } UserTaoLiJinNewbies taoLiJinNewbies = userTaoLiJinNewbiesMapper.selectForUpdate(uid); if (taoLiJinNewbies == null || taoLiJinNewbies.getMoney() == null || taoLiJinNewbies.getMoney().compareTo(money) < 0) throw new UserTaoLiJinNewbiesException(1001, "新人红包不足,请换个商品再试或继续领取到足额新人红包。"); if (taoLiJinNewbies.getEndTime() == null || taoLiJinNewbies.getEndTime().getTime() < java.lang.System.currentTimeMillis()) throw new UserTaoLiJinNewbiesException(1, "新人红包已过期"); // 红包减少 userTaoLiJinNewbiesMapper.subMoney(uid, money); // 加入明细 UserTaoLiJinDetail detail = new UserTaoLiJinDetail(); detail.setUid(uid); detail.setMoney(new BigDecimal("-" + money)); detail.setTitle(TaoLiJinDetailTypeEnum.reduce.getDesc()); detail.setType(TaoLiJinDetailTypeEnum.reduce); detail.setCreateTime(new Date()); userTaoLiJinDetailService.insertSelective(detail); // 创建淘礼金链接 if (TaoBaoUtil.isSpecialGoods(goods.getMaterialLibType())) { return createTaoLiJin(goods.getAuctionId(), money, 1, TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT); } else { // 非返利库商品 String relationId = null; try { relationId = taoBaoBuyRelationMapService.getRelationId(uid); } catch (Exception e) { LogHelper.errorDetailInfo(e, "uid:" + uid, null); } if (StringUtil.isNullOrEmpty(relationId)) throw new UserTaoLiJinNewbiesException(1, "渠道未备案"); return createTaoLiJin(goods.getAuctionId(), money, 1, TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID) + "&relationId=" + relationId; } } @Transactional private String createTaoLiJin(Long auctionId, BigDecimal perface, int totalNum, String pid) throws UserTaoLiJinNewbiesException { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String name = "新人免单购"; Date date = new Date(); String date_str = format.format(date); String sendEndTime_str = date_str + " 22:00:00"; String useEndTime_str = date_str + " 23:59:59"; // 发放时间 Date sendStartTime = date; Date sendEndTime = null; // 使用时间 Date useStartTime = null; Date useEndTime = null; try { sendEndTime = formatStr.parse(sendEndTime_str); useEndTime = formatStr.parse(useEndTime_str); } catch (ParseException e2) { e2.printStackTrace(); } // 创建淘礼金红包 TaoLiJinDTO taoLiJinDTO = null; TaoKeAppInfo taoKeAppInfo = new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, pid); try { taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(auctionId, name, perface, totalNum, sendStartTime, sendEndTime, useStartTime, useEndTime, taoKeAppInfo); } catch (TaoLiJinCreateException e) { LogHelper.errorDetailInfo(e); executor.execute(new Runnable() { @Override public void run() { if (e.getCode() == TaoLiJinCreateException.CODE_TLJ_FORBIDDEN) { // 该商品不支持创建淘礼金红包 tljFreeBuyGoodsService.deleteByGoodsId(auctionId); } else if (e.getCode() == TaoLiJinCreateException.CODE_TLJ_NO_MONEY) { // 官方玩法钱包余额不足 TODO } } }); } catch (TaoKeApiException e) { LogHelper.errorDetailInfo(e); } if (taoLiJinDTO == null || StringUtil.isNullOrEmpty(taoLiJinDTO.getSendUrl())) throw new UserTaoLiJinNewbiesException(1, "淘宝API红包创建失败"); return taoLiJinDTO.getSendUrl(); } @Override public UserTaoLiJinNewbies selectByPrimaryKey(Long uid) { return userTaoLiJinNewbiesMapper.selectByPrimaryKey(uid); } } fanli/src/main/java/com/yeshi/fanli/service/impl/tlj/UserTaoLiJinRecordServiceImpl.java
@@ -126,7 +126,7 @@ @Transactional @Override public UserTaoLiJinRecord createSelfBuyTaoLiJin(Long uid, int totalNum, TaoBaoGoodsBrief goods) public UserTaoLiJinRecord createSelfBuyTaoLiJin(Long uid, BigDecimal couplePrice, TaoBaoGoodsBrief goods) throws UserTaoLiJinRecordException { Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); @@ -148,8 +148,6 @@ } catch (ParseException e2) { e2.printStackTrace(); } // 新人红包 自购一元 BigDecimal perface = new BigDecimal(1); if (!TaoBaoUtil.isSpecialGoods(goods.getMaterialLibType())) {// 非返利库商品 String relationId = null; @@ -162,7 +160,7 @@ if (StringUtil.isNullOrEmpty(relationId)) { throw new UserTaoLiJinRecordException(101, "渠道未备案"); } UserTaoLiJinRecord record = createUserTaoLiJin(1, uid, goods.getAuctionId(), perface, 1, name, UserTaoLiJinRecord record = createUserTaoLiJin(1, uid, goods.getAuctionId(), couplePrice, 1, name, sendStartTime, sendEndTime, null, useEndTime, TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID); record.setSendUrl(record.getSendUrl() + "&relationId=" + relationId); UserTaoLiJinRecord updateRecoed = new UserTaoLiJinRecord(); @@ -171,7 +169,7 @@ userTaoLiJinRecordMapper.updateByPrimaryKeySelective(record); return record; } else {// 返利库商品 return createUserTaoLiJin(1, uid, goods.getAuctionId(), perface, 1, name, sendStartTime, sendEndTime, null, return createUserTaoLiJin(1, uid, goods.getAuctionId(), couplePrice, 1, name, sendStartTime, sendEndTime, null, useEndTime, TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT); } fanli/src/main/java/com/yeshi/fanli/service/inter/redpack/UserTaoLiJinNewbiesService.java
@@ -1,6 +1,8 @@ package com.yeshi.fanli.service.inter.redpack; import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinNewbies; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.exception.tlj.UserTaoLiJinNewbiesException; import com.yeshi.fanli.vo.redpack.TaoLiJinWinDetailVO; public interface UserTaoLiJinNewbiesService { @@ -27,4 +29,13 @@ */ public UserTaoLiJinNewbies selectByPrimaryKey(Long uid); /** * 红包减少 * @param uid * @param money * @return * @throws UserTaoLiJinNewbiesException */ public String createTaoLiJinForBuy(TaoBaoGoodsBrief goods, Long uid) throws UserTaoLiJinNewbiesException; } fanli/src/main/java/com/yeshi/fanli/service/inter/tlj/UserTaoLiJinRecordService.java
@@ -83,7 +83,7 @@ * @return * @throws UserTaoLiJinRecordException */ public UserTaoLiJinRecord createSelfBuyTaoLiJin(Long uid, int totalNum, TaoBaoGoodsBrief goods) public UserTaoLiJinRecord createSelfBuyTaoLiJin(Long uid, BigDecimal couplePrice, TaoBaoGoodsBrief goods) throws UserTaoLiJinRecordException; /** fanli/src/main/java/com/yeshi/fanli/vo/goods/GoodsDetailExtraVO.java
@@ -38,9 +38,6 @@ // 是否跳转原生APP @Expose private Boolean isNative; // 弹出框提示语 @Expose private String tips; // 图文详情链接 @Expose @@ -190,11 +187,4 @@ this.listCouponUser = listCouponUser; } public String getTips() { return tips; } public void setTips(String tips) { this.tips = tips; } }