admin
2021-05-25 43a604467d91ef42148bfb3b5526618e91ea4adc
礼金创建修改
1个文件已删除
1 文件已重命名
10个文件已修改
4个文件已添加
542 ■■■■■ 已修改文件
app/src/main/java/com/ks/app/controller/admin/lijin/LiJinProviderAccountAdminController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lijin/src/main/java/com/ks/lijin/exception/LiJinAccountException.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lijin/src/main/java/com/ks/lijin/pojo/DO/LiJinProviderTaoKeAccount.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lijin/src/main/java/com/ks/lijin/service/LiJinProviderAccountService.java 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lijin/src/main/java/com/ks/lijin/utils/taobao/TaoKeApiUtil.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lijin/src/test/java/java/MyBatisTest.java 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/mapper/LiJinProviderAccountMapper.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/pojo/DTO/TaoLijinCreateResultDTO.java 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/service/manager/LiJinProviderTaoKeAccountManager.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinExpendRecordServiceImpl.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinProviderAccountServiceImpl.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/resources/mapper/LiJinProviderAccountMapper.xml 105 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/resources/mapper/LiJinProviderTaoKeAccountMapper.xml 125 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-vip/src/main/java/com/ks/vip/service/remote/VipCenterRecordServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-vip/src/main/resources/mapper/VipCenterRecordMapper.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/ks/app/controller/admin/lijin/LiJinProviderAccountAdminController.java
@@ -6,7 +6,7 @@
import com.ks.app.pojo.VO.PageEntity;
import com.ks.app.pojo.VO.Result;
import com.ks.app.util.ResultUtils;
import com.ks.lijin.pojo.DO.LiJinProviderAccount;
import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
import com.ks.lijin.service.LiJinProviderAccountService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Controller;
@@ -31,9 +31,9 @@
    @ResponseBody
    @RequestMapping(value = "listByPage")
    public Result listByPage(int page, int pageSize, LiJinProviderAccount t, HttpServletRequest request) {
    public Result listByPage(int page, int pageSize, LiJinProviderTaoKeAccount t, HttpServletRequest request) {
        try {
            List<LiJinProviderAccount> list = liJinProviderAccountService.listByPage(page, pageSize, t);
            List<LiJinProviderTaoKeAccount> list = liJinProviderAccountService.listByPage(page, pageSize, t);
            long count = liJinProviderAccountService.count(t);
            int totalPage = (int) (count % pageSize == 0 ? count / pageSize : count / pageSize + 1);
            PageEntity pe = new PageEntity(page, pageSize, count, totalPage);
@@ -49,7 +49,7 @@
    @ResponseBody
    @RequestMapping(value = "add")
    public Result add(LiJinProviderAccount t, HttpServletRequest request) {
    public Result add(LiJinProviderTaoKeAccount t, HttpServletRequest request) {
        try {
            liJinProviderAccountService.insertSelective(t);
            return ResultUtils.loadTrue();
@@ -62,7 +62,7 @@
    @ResponseBody
    @RequestMapping(value = "modify")
    public Result modify(LiJinProviderAccount t, HttpServletRequest request) {
    public Result modify(LiJinProviderTaoKeAccount t, HttpServletRequest request) {
        try {
            liJinProviderAccountService.updateByPrimaryKeySelective(t);
            return ResultUtils.loadTrue();
facade-lijin/src/main/java/com/ks/lijin/exception/LiJinAccountException.java
New file
@@ -0,0 +1,30 @@
package com.ks.lijin.exception;
import com.ks.lib.common.exception.BaseException;
/**
 * 礼金账号异常
 */
public class LiJinAccountException extends BaseException {
    // 淘礼金账户暂未创建
    public static final int CODE_TLJ_UN_PAID = 101;
    // 官方账户余额不足
    public static final int CODE_TLJ_NO_MONEY = 102;
    public LiJinAccountException(int code, String msg) {
        super(code, msg);
    }
    public LiJinAccountException() {
        super();
    }
    //屏蔽堆栈信息
    @Override
    public synchronized Throwable fillInStackTrace() {
        return this;
    }
}
facade-lijin/src/main/java/com/ks/lijin/pojo/DO/LiJinProviderTaoKeAccount.java
File was renamed from facade-lijin/src/main/java/com/ks/lijin/pojo/DO/LiJinProviderAccount.java
@@ -8,7 +8,7 @@
import java.util.Date;
@Table("tlj_provider_account")
public class LiJinProviderAccount  implements Serializable {
public class LiJinProviderTaoKeAccount implements Serializable {
    @Column(name = "ac_id")
    private Long id;
@@ -23,6 +23,9 @@
    @Column(name = "ac_app_secret")
    private String appSecret;
    @Column(name = "ac_pid")
    private String pid;
    @Column(name = "ac_max_money")
    private BigDecimal maxMoney;
@@ -51,6 +54,14 @@
    @Column(name = "ac_update_time")
    private Date updateTime;
    public String getPid() {
        return pid;
    }
    public void setPid(String pid) {
        this.pid = pid;
    }
    public Long getId() {
        return id;
    }
facade-lijin/src/main/java/com/ks/lijin/service/LiJinProviderAccountService.java
@@ -1,31 +1,30 @@
package com.ks.lijin.service;
import com.ks.lijin.pojo.DO.LiJinProviderAccount;
import com.ks.lijin.pojo.DO.LiJinProviderLink;
import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
import java.util.List;
public interface LiJinProviderAccountService {
   public long count(LiJinProviderAccount t);
   public long count(LiJinProviderTaoKeAccount t);
   public List<LiJinProviderAccount> listByPage(int page, int pageSize, LiJinProviderAccount t);
   public List<LiJinProviderTaoKeAccount> listByPage(int page, int pageSize, LiJinProviderTaoKeAccount t);
   /**
    * 通过供应商ID 查询有效账号信息
    * @param providerId
    * @return
    */
   public List<LiJinProviderAccount> listByProviderId(Long providerId);
   public List<LiJinProviderTaoKeAccount> listByProviderId(Long providerId);
   public void insertSelective(LiJinProviderAccount provider);
   public void insertSelective(LiJinProviderTaoKeAccount provider);
   public void updateByPrimaryKeySelective(LiJinProviderAccount provider);
   public void updateByPrimaryKeySelective(LiJinProviderTaoKeAccount provider);
   public void delete(Long id);
   public LiJinProviderAccount getByAppInfo(String appKey, String appSecret);
   public LiJinProviderTaoKeAccount getByAppInfo(String appKey, String appSecret);
}
facade-lijin/src/main/java/com/ks/lijin/utils/taobao/TaoKeApiUtil.java
@@ -1,10 +1,7 @@
package com.ks.lijin.utils.taobao;
import com.ks.lijin.exception.LiJinException;
import com.ks.lijin.exception.LiJinGoodsException;
import com.ks.lijin.exception.TaoBaoGoodsDownException;
import com.ks.lijin.exception.TaoKeApiException;
import com.ks.lijin.exception.*;
import com.ks.lijin.pojo.DTO.taobao.*;
import com.ks.lijin.pojo.PageEntity;
import com.taobao.api.internal.util.StringUtils;
@@ -30,7 +27,7 @@
    // 淘礼金创建
    public static TaoLiJinDTO createTaoLiJin(Long auctionId, String name, BigDecimal perface, int totalNum,
                                             Date sendStartTime, Date sendEndTime, Date useStartTime, Date useEndTime, TaoKeAppInfo app)
            throws LiJinException, LiJinGoodsException {
            throws LiJinAccountException, LiJinException, LiJinGoodsException {
        Map<String, String> map = new HashMap<>();
        map.put("method", "taobao.tbk.dg.vegas.tlj.create");
        map.put("adzone_id", app.getPid().split("_")[3]);
@@ -77,11 +74,11 @@
                        case "FAIL_BIZ_ITEM_FORBIDDEN":
                            throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "该商品不支持创建淘礼金红包");
                        case "FAIL_BIZ_ACCOUNT_UN_PAID":
                            throw new LiJinException(LiJinException.CODE_TLJ_UN_PAID, "您的淘礼金账户暂未创建,请前往资金管理页面充值");
                            throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_UN_PAID, "您的淘礼金账户暂未创建,请前往资金管理页面充值");
                        case "PRE_FREEZE_ASSET_ACCOUNT_ERROR":
                            throw new LiJinException(LiJinException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足");
                            throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足");
                        case "ASSET_ACCOUNT_BALANCE_NOT_ENOUGH":
                            throw new LiJinException(LiJinException.CODE_TLJ_NO_MONEY, "账户预算不足");
                            throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "账户预算不足");
                        case "FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR":
                            throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_CREATED_NUM_FULL, "今日该商品淘礼金创建数已超上限,请您明日再试");
                        default:
facade-lijin/src/test/java/java/MyBatisTest.java
@@ -1,14 +1,20 @@
package java;
import com.ks.lijin.pojo.DO.LiJinProvider;
import org.junit.jupiter.api.Test;
import org.yeshi.utils.generater.mybatis.MyBatisMapperUtil;
import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
import org.junit.Test;
import org.yeshi.utils.generater.mybatis.ColumnParseUtil;
public class MyBatisTest {
    public static void main(String[] args){
        ColumnParseUtil.parseColumn(LiJinProviderTaoKeAccount.class,"D:\\项目\\返利券\\特价\\tejia\\service-lijin\\src\\main\\resources\\mapper\\LiJinProviderAccountMapper.xml");
    }
    @Test
    public void test(){
        MyBatisMapperUtil.createMapper(LiJinProvider.class);
        ColumnParseUtil.parseColumn(LiJinProviderTaoKeAccount.class,"D:\\项目\\返利券\\特价\\tejia\\service-lijin\\src\\main\\resources\\mapper\\LiJinProviderAccountMapper.xml");
//        MyBatisMapperUtil.createMapper(LiJinProvider.class);
    }
}
service-lijin/src/main/java/com/ks/lijin/mapper/LiJinProviderAccountMapper.java
@@ -1,18 +1,19 @@
package com.ks.lijin.mapper;
import com.ks.lib.common.dao.BaseMapper;
import com.ks.lijin.pojo.DO.LiJinProviderAccount;
import com.ks.lijin.pojo.DO.LiJinProviderLink;
import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
import com.ks.lijin.query.ProviderAccountQuery;
import com.ks.lijin.query.ProviderLinkQuery;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface LiJinProviderAccountMapper extends BaseMapper<LiJinProviderAccount> {
public interface LiJinProviderAccountMapper extends BaseMapper<LiJinProviderTaoKeAccount> {
    List<LiJinProviderAccount> listByPage(@Param("query") ProviderAccountQuery query);
    List<LiJinProviderTaoKeAccount> listByPage(@Param("query") ProviderAccountQuery query);
    long count(@Param("query") ProviderAccountQuery query);
    LiJinProviderTaoKeAccount selectByPrimaryKeyForUpdate(Long id);
}
service-lijin/src/main/java/com/ks/lijin/pojo/DTO/TaoLijinCreateResultDTO.java
New file
@@ -0,0 +1,30 @@
package com.ks.lijin.pojo.DTO;
import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
import com.ks.lijin.pojo.DTO.taobao.TaoLiJinDTO;
public class TaoLijinCreateResultDTO {
    private LiJinProviderTaoKeAccount account;
    private TaoLiJinDTO taoLiJin;
    public TaoLijinCreateResultDTO(LiJinProviderTaoKeAccount account, TaoLiJinDTO taoLiJin) {
        this.account = account;
        this.taoLiJin = taoLiJin;
    }
    public LiJinProviderTaoKeAccount getAccount() {
        return account;
    }
    public void setAccount(LiJinProviderTaoKeAccount account) {
        this.account = account;
    }
    public TaoLiJinDTO getTaoLiJin() {
        return taoLiJin;
    }
    public void setTaoLiJin(TaoLiJinDTO taoLiJin) {
        this.taoLiJin = taoLiJin;
    }
}
service-lijin/src/main/java/com/ks/lijin/service/manager/LiJinProviderTaoKeAccountManager.java
New file
@@ -0,0 +1,61 @@
package com.ks.lijin.service.manager;
import com.ks.lijin.mapper.LiJinProviderAccountMapper;
import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import org.yeshi.utils.TimeUtil;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Date;
@Component
public class LiJinProviderTaoKeAccountManager {
    @Resource
    private LiJinProviderAccountMapper liJinProviderAccountMapper;
    @Resource
    private RedisTemplate redisTemplate;
    /**
     * 礼金创建成功
     *
     * @param accountId
     * @param auctionId
     * @param money
     */
    @Transactional(rollbackFor = Exception.class)
    public void createLijinSuccess(Long accountId, Long auctionId, BigDecimal money, Date createTime) {
        String day = TimeUtil.getGernalTime(createTime.getTime(), "yyyyMMdd");
        String goodsKeyPrefix = String.format("lijingoodsnum-%s-%s-", day, accountId);
        String goodsKey = goodsKeyPrefix + auctionId;
        String accountMoneyKey = String.format("lijinaccountmoney-%s-%s", day, accountId);
        //保存账号当日的商品数量消耗
        redisTemplate.opsForValue().increment(goodsKey, 1);
        //保存当日账号的资金消耗
        redisTemplate.opsForValue().increment(accountMoneyKey, money.multiply(new BigDecimal(100)).intValue());
        //获取账号当日的商品数量
        int goodsNum = redisTemplate.keys(goodsKeyPrefix + "*").size();
        //获取账号当日的资金消耗
        Long todayMoney = Long.parseLong(redisTemplate.opsForValue().get(accountMoneyKey) + "");
        //同步到数据库
        LiJinProviderTaoKeAccount account = liJinProviderAccountMapper.selectByPrimaryKeyForUpdate(accountId);
        if (account != null) {
            LiJinProviderTaoKeAccount update = new LiJinProviderTaoKeAccount();
            update.setTodayConsumeMoney(new BigDecimal(todayMoney).divide(new BigDecimal(100), 2, RoundingMode.FLOOR));
            update.setTodayConsumeNumber(goodsNum);
            update.setUpdateTime(new Date());
            liJinProviderAccountMapper.updateByPrimaryKeySelective(update);
        }
    }
}
service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinExpendRecordServiceImpl.java
@@ -1,29 +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 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.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;
service-lijin/src/main/java/com/ks/lijin/service/remote/LiJinProviderAccountServiceImpl.java
@@ -1,17 +1,12 @@
package com.ks.lijin.service.remote;
import com.ks.lijin.mapper.LiJinProviderAccountMapper;
import com.ks.lijin.mapper.LiJinProviderLinkMapper;
import com.ks.lijin.pojo.DO.LiJinProviderAccount;
import com.ks.lijin.pojo.DO.LiJinProviderLink;
import com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount;
import com.ks.lijin.query.ProviderAccountQuery;
import com.ks.lijin.query.ProviderLinkQuery;
import com.ks.lijin.service.LiJinProviderAccountService;
import com.ks.lijin.service.LiJinProviderLinkService;
import org.apache.dubbo.config.annotation.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
@Service(version = "1.0")
@@ -23,7 +18,7 @@
    @Override
    public long count(LiJinProviderAccount obj) {
    public long count(LiJinProviderTaoKeAccount obj) {
        ProviderAccountQuery query = new ProviderAccountQuery();
        query.id = obj.getId();
        query.state = obj.getState();
@@ -35,7 +30,7 @@
    @Override
    public List<LiJinProviderAccount> listByPage(int page, int pageSize, LiJinProviderAccount obj) {
    public List<LiJinProviderTaoKeAccount> listByPage(int page, int pageSize, LiJinProviderTaoKeAccount obj) {
        ProviderAccountQuery query = new ProviderAccountQuery();
        query.id = obj.getId();
        query.state = obj.getState();
@@ -49,7 +44,7 @@
    @Override
    public List<LiJinProviderAccount> listByProviderId(Long providerId) {
    public List<LiJinProviderTaoKeAccount> listByProviderId(Long providerId) {
        ProviderAccountQuery query = new ProviderAccountQuery();
        query.state =1;
        query.providerId = providerId;
@@ -60,12 +55,12 @@
    @Override
    public void insertSelective(LiJinProviderAccount t){
    public void insertSelective(LiJinProviderTaoKeAccount t){
        liJinProviderAccountMapper.insertSelective(t);
    }
    @Override
    public void updateByPrimaryKeySelective(LiJinProviderAccount t){
    public void updateByPrimaryKeySelective(LiJinProviderTaoKeAccount t){
        liJinProviderAccountMapper.updateByPrimaryKeySelective(t);
    }
@@ -76,12 +71,12 @@
    public LiJinProviderAccount getByAppInfo(String appKey, String appSecret){
        LiJinProviderAccount obj = new LiJinProviderAccount();
    public LiJinProviderTaoKeAccount getByAppInfo(String appKey, String appSecret){
        LiJinProviderTaoKeAccount obj = new LiJinProviderTaoKeAccount();
        obj.setAppKey(appKey);
        obj.setAppSecret(appSecret);
        obj.setState(1);
        List<LiJinProviderAccount> list = listByPage(0, 100, obj);
        List<LiJinProviderTaoKeAccount> list = listByPage(0, 100, obj);
        if (list ==null && list.size() == 0) {
            return null;
        }
service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java
@@ -3,10 +3,11 @@
import com.ks.lijin.exception.*;
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.LiJinProviderTaoKeAccount;
import com.ks.lijin.pojo.DO.LiJinProviderNotice;
import com.ks.lijin.pojo.DTO.LiJinCreateParam;
import com.ks.lijin.pojo.DTO.MoneyInfo;
import com.ks.lijin.pojo.DTO.TaoLijinCreateResultDTO;
import com.ks.lijin.pojo.DTO.taobao.TaoKeAppInfo;
import com.ks.lijin.pojo.DTO.taobao.TaoLiJinDTO;
import com.ks.lijin.pojo.Enums.NoticeTypeEnum;
@@ -14,6 +15,7 @@
import com.ks.lijin.service.LiJinProviderAccountService;
import com.ks.lijin.service.LiJinProviderNoticeService;
import com.ks.lijin.service.LijinCreateService;
import com.ks.lijin.service.manager.LiJinProviderTaoKeAccountManager;
import com.ks.lijin.util.Constant;
import com.ks.lijin.utils.taobao.TaoBaoUtil;
import com.ks.lijin.utils.taobao.TaoKeApiUtil;
@@ -32,7 +34,6 @@
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -68,6 +69,9 @@
    private LiJinExpendRecordService liJinExpendRecordService;
    @Resource
    private LiJinProviderTaoKeAccountManager liJinProviderTaoKeAccountManager;
    @Override
    public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) {
        VIPEnum vipRank = null;
@@ -93,7 +97,7 @@
            //计算返利比例
            BigDecimal rebateRate = potence.getRebatePercent();
            BigDecimal couponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods);
            BigDecimal fanliMoney = TaoBaoUtil.getGoodsHongBaoMoney(goods,rebateRate,false);
            BigDecimal fanliMoney = TaoBaoUtil.getGoodsHongBaoMoney(goods, rebateRate, false);
            moneyInfo.setFanliAmount(fanliMoney);
            moneyInfo.setFirstOrderAmount(null);
            list.add(moneyInfo);
@@ -259,25 +263,45 @@
        BigDecimal lijinAmount = getTBLijinAmount(goods, vipRank);
        // 执行创建淘礼金
        LiJinCreateParam params = getLiJinCreateParam();
        LiJinCreateParam params = getLiJinCreateBaseParam();
        TaoLiJinDTO taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params);
        TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(goodsId, lijinAmount, params);
        if (taoLiJinDTO == null) {
            throw new LiJinException(1, "淘宝API推广红包创建失败");
        }
        //添加账号的
        return addCreateSuccessRecord(uid, goodsId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO);
    }
    /**
     * 添加创建记录
     *
     * @param uid
     * @param goodsId
     * @param lijinAmount
     * @param title
     * @param num
     * @param taoLiJinDTO
     */
    private LiJinExpendRecord addCreateSuccessRecord(String uid, Long goodsId, BigDecimal lijinAmount, String title, int num, TaoLijinCreateResultDTO taoLiJinDTO) {
        Date now = new Date();
        // 保存记录
        LiJinExpendRecord record = new LiJinExpendRecord();
        record.setUid(uid);
        record.setGoodsId(goodsId + "");
        record.setTitle(params.getTitle());
        record.setNum(params.getNum());
        record.setTitle(title);
        record.setNum(num);
        record.setMoney(lijinAmount);
        record.setRightsId(taoLiJinDTO.getRightsId());
        record.setSendUrl(taoLiJinDTO.getSendUrl());
        record.setAccountId(taoLiJinDTO.getAccount().getId());
        record.setRightsId(taoLiJinDTO.getTaoLiJin().getRightsId());
        record.setSendUrl(taoLiJinDTO.getTaoLiJin().getSendUrl());
        record.setCreateTime(new Date());
        liJinExpendRecordMapper.insertSelective(record);
        //添加
        liJinProviderTaoKeAccountManager.createLijinSuccess(taoLiJinDTO.getAccount().getId(), goodsId, lijinAmount.multiply(new BigDecimal(num)), now);
        return record;
    }
@@ -285,7 +309,6 @@
    /**
     * 调用账号以及淘宝API
     *
     * @param uid
     * @param goodsId
     * @param lijinAmount
     * @param params
@@ -293,24 +316,22 @@
     * @throws LiJinGoodsException
     * @throws LiJinException
     */
    private TaoLiJinDTO executeTaoLiJinAPI(String uid, Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException {
    private TaoLijinCreateResultDTO executeTaoLiJin(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinGoodsException, LiJinException {
        // 查询供应商账号信息
        List<LiJinProviderAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID);
        List<LiJinProviderTaoKeAccount> listAccount = liJinProviderAccountService.listByProviderId(Constant.PROVIDER_DEFAULT_ID);
        if (listAccount == null || listAccount.size() == 0) {
            throw new LiJinException(1, "供应商账号不存在");
            throw new LiJinException(1, "没有可用的供应商账号");
        }
        TaoLiJinDTO taoLiJinDTO = null;
        // 遍历账号 用可使用账号
        for (LiJinProviderAccount account : listAccount) {
        for (LiJinProviderTaoKeAccount account : listAccount) {
            params.setAppkey(account.getAppKey());
            params.setAppsecret(account.getAppSecret());
            params.setPid(account.getPid());
            try {
                taoLiJinDTO = executeTaoLiJinAPI(uid, goodsId, lijinAmount, params);
                if (taoLiJinDTO != null) {
                    break;
                }
            } catch (LiJinException e) {
                //创建礼金
                return new TaoLijinCreateResultDTO(account, executeTaoLiJinAPI(goodsId, lijinAmount, params));
            } catch (LiJinAccountException e) {// 账号问题
                // 通知相应供应商  TODO
                executor.execute(new Runnable() {
                    @Override
@@ -318,25 +339,29 @@
                        LiJinProviderNotice notice = new LiJinProviderNotice();
                        notice.setRead(false);
                        notice.setProviderId(account.getProviderId());
                        if (e.getCode() == LiJinException.CODE_TLJ_NO_MONEY) {
                        if (e.getCode() == LiJinAccountException.CODE_TLJ_NO_MONEY) {
                            // 官方玩法钱包余额不足
                            notice.setTitle("玩法钱包余额不足");
                            notice.setContent("账号:" + account.getAccountName() + "官方玩法钱包余额不足");
                            notice.setType(NoticeTypeEnum.noMoney.name());
                            liJinProviderNoticeService.save(notice);
                        } else if (e.getCode() == LiJinException.CODE_TLJ_UN_PAID) {
                        } else if (e.getCode() == LiJinAccountException.CODE_TLJ_UN_PAID) {
                            // 未创建账户
                        }
                    }
                });
            }
        }
        throw new LiJinException(1, "没有可用的供应商账号");
    }
        // 创建淘礼金红包
    private TaoLiJinDTO executeTaoLiJinAPI(Long goodsId, BigDecimal lijinAmount, LiJinCreateParam params) throws LiJinException, LiJinGoodsException, LiJinAccountException {
        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()));
    }
    /**
     * 获取商品可创建的礼金金额
@@ -375,7 +400,7 @@
     *
     * @return
     */
    private LiJinCreateParam getLiJinCreateParam() {
    private LiJinCreateParam getLiJinCreateBaseParam() {
        Date date = new Date();
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat formatStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
service-lijin/src/main/resources/mapper/LiJinProviderAccountMapper.xml
File was deleted
service-lijin/src/main/resources/mapper/LiJinProviderTaoKeAccountMapper.xml
New file
@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ks.lijin.mapper.LiJinProviderAccountMapper">
    <resultMap id="BaseResultMap" type="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount">
        <id column="ac_id" property="id" jdbcType="BIGINT"/>
        <result column="ac_provider_id" property="providerId" jdbcType="BIGINT"/>
        <result column="ac_account_name" property="accountName" jdbcType="VARCHAR"/>
        <result column="ac_app_key" property="appKey" jdbcType="VARCHAR"/>
        <result column="ac_app_secret" property="appSecret" jdbcType="VARCHAR"/>
        <result column="ac_pid" property="pid" jdbcType="VARCHAR"/>
        <result column="ac_max_money" property="maxMoney" jdbcType="DECIMAL"/>
        <result column="ac_max_number" property="maxNumber" jdbcType="INTEGER"/>
        <result column="ac_today_consume_money" property="todayConsumeMoney" jdbcType="DECIMAL"/>
        <result column="ac_today_consume_number" property="todayConsumeNumber" jdbcType="INTEGER"/>
        <result column="ac_state" property="state" jdbcType="INTEGER"/>
        <result column="ac_creator_id" property="creatorId" jdbcType="BIGINT"/>
        <result column="ac_create_time" property="createTime" jdbcType="TIMESTAMP"/>
        <result column="ac_updator_id" property="updatorId" jdbcType="BIGINT"/>
        <result column="ac_update_time" property="updateTime" jdbcType="TIMESTAMP"/>
    </resultMap>
    <sql id="Base_Column_List">ac_id,ac_provider_id,ac_account_name,ac_app_key,ac_app_secret,ac_pid,ac_max_money,ac_max_number,ac_today_consume_money,ac_today_consume_number,ac_state,ac_creator_id,ac_create_time,ac_updator_id,ac_update_time</sql>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long">select
        <include refid="Base_Column_List"/>from tlj_provider_account where ac_id = #{id,jdbcType=BIGINT}
    </select>
    <select id="selectByPrimaryKeyForUpdate" resultMap="BaseResultMap" parameterType="java.lang.Long">select
        <include refid="Base_Column_List"/>from tlj_provider_account where ac_id = #{0} for update
    </select>
    <delete id="deleteByPrimaryKey"
            parameterType="java.lang.Long">delete from tlj_provider_account where ac_id = #{id,jdbcType=BIGINT}</delete>
    <insert id="insert" parameterType="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount" useGeneratedKeys="true"
            keyProperty="id">insert into tlj_provider_account (ac_id, ac_provider_id, ac_account_name, ac_app_key, ac_app_secret,ac_pid, ac_max_money, ac_max_number, ac_today_consume_money, ac_today_consume_number, ac_state, ac_creator_id, ac_create_time, ac_updator_id, ac_update_time)values (#{id,jdbcType=BIGINT}, #{providerId,jdbcType=BIGINT}, #{accountName,jdbcType=VARCHAR}, #{appKey,jdbcType=VARCHAR}, #{appSecret,jdbcType=VARCHAR}, #{pid,jdbcType=VARCHAR}, #{maxMoney,jdbcType=DECIMAL}, #{maxNumber,jdbcType=INTEGER}, #{todayConsumeMoney,jdbcType=DECIMAL}, #{todayConsumeNumber,jdbcType=INTEGER}, #{state,jdbcType=INTEGER}, #{creatorId,jdbcType=BIGINT}, #{createTime,jdbcType=TIMESTAMP}, #{updatorId,jdbcType=BIGINT}, #{updateTime,jdbcType=TIMESTAMP})</insert>
    <insert id="insertSelective" parameterType="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount" useGeneratedKeys="true"
            keyProperty="id">insert into tlj_provider_account
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">ac_id,</if>
            <if test="providerId != null">ac_provider_id,</if>
            <if test="accountName != null">ac_account_name,</if>
            <if test="appKey != null">ac_app_key,</if>
            <if test="appSecret != null">ac_app_secret,</if>
            <if test="pid != null">ac_pid,</if>
            <if test="maxMoney != null">ac_max_money,</if>
            <if test="maxNumber != null">ac_max_number,</if>
            <if test="todayConsumeMoney != null">ac_today_consume_money,</if>
            <if test="todayConsumeNumber != null">ac_today_consume_number,</if>
            <if test="state != null">ac_state,</if>
            <if test="creatorId != null">ac_creator_id,</if>
            <if test="createTime != null">ac_create_time,</if>
            <if test="updatorId != null">ac_updator_id,</if>
            <if test="updateTime != null">ac_update_time,</if>
        </trim>
        values
        <trim prefix="(" suffix=")" suffixOverrides=",">
            <if test="id != null">#{id,jdbcType=BIGINT},</if>
            <if test="providerId != null">#{providerId,jdbcType=BIGINT},</if>
            <if test="accountName != null">#{accountName,jdbcType=VARCHAR},</if>
            <if test="appKey != null">#{appKey,jdbcType=VARCHAR},</if>
            <if test="appSecret != null">#{appSecret,jdbcType=VARCHAR},</if>
            <if test="pid != null">#{pid,jdbcType=VARCHAR},</if>
            <if test="maxMoney != null">#{maxMoney,jdbcType=DECIMAL},</if>
            <if test="maxNumber != null">#{maxNumber,jdbcType=INTEGER},</if>
            <if test="todayConsumeMoney != null">#{todayConsumeMoney,jdbcType=DECIMAL},</if>
            <if test="todayConsumeNumber != null">#{todayConsumeNumber,jdbcType=INTEGER},</if>
            <if test="state != null">#{state,jdbcType=INTEGER},</if>
            <if test="creatorId != null">#{creatorId,jdbcType=BIGINT},</if>
            <if test="createTime != null">#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updatorId != null">#{updatorId,jdbcType=BIGINT},</if>
            <if test="updateTime != null">#{updateTime,jdbcType=TIMESTAMP},</if>
        </trim>
    </insert>
    <update id="updateByPrimaryKey"
            parameterType="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount">update tlj_provider_account set ac_provider_id = #{providerId,jdbcType=BIGINT},ac_account_name = #{accountName,jdbcType=VARCHAR},ac_app_key = #{appKey,jdbcType=VARCHAR},ac_app_secret = #{appSecret,jdbcType=VARCHAR},ac_pid = #{pid,jdbcType=VARCHAR},ac_max_money = #{maxMoney,jdbcType=DECIMAL},ac_max_number = #{maxNumber,jdbcType=INTEGER},ac_today_consume_money = #{todayConsumeMoney,jdbcType=DECIMAL},ac_today_consume_number = #{todayConsumeNumber,jdbcType=INTEGER},ac_state = #{state,jdbcType=INTEGER},ac_creator_id = #{creatorId,jdbcType=BIGINT},ac_create_time = #{createTime,jdbcType=TIMESTAMP},ac_updator_id = #{updatorId,jdbcType=BIGINT},ac_update_time = #{updateTime,jdbcType=TIMESTAMP}where ac_id = #{id,jdbcType=BIGINT}</update>
    <update id="updateByPrimaryKeySelective" parameterType="com.ks.lijin.pojo.DO.LiJinProviderTaoKeAccount">update
        tlj_provider_account
        <set>
            <if test="providerId != null">ac_provider_id=#{providerId,jdbcType=BIGINT},</if>
            <if test="accountName != null">ac_account_name=#{accountName,jdbcType=VARCHAR},</if>
            <if test="appKey != null">ac_app_key=#{appKey,jdbcType=VARCHAR},</if>
            <if test="appSecret != null">ac_app_secret=#{appSecret,jdbcType=VARCHAR},</if>
            <if test="pid != null">ac_pid=#{pid,jdbcType=VARCHAR},</if>
            <if test="maxMoney != null">ac_max_money=#{maxMoney,jdbcType=DECIMAL},</if>
            <if test="maxNumber != null">ac_max_number=#{maxNumber,jdbcType=INTEGER},</if>
            <if test="todayConsumeMoney != null">ac_today_consume_money=#{todayConsumeMoney,jdbcType=DECIMAL},</if>
            <if test="todayConsumeNumber != null">ac_today_consume_number=#{todayConsumeNumber,jdbcType=INTEGER},</if>
            <if test="state != null">ac_state=#{state,jdbcType=INTEGER},</if>
            <if test="creatorId != null">ac_creator_id=#{creatorId,jdbcType=BIGINT},</if>
            <if test="createTime != null">ac_create_time=#{createTime,jdbcType=TIMESTAMP},</if>
            <if test="updatorId != null">ac_updator_id=#{updatorId,jdbcType=BIGINT},</if>
            <if test="updateTime != null">ac_update_time=#{updateTime,jdbcType=TIMESTAMP},</if>
        </set>
        where ac_id = #{id,jdbcType=BIGINT}
    </update>
    <!-- 非模板 -->
    <sql id="listWhere">
        <if test="query.id!=null">and ac_id=#{query.id}</if>
        <if test="query.name!=null">and ac_account_name=#{query.name}</if>
        <if test="query.providerId!=null">and ac_provider_id=#{query.providerId}</if>
        <if test="query.state!=null">and ac_state=#{query.state}</if>
        <if test="query.appKey!=null">and ac_app_key=#{query.appKey}</if>
        <if test="query.appSecret!=null">and ac_app_secret=#{query.appSecret}</if>
    </sql>
    <select id="listByPage" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from tlj_provider_account
        where 1=1
        <include refid="listWhere"/>
        limit #{query.start},#{query.count}
    </select>
    <select id="count" resultType="java.lang.Long">
        select count(*) from tlj_provider_account
        where 1=1
        <include refid="listWhere"/>
    </select>
</mapper>
service-vip/src/main/java/com/ks/vip/service/remote/VipCenterRecordServiceImpl.java
@@ -37,9 +37,9 @@
        daoQuery.start = (page - 1) * pageSize;
        daoQuery.count = pageSize;
        List<VipCenterRecord> list = vipCenterRecordMapper.list(daoQuery);
        if (list == null || list.size() == 0)
        if (list == null || list.size() == 0) {
            return new ArrayList<>();
        }
        List<Long> orderIds = new ArrayList<>();
        for (VipCenterRecord record : list) {
            orderIds.add(record.getOrderId());
service-vip/src/main/resources/mapper/VipCenterRecordMapper.xml
@@ -47,7 +47,7 @@
    <select id="count" resultType="java.lang.Long">
        select
        <include refid="Base_Column_List"/>from vip_center_record where 1=1
       count(*) from vip_center_record where 1=1
        <include refid="listWhere"></include>
    </select>