From 70ed38bf585d3d5544778a477556b2f1a56be64b Mon Sep 17 00:00:00 2001 From: admin <2780501319@qq.com> Date: 星期一, 05 七月 2021 23:54:49 +0800 Subject: [PATCH] 日志修改 --- service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java | 124 ++++++++++++++++++++++++++++++++++++++--- 1 files changed, 114 insertions(+), 10 deletions(-) diff --git a/service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java b/service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java index 2d6d175..c9f7304 100644 --- a/service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java +++ b/service-lijin/src/main/java/com/ks/lijin/service/remote/LijinCreateServiceImpl.java @@ -16,20 +16,28 @@ import com.ks.lijin.service.LiJinProviderNoticeService; import com.ks.lijin.service.LijinCreateService; import com.ks.lijin.service.manager.LiJinProviderTaoKeAccountManager; +import com.ks.lijin.service.manager.LijinConfigManager; +import com.ks.lijin.service.manager.LijinDangerGoodsManager; import com.ks.lijin.service.manager.LijinGoodsManager; import com.ks.lijin.util.Constant; import com.ks.lijin.utils.taobao.TaoBaoUtil; import com.ks.lijin.utils.taobao.TaoKeApiUtil; +import com.ks.vip.exception.LijinBalanceException; +import com.ks.vip.pojo.DO.UserLijinRecord; import com.ks.vip.pojo.DO.VipGradePotence; import com.ks.vip.pojo.Enums.VIPEnum; +import com.ks.vip.service.LijinBalanceService; import com.ks.vip.service.VipCenterService; import com.ks.vip.service.VipGradePotenceService; import com.ks.vip.service.VipGradeService; 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.data.redis.core.StringRedisTemplate; import org.springframework.transaction.annotation.Transactional; import org.yeshi.utils.MoneyBigDecimalUtil; import org.yeshi.utils.StringUtil; @@ -47,6 +55,8 @@ @Service(version = "1.0") public class LijinCreateServiceImpl implements LijinCreateService { + Logger logger = LoggerFactory.getLogger(LijinCreateService.class); + @Resource(name = "taskExecutor") private TaskExecutor executor; @@ -59,14 +69,17 @@ @Resource private LiJinProviderAccountService liJinProviderAccountService; - @Reference(version = "1.0") + @Reference(version = "1.0", check = false) private VipCenterService vipCenterService; - @Reference(version = "1.0") + @Reference(version = "1.0", check = false) private VipGradePotenceService vipGradePotenceService; - @Reference(version = "1.0") + @Reference(version = "1.0", check = false) private VipGradeService vipGradeService; + + @Reference(version = "1.0", check = false) + private LijinBalanceService lijinBalanceService; @Resource private LiJinExpendRecordService liJinExpendRecordService; @@ -75,10 +88,16 @@ private LiJinProviderTaoKeAccountManager liJinProviderTaoKeAccountManager; @Resource - private RedisTemplate redisTemplate; + private StringRedisTemplate redisTemplate; @Resource private LijinGoodsManager lijinGoodsManager; + + @Resource + private LijinDangerGoodsManager lijinDangerGoodsManager; + + @Resource + private LijinConfigManager lijinConfigManager; @Override public List<MoneyInfo> getMoneyInfo(String uid, List<TaoBaoGoodsBrief> goodsBriefList) { @@ -182,11 +201,45 @@ } @Override - public boolean userCanCreateTBLijin(String uid) throws LiJinUserException { + 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 { VipGradePotence potence = vipCenterService.getVipPotence(uid); if (potence == null) { return false; } + // 姣忔棩鏈�澶ф鏁板垽鏂� Integer numMax = potence.getTaolijinMaxNumber(); @@ -202,6 +255,18 @@ // 浣跨敤娆℃暟宸茬粡瓒呰繃鏈�澶ф鏁� 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) { throw new LiJinUserException(LiJinUserException.CODE_USER_CREATE_NUM_LIMIT, "鐢ㄦ埛鍒涘缓娣樼ぜ閲戠殑娆℃暟瓒呴檺"); } @@ -225,6 +290,14 @@ if (potence == null) { return false; } + //鏌ヨ绀奸噾浣欓 + BigDecimal balance = lijinBalanceService.getBalance(uid); + if (balance != null) { + if (money.compareTo(balance) > 0) { + throw new LiJinUserException(LiJinUserException.CODE_USER_BALANCE_NOT_ENOUGH, "绀奸噾浣欓涓嶈冻"); + } + } + // 姣忔棩鏈�澶ф鏁板垽鏂� Integer numMax = potence.getTaolijinMaxNumber(); @@ -263,8 +336,20 @@ @Override @Transactional(rollbackFor = Exception.class) public LiJinExpendRecord createTBLijin(String uid, Long goodsId) throws LiJinException, LiJinGoodsException, LiJinUserException, LiJinAmountException { + return createTBLijin(uid, null, goodsId); + } - userCanCreateTBLijin(uid); + @Override + public LiJinExpendRecord createTBLijin(String uid, Date registerDate, Long auctionId) throws LiJinException, LiJinGoodsException, LiJinUserException, LiJinAmountException { + + //鐢ㄦ埛鏄惁鏈夊垱寤烘潈闄� + userCanCreateTBLijin(uid, registerDate); + //鍟嗗搧鏄惁鍦ㄥ嵄闄╁晢鍝佷腑 + boolean dangerous = lijinDangerGoodsManager.isDangerous(auctionId + "", 1); + if (dangerous) { + throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_NOT_SUPPORT, "璇ュ晢鍝佹殏鏃犳硶鍒涘缓绀奸噾"); + } + // 鑾峰彇鐢ㄦ埛绛夌骇 VIPEnum vipRank = vipCenterService.getVIPEnumByUid(uid); @@ -279,7 +364,7 @@ //娣樼ぜ閲戝垱寤� TaoBaoGoodsBrief goods = null; try { - goods = TaoKeApiUtil.searchGoodsDetail(goodsId); + goods = TaoKeApiUtil.searchGoodsDetail(auctionId); } catch (TaoBaoGoodsDownException e) { throw new LiJinGoodsException(LiJinGoodsException.CODE_GOODS_OFFLINE, "鍟嗗搧涓嬬嚎"); } @@ -290,6 +375,14 @@ // 鍒涘缓鐨勬窐绀奸噾-閲戦 BigDecimal lijinAmount = getTBLijinAmount(goods, vipRank); + //鏌ヨ绀奸噾浣欓 + BigDecimal balance = lijinBalanceService.getBalance(uid); + if (balance != null && lijinAmount != null) { + if (lijinAmount.compareTo(balance) > 0) { + throw new LiJinUserException(LiJinUserException.CODE_USER_BALANCE_NOT_ENOUGH, "绀奸噾浣欓涓嶈冻"); + } + } + // 鎵ц鍒涘缓娣樼ぜ閲� LiJinCreateParam params = getLiJinCreateBaseParam(); @@ -298,21 +391,25 @@ if (redisTemplate.opsForValue().setIfAbsent(key, "1", 120, TimeUnit.SECONDS)) { Date now = new Date(); try { - TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(goodsId, lijinAmount, params); + TaoLijinCreateResultDTO taoLiJinDTO = executeTaoLiJin(auctionId, lijinAmount, params); if (taoLiJinDTO == null) { throw new LiJinException(1, "娣樺疂API鎺ㄥ箍绾㈠寘鍒涘缓澶辫触"); } //娣诲姞璐﹀彿鐨� - return addCreateSuccessRecord(uid, goodsId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); + return addCreateSuccessRecord(uid, auctionId, lijinAmount, params.getTitle(), params.getNum(), taoLiJinDTO); } catch (LiJinGoodsException e) { if (e.getCode() == LiJinGoodsException.CODE_GOODS_CREATED_FULL) { - lijinGoodsManager.createdFullToday(goodsId, now); + 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, "鏈嶅姟鍣ㄧ箒蹇欙紝璇风◢鍚庡啀璇�"); } } @@ -344,6 +441,13 @@ liJinExpendRecordMapper.insertSelective(record); //娣诲姞 liJinProviderTaoKeAccountManager.createLijinSuccess(taoLiJinDTO.getAccount().getId(), goodsId, lijinAmount.multiply(new BigDecimal(num)), now); + //绀奸噾浣欓鎵i櫎 + try { + lijinBalanceService.consumeLijin(uid, lijinAmount, "璐墿鎶电幇", UserLijinRecord.Category.createGoodsLijin.name(), record.getId() + ""); + } catch (LijinBalanceException e) { + e.printStackTrace(); + } + return record; } -- Gitblit v1.8.0