admin
2022-08-25 c9db68e33f90231b064b8864fc69ccf7d25f5e0b
service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinExpendRecordServiceImpl.java
@@ -1,25 +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.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.query.ExpendRecordQuery;
import com.ks.lijin.service.LiJinExpendRecordService;
import com.ks.lijin.utils.taobao.TaoKeApiUtil;
import org.apache.dubbo.config.annotation.Service;
import com.ks.lijin.service.LiJinProviderAccountService;
import com.ks.lijin.service.LiJinProviderNoticeService;
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;
@@ -32,12 +23,21 @@
    @Resource
    private LiJinExpendRecordMapper liJinExpendRecordMapper;
    @Resource
    private LiJinProviderNoticeService liJinProviderNoticeService;
    @Resource
    private  LiJinProviderAccountService liJinProviderAccountService;
    @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);
    }
@@ -45,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);
@@ -71,104 +74,13 @@
    @Override
    @Transactional(rollbackFor = Exception.class)
    public LiJinExpendRecord createLiJin(Long uid, BigDecimal money, TaoBaoGoodsBrief goods)
            throws LiJinExpendRecordException {
        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
       return createTaoLiJin(params);
    public int countTodayNumByExpend(String uid) {
        return liJinExpendRecordMapper.countTodayNumByExpend(uid);
    }
    @Transactional(rollbackFor = Exception.class)
    public LiJinExpendRecord createTaoLiJin(LiJinCreateParam params) throws LiJinExpendRecordException {
        String appkey = "";
        String appsecret = "";
        // 总金额
        //BigDecimal totalMoney = BigDecimalUtil.mul(params.getMoney(), new BigDecimal(params.getNum()));
        // 创建淘礼金红包
        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() {
                    if (e.getCode() == LiJinException.CODE_TLJ_FORBIDDEN) {
                        // 该商品不支持创建淘礼金红包
                    } else if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) {
                        // 官方玩法钱包余额不足
                    } 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);
        executor.execute(new Runnable() {
            @Override
            public void run() {
                // 更新对应 限制次数和金额
            }
        });
        return record;
    @Override
    public BigDecimal countTodayMoneyByExpend(String uid) {
        return liJinExpendRecordMapper.countTodayMoneyByExpend(uid);
    }
}