YJ
2021-05-17 c960041c8912c4118cb45317e58384286c7fb4d1
service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java
@@ -13,6 +13,7 @@
import com.ks.lijin.service.LiJinProviderAccountService;
import com.ks.lijin.service.LiJinProviderNoticeService;
import com.ks.lijin.service.LijinCreateService;
import com.ks.lijin.util.Constant;
import com.ks.lijin.utils.taobao.TaoBaoUtil;
import com.ks.lijin.utils.taobao.TaoKeApiUtil;
import com.ks.vip.pojo.DO.VipGradePotence;
@@ -30,6 +31,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@Service(version = "1.0")
@@ -148,7 +150,6 @@
    }
    @Override
    public boolean userCanCreateTBLijin(String uid, BigDecimal money) throws LiJinUserException {
        VipGradePotence potence = vipCenterService.getVipPotence(uid);
@@ -190,7 +191,6 @@
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public LiJinExpendRecord createTBLijin(String uid, Long goodsId) throws LiJinException, LiJinGoodsException, LiJinUserException, LiJinAmountException {
@@ -217,16 +217,11 @@
        // 执行创建淘礼金
        LiJinCreateParam params = getLiJinCreateParam();
        // TODO
       // params.setAppkey();
       //  params.setAppsecret();
        TaoLiJinDTO taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params);
        if (taoLiJinDTO == null) {
            throw new LiJinException(1, "淘宝API推广红包创建失败");
        }
        // 保存记录
        LiJinExpendRecord record = new LiJinExpendRecord();
@@ -243,36 +238,45 @@
    }
    // 创建淘礼金
    private TaoLiJinDTO executeTaoLiJinAPI(String uid, Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException {
        String appkey =params.getAppkey();
        String appsecret = params.getAppsecret();
    /**
     * 调用账号以及淘宝API
     * @param uid
     * @param goodsId
     * @param lijinAmount
     * @param params
     * @return
     * @throws LiJinGoodsException
     * @throws LiJinException
     */
    private TaoLiJinDTO executeTaoLiJinAPI(String uid, Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException {
        // 查询供应商账号信息
        List<LiJinProviderAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID);
        if (listAccount == null || listAccount.size() == 0) {
            throw new LiJinException(1, "供应商账号不存在");
        }
        // 创建淘礼金红包
        TaoLiJinDTO taoLiJinDTO = null;
        // 遍历账号 用可使用账号
        for (LiJinProviderAccount account : listAccount) {
            params.setAppkey(account.getAppKey());
            params.setAppsecret(account.getAppSecret());
        try {
            taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(goodsId, params.getTitle(), lijinAmount,
                    params.getNum(), params.getSendStartTime(), params.getSendEndTime(),
                    params.getUseStartTime(), params.getUseEndTime(), new TaoKeAppInfo(appkey, appsecret, params.getPid()));
                taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params);
                if (taoLiJinDTO != null) {
                    break;
                }
        } catch (LiJinException e) {
            // 通知相应供应商  TODO
            executor.execute(new Runnable() {
                @Override
                public void run() {
                    LiJinProviderAccount account  = liJinProviderAccountService.getByAppInfo(appkey, appsecret);
                    if (account == null) {
                        return;
                    }
                    LiJinProviderNotice notice = new LiJinProviderNotice();
                    notice.setRead(false);
                    notice.setProviderId(account.getProviderId());
                    if (e.getCode() == LiJinException.CODE_TLJ_FORBIDDEN) {
                        // 该商品不支持创建淘礼金红包
                    } else if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) {
                       if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) {
                        // 官方玩法钱包余额不足
                        notice.setTitle("玩法钱包余额不足");
                        notice.setContent("账号:"+ appkey +"官方玩法钱包余额不足");
                            notice.setContent("账号:" + account.getAccountName() + "官方玩法钱包余额不足");
                        notice.setType(NoticeTypeEnum.noMoney.name());
                        liJinProviderNoticeService.save(notice);
                    } else if (e.getCode() == LiJinException.CODE_TLJ_UN_PAID) {
@@ -281,11 +285,24 @@
                }
            });
        }
        return taoLiJinDTO;
    }
        // 创建淘礼金红包
        return TaoKeApiUtil.createTaoLiJin(goodsId, params.getTitle(), lijinAmount,
                params.getNum(), params.getSendStartTime(), params.getSendEndTime(),
                params.getUseStartTime(), params.getUseEndTime(), new TaoKeAppInfo(params.getAppkey(), params.getAppsecret(), params.getPid()));
    }
    private BigDecimal getTBLijinAmount(TaoBaoGoodsBrief goods, VIPEnum vipRank) throws LiJinGoodsException,LiJinAmountException {
    /**
     * 获取商品可创建的礼金金额
     * @param goods 商品
     * @param vipRank  会员等级
     * @return
     * @throws LiJinGoodsException
     * @throws LiJinAmountException
     */
    private BigDecimal getTBLijinAmount(TaoBaoGoodsBrief goods, VIPEnum vipRank) throws
            LiJinGoodsException, LiJinAmountException {
        //获取商品可创建的淘礼金面额,若不能创建需要抛出相关的异常(1.商品不支持礼金创建)
        BigDecimal money = null;
@@ -309,6 +326,7 @@
    /**
     * 创建淘礼金基本参数
     *
     * @return
     */
    private LiJinCreateParam getLiJinCreateParam() {