From 27920d99bc5925de113aa4f0c22dbba3dcea672f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 19 八月 2019 17:46:58 +0800
Subject: [PATCH] 增加通用模板免单内容
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java | 254 +++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 228 insertions(+), 26 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java
index f79dcc0..8370794 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java
@@ -1,31 +1,38 @@
package com.yeshi.fanli.service.impl.user;
+import java.math.BigDecimal;
+import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
+import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
-import org.yeshi.utils.JsonUtil;
import com.yeshi.fanli.dao.mybatis.user.TokenRecordMapper;
+import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinGiveRecord;
-import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.TokenRecord;
import com.yeshi.fanli.entity.bus.user.TokenRecord.TokenTypeEnum;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserSystemCoupon;
+import com.yeshi.fanli.entity.bus.user.UserSystemCouponGiveRecord;
import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
+import com.yeshi.fanli.exception.tlj.UserTaoLiJinOriginException;
import com.yeshi.fanli.exception.user.TokenRecordException;
-import com.yeshi.fanli.exception.user.UserSystemCouponException;
+import com.yeshi.fanli.exception.user.UserInfoExtraException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinGiveRecordService;
+import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
import com.yeshi.fanli.service.inter.user.TokenRecordService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
+import com.yeshi.fanli.service.inter.user.UserSystemCouponGiveRecordService;
import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
@@ -34,6 +41,9 @@
@Service
public class TokenRecordServiceImpl implements TokenRecordService {
+ @Resource(name = "taskExecutor")
+ private TaskExecutor executor;
+
@Resource
private TokenRecordMapper tokenRecordMapper;
@@ -52,6 +62,17 @@
@Resource
private UserInfoExtraService userInfoExtraService;
+ @Resource
+ private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService;
+
+ @Resource
+ private UserTaoLiJinOriginService userTaoLiJinOriginService;
+
+ @Resource
+ private UserOtherMsgNotificationService userOtherMsgNotificationService;
+
+
+
@Override
public void insertSelective(TokenRecord record) {
record.setCreateTime(new Date());
@@ -72,6 +93,15 @@
TokenRecord rokenRecord = tokenRecordMapper.getByToken(token);
if (rokenRecord == null)
throw new TokenRecordException(1, "鍙d护涓嶅瓨鍦�");
+
+ Date now = new Date();
+ Date endTimeToken = rokenRecord.getEndTime();
+ if (endTimeToken != null && endTimeToken.getTime() < now.getTime())
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+
+ Integer stateTtoken = rokenRecord.getState();
+ if (stateTtoken != null && stateTtoken == 1)
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
String nickName = null;
String portrait = null;
@@ -94,12 +124,9 @@
nickName = nickName.substring(0, 6) + "...";
}
- Integer stateTtoken = rokenRecord.getState();
- if (stateTtoken == 1)
- throw new TokenRecordException(1, "鍙d护宸插け鏁�");
-
TokenVO tokenVO = new TokenVO();
- tokenVO.setNickName(nickName);
+ tokenVO.setToken(token);
+ tokenVO.setNickName(nickName + "璧犻��");
tokenVO.setPortrait(portrait);
String identify = rokenRecord.getIdentify();
@@ -131,6 +158,7 @@
throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾鍏嶅崟鍒竇闇�瑕佺櫥褰曞悗棰嗗彇");
state = true;
+ tokenVO.setAmount(1);
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱");
@@ -165,6 +193,7 @@
throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾杩斿埄濂栧姳鍒竇闇�瑕佺櫥褰曞悗棰嗗彇");
state = true;
+ tokenVO.setAmount(1);
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱");
@@ -190,7 +219,10 @@
if (uid == null || uid <= 0)
throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾鎺ㄥ箍绾㈠寘]闇�瑕佺櫥褰曞悗棰嗗彇");
+ BigDecimal amount = giveRecord.getAmount();
+
state = true;
+ tokenVO.setAmount(Integer.parseInt(amount.setScale(0).toString()));
UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱");
@@ -212,7 +244,7 @@
}
@Override
- public void receiveToken(String token, Long uid) throws TokenRecordException {
+ public String receiveToken(String token, Long uid) throws TokenRecordException {
if (uid == null || uid <= 0)
throw new TokenRecordException(1, "鐢ㄦ埛鏈櫥褰�");
@@ -220,18 +252,34 @@
throw new TokenRecordException(1, "鍙d护涓嶈兘涓虹┖");
TokenRecord rokenRecord = tokenRecordMapper.getByToken(token);
- if (rokenRecord == null || rokenRecord.getState() == 1)
+ if (rokenRecord == null)
throw new TokenRecordException(1, "鍙d护宸插け鏁�");
-
+
+ Date now = new Date();
+ Date endTimeToken = rokenRecord.getEndTime();
+ if (endTimeToken != null && endTimeToken.getTime() < now.getTime())
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+
+ Integer stateTtoken = rokenRecord.getState();
+ if (stateTtoken != null && stateTtoken == 1)
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+
String identify = rokenRecord.getIdentify();
if (StringUtil.isNullOrEmpty(identify))
throw new TokenRecordException(1, "鍙d护鏍囪瘑涓嶅瓨鍦�");
- boolean receive = false;
+ Long giveUid = rokenRecord.getUid();
+ UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
+ if (userInfoExtra == null)
+ throw new TokenRecordException(1, "鐢ㄦ埛淇℃伅缂哄け");
+
+
+ String msg = "棰嗗彇鎴愬姛";
TokenTypeEnum tokenType = rokenRecord.getType();
if (tokenType == TokenTypeEnum.freeCoupon) {
- UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(Long.parseLong(identify));
+ long couponId = Long.parseLong(identify);
+ UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(couponId);
if (userCoupon == null)
throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦�");
@@ -249,21 +297,62 @@
throw new TokenRecordException(1, "鍙d护宸插け鏁�");
if (give && userCoupon.getState() == UserSystemCoupon.STATE_IN_USE) {
+ UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService.getRecordByUidAndCouponId(giveUid, couponId);
+ if (giveRecord == null )
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+
+ Date endTime = giveRecord.getEndTime();
+ if (endTime != null && endTime.getTime() < now.getTime())
+ throw new TokenRecordException(1, "鍝庡憖锛岃繖寮犲厤鍗曞埜宸插け鏁堜簡锛�");
+
try {
userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.freeCoupon.name(), UserSystemCoupon.SOURCE_GIVE);
} catch (Exception e) {
LogHelper.errorDetailInfo(e);
+ throw new TokenRecordException(1, "棰嗗彇澶辫触");
}
- // 棰嗗彇鎴愬姛
- receive = true;
+ // 鏇存柊璧犻�佸埜淇℃伅
+ userSystemCouponService.updateGiveRecord(uid, couponId, CouponTypeEnum.freeCoupon.name());
+
+ // 鏇存柊璧犻�佽褰�
+ giveRecord.setReceiveUid(uid);
+ giveRecord.setReceiveTime(new Date());
+ userSystemCouponGiveRecordService.updateByPrimaryKeySelective(giveRecord);
+
+ msg = "棰嗗彇鎴愬姛[鍏嶅崟鍒竇鎴愬姛锛岃鍒癧鎴戠殑-绂忓埄涓績]涓煡鐪�";
+ // 娑堟伅 + 闃熷憳
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH.mm");
+ boolean addTeam = addInviteTeam(uid, giveUid, userInfoExtra);
+ String beiZhu = "鏃�";
+ if (addTeam)
+ beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勪竴绾ч槦鍛�";
+
+ String userName = "鏃�";
+ UserInfo user = userInfoService.selectByPKey(uid);
+ if (user != null && !StringUtil.isNullOrEmpty(user.getNickName()))
+ userName = user.getNickName();
+
+ MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
+ msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON);
+ msgOther.setTitle("璧犻�佸厤鍗曞埜");
+ msgOther.setGiveType("浣犺禒閫佺殑鍏嶅崟鍒歌鎴愬姛棰嗗彇");
+ msgOther.setReceiveInfo("鏄电О: " + userName +" ID:" + uid);
+ msgOther.setGiveTime(sd.format(giveRecord.getGiveTime()));
+ msgOther.setReceiveTime(sd.format(new Date()));
+ userOtherMsgNotificationService.tokenGiveMsg(giveUid, beiZhu, msgOther);
+ }
+ });
} else {
throw new TokenRecordException(1, "鍙d护宸插け鏁�");
}
} else if (tokenType == TokenTypeEnum.rebatePercentCoupon) {
- UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(Long.parseLong(identify));
-
+ long couponId = Long.parseLong(identify);
+ UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(couponId);
if (userCoupon == null)
throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦�");
@@ -281,13 +370,55 @@
throw new TokenRecordException(1, "鍙d护宸插け鏁�");
if (give && userCoupon.getState() == UserSystemCoupon.STATE_IN_USE) {
+ UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService.getRecordByUidAndCouponId(giveUid, couponId);
+ if (giveRecord == null )
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+
+ Date endTime = giveRecord.getEndTime();
+ if (endTime != null && endTime.getTime() < now.getTime())
+ throw new TokenRecordException(1, "鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸插け鏁堜簡锛�");
+
try {
userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.rebatePercentCoupon.name(), UserSystemCoupon.SOURCE_GIVE);
} catch (Exception e) {
LogHelper.errorDetailInfo(e);
+ throw new TokenRecordException(1, "棰嗗彇澶辫触");
}
- // 棰嗗彇鎴愬姛
- receive = true;
+
+ // 鏇存柊璧犻�佸埜淇℃伅
+ userSystemCouponService.updateGiveRecord(uid, couponId, CouponTypeEnum.rebatePercentCoupon.name());
+
+ // 鏇存柊璧犻�佽褰�
+ giveRecord.setReceiveUid(uid);
+ giveRecord.setReceiveTime(new Date());
+ userSystemCouponGiveRecordService.updateByPrimaryKeySelective(giveRecord);
+
+ msg = "棰嗗彇鎴愬姛[杩斿埄濂栧姳鍒竇鎴愬姛锛岃鍒癧鎴戠殑-绂忓埄涓績]涓煡鐪�";
+ // 娑堟伅 + 闃熷憳
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH.mm");
+ boolean addTeam = addInviteTeam(uid, giveUid, userInfoExtra);
+ String beiZhu = "鏃�";
+ if (addTeam)
+ beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勪竴绾ч槦鍛�";
+
+ String userName = "鏃�";
+ UserInfo user = userInfoService.selectByPKey(uid);
+ if (user != null && !StringUtil.isNullOrEmpty(user.getNickName()))
+ userName = user.getNickName();
+
+ MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
+ msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON);
+ msgOther.setTitle("璧犻�佸鍔卞埜");
+ msgOther.setGiveType("浣犺禒閫佺殑濂栧姳鍒歌鎴愬姛棰嗗彇");
+ msgOther.setReceiveInfo("鏄电О: " + userName +" ID:" + uid);
+ msgOther.setGiveTime(sd.format(giveRecord.getGiveTime()));
+ msgOther.setReceiveTime(sd.format(new Date()));
+ userOtherMsgNotificationService.tokenGiveMsg(giveUid, beiZhu, msgOther);
+ }
+ });
} else {
throw new TokenRecordException(1, "鍙d护宸插け鏁�");
}
@@ -295,20 +426,91 @@
UserTaoLiJinGiveRecord giveRecord = userTaoLiJinGiveRecordService
.selectByPrimaryKey(Long.parseLong(identify));
if (giveRecord == null || giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_OVERDUE) {
- throw new TokenRecordException(1, "鍝庡憖锛屽搸鍛�锛屾帹骞跨孩鍖呭凡澶辨晥浜嗭紒");
+ throw new TokenRecordException(1, "鍝庡憖锛屾帹骞跨孩鍖呭凡澶辨晥浜嗭紒");
} else if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_RECEIVE) {
throw new TokenRecordException(1, "鍝庡憖锛屾帹骞跨孩鍖呭凡琚鍙栦簡锛�");
} else {
-
+ Date endTime = giveRecord.getEndTime();
+ if (endTime != null && endTime.getTime() < now.getTime())
+ throw new TokenRecordException(1, "鍝庡憖锛屾帹骞跨孩鍖呭凡澶辨晥浜嗭紒");
+
+ BigDecimal amount = giveRecord.getAmount();
+ try {
+ // 棰嗗彇
+ userTaoLiJinOriginService.receiveFriendsGive(uid, amount);
+
+ // 鏇存柊璁板綍
+ UserTaoLiJinGiveRecord updateRecord = new UserTaoLiJinGiveRecord();
+ updateRecord.setId(Long.parseLong(identify));
+ updateRecord.setReceiveTime(new Date());
+ updateRecord.setReceiveUid(uid);
+ updateRecord.setState(UserTaoLiJinGiveRecord.STATE_RECEIVE);
+ userTaoLiJinGiveRecordService.updateByPrimaryKeySelective(updateRecord);
+
+ msg = "棰嗗彇鎴愬姛[鎺ㄥ箍绾㈠寘]鎴愬姛锛岃鍒癧鎴戠殑-鎺ㄥ箍绾㈠寘]涓煡鐪�";
+
+ // 娑堟伅 + 闃熷憳
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH.mm");
+ boolean addTeam = addInviteTeam(uid, giveUid, userInfoExtra);
+ String beiZhu = "鏃�";
+ if (addTeam)
+ beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勪竴绾ч槦鍛�";
+
+ String userName = "鏃�";
+ UserInfo user = userInfoService.selectByPKey(uid);
+ if (user != null && !StringUtil.isNullOrEmpty(user.getNickName()))
+ userName = user.getNickName();
+
+ MsgOtherGiveContentDTO msgOther = new MsgOtherGiveContentDTO();
+ msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON);
+ msgOther.setTitle("璧犻�佹帹骞跨孩鍖�");
+ msgOther.setGiveType("浣犺禒閫佺殑鎺ㄥ箍绾㈠寘琚垚鍔熼鍙�");
+ msgOther.setReceiveInfo("鏄电О: " + userName +" ID:" + uid);
+ msgOther.setGiveTime(sd.format(giveRecord.getGiveTime()));
+ msgOther.setReceiveTime(sd.format(new Date()));
+ userOtherMsgNotificationService.tokenGiveMsg(giveUid, beiZhu, msgOther);
+ }
+ });
+
+ } catch (UserTaoLiJinOriginException e) {
+ e.printStackTrace();
+ }
}
} else {
throw new TokenRecordException(1, "鏃犲搴旂被鍨�");
}
-
- if (receive)
- throw new TokenRecordException(1, "棰嗗彇澶辫触鍟�");
- UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
-
+ return msg;
}
+
+
+ /**
+ * 鏈縺娲婚個璇风爜锛� 涓婁笅绾у叧绯荤‘绔�
+ * @param uid
+ * @param giveUid
+ * @param userInfoExtra
+ * @return
+ */
+ public boolean addInviteTeam(Long uid, Long giveUid, UserInfoExtra userInfoExtra) {
+ boolean invite = false;
+ if (StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
+ UserInfoExtra userInfoExtraGive = userInfoExtraService.getUserInfoExtra(giveUid);
+ if (userInfoExtraGive != null ) {
+ String inviteCode = userInfoExtraGive.getInviteCode();
+ if(!StringUtil.isNullOrEmpty(inviteCode)) {
+ try {
+ userInfoExtraService.activateInviteCode(uid, inviteCode);
+ invite = true;
+ } catch (UserInfoExtraException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ }
+ return invite;
+ }
+
}
--
Gitblit v1.8.0