admin
2022-01-12 c9fdff7d45ae118eac10397d8f34661e9f2e968a
service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinExpendRecordServiceImpl.java
@@ -1,30 +1,16 @@
package com.ks.lijin.service.remote;
import com.ks.lijin.exception.LiJinException;
import com.ks.lijin.exception.LiJinExpendRecordException;
import com.ks.lijin.exception.TaoKeApiException;
import org.apache.dubbo.config.annotation.Service;
import com.ks.lijin.mapper.LiJinExpendRecordMapper;
import com.ks.lijin.pojo.DO.LiJinExpendRecord;
import com.ks.lijin.pojo.DO.LiJinProviderAccount;
import com.ks.lijin.pojo.DO.LiJinProviderNotice;
import com.ks.lijin.pojo.DTO.LiJinCreateParam;
import com.ks.lijin.pojo.DTO.taobao.TaoBaoGoodsBrief;
import com.ks.lijin.pojo.DTO.taobao.TaoKeAppInfo;
import com.ks.lijin.pojo.DTO.taobao.TaoLiJinDTO;
import com.ks.lijin.pojo.Enums.NoticeTypeEnum;
import com.ks.lijin.query.ExpendRecordQuery;
import com.ks.lijin.service.LiJinExpendRecordService;
import com.ks.lijin.service.LiJinProviderAccountService;
import com.ks.lijin.service.LiJinProviderNoticeService;
import com.ks.lijin.utils.taobao.TaoKeApiUtil;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.core.task.TaskExecutor;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
@@ -46,8 +32,12 @@
    @Override
    public long count(LiJinExpendRecord obj) {
        ExpendRecordQuery query = new ExpendRecordQuery();
//        query.appId = appId;
//        query.uid = uid;
        query.uid = obj.getUid();
        query.accountId = obj.getAccountId();
        query.goodsId = obj.getGoodsId();
        query.money = obj.getMoney();
        query.title = obj.getTitle();
        query.rightsId = obj.getRightsId();
        return liJinExpendRecordMapper.count(query);
    }
@@ -55,9 +45,12 @@
    @Override
    public List<LiJinExpendRecord> listByPage(int page, int pageSize, LiJinExpendRecord obj) {
        ExpendRecordQuery query = new ExpendRecordQuery();
//        query.appId = appId;
//        query.uid = uid;
//        query.drawStateList = Arrays.asList(new Integer[]{LuckyActivityJoinRecord.DRAW_STATE_UNOPEN});
        query.uid = obj.getUid();
        query.accountId = obj.getAccountId();
        query.goodsId = obj.getGoodsId();
        query.money = obj.getMoney();
        query.title = obj.getTitle();
        query.rightsId = obj.getRightsId();
        query.start = (page - 1) * pageSize;
        query.count = pageSize;
        return liJinExpendRecordMapper.listByPage(query);
@@ -79,119 +72,6 @@
        liJinExpendRecordMapper.deleteByPrimaryKey(id);
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public LiJinExpendRecord createLiJin(String uid, BigDecimal money, TaoBaoGoodsBrief goods)
            throws LiJinExpendRecordException {
        // TODO 验证次数
        int expendNum = countTodayNumByExpend(uid);
        // TODO 验证金额
        BigDecimal bigDecimal = countTodayMoneyByExpend(uid);
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String date_str = format.format(date);
        String sendEndTime_str = date_str + " 22:00:00";
        String useEndTime_str = date_str + " 23:59:59";
        /* 创建淘礼金 */
        String name = "自购淘礼金红包";
        // 发放开始时间
        Date sendStartTime = date;
        // 发放截止时间 - 分享当日22:00
        Date sendEndTime = null;
        // 使用结束日期 - 分享当日 23:59
        Date useEndTime = null;
        try {
            sendEndTime = formatStr.parse(sendEndTime_str);
            useEndTime = formatStr.parse(useEndTime_str);
        } catch (ParseException e2) {
            e2.printStackTrace();
        }
        LiJinCreateParam params = new LiJinCreateParam();
        params.setTitle("自购淘礼金红包");
        params.setUid(uid + "");
        params.setGoodsId(goods.getAuctionId());
        params.setUseEndTime(useEndTime);
        params.setSendStartTime(sendStartTime);
        params.setSendEndTime(sendEndTime);
        params.setNum(1);
        params.setMoney(money);
        // params.setPid(); // pid缺少 TODO
        //  params.setAppkey();
        //  params.setAppsecret();
       return createTaoLiJin(params);
    }
    @Transactional(rollbackFor = Exception.class)
    public LiJinExpendRecord createTaoLiJin(LiJinCreateParam params) throws LiJinExpendRecordException {
        String appkey =params.getAppkey();
        String appsecret = params.getAppsecret();
        // 创建淘礼金红包
        TaoLiJinDTO taoLiJinDTO = null;
        try {
            taoLiJinDTO = TaoKeApiUtil.createTaoLiJin(params.getGoodsId(), params.getTitle(), params.getMoney(),
                    params.getNum(), params.getSendStartTime(), params.getSendEndTime(),
                    params.getUseStartTime(), params.getUseEndTime(), new TaoKeAppInfo(appkey, appsecret, params.getPid()));
        } 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) {
                        // 官方玩法钱包余额不足
                        notice.setTitle("玩法钱包余额不足");
                        notice.setContent("账号:"+ appkey +"官方玩法钱包余额不足");
                        notice.setType(NoticeTypeEnum.noMoney.name());
                        liJinProviderNoticeService.save(notice);
                    } else if (e.getCode() == LiJinException.CODE_TLJ_UN_PAID) {
                        // 未创建账户
                    }
                }
            });
        } catch (TaoKeApiException e1) {
            // TODO
        }
        if (taoLiJinDTO == null) {
            throw new LiJinExpendRecordException(101, "淘宝API推广红包创建失败");
        }
        // 保存记录
        LiJinExpendRecord record = new LiJinExpendRecord();
        record.setUid(params.getUid());
        record.setGoodsId(params.getGoodsId() + "");
        record.setTitle(params.getTitle());
        record.setNum(params.getNum());
        record.setMoney(params.getMoney());
        record.setRightsId(taoLiJinDTO.getRightsId());
        record.setSendUrl(taoLiJinDTO.getSendUrl());
        record.setCreateTime(new Date());
        liJinExpendRecordMapper.insertSelective(record);
        return record;
    }
    @Override
    public int countTodayNumByExpend(String uid) {