| | |
| | | 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.TaoBaoBuyRelationMapService;
|
| | | import com.yeshi.fanli.service.inter.tlj.ConfigTaoLiJinService;
|
| | | import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinDetailService;
|
| | | import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
|
| | | import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinRecordService;
|
| | | import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinReportService;
|
| | | import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
|
| | | import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
|
| | | import com.yeshi.fanli.service.inter.user.UserMoneyExtraService;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.RedisManager;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.TaoBaoConstant;
|
| | | import com.yeshi.fanli.util.factory.CommonGoodsFactory;
|
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
| | |
| | | @Resource
|
| | | private UserInfoExtraService userInfoExtraService;
|
| | |
|
| | | @Resource
|
| | | private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoBuyRelationMapService taoBaoBuyRelationMapService;
|
| | |
|
| | | @Override
|
| | | public UserTaoLiJinRecord selectByPrimaryKey(Long id) {
|
| | | return userTaoLiJinRecordMapper.selectByPrimaryKey(id);
|
| | |
| | | // 新人红包 自购一元
|
| | | BigDecimal perface = new BigDecimal(1);
|
| | |
|
| | | String pid = TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT;
|
| | | if (goods.getMaterialLibType() == null || goods.getMaterialLibType() == 0)
|
| | | pid = TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID;
|
| | | return createUserTaoLiJin(1, uid, goods.getAuctionId(), perface, 1, name, sendStartTime, sendEndTime, null,
|
| | | useEndTime, pid);
|
| | | if (goods.getMaterialLibType() == null || goods.getMaterialLibType() == 0) {// 非返利库商品
|
| | | String relationId = null;
|
| | | try {
|
| | | relationId = taoBaoBuyRelationMapService.getRelationId(uid);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e, "uid:" + uid, null);
|
| | | }
|
| | |
|
| | | if (StringUtil.isNullOrEmpty(relationId)) {
|
| | | throw new UserTaoLiJinRecordException(101, "渠道未备案");
|
| | | }
|
| | | UserTaoLiJinRecord record = createUserTaoLiJin(1, uid, goods.getAuctionId(), perface, 1, name,
|
| | | sendStartTime, sendEndTime, null, useEndTime, TaoBaoConstant.TAOBAO_RELATION_AS_SPECIAL_PID);
|
| | | record.setSendUrl(record.getSendUrl() + "&relationId=" + relationId);
|
| | | return record;
|
| | | } else {// 返利库商品
|
| | | return createUserTaoLiJin(1, uid, goods.getAuctionId(), perface, 1, name, sendStartTime, sendEndTime, null,
|
| | | useEndTime, TaoBaoConstant.TAOBAO_SPECIAL_PID_DEFAULT);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | @Override
|
| | | public UserTaoLiJinRecord createShareTaoLiJin(Long uid, int totalNum, TaoBaoGoodsBrief goods)
|
| | | throws UserTaoLiJinRecordException {
|
| | | String relationId = userExtraTaoBaoInfoService.getRelationIdByUid(uid);
|
| | | if (StringUtil.isNullOrEmpty(relationId))
|
| | | throw new UserTaoLiJinRecordException(101, "渠道未授权");
|
| | |
|
| | | Date date = new Date();
|
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
|
| | | SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
| | |
| | | perface = TaoLiJinUtil.getSpreadMoney(warningRate, goods);
|
| | | }
|
| | |
|
| | | return createUserTaoLiJin(2, uid, goods.getAuctionId(), perface, totalNum, name, sendStartTime, sendEndTime,
|
| | | null, useEndTime, TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT);
|
| | | UserTaoLiJinRecord record = createUserTaoLiJin(2, uid, goods.getAuctionId(), perface, totalNum, name,
|
| | | sendStartTime, sendEndTime, null, useEndTime, TaoBaoConstant.TAOBAO_RELATION_PID_DEFAULT);
|
| | | String sendUrl = record.getSendUrl() + "&relationId=" + relationId;
|
| | | record.setSendUrl(sendUrl);
|
| | | return record;
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Transactional
|
| | | public UserTaoLiJinRecord createUserTaoLiJin(int origin, Long uid, Long auctionId, BigDecimal perface, int totalNum, String name,
|
| | | Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime,String pid) throws UserTaoLiJinRecordException{
|
| | | |
| | | public UserTaoLiJinRecord createUserTaoLiJin(int origin, Long uid, Long auctionId, BigDecimal perface, int totalNum,
|
| | | String name, Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime, String pid)
|
| | | throws UserTaoLiJinRecordException {
|
| | |
|
| | | // 用户剩余可以淘礼金验证
|
| | | UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid);
|
| | | if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) {
|
| | | throw new UserTaoLiJinRecordException(101, "红包余额不足");
|
| | | }
|
| | | |
| | |
|
| | | // 过期
|
| | | userTaoLiJinOriginService.overdueHongBao(uid);
|
| | | |
| | |
|
| | | BigDecimal tlj = userMoneyExtra.getTlj();
|
| | | BigDecimal totalMoney = MoneyBigDecimalUtil.mul(perface, new BigDecimal(totalNum));
|
| | | if (totalMoney.compareTo(tlj) > 0) {
|
| | | throw new UserTaoLiJinRecordException(101, "红包余额不足");
|
| | | }
|
| | | |
| | |
|
| | | // 创建淘礼金红包
|
| | | TaoLiJinDTO taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(auctionId, name, perface, totalNum, sendStartTime, sendEndTime, useStartTime, useEndTime, pid);
|
| | | TaoLiJinDTO taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(auctionId, name, perface, totalNum, sendStartTime,
|
| | | sendEndTime, useStartTime, useEndTime, pid);
|
| | | if (taoLiJinDTO == null) {
|
| | | throw new UserTaoLiJinRecordException(101, "红包创建失败");
|
| | | }
|
| | | |
| | | // 保存记录
|
| | |
|
| | | // 保存记录
|
| | | UserTaoLiJinRecord record = new UserTaoLiJinRecord();
|
| | | record.setUid(uid);
|
| | | record.setGoodsId(auctionId);
|
| | |
| | | record.setSendUrl(taoLiJinDTO.getSendUrl());
|
| | | record.setCreateTime(new Date());
|
| | | userTaoLiJinRecordMapper.insertSelective(record);
|
| | | |
| | |
|
| | | // 剩余淘礼金
|
| | | BigDecimal surplusTlj = MoneyBigDecimalUtil.sub(tlj, totalMoney);
|
| | | UserMoneyExtra updateExtra = new UserMoneyExtra();
|
| | |
| | | updateExtra.setTlj(surplusTlj);
|
| | | updateExtra.setUpdateTime(new Date());
|
| | | userMoneyExtraService.updateByPrimaryKeySelective(updateExtra);
|
| | | |
| | |
|
| | | record.setSurplusMoney(surplusTlj);
|
| | | |
| | |
|
| | | // 异步
|
| | | String rightsId = taoLiJinDTO.getRightsId();
|
| | | executor.execute(new Runnable() {
|
| | |
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | |
| | | |
| | |
|
| | | // 成功使用红包
|
| | | try {
|
| | | BigDecimal total = totalMoney;
|
| | | BigDecimal lastMoney = null;
|
| | | BigDecimal zero = new BigDecimal(0);
|
| | | |
| | |
|
| | | // 修改余额
|
| | | List<UserTaoLiJinOrigin> list = userTaoLiJinOriginService.getSurplusLiJin(uid);
|
| | | if (list != null && list.size() > 0) {
|
| | | for (UserTaoLiJinOrigin taoLiJinOrigin: list) {
|
| | | if (total.compareTo(zero) < 1 ) {
|
| | | for (UserTaoLiJinOrigin taoLiJinOrigin : list) {
|
| | | if (total.compareTo(zero) < 1) {
|
| | | break;
|
| | | }
|
| | | BigDecimal moneySurplus = taoLiJinOrigin.getMoneySurplus();
|
| | | lastMoney = total;
|
| | | total = MoneyBigDecimalUtil.sub(total, moneySurplus);
|
| | | if (total.compareTo(zero) >= 0 ) {
|
| | | if (total.compareTo(zero) >= 0) {
|
| | | moneySurplus = zero;
|
| | | } else {
|
| | | moneySurplus = MoneyBigDecimalUtil.sub(moneySurplus, lastMoney);
|
| | | }
|
| | | |
| | |
|
| | | UserTaoLiJinOrigin usertlj = new UserTaoLiJinOrigin();
|
| | | usertlj.setId(taoLiJinOrigin.getId());
|
| | | usertlj.setMoneySurplus(moneySurplus);
|
| | |
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | |
| | | |
| | | |
| | |
|
| | | // 使用成功消息
|
| | | try {
|
| | | String beizhu = "未被领取/使用的部分将会退回";
|
| | | |
| | |
|
| | | SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd hh.mm");
|
| | | String time = sd.format(new Date());
|
| | | MsgOtherTaoLiJinContentDTO content = new MsgOtherTaoLiJinContentDTO();
|
| | | content.setState("红包扣除");
|
| | | content.setSource(time + " 创建的分享记录");
|
| | | content.setMoney(totalMoney);
|
| | | |
| | |
|
| | | userOtherMsgNotificationService.taoLiJinMsg(uid, beizhu, content);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | |
| | |
|
| | | // 创建报告
|
| | | try {
|
| | | userTaoLiJinReportService.insertDefault(rightsId);
|
| | | } catch (Exception e) {
|
| | | LogHelper.errorDetailInfo(e);
|
| | | }
|
| | | |
| | |
|
| | | // 检测商品是否存在
|
| | | try {
|
| | | CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(auctionId, CommonGoods.GOODS_TYPE_TB);
|
| | | CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(auctionId,
|
| | | CommonGoods.GOODS_TYPE_TB);
|
| | | if (commonGoods == null) {
|
| | | TaoBaoGoodsBrief taoBaoGoodsBrief = redisManager.getTaoBaoGoodsBrief(auctionId);
|
| | | if (taoBaoGoodsBrief != null) {
|
| | |
| | | }
|
| | | }
|
| | | });
|
| | | |
| | |
|
| | | return record;
|
| | | }
|
| | |
|