From 880238957a973ecd9676237672276b0e99d31115 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期一, 29 六月 2020 13:55:28 +0800
Subject: [PATCH] 免单
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralExchangeServiceImpl.java | 223 ++++++++++++++++++++++++++++---------------------------
1 files changed, 112 insertions(+), 111 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralExchangeServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralExchangeServiceImpl.java
index 1444958..a70edfb 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralExchangeServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/integral/IntegralExchangeServiceImpl.java
@@ -20,6 +20,7 @@
import com.yeshi.fanli.entity.integral.IntegralExchange;
import com.yeshi.fanli.entity.integral.IntegralExchange.ExchangeTypeEnum;
import com.yeshi.fanli.entity.money.UserMoneyDetail;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
import com.yeshi.fanli.exception.integral.IntegralExchangeException;
import com.yeshi.fanli.log.LogHelper;
@@ -46,81 +47,83 @@
@Resource(name = "taskExecutor")
private TaskExecutor executor;
-
+
@Resource
private IntegralExchangeMapper integralExchangeMapper;
-
+
@Resource
private ConfigService configService;
-
+
@Resource
private UserInfoExtraService userInfoExtraService;
-
+
@Resource
private UserSystemCouponService userSystemCouponService;
-
+
@Resource
private UserTaoLiJinOriginService userTaoLiJinOriginService;
-
+
@Resource
private HongBaoV2Service hongBaoV2Service;
-
+
@Resource
private UserMoneyDetailService userMoneyDetailService;
-
+
@Resource
private UserInfoService userInfoService;
-
+
@Resource
private CodePublishRecordService codePublishRecordService;
-
+
@Resource
private IntegralExchangeRecordService integralExchangeRecordService;
-
+
@Resource
private UserOtherMsgNotificationService userOtherMsgNotificationService;
-
+
@Resource
private MsgInviteDetailService msgInviteDetailService;
-
+
@Resource
private IntegralDetailService integralDetailService;
-
@Override
- public List<IntegralExchange> listValidCache(long start, int count){
+ public IntegralExchange selectByPrimaryKey(Long id) {
+ return integralExchangeMapper.selectByPrimaryKey(id);
+ }
+
+ @Override
+ public List<IntegralExchange> listValidCache(long start, int count) {
return integralExchangeMapper.listValid(start, count);
}
-
+
@Override
- public Long countValid(){
+ public Long countValid() {
return integralExchangeMapper.countValid();
}
-
-
+
@Override
- public ExchangeTipVO verifyExchange(Long uid, Long id) throws IntegralExchangeException{
- if (uid == null || uid <= 0)
+ public ExchangeTipVO verifyExchange(Long uid, Long id) throws IntegralExchangeException {
+ if (uid == null || uid <= 0)
throw new IntegralExchangeException(1, "鐢ㄦ埛鏈櫥褰�");
-
- if (id == null || id <= 0)
+
+ if (id == null || id <= 0)
throw new IntegralExchangeException(1, "鍏戞崲id涓嶆纭�");
-
+
UserInfoExtraVO extraVO = userInfoExtraService.getInfoExtraVOByUid(uid);
if (extraVO == null)
throw new IntegralExchangeException(1, "鐢ㄦ埛鐩稿叧淇℃伅涓嶅瓨鍦�");
-
+
IntegralExchange exchange = integralExchangeMapper.selectByPrimaryKey(id);
if (exchange == null)
throw new IntegralExchangeException(1, "鍏戞崲鏂瑰紡涓嶅瓨鍦�");
-
+
Integer state = exchange.getState();
if (state == null || state != 1)
throw new IntegralExchangeException(1, "鍏戞崲娲诲姩鏈紑鍚�");
-
-
+
Integer goldCoin = exchange.getGoldCoin();
-
+
ExchangeTipVO exchangeTip = new ExchangeTipVO();
exchangeTip.setId(id);
ExchangeTypeEnum type = exchange.getType();
@@ -128,7 +131,7 @@
exchangeTip.setType(type.name());
return exchangeTip;
}
-
+
long exchangeCount = 0;
if (ExchangeTypeEnum.freeCouponBuy == type) {
exchangeCount = integralExchangeRecordService.countRecordByUid(id, uid, null);
@@ -136,7 +139,7 @@
throw new IntegralExchangeException(1, "鑷喘鍏嶅崟鍒革紝浠呰兘鍏戞崲涓�娆�");
}
}
-
+
Integer upperLimit = exchange.getUpperLimit();
if (upperLimit != null) { // 鏄惁鏈夐檺鍒舵瘡鏃ユ鏁�
Integer today = 1;
@@ -145,7 +148,7 @@
throw new IntegralExchangeException(1, "浠婃棩鍏戞崲宸茶揪涓婇檺");
}
}
-
+
Integer goldCoinHas = extraVO.getGoldCoin();
if (goldCoin.intValue() > goldCoinHas.intValue()) {
exchangeTip.setType("notEnough");
@@ -153,33 +156,40 @@
exchangeTip.setGoldCoin((goldCoin.intValue() - goldCoinHas.intValue()) + "閲戝竵");
return exchangeTip;
}
-
+
if (ExchangeTypeEnum.freeCouponBuy == type) {
exchangeTip.setTip("鑷喘鍏嶅崟鍒镐粎鑳借嚜宸变娇鐢紝涓旀瘡涓敤鎴稩D鍙兘鍏戞崲涓�娆°�俓r\n娉�:鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅");
} else if (ExchangeTypeEnum.freeCouponGive == type) {
- exchangeTip.setTip("璧犻�佸厤鍗曞埜鍏戞崲娆℃暟涓嶉檺锛岃禒閫佹鏁颁笉闄愶紝鍙楄禒浜鸿嫢鏃犫�滈個璇蜂汉鈥濇垚鍔熼鍙栧悗灏嗘垚涓轰綘鐨勪竴绾ч槦鍛樸�俓r\n娉�:鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅");
+ exchangeTip.setTip("璧犻�佸厤鍗曞埜鍏戞崲娆℃暟涓嶉檺锛岃禒閫佹鏁颁笉闄愶紝鍙楄禒浜鸿嫢鏃犫�滈個璇蜂汉鈥濇垚鍔熼鍙栧悗灏嗘垚涓轰綘鐨勭洿鎺ョ矇涓濄�俓r\n娉�:鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅");
} else if (ExchangeTypeEnum.rebatePercentCoupon == type) {
- exchangeTip.setTip("杩斿埄濂栧姳鍒稿厬鎹㈡鏁颁笉闄愶紝璧犻�佹鏁颁笉闄愶紝鍙楄禒浜鸿嫢鏃犫�滈個璇蜂汉鈥濇垚鍔熼鍙栧悗灏嗘垚涓轰綘鐨勪竴绾ч槦鍛樸�俓r\n娉�:鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅");
+ exchangeTip.setTip("杩斿埄濂栧姳鍒稿厬鎹㈡鏁颁笉闄愶紝璧犻�佹鏁颁笉闄愶紝鍙楄禒浜鸿嫢鏃犫�滈個璇蜂汉鈥濇垚鍔熼鍙栧悗灏嗘垚涓轰綘鐨勭洿鎺ョ矇涓濄�俓r\n娉�:鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅");
} else if (ExchangeTypeEnum.inviteCodePublish == type) {
- if(codePublishRecordService.countValidRecord(uid) > 0)
+ if (codePublishRecordService.countValidRecord(uid) > 0)
throw new IntegralExchangeException(1, "涓夊ぉ涔嬪唴涓嶅彲閲嶅鍏戞崲");
- exchangeTip.setInviteCode(extraVO.getInviteCode());
+
+ String inviteCode = null;
+ if (!StringUtil.isNullOrEmpty(extraVO.getInviteCodeVip())) {
+ inviteCode = extraVO.getInviteCodeVip();
+ } else {
+ inviteCode = extraVO.getInviteCode();
+ }
+ exchangeTip.setInviteCode(inviteCode);
exchangeTip.setTip("鍏戞崲鎴愬姛鍚庯紝灏嗗彂甯冧簬鈥滄縺娲婚個璇风爜鍏戞崲鍔熻兘涓�濓紝闇�婵�娲婚個璇风殑鐢ㄦ埛鍙敤閲戝竵鍏戞崲锛屾湰娆″睍绀烘湁鏁堟湡涓�3澶┿��");
} else if (ExchangeTypeEnum.taoLiJin == type) {
exchangeTip.setName(exchange.getAmount().setScale(0) + "鍏冩帹骞跨孩鍖�");
exchangeTip.setTip("娉�:鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-鎺ㄥ箍绾㈠寘鈥濅腑鏌ョ湅");
- } else if (ExchangeTypeEnum.cash == type) {
+ } else if (ExchangeTypeEnum.cash == type) {
exchangeTip.setName(exchange.getAmount().setScale(0) + "鍏冪幇閲戠孩鍖�");
exchangeTip.setTip("娉細鍏戞崲鎴愬姛鍚庤鍒扳�滄垜鐨�-璐︽埛浣欓鈥濅腑鏌ョ湅");
} else {
throw new IntegralExchangeException(1, "鍏戞崲鏂瑰紡涓嶅瓨鍦�");
}
-
+
exchangeTip.setGoldCoin(goldCoin + "閲戝竵");
exchangeTip.setType(type.name());
return exchangeTip;
}
-
+
@Override
public IntegralExchange exchange(Long uid, Long id) throws IntegralExchangeException {
if (uid == null || uid <= 0)
@@ -199,7 +209,7 @@
Integer state = exchange.getState();
if (state == null || state != 1)
throw new IntegralExchangeException(1, "鍏戞崲娲诲姩鏈紑鍚�");
-
+
long exchangeCount = 0;
ExchangeTypeEnum type = exchange.getType();
if (ExchangeTypeEnum.freeCouponBuy == type) {
@@ -208,66 +218,70 @@
throw new IntegralExchangeException(1, "鑷喘鍏嶅崟鍒革紝浠呰兘鍏戞崲涓�娆�");
}
}
-
+
Integer upperLimit = exchange.getUpperLimit();
- if (upperLimit != null) { // 鏄惁鏈夐檺鍒舵瘡鏃ユ鏁�
+ if (upperLimit != null) { // 鏄惁鏈夐檺鍒舵瘡鏃ユ鏁�
Integer today = 1;
exchangeCount = integralExchangeRecordService.countRecordByUid(id, uid, today);
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 = "";
String thingNum = "";
int couponNews = 0;
boolean once = false; // 鍏戞崲涓�娆℃槸鍚︽秷澶�
try {
if (ExchangeTypeEnum.freeCouponBuy == type) {
- List<UserSystemCoupon> listCoupon = userSystemCouponService.getFreeCouponByType(uid, CouponTypeEnum.freeCouponBuy.name());
+ List<UserSystemCoupon> listCoupon = userSystemCouponService.getFreeCouponByType(uid,
+ CouponTypeEnum.freeCouponBuy.name());
if (listCoupon != null && listCoupon.size() > 0)
throw new IntegralExchangeException(1, "鑷喘鍏嶅崟鍒革紝浠呰兘鍏戞崲涓�娆�");
-
+
thing = "鑷喘鍏嶅崟鍒�";
thingNum = "1寮�";
- userSystemCouponService.exchangeCoupon(uid, CouponTypeEnum.freeCouponBuy.name(), UserSystemCoupon.SOURCE_EXCHANGE, null);
- once = true;
+ userSystemCouponService.freeCouponWin(uid, CouponTypeEnum.freeCouponBuy, UserSystemCoupon.SOURCE_EXCHANGE,
+ 1, true);
+
+ once = true;
couponNews = 1;
} else if (ExchangeTypeEnum.freeCouponGive == type) {
thing = "璧犻�佸厤鍗曞埜";
thingNum = "1寮�";
- userSystemCouponService.exchangeCoupon(uid, CouponTypeEnum.freeCouponGive.name(), UserSystemCoupon.SOURCE_EXCHANGE, null);
+ userSystemCouponService.freeCouponWin(uid, CouponTypeEnum.freeCouponGive, UserSystemCoupon.SOURCE_EXCHANGE,
+ 1, true);
+
couponNews = 1;
} else if (ExchangeTypeEnum.rebatePercentCoupon == type) {
thing = "杩斿埄濂栧姳鍒�";
thingNum = "1寮�";
- String percent = configService.get("exchange_rebate_percent");
- userSystemCouponService.exchangeCoupon(uid, CouponTypeEnum.rebatePercentCoupon.name(), UserSystemCoupon.SOURCE_EXCHANGE, new BigDecimal(percent));
+ String percent = configService.get(ConfigKeyEnum.exchangeRebatePercent.getKey());
+ userSystemCouponService.rewardCouponWin(uid, UserSystemCoupon.SOURCE_EXCHANGE, 1,
+ true, new BigDecimal(percent));
couponNews = 1;
} else if (ExchangeTypeEnum.inviteCodePublish == type) {
thing = "閭�璇风爜鍙戝竷鍗�";
thingNum = "3澶�";
- if(codePublishRecordService.countValidRecord(uid) > 0)
+ if (codePublishRecordService.countValidRecord(uid) > 0)
throw new IntegralExchangeException(1, "涓夊ぉ涔嬪唴涓嶅彲閲嶅鍏戞崲");
codePublishRecordService.publishInviteCode(uid);
-
+
exchange.setNeedJump(true);
exchange.setBtnName("鍘绘煡鐪�");
} else if (ExchangeTypeEnum.taoLiJin == type) {
- thing = "鎺ㄥ箍绾㈠寘";
- thingNum = exchange.getAmount() + "鍏�";
- userTaoLiJinOriginService.exchangeMoney(uid, exchange.getAmount());
+ throw new IntegralExchangeException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒");
} else if (ExchangeTypeEnum.cash == type) {
thing = "鐜伴噾绾㈠寘";
BigDecimal money = exchange.getAmount();
thingNum = money + "鍏�";
-
+
// 1銆佹彃鍏ョ孩鍖呮暟鎹�
HongBaoV2 hongBaoV2 = new HongBaoV2();
hongBaoV2.setMoney(money);
@@ -288,30 +302,31 @@
} else {
throw new IntegralExchangeException(1, "鍏戞崲鏂瑰紡涓嶅瓨鍦�");
}
-
- exchangeCount ++;
+
+ exchangeCount++;
String progress = exchange.getProgress();
if (!StringUtil.isNullOrEmpty(progress))
- progress = progress.replace("{宸插厬鎹",exchangeCount + "").replace("{涓婇檺鏁皚", exchange.getUpperLimit() + "");
+ progress = progress.replace("{宸插厬鎹", exchangeCount + "").replace("{涓婇檺鏁皚",
+ exchange.getUpperLimit() + "");
exchange.setProgress(progress);
-
+
// 鍓╀綑閲戝竵
int surplus = goldCoinHas.intValue() - goldCoin.intValue();
exchange.setUserGoldCoin(surplus + "鏋�");
-
+
// 鏇存柊閲戝竵 + 绂忓埄涓績娑堟伅鏁�
- if (extraVO.getCouponNews() != null && extraVO.getCouponNews() > 0)
+ if (extraVO.getCouponNews() != null && extraVO.getCouponNews() > 0)
couponNews = couponNews + extraVO.getCouponNews();
-
+
UserInfoExtraVO extraUpdate = new UserInfoExtraVO();
extraUpdate.setId(extraVO.getId());
extraUpdate.setGoldCoin(surplus);
extraUpdate.setCouponNews(couponNews);
userInfoExtraService.saveUserInfoExtra(extraUpdate);
-
+
// 娣诲姞鍏戞崲璁板綍
integralExchangeRecordService.addExchangeRecord(id, uid);
-
+
// 鍔犲叆鏄庣粏
IntegralDetail detail = new IntegralDetail();
detail.setUid(uid);
@@ -319,24 +334,24 @@
detail.setMoney(-goldCoin);
detail.setCreateTime(new Date());
integralDetailService.insertSelective(detail);
-
- // 娑堟伅
+
+ // 娑堟伅
final String things = thing;
+ final String exNum = thingNum;
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);
+ if (ExchangeTypeEnum.inviteCodePublish == type) {
+ userOtherMsgNotificationService.goldCoinExChangeMsg(uid, goldCoin, surplus, things, "1寮�");
+ } else {
+ userOtherMsgNotificationService.goldCoinExChangeMsg(uid, goldCoin, surplus, things, exNum);
+ }
}
});
-
+
if (once) // 鍏戞崲涔嬪悗娑堝け
exchange = null;
-
+
return exchange;
} catch (IntegralExchangeException e) {
throw new IntegralExchangeException(1, e.getMsg());
@@ -345,10 +360,9 @@
throw new IntegralExchangeException(1, "鍏戞崲寮傚父");
}
}
-
-
+
@Override
- public ExchangeTipVO verifyInviteCode(Long uid, Long id) throws IntegralExchangeException{
+ public ExchangeTipVO verifyInviteCode(Long uid, Long id) throws IntegralExchangeException {
if (uid == null || uid <= 0)
throw new IntegralExchangeException(1, "鐢ㄦ埛鏈櫥褰�");
@@ -359,9 +373,9 @@
if (extraVO == null)
throw new IntegralExchangeException(1, "鐢ㄦ埛鐩稿叧淇℃伅涓嶅瓨鍦�");
- if (!StringUtil.isNullOrEmpty(extraVO.getInviteCode()))
+ if (!StringUtil.isNullOrEmpty(extraVO.getInviteCode()))
throw new IntegralExchangeException(1, "閭�璇风爜宸叉縺娲伙紝鏃犻渶鍏戞崲");
-
+
CodePublishRecord record = codePublishRecordService.selectByPrimaryKey(id);
if (record == null)
throw new IntegralExchangeException(1, "鍏戞崲璁板綍涓嶅瓨鍦�");
@@ -379,15 +393,14 @@
exchangeTip.setTip("褰撳墠璐︽埛涓彲鐢ㄩ噾甯佷笉瓒筹紝鏃犳硶鍏戞崲璇ュ鍝侊紒");
exchangeTip.setGoldCoin((goldCoin.intValue() - goldCoinHas.intValue()) + "閲戝竵");
return exchangeTip;
- }
-
+ }
+
exchangeTip.setTip("娉細鍏戞崲鎴愬姛鍚庤鍒扳�滄秷鎭�-绯荤粺娑堟伅鈥濇煡鐪�");
exchangeTip.setGoldCoin(goldCoin + "閲戝竵");
exchangeTip.setType(ExchangeTypeEnum.inviteCodeActivate.name());
return exchangeTip;
}
-
-
+
@Override
public String exchangeInviteCode(Long uid, Long id) throws IntegralExchangeException {
if (uid == null || uid <= 0)
@@ -400,9 +413,9 @@
if (extraVO == null)
throw new IntegralExchangeException(1, "鐢ㄦ埛鐩稿叧淇℃伅涓嶅瓨鍦�");
- if (!StringUtil.isNullOrEmpty(extraVO.getInviteCode()))
+ if (!StringUtil.isNullOrEmpty(extraVO.getInviteCode()))
throw new IntegralExchangeException(1, "閭�璇风爜宸叉縺娲伙紝鏃犻渶鍏戞崲");
-
+
CodePublishRecord record = codePublishRecordService.selectByPrimaryKey(id);
if (record == null)
throw new IntegralExchangeException(1, "鍏戞崲璁板綍涓嶅瓨鍦�");
@@ -415,24 +428,23 @@
Integer goldCoinHas = extraVO.getGoldCoin();
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();
-
+
// 鍓╀綑閲戝竵
int surplus = goldCoinHas.intValue() - goldCoin.intValue();
-
+
// 鏇存柊閲戝竵
UserInfoExtraVO extraUpdate = new UserInfoExtraVO();
extraUpdate.setId(extraVO.getId());
extraUpdate.setGoldCoin(surplus);
userInfoExtraService.saveUserInfoExtra(extraUpdate);
-
+
// 鍔犲叆鏄庣粏
IntegralDetail detail = new IntegralDetail();
detail.setUid(uid);
@@ -440,34 +452,23 @@
detail.setMoney(-goldCoin);
detail.setCreateTime(new Date());
integralDetailService.insertSelective(detail);
-
+
// 娣诲姞鍏戞崲璁板綍
integralExchangeRecordService.addExchangeRecord(exchange.getId(), 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);
+ userOtherMsgNotificationService.goldCoinExChangeMsg(uid, goldCoin, surplus, "閭�璇风爜婵�娲诲崱", "1寮�");
}
});
-
+
return inviteCode;
} catch (Exception e) {
LogHelper.errorDetailInfo(e);
throw new IntegralExchangeException(1, "鍏戞崲澶辫触");
}
}
+
}
--
Gitblit v1.8.0