| | |
| | | import com.yeshi.fanli.entity.bus.user.UserMoneyExtra;
|
| | | import com.yeshi.fanli.entity.goods.CommonGoods;
|
| | | 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.UserTaoLiJinRecordException;
|
| | | import com.yeshi.fanli.log.LogHelper;
|
| | | import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
|
| | | import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService;
|
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoBuyRelationMapService;
|
| | | import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
|
| | | import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService;
|
| | |
| | | @Resource
|
| | | private TaoBaoBuyRelationMapService taoBaoBuyRelationMapService;
|
| | |
|
| | | @Resource
|
| | | private ShareHotGoodsService shareHotGoodsService;
|
| | | |
| | | @Override
|
| | | public UserTaoLiJinRecord selectByPrimaryKey(Long id) {
|
| | | return userTaoLiJinRecordMapper.selectByPrimaryKey(id);
|
| | |
| | |
|
| | | // 过期
|
| | | userTaoLiJinOriginService.overdueHongBao(uid);
|
| | |
|
| | | BigDecimal tlj = userMoneyExtra.getTlj();
|
| | | |
| | | // 总推广红包
|
| | | BigDecimal totalMoney = MoneyBigDecimalUtil.mul(perface, new BigDecimal(totalNum));
|
| | | if (totalMoney.compareTo(tlj) > 0) {
|
| | | throw new UserTaoLiJinRecordException(101, "红包余额不足");
|
| | | |
| | | // 自购时的红包余额
|
| | | if (origin == 1) {
|
| | | BigDecimal tljSelf = userMoneyExtra.getTljSelf();
|
| | | if (tljSelf == null || tljSelf.compareTo(totalMoney) < 0) {
|
| | | throw new UserTaoLiJinRecordException(101, "自购红包余额不足");
|
| | | }
|
| | | } |
| | | |
| | | // 分享时的红包余额
|
| | | BigDecimal tlj = userMoneyExtra.getTlj();
|
| | | if (tlj == null || tlj.compareTo(totalMoney) < 0) {
|
| | | throw new UserTaoLiJinRecordException(101, "分享红包余额不足");
|
| | | }
|
| | | |
| | |
|
| | | // 创建淘礼金红包
|
| | | TaoLiJinDTO taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(auctionId, name, perface, totalNum, sendStartTime,
|
| | | sendEndTime, useStartTime, useEndTime, pid);
|
| | | TaoLiJinDTO taoLiJinDTO = null;
|
| | | try {
|
| | | taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(auctionId, name, perface, totalNum, sendStartTime,
|
| | | sendEndTime, useStartTime, useEndTime, new TaoKeAppInfo(TaoBaoConstant.TAOBAO_AUTH_APPKEY, TaoBaoConstant.TAOBAO_AUTH_APPSECRET, pid));
|
| | | } catch (TaoKeApiException e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | executor.execute(new Runnable() {
|
| | | @Override
|
| | | public void run() {
|
| | | if (e.getCode() == TaoKeApiException.CODE_TLJ_FORBIDDEN) {
|
| | | // 该商品不支持创建淘礼金红包
|
| | | shareHotGoodsService.deleteByGoodsId(auctionId);
|
| | | } else if (e.getCode() == TaoKeApiException.CODE_TLJ_NO_MONEY) {
|
| | | // 官方玩法钱包余额不足 TODO
|
| | | }
|
| | | }
|
| | | });
|
| | | }
|
| | | |
| | | if (taoLiJinDTO == null) {
|
| | | throw new UserTaoLiJinRecordException(101, "红包创建失败");
|
| | | throw new UserTaoLiJinRecordException(101, "淘宝API推广红包创建失败");
|
| | | }
|
| | |
|
| | | // 保存记录
|
| | |
| | | record.setRightsId(taoLiJinDTO.getRightsId());
|
| | | record.setSendUrl(taoLiJinDTO.getSendUrl());
|
| | | record.setCreateTime(new Date());
|
| | | if (origin == 1) { // 自购
|
| | | record.setUseType(1);
|
| | | } else { // 分享
|
| | | record.setUseType(2);
|
| | | }
|
| | | |
| | | userTaoLiJinRecordMapper.insertSelective(record);
|
| | |
|
| | | // 剩余淘礼金
|
| | | BigDecimal surplusTlj = MoneyBigDecimalUtil.sub(tlj, totalMoney);
|
| | | BigDecimal surplusTlj = MoneyBigDecimalUtil.sub(tlj, totalMoney); |
| | | |
| | | UserMoneyExtra updateExtra = new UserMoneyExtra();
|
| | | updateExtra.setUid(uid);
|
| | | if (origin == 1) { // 剩余淘礼金-- 自购
|
| | | updateExtra.setTljSelf(MoneyBigDecimalUtil.sub(userMoneyExtra.getTljSelf(), totalMoney));
|
| | | } |
| | | updateExtra.setTlj(surplusTlj);
|
| | | updateExtra.setUpdateTime(new Date());
|
| | | userMoneyExtraService.updateByPrimaryKeySelective(updateExtra);
|
| | |
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | |
|
| | | // 创建报告
|
| | | try {
|
| | | userTaoLiJinReportService.insertDefault(rightsId);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | |
| | | |
| | | if (origin == 1) { |
| | | return; // 自购不推送消息
|
| | | }
|
| | | |
| | | |
| | | // 使用成功消息
|
| | | try {
|
| | | String beizhu = "未被领取/使用的部分将会退回";
|
| | |
| | | content.setMoney(totalMoney);
|
| | |
|
| | | userOtherMsgNotificationService.taoLiJinMsg(uid, beizhu, content);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | |
|
| | | // 创建报告
|
| | | try {
|
| | | userTaoLiJinReportService.insertDefault(rightsId);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | |
| | | // 计算分享奖金
|
| | | BigDecimal shareMoney = new BigDecimal(0);
|
| | | BigDecimal commission = userTaoLiJinRecordVO.getCommission();
|
| | | if (commission != null && commission.compareTo(shareMoney) > 1) {
|
| | | if (commission != null && commission.compareTo(shareMoney) > 0) {
|
| | | BigDecimal shareRate = hongBaoManageService.getShareRate();
|
| | | shareMoney = MoneyBigDecimalUtil.mul(MoneyBigDecimalUtil.mul(commission, new BigDecimal("0.01")),
|
| | | MoneyBigDecimalUtil.div(shareRate, new BigDecimal(100)));
|
| | | shareMoney = MoneyBigDecimalUtil.mul(commission, MoneyBigDecimalUtil.div(shareRate, new BigDecimal(100)));
|
| | | shareMoney = BigDecimalUtil.getWithNoZera(shareMoney);
|
| | | }
|
| | |
|
| | |
| | | }
|
| | |
|
| | | @Override
|
| | | public long countShareRecordByUid(Long uid) {
|
| | | return userTaoLiJinRecordMapper.countShareRecordByUid(uid);
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | public long countTodayNum(Long uid) {
|
| | | return userTaoLiJinRecordMapper.countTodayNum(uid);
|
| | | }
|