From df300df7832cc3d24f1b09297998e8bee8cfd126 Mon Sep 17 00:00:00 2001 From: yujian <yujian@123.com> Date: 星期二, 20 八月 2019 18:06:43 +0800 Subject: [PATCH] 签到弹框bug --- fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralExchangeServiceImpl.java | 129 ++++++++++++++++++++++++++++++++++++------ 1 files changed, 110 insertions(+), 19 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralExchangeServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralExchangeServiceImpl.java index 220ef2c..3a2bc6e 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralExchangeServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/integral/IntegralExchangeServiceImpl.java @@ -6,9 +6,11 @@ import javax.annotation.Resource; +import org.springframework.core.task.TaskExecutor; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.mybatis.integral.IntegralExchangeMapper; +import com.yeshi.fanli.dto.msg.MsgOtherExchangeContentDTO; import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.UserInfo; import com.yeshi.fanli.entity.bus.user.UserInfoExtra; @@ -21,7 +23,10 @@ import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.hongbao.HongBaoV2Service; import com.yeshi.fanli.service.inter.integral.CodePublishRecordService; +import com.yeshi.fanli.service.inter.integral.IntegralExchangeRecordService; import com.yeshi.fanli.service.inter.integral.IntegralExchangeService; +import com.yeshi.fanli.service.inter.msg.MsgInviteDetailService; +import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService; import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoService; @@ -35,6 +40,9 @@ @Service public class IntegralExchangeServiceImpl implements IntegralExchangeService { + @Resource(name = "taskExecutor") + private TaskExecutor executor; + @Resource private IntegralExchangeMapper integralExchangeMapper; @@ -58,6 +66,15 @@ @Resource private CodePublishRecordService codePublishRecordService; + + @Resource + private IntegralExchangeRecordService integralExchangeRecordService; + + @Resource + private UserOtherMsgNotificationService userOtherMsgNotificationService; + + @Resource + private MsgInviteDetailService msgInviteDetailService; @@ -100,6 +117,14 @@ return exchangeTip; } + Integer upperLimit = exchange.getUpperLimit(); + if (upperLimit != null) { // 鏄惁鏈夐檺鍒舵瘡鏃ユ鏁� + long exchangeCount = integralExchangeRecordService.countRecordByUid(id, uid); + if (exchangeCount >= upperLimit) { + throw new IntegralExchangeException(1, "浠婃棩鍏戞崲宸茶揪涓婇檺"); + } + } + Integer goldCoinHas = extraVO.getGoldCoin(); if (goldCoin.intValue() > goldCoinHas.intValue()) { exchangeTip.setType("notEnough"); @@ -120,10 +145,10 @@ exchangeTip.setInviteCode(extraVO.getInviteCode()); exchangeTip.setTip("鍏戞崲鎴愬姛鍚庯紝灏嗗彂甯冧簬鈥滄縺娲婚個璇风爜鍏戞崲鍔熻兘涓�濓紝闇�婵�娲婚個璇风殑鐢ㄦ埛鍙敤閲戝竵鍏戞崲锛屾湰娆″睍绀烘湁鏁堟湡涓�3澶┿��"); } else if (ExchangeTypeEnum.taoLiJin == type) { - exchangeTip.setName(exchange.getAmount() + "鍏冩帹骞跨孩鍖�"); + exchangeTip.setName(exchange.getAmount().setScale(0) + "鍏冩帹骞跨孩鍖�"); exchangeTip.setTip("娉�:鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-鎺ㄥ箍绾㈠寘鈥濅腑鏌ョ湅"); } else if (ExchangeTypeEnum.cash == type) { - exchangeTip.setName(exchange.getAmount() + "鍏冪幇閲戠孩鍖�"); + exchangeTip.setName(exchange.getAmount().setScale(0) + "鍏冪幇閲戠孩鍖�"); exchangeTip.setTip("娉細鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-璐︽埛浣欓鈥濅腑鏌ョ湅"); } else { throw new IntegralExchangeException(1, "鍏戞崲鏂瑰紡涓嶅瓨鍦�"); @@ -150,36 +175,44 @@ if (exchange == null) throw new IntegralExchangeException(1, "鍏戞崲鏂瑰紡涓嶅瓨鍦�"); + long exchangeCount = 0; + Integer upperLimit = exchange.getUpperLimit(); + if (upperLimit != null) { // 鏄惁鏈夐檺鍒舵瘡鏃ユ鏁� + exchangeCount = integralExchangeRecordService.countRecordByUid(id, uid); + if (exchangeCount >= upperLimit) { + throw new IntegralExchangeException(1, "浠婃棩鍏戞崲宸茶揪涓婇檺"); + } + } + Integer goldCoin = exchange.getGoldCoin(); Integer goldCoinHas = extraVO.getGoldCoin(); if (goldCoin.intValue() > goldCoinHas.intValue()) { throw new IntegralExchangeException(1, "褰撳墠璐︽埛涓彲鐢ㄩ噾甯佷笉瓒筹紝鏃犳硶鍏戞崲璇ュ鍝侊紒"); } + String thing = ""; try { ExchangeTypeEnum type = exchange.getType(); if (ExchangeTypeEnum.freeCouponBuy == type) { - // 鑷喘鍏嶅崟鍒� - userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, false, null); + thing = "鑷喘鍏嶅崟鍒�"; + userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, null); } else if (ExchangeTypeEnum.freeCouponGive == type) { - // 璧犻�佸厤鍗曞埜 - userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, true, null); + thing = "璧犻�佸厤鍗曞埜"; + userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, null); } else if (ExchangeTypeEnum.rebatePercentCoupon == type) { - // 濂栧姳鍏嶅崟鍒� - userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, true, - new BigDecimal(10)); + thing = "濂栧姳鍏嶅崟鍒�"; + userSystemCouponService.exchangeCoupon(uid, type.name(), UserSystemCoupon.SOURCE_EXCHANGE, new BigDecimal(10)); } else if (ExchangeTypeEnum.inviteCodePublish == type) { - // 閭�璇风爜鍙戝竷 + thing = "閭�璇风爜鍙戝竷鍗�"; if(codePublishRecordService.countValidRecord(uid) > 0) throw new IntegralExchangeException(1, "涓夊ぉ涔嬪唴涓嶅彲閲嶅鍏戞崲"); codePublishRecordService.publishInviteCode(uid); } else if (ExchangeTypeEnum.taoLiJin == type) { - // 鎺ㄥ箍绾㈠寘 + thing = "鎺ㄥ箍绾㈠寘"; userTaoLiJinOriginService.exchangeMoney(uid, exchange.getAmount()); } else if (ExchangeTypeEnum.cash == type) { - // 鐜伴噾绾㈠寘 + thing = "鐜伴噾绾㈠寘"; BigDecimal money = exchange.getAmount(); - // 1銆佹彃鍏ョ孩鍖呮暟鎹� HongBaoV2 hongBaoV2 = new HongBaoV2(); hongBaoV2.setMoney(money); @@ -201,23 +234,45 @@ throw new IntegralExchangeException(1, "鍏戞崲鏂瑰紡涓嶅瓨鍦�"); } + exchangeCount ++; String progress = exchange.getProgress(); if (!StringUtil.isNullOrEmpty(progress)) - progress = progress.replace("{宸插厬鎹", 1 + "").replace("{涓婇檺鏁皚", exchange.getUpperLimit() + ""); + progress = progress.replace("{宸插厬鎹",exchangeCount + "").replace("{涓婇檺鏁皚", exchange.getUpperLimit() + ""); exchange.setProgress(progress); + + // 鍓╀綑閲戝竵 + int surplus = goldCoinHas.intValue() - goldCoin.intValue(); + exchange.setUserGoldCoin(surplus + "鏋�"); // 鏇存柊閲戝竵 UserInfoExtraVO extraUpdate = new UserInfoExtraVO(); extraUpdate.setId(extraVO.getId()); - extraUpdate.setGoldCoin(goldCoinHas.intValue() - goldCoin.intValue()); + extraUpdate.setGoldCoin(surplus); userInfoExtraService.saveUserInfoExtra(extraUpdate); + + // 娣诲姞鍏戞崲璁板綍 + integralExchangeRecordService.addExchangeRecord(id, uid); + + // 娑堟伅 + final String things = thing; + executor.execute(new Runnable() { + @Override + public void run() { + MsgOtherExchangeContentDTO msgOther = new MsgOtherExchangeContentDTO(); + msgOther.setState("閲戝竵鍏戞崲鎴愬姛"); + msgOther.setExpend(goldCoin + "閲戝竵"); + msgOther.setTotalGold(surplus + "閲戝竵"); + msgOther.setThing(things); + userOtherMsgNotificationService.exchangeMsg(uid, "", msgOther); + } + }); + return exchange; } catch (Exception e) { LogHelper.errorDetailInfo(e); throw new IntegralExchangeException(1, "鍏戞崲寮傚父"); } } - @Override @@ -286,19 +341,55 @@ Integer goldCoin = exchange.getGoldCoin(); Integer goldCoinHas = extraVO.getGoldCoin(); - if (goldCoin.intValue() > goldCoinHas.intValue()) { + if (goldCoin.intValue() > goldCoinHas.intValue()) throw new IntegralExchangeException(1, "褰撳墠璐︽埛涓彲鐢ㄩ噾甯佷笉瓒筹紝鏃犳硶鍏戞崲璇ュ鍝侊紒"); - } + try { UserInfoExtraVO inviteExtra = userInfoExtraService.getInfoExtraVOByUid(record.getUid()); if (inviteExtra == null || StringUtil.isNullOrEmpty(inviteExtra.getInviteCode())) throw new IntegralExchangeException(1, "鍏戞崲澶辫触锛岃鐢ㄦ埛閭�璇风爜涓嶅瓨鍦�"); + String inviteCode = inviteExtra.getInviteCode(); userInfoExtraService.activateInviteCode(uid, inviteExtra.getInviteCode()); + + // 鍓╀綑閲戝竵 + int surplus = goldCoinHas.intValue() - goldCoin.intValue(); + + // 鏇存柊閲戝竵 + UserInfoExtraVO extraUpdate = new UserInfoExtraVO(); + extraUpdate.setId(extraVO.getId()); + extraUpdate.setGoldCoin(surplus); + userInfoExtraService.saveUserInfoExtra(extraUpdate); + + + // 娣诲姞鍏戞崲璁板綍 + integralExchangeRecordService.addExchangeRecord(id, uid); + + // 娑堟伅 + executor.execute(new Runnable() { + @Override + public void run() { + UserInfo userInfo = userInfoService.selectByPKey(record.getUid()); + if (userInfo == null) + return; + + String beizu = "閭�璇蜂汉锛�" + userInfo.getNickName() + "锛岄個璇风爜锛�" + inviteCode; + + MsgOtherExchangeContentDTO msgOther = new MsgOtherExchangeContentDTO(); + msgOther.setState("閲戝竵鍏戞崲鎴愬姛"); + msgOther.setExpend(goldCoin + "閲戝竵"); + msgOther.setTotalGold(surplus + "閲戝竵"); + msgOther.setThing("閭�璇风爜婵�娲诲崱"); + + userOtherMsgNotificationService.exchangeMsg(uid, beizu, msgOther); + } + }); } catch (Exception e) { LogHelper.errorDetailInfo(e); - throw new IntegralExchangeException(1, "鍏戞崲寮傚父"); + throw new IntegralExchangeException(1, "鍏戞崲澶辫触"); } + + } } -- Gitblit v1.8.0