admin
2021-07-05 2f071296b9e1d7a3aa6b6f3818196aaa40af3300
礼金bug修复
6个文件已修改
1个文件已添加
104 ■■■■■ 已修改文件
facade-lijin/src/main/java/com/ks/lijin/service/LijinCreateService.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lijin/src/main/java/com/ks/lijin/utils/taobao/TaoKeApiUtil.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/controller/TestController.java 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/service/manager/LijinGoodsManager.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-lijin/src/test/java/com/ks/LuckyTest.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
service-vip/src/main/java/com/ks/vip/service/remote/LijinBalanceServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
facade-lijin/src/main/java/com/ks/lijin/service/LijinCreateService.java
@@ -84,6 +84,15 @@
    public LiJinExpendRecord createTBLijin(String uid, Long auctionId)
            throws LiJinException, LiJinGoodsException, LiJinUserException, LiJinAmountException;
    /**
     * 获取今日剩余次数
     *
     * @param uid
     * @param registerDate
     * @return
     */
    public int getTodayLeftCount(String uid, Date registerDate);
    /**
     * 淘礼金创建
facade-lijin/src/main/java/com/ks/lijin/utils/taobao/TaoKeApiUtil.java
@@ -81,8 +81,11 @@
                            throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "官方玩法钱包余额不足");
                        case "ASSET_ACCOUNT_BALANCE_NOT_ENOUGH":
                            throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_MONEY, "账户预算不足");
                        case "FAIL_CHECK_MEMBER_DAILY_SEND_ITEM_ABOVE_LIMIT_ERROR":
                            throw new LiJinAccountException(LiJinAccountException.CODE_TLJ_NO_GOODS, "今日商品创建数已超上限,请您明日再试");
                        case "FAIL_CHECK_ITEM_DAILY_SEND_NUM_CHECK_ERROR":
                            throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_CREATED_FULL, "今日该商品淘礼金创建数已超上限,请您明日再试");
                        case "FAIL_CHECK_TLJ_MIN_FACE_ERROR":
                            throw new LiJinAmountException(LiJinAmountException.CODE_LIJIN_AMOUNT_OUTOFRANGE, msgInfo);
                        default:
service-lijin/src/main/java/com/ks/lijin/controller/TestController.java
New file
@@ -0,0 +1,31 @@
package com.ks.lijin.controller;
import com.ks.lijin.exception.LiJinException;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
@Controller
@RequestMapping("test")
public class TestController {
    @Resource
    private RedisTemplate redisTemplate;
    @ResponseBody
    @RequestMapping("redis")
    public String testRedis(String uid) throws Exception {
        String key = "createtblijin-" + uid;
        if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) {
            return "锁定成功";
        } else {
            throw new LiJinException(LiJinException.CODE_SERVER_BUSY, "服务器繁忙,请稍后再试");
        }
    }
}
service-lijin/src/main/java/com/ks/lijin/service/manager/LijinGoodsManager.java
@@ -43,8 +43,12 @@
        String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMdd");
        String key = String.format("lijingoodslimit-%s-%s", day, auctionId);
        logger.info("key值为:" + key);
        Object object = redisTemplate.opsForValue().get(key);
        if (object == null) {
        try {
            Object object = redisTemplate.opsForValue().get(key);
            if (object == null) {
                return true;
            }
        } catch (Exception e) {
            return true;
        }
        return false;
service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java
@@ -33,6 +33,8 @@
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
import org.apache.dubbo.config.annotation.Reference;
import org.apache.dubbo.config.annotation.Service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.task.TaskExecutor;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.transaction.annotation.Transactional;
@@ -51,6 +53,8 @@
@Service(version = "1.0")
public class LijinCreateServiceImpl implements LijinCreateService {
    Logger logger = LoggerFactory.getLogger(LijinCreateService.class);
    @Resource(name = "taskExecutor")
    private TaskExecutor executor;
@@ -195,6 +199,38 @@
        return money;
    }
    @Override
    public int getTodayLeftCount(String uid, Date registerDate) {
        VipGradePotence potence = vipCenterService.getVipPotence(uid);
        if (potence == null) {
            return 0;
        }
        // 每日最大次数判断
        Integer numMax = potence.getTaolijinMaxNumber();
        if (numMax == null || numMax.intValue() <= 0) {
            return 0;
        }
        // 使用次数已经超过最大次数
        int numExpend = liJinExpendRecordService.countTodayNumByExpend(uid);
        if (registerDate != null) {
            //判断新用户
            String newerHour = lijinConfigManager.getConfigValue("newer-hour");
            String dayPlusCount = lijinConfigManager.getConfigValue("newer-everyday-plus-lijin-count");
            if (!StringUtil.isNullOrEmpty(newerHour) && !StringUtil.isNullOrEmpty(dayPlusCount)) {
                //新用户每日附加次数
                if (System.currentTimeMillis() - registerDate.getTime() < 1000 * 60 * 60L * Integer.parseInt(dayPlusCount)) {
                    numMax += Integer.parseInt(dayPlusCount);
                }
            }
        }
        if (numMax.intValue() > numExpend) {
            return numMax.intValue() - numExpend;
        } else {
            return 0;
        }
    }
    @Override
    public boolean userCanCreateTBLijin(String uid, Date registerDate) throws LiJinUserException {
@@ -225,7 +261,7 @@
            if (!StringUtil.isNullOrEmpty(newerHour) && !StringUtil.isNullOrEmpty(dayPlusCount)) {
                //新用户每日附加次数
                if (System.currentTimeMillis() - registerDate.getTime() < 1000 * 60 * 60L * Integer.parseInt(dayPlusCount)) {
                    numExpend += Integer.parseInt(dayPlusCount);
                    numMax += Integer.parseInt(dayPlusCount);
                }
            }
        }
@@ -364,11 +400,15 @@
                if (e.getCode() == LiJinGoodsException.CODE_GOODS_CREATED_FULL) {
                    lijinGoodsManager.createdFullToday(auctionId, now);
                }
                redisTemplate.delete(key);
                logger.info("淘礼金创建,删除锁定成功1 key:{}",key);
                throw e;
            } finally {
                redisTemplate.delete(key);
                logger.info("淘礼金创建,删除锁定成功2 key:{}",key);
            }
        } else {
            logger.error("淘礼金创建,用户锁定失败 key:{}",key);
            throw new LiJinException(LiJinException.CODE_SERVER_BUSY, "服务器繁忙,请稍后再试");
        }
    }
@@ -402,7 +442,7 @@
        liJinProviderTaoKeAccountManager.createLijinSuccess(taoLiJinDTO.getAccount().getId(), goodsId, lijinAmount.multiply(new BigDecimal(num)), now);
        //礼金余额扣除
        try {
            lijinBalanceService.consumeLijin(uid, lijinAmount, "购物抵现", UserLijinRecord.Category.createGoodsLijin.name(), record.getId()+"");
            lijinBalanceService.consumeLijin(uid, lijinAmount, "购物抵现", UserLijinRecord.Category.createGoodsLijin.name(), record.getId() + "");
        } catch (LijinBalanceException e) {
            e.printStackTrace();
        }
service-lijin/src/test/java/com/ks/LuckyTest.java
@@ -14,6 +14,7 @@
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.TimeUnit;
@SpringBootTest(classes = LiJinApplication.class)
public class LuckyTest {
@@ -31,10 +32,8 @@
    @Test
    public void test() {
        String key = "lijinaccountmoney-20210526-1";
        redisTemplate.opsForValue().increment(key, 123);
        Object obj = redisTemplate.opsForValue().get("lijinaccountmoney-20210526-1");
        System.out.println(obj);
        String key = "createtblijin-tejia-6872490";
        System.out.println(redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS));
    }
    @Test
service-vip/src/main/java/com/ks/vip/service/remote/LijinBalanceServiceImpl.java
@@ -116,7 +116,7 @@
        daoQuery.category = UserLijinRecord.Category.createGoodsLijin.name();
        daoQuery.count = 100;
        daoQuery.maxCreateTime = new Date();
        daoQuery.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(daoQuery.minCreateTime.getTime(), "yyyyMMdd"), "yyyyMMdd"));
        daoQuery.minCreateTime = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(daoQuery.maxCreateTime.getTime(), "yyyyMMdd"), "yyyyMMdd"));
        List<UserLijinRecord> list = userLijinRecordDao.list(daoQuery);
        BigDecimal using = new BigDecimal(0);
        if (list != null) {