From 2f5935ed11672046c37f733d855214f6147b4b58 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 28 三月 2022 11:33:19 +0800
Subject: [PATCH] TDMQ兼容
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java | 1219 ++++++++++++++++++++++++++-------------------------------
1 files changed, 550 insertions(+), 669 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 eef296b..45eaf7f 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,669 +1,550 @@
-package com.yeshi.fanli.service.impl.user;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-
-import javax.annotation.Resource;
-
-import org.springframework.context.annotation.Lazy;
-import org.springframework.core.task.TaskExecutor;
-import org.springframework.stereotype.Service;
-
-import com.google.gson.Gson;
-import com.yeshi.fanli.dao.mybatis.user.TokenRecordMapper;
-import com.yeshi.fanli.dto.msg.MsgInviteContentDTO;
-import com.yeshi.fanli.dto.msg.MsgOtherGiveContentDTO;
-import com.yeshi.fanli.dto.msg.MsgRedPackGiveContentDTO;
-import com.yeshi.fanli.entity.accept.AcceptData;
-import com.yeshi.fanli.entity.bus.msg.MsgMoneyDetail.MsgTypeMoneyTypeEnum;
-import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinGiveRecord;
-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.bus.user.UserSystemCouponRecord;
-import com.yeshi.fanli.entity.redpack.RedPackGiveRecord;
-import com.yeshi.fanli.entity.system.SystemCoupon;
-import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
-import com.yeshi.fanli.exception.redpack.RedPackGiveRecordException;
-import com.yeshi.fanli.exception.user.TokenRecordException;
-import com.yeshi.fanli.exception.user.UserInfoExtraException;
-import com.yeshi.fanli.log.LogHelper;
-import com.yeshi.fanli.service.inter.config.SystemCouponService;
-import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
-import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
-import com.yeshi.fanli.service.inter.redpack.RedPackGiveRecordService;
-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.UserSystemCouponRecordService;
-import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
-import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
-import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
-import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService;
-import com.yeshi.fanli.util.Constant;
-import com.yeshi.fanli.util.StringUtil;
-import com.yeshi.fanli.util.TokenUtil;
-import com.yeshi.fanli.util.VersionUtil;
-import com.yeshi.fanli.vo.msg.TokenVO;
-
-@Service
-public class TokenRecordServiceImpl implements TokenRecordService {
-
- @Resource(name = "taskExecutor")
- private TaskExecutor executor;
-
- @Resource
- private TokenRecordMapper tokenRecordMapper;
-
- @Resource
- private UserInfoService userInfoService;
-
- @Resource
- @Lazy
- private UserSystemCouponService userSystemCouponService;
-
- @Resource
- private ThreeSaleSerivce threeSaleSerivce;
-
- @Resource
- private UserInfoExtraService userInfoExtraService;
-
- @Resource
- private UserSystemCouponRecordService userSystemCouponRecordService;
-
- @Resource
- private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService;
-
- @Resource
- private UserOtherMsgNotificationService userOtherMsgNotificationService;
-
- @Lazy
- @Resource
- private IntegralGetService integralGetService;
-
- @Resource
- private SystemCouponService systemCouponService;
-
- @Resource
- private UserInviteMsgNotificationService userInviteMsgNotificationService;
-
- @Resource
- private RedPackGiveRecordService redPackGiveRecordService;
-
- @Resource
- private UserMoneyMsgNotificationService userMoneyMsgNotificationService;
-
-
- @Override
- public void insertSelective(TokenRecord record) {
- record.setCreateTime(new Date());
- record.setUpdateTime(new Date());
- tokenRecordMapper.insertSelective(record);
- }
-
-
- @Override
- public void updateByPrimaryKeySelective(TokenRecord record) {
- tokenRecordMapper.updateByPrimaryKeySelective(record);
- }
-
- @Override
- public TokenRecord getNearByTypeAndIdentify(String type, String identify) {
- return tokenRecordMapper.getNearByTypeAndIdentify(type, identify);
- }
-
- @Override
- public TokenRecord getByTypeAndIdentify(String type, String identify) {
- return tokenRecordMapper.getByTypeAndIdentify(type, identify);
- }
-
- @Override
- public TokenVO discernToken(String token, Long uid, AcceptData acceptData) throws TokenRecordException {
- // 瑙f瀽鍙d护
- String parseToken = TokenUtil.parseToken(token);
- if (StringUtil.isNullOrEmpty(parseToken))
- throw new TokenRecordException(1, "鏈彂鐜板彛浠�");
-
- TokenRecord rokenRecord = tokenRecordMapper.getByToken(parseToken);
- if (rokenRecord == null)
- throw new TokenRecordException(1, "鍙d护涓嶅瓨鍦�");
-
- Long uidToken = rokenRecord.getUid();
- if (uid != null && uidToken != null && uid.longValue() == uidToken.longValue())
- throw new TokenRecordException(1, "涓嶈兘鑷繁璧犻�佺粰鑷繁");
-
- Date now = new Date();
- Date endTimeToken = rokenRecord.getEndTime();
- Integer stateTtoken = rokenRecord.getState();
- if (endTimeToken != null && endTimeToken.getTime() < now.getTime()
- || (stateTtoken != null && stateTtoken == 1) || StringUtil.isNullOrEmpty(rokenRecord.getIdentify()))
- throw new TokenRecordException(1, "鍙d护宸插け鏁�");
-
-
- Integer num = 0;
- Integer type = 0;
- String money = null;
- boolean state = false;
- List<String> tips = new ArrayList<String>();
- String identify = rokenRecord.getIdentify();
-
- TokenTypeEnum tokenType = rokenRecord.getType();
- if (tokenType == TokenTypeEnum.freeCoupon) {
- type = 10;
- UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
- .selectByPrimaryKey(Long.parseLong(identify));
- if (giveRecord == null)
- throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
-
- Date endTime = giveRecord.getEndTime();
- // 鐢ㄦ埛鍒镐俊鎭�
- UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
- if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive())
- throw new TokenRecordException(1, "鍒镐笉瀛樺湪鎴栭潪璧犻�佺姸鎬�");
-
- if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE || (endTime != null && endTime.getTime() < now.getTime())) {
- tips.add("鍝庡憖锛岃繖寮犲厤鍗曞埜宸插け鏁堜簡锛�");
- } else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) {
- tips.add("鍝庡憖锛岃繖寮犲厤鍗曞埜宸茶棰嗗彇浜嗭紒");
- } else if (userCoupon.getState() == UserSystemCoupon.STATE_IN_USE) {
- if (uid == null || uid <= 0)
- throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾鍏嶅崟鍒竇闇�瑕佺櫥褰曞悗棰嗗彇");
-
- state = true;
- UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
- if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
- tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓濓紱");
- tips.add("鑾疯禒鐨勫厤鍗曞埜锛岄渶瑕佹縺娲诲悗鎵嶈兘浣跨敤锛岃鎯呭弬瑙佸厤鍗曞埜婵�娲昏鍒欙紱");
- tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濇煡鐪嬨��");
- } else {
- tips.add("鑾疯禒鐨勫厤鍗曞埜锛岄渶瑕佹縺娲诲悗鎵嶈兘浣跨敤锛岃鎯呭弬瑙佸厤鍗曞埜婵�娲昏鍒欙紱");
- tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濇煡鐪嬨��");
- }
- } else {
- throw new TokenRecordException(1, "鍙d护宸插け鏁�");
- }
- } else if (tokenType == TokenTypeEnum.rebatePercentCoupon) {
- type = 11;
-
- // 璧犻�佽褰�
- UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
- .selectByPrimaryKey(Long.parseLong(identify));
- if (giveRecord == null)
- throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
-
- Date endTime = giveRecord.getEndTime();
- UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
- if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive())
- throw new TokenRecordException(1, "鍒镐笉瀛樺湪鎴栭潪璧犻�佺姸鎬�");
-
-
- if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE|| (endTime != null && endTime.getTime() < now.getTime())) {
- tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸插け鏁堜簡锛�");
- } else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) {
- tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸茶棰嗗彇浜嗭紒");
- } else if (userCoupon.getState() == UserSystemCoupon.STATE_IN_USE) {
- if (uid == null || uid <= 0)
- throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾杩斿埄濂栧姳鍒竇闇�瑕佺櫥褰曞悗棰嗗彇");
-
- state = true;
- UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
- if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
- tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓濓紱");
- tips.add("鏉挎牀蹇渷濂栧姳鍒革紝鍙敤浜庘�滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�");
- tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅銆�");
- } else {
- tips.add("鏉挎牀蹇渷濂栧姳鍒革紝鍙敤浜庘�滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�");
- tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅銆�");
- }
- } else {
- throw new TokenRecordException(1, "鍙d护宸插け鏁�");
- }
- } else if (tokenType == TokenTypeEnum.redPack) {
- if(!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion()))
- throw new TokenRecordException(1, "璇峰崌绾у埌鏈�鏂扮増");
-
-
- type = 13;
- RedPackGiveRecord giveRecord = redPackGiveRecordService.selectByPrimaryKey(Long.parseLong(identify));
- if (giveRecord == null)
- throw new TokenRecordException(1, "鍙d护宸插け鏁�");
-
- Date endTime = giveRecord.getEndTime();
- // 璧犻�侀潰棰�
- money = giveRecord.getAmount().setScale(2).toString();
-
- if(giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_OVERDUE
- || (endTime != null && endTime.getTime() < now.getTime())) {
- tips.add("鍝庡憖锛岃繖涓孩鍖呭凡澶辨晥浜嗭紒");
- } else if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_RECEIVE) {
- tips.add("鍝庡憖锛岃繖涓孩鍖呭凡琚鍙栦簡锛�");
- } else if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_INIT) {
- if (uid == null || uid <= 0)
- throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾绾㈠寘]闇�瑕佺櫥褰曞悗棰嗗彇");
- state = true;
- UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
- if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
- tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓濓紱");
- tips.add("绾㈠寘鍙彁鐜帮紝鍙喘涔版姌鎵e晢鍝侊紱");
- tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绾㈠寘鈥濅腑鏌ョ湅銆�");
- } else {
- tips.add("绾㈠寘鍙彁鐜帮紝鍙喘涔版姌鎵e晢鍝侊紱");
- tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绾㈠寘鈥濅腑鏌ョ湅銆�");
- }
- }
- } else if (tokenType == TokenTypeEnum.taoLiJin) {
- throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒");
- } else {
- throw new TokenRecordException(1, "鏃犲搴旂被鍨�");
- }
-
- String nickName = null;
- String portrait = null;
- Long inviteId = rokenRecord.getUid();
- if (inviteId != null) {
- UserInfo inviteUser = userInfoService.selectByPKey(inviteId);
- if (inviteUser != null) {
- nickName = inviteUser.getNickName();
- portrait = inviteUser.getPortrait();
- }
- }
-
- if (StringUtil.isNullOrEmpty(nickName))
- nickName = Constant.systemCommonConfig.getDefaultNickName() + inviteId;
-
- if (StringUtil.isNullOrEmpty(portrait))
- portrait = Constant.systemCommonConfig.getDefaultPortrait();
-
- if (nickName.length() > 6) {
- nickName = nickName.substring(0, 6) + "...";
- }
-
- TokenVO tokenVO = new TokenVO();
- tokenVO.setAmount(num);
- tokenVO.setMoney(money);
- tokenVO.setToken(parseToken);
- tokenVO.setNickName(nickName + "璧犻��");
- tokenVO.setPortrait(portrait);
- tokenVO.setTips(tips);
- tokenVO.setState(state);
- tokenVO.setType(type);
- return tokenVO;
- }
-
-
-
- @Override
- public String receiveToken(String token, Long uid, AcceptData acceptData) throws TokenRecordException {
- if (uid == null || uid <= 0)
- throw new TokenRecordException(1, "鐢ㄦ埛鏈櫥褰�");
-
- if (StringUtil.isNullOrEmpty(token))
- throw new TokenRecordException(1, "鍙d护涓嶈兘涓虹┖");
-
- TokenRecord rokenRecord = tokenRecordMapper.getByToken(token);
- if (rokenRecord == null)
- throw new TokenRecordException(1, "鍙d护宸插け鏁�");
-
- Long uidToken = rokenRecord.getUid();
- if (uidToken != null && uid.longValue() == uidToken.longValue())
- throw new TokenRecordException(1, "涓嶈兘鑷繁璧犻�佺粰鑷繁");
-
- 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护鏍囪瘑涓嶅瓨鍦�");
-
- 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) {
- // 璧犻�佽褰�
- UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
- .selectByPrimaryKey(Long.parseLong(identify));
- if (giveRecord == null)
- throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
-
- Date endTime = giveRecord.getEndTime();
- if (endTime != null && endTime.getTime() < now.getTime())
- throw new TokenRecordException(1, "璧犻�佽褰曞凡杩囨湡");
-
- UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
- if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive()
- || userCoupon.getState() != UserSystemCoupon.STATE_IN_USE)
- throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦ㄦ垨闈炶禒閫�");
-
- UserSystemCoupon userSystemCoupon= null;
- try {
- userSystemCoupon = userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.freeCoupon.name(),
- UserSystemCoupon.SOURCE_GIVE, null,true);
- } catch (Exception e) {
- LogHelper.errorDetailInfo(e);
- throw new TokenRecordException(1, "棰嗗彇澶辫触");
- }
-
- // 鏇存柊鐘舵��
- Date date = new Date();
- userCoupon.setId(userCoupon.getId());
- userCoupon.setState(UserSystemCoupon.STATE_END_USE);
- userCoupon.setUseTime(date);
- userCoupon.setUpdateTime(date);
- userSystemCouponService.updateByPrimaryKeySelective(userCoupon);
-
- // 鏇存柊浣跨敤璁板綍
- UserSystemCouponRecord useRecord = userSystemCouponRecordService.getNearByUserCouponId(userCoupon.getId());
- if (useRecord != null) {
- UserSystemCouponRecord updateuseRecord = new UserSystemCouponRecord();
- updateuseRecord.setId(useRecord.getId());
- updateuseRecord.setState(UserSystemCouponRecord.STATE_SUCCESS);
- updateuseRecord.setUpdateTime(new Date());
- userSystemCouponRecordService.updateByPrimaryKeySelective(updateuseRecord);
- }
-
- // 鏇存柊璧犻�佽褰�
- UserSystemCouponGiveRecord updateGiveRecord = new UserSystemCouponGiveRecord();
- updateGiveRecord.setId(giveRecord.getId());
- updateGiveRecord.setReceiveUid(uid);
- updateGiveRecord.setReceiveTime(new Date());
- updateGiveRecord.setState(UserSystemCouponGiveRecord.STATE_RECEIVE);
- if (userSystemCoupon != null) {
- updateGiveRecord.setReceiveId(userSystemCoupon.getId());
- }
- userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateGiveRecord);
-
- integralGetService.addGiveFreeCoupon(giveUid);
-
- 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);
-
- // 婵�娲婚個璇蜂俊鎭�
- if (addTeam)
- addInviteMsg(uid, giveUid, "鍏嶅崟鍒�");
- }
- });
- } else if (tokenType == TokenTypeEnum.rebatePercentCoupon) {
- // 璧犻�佽褰�
- UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
- .selectByPrimaryKey(Long.parseLong(identify));
- if (giveRecord == null)
- throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
-
- Date endTime = giveRecord.getEndTime();
- if (endTime != null && endTime.getTime() < now.getTime())
- throw new TokenRecordException(1, "璧犻�佽褰曞凡杩囨湡");
-
- UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
- if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive()
- || userCoupon.getState() != UserSystemCoupon.STATE_IN_USE)
- throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦ㄦ垨闈炶禒閫�");
-
- SystemCoupon systemCoupon = userCoupon.getSystemCoupon();
- if (systemCoupon == null)
- throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦�");
-
- systemCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
- if (systemCoupon == null)
- throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦�");
-
- UserSystemCoupon userSystemCoupon= null;
- try {
- userSystemCoupon = userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.rebatePercentCoupon.name(),
- UserSystemCoupon.SOURCE_GIVE, systemCoupon.getPercent(),true);
- } catch (Exception e) {
- LogHelper.errorDetailInfo(e);
- throw new TokenRecordException(1, "棰嗗彇澶辫触");
- }
-
- // 鏇存柊鐘舵��
- Date date = new Date();
- userCoupon.setId(userCoupon.getId());
- userCoupon.setState(UserSystemCoupon.STATE_END_USE);
- userCoupon.setUseTime(date);
- userCoupon.setUpdateTime(date);
- userSystemCouponService.updateByPrimaryKeySelective(userCoupon);
-
- // 鏇存柊浣跨敤璁板綍
- UserSystemCouponRecord useRecord = userSystemCouponRecordService.getNearByUserCouponId(userCoupon.getId());
- if (useRecord != null) {
- UserSystemCouponRecord updateuseRecord = new UserSystemCouponRecord();
- updateuseRecord.setId(useRecord.getId());
- updateuseRecord.setState(UserSystemCouponRecord.STATE_SUCCESS);
- updateuseRecord.setUpdateTime(new Date());
- userSystemCouponRecordService.updateByPrimaryKeySelective(updateuseRecord);
- }
-
- // 鏇存柊璧犻�佽褰�
- UserSystemCouponGiveRecord updateGiveRecord = new UserSystemCouponGiveRecord();
- updateGiveRecord.setId(giveRecord.getId());
- updateGiveRecord.setReceiveUid(uid);
- updateGiveRecord.setReceiveTime(new Date());
- updateGiveRecord.setState(UserSystemCouponGiveRecord.STATE_RECEIVE);
- if (userSystemCoupon != null) {
- updateGiveRecord.setReceiveId(userSystemCoupon.getId());
- }
- userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateGiveRecord);
-
- integralGetService.addGiveRebateCoupon(giveUid);
-
- 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);
-
- // 婵�娲婚個璇蜂俊鎭�
- if (addTeam)
- addInviteMsg(uid, giveUid, "杩斿埄濂栧姳鍒�");
- }
- });
- } else if (tokenType == TokenTypeEnum.redPack) {
- if(!VersionUtil.greaterThan_2_1(acceptData.getPlatform(), acceptData.getVersion()))
- throw new TokenRecordException(1, "璇峰崌绾у埌鏈�鏂扮増");
-
- try {
- msg = "棰嗗彇绾㈠寘鎴愬姛锛岃鍒癧鎴戠殑-绾㈠寘]涓煡鐪�";
- // 棰嗗彇绾㈠寘銆佹洿鏂拌褰�
- RedPackGiveRecord giveRecord = redPackGiveRecordService.receiveFriendsGive(uid, Long.parseLong(identify));
- // 娑堟伅 + 闃熷憳
- 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 = "鏃�";
- String giveBeiZhu = "鏃�";
- if (addTeam) {
- beiZhu = "浣犲凡鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓�";
- giveBeiZhu = "棰嗗彇浜哄凡鎴愪负浣犵殑鐩存帴绮変笣";
- // 婵�娲婚個璇蜂俊鎭�
- addInviteMsg(uid, giveUid, giveRecord.getAmount().setScale(2) + "鍏冪孩鍖�");
- }
-
- // 棰嗗彇浜烘秷鎭�
- String giveUserName = "鏃�";
- UserInfo giveuser = userInfoService.selectByPKey(giveUid);
- if (giveuser != null && !StringUtil.isNullOrEmpty(giveuser.getNickName()))
- giveUserName = giveuser.getNickName();
- MsgRedPackGiveContentDTO dto = new MsgRedPackGiveContentDTO();
- dto.setTitle("绾㈠寘棰嗗彇");
- dto.setUserInfo("鏄电О锛�" + giveUserName + " ID锛�" + giveUid);
- dto.setTime(sd.format(giveRecord.getGiveTime()));
- dto.setMoney("楼" + giveRecord.getAmount().setScale(2));
- userMoneyMsgNotificationService.redPackMsg(uid, MsgTypeMoneyTypeEnum.redPackReceiveOff, new Gson().toJson(dto), beiZhu);
-
- // 璧犻�佷汉娑堟伅
- String userName = "鏃�";
- UserInfo user = userInfoService.selectByPKey(uid);
- if (user != null && !StringUtil.isNullOrEmpty(user.getNickName()))
- userName = user.getNickName();
- MsgRedPackGiveContentDTO givedto = new MsgRedPackGiveContentDTO();
- givedto.setTitle("绾㈠寘璧犻��");
- givedto.setUserInfo("鏄电О锛�" + userName + " ID锛�" + uid);
- givedto.setTime(sd.format(new Date()));
- givedto.setMoney("楼" + giveRecord.getAmount().setScale(2));
- userMoneyMsgNotificationService.redPackMsg(giveUid, MsgTypeMoneyTypeEnum.redPackGiveOff, new Gson().toJson(givedto), giveBeiZhu);
- }
- });
- } catch (RedPackGiveRecordException e) {
- throw new TokenRecordException(1, e.getMsg());
- }
- } else if (tokenType == TokenTypeEnum.taoLiJin) {
- throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒");
- } else {
- throw new TokenRecordException(1, "鏃犲搴旂被鍨�");
- }
-
- 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;
- }
-
-
- private void addInviteMsg(Long uid, Long giveUid, String giftName) {
- try {
- UserInfo user = userInfoService.selectByPKey(giveUid);
- UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
-
- String inviteCode = null;
- if (!StringUtil.isNullOrEmpty(userInfoExtra.getInviteCodeVip())) {
- inviteCode = userInfoExtra.getInviteCodeVip();
- } else {
- inviteCode = userInfoExtra.getInviteCode();
- }
-
- MsgInviteContentDTO msgInvite = new MsgInviteContentDTO();
- msgInvite.setTitle("閭�璇锋秷鎭�");
- msgInvite.setState("鎴愬姛婵�娲婚個璇�");
- msgInvite.setCode("浣犵殑閭�璇风爜锛�" + inviteCode);
- msgInvite.setInviter("鏄电О锛�"+user.getNickName());
- msgInvite.setMode("鎴愬姛棰嗗彇閭�璇蜂汉鐨�" + giftName);
- userInviteMsgNotificationService.receiveGift(uid, "閭�璇峰叧绯讳竴鏃︾‘绔嬫棤娉曟洿鏀� ", msgInvite);
- } catch (Exception e) {
- LogHelper.errorDetailInfo(e);
- }
- }
-
- @Override
- public List<TokenRecord> overdueList(int count) {
- return tokenRecordMapper.overdueList(count);
- }
-
-
- @Override
- public void overdue(List<TokenRecord> list) {
- if (list == null || list.size() == 0)
- return;
- Date date = new Date();
- for (TokenRecord tokenRecord: list) {
- tokenRecord.setState(1);
- tokenRecord.setUpdateTime(date);
- tokenRecordMapper.updateByPrimaryKeySelective(tokenRecord);
- }
- }
-
-
- @Override
- public void invalidByRedPack(Long id) {
- if (id == null)
- return;
-
- List<String> list = new ArrayList<String>();
- list.add(TokenTypeEnum.redPack.name());
- tokenRecordMapper.invalidByTypeAndIdentify(list, id.toString());
- }
-
- @Override
- public void invalidByCoupon(Long id) {
- if (id == null)
- return;
-
- List<String> list = new ArrayList<String>();
- list.add(TokenTypeEnum.freeCoupon.name());
- list.add(TokenTypeEnum.rebatePercentCoupon.name());
- tokenRecordMapper.invalidByTypeAndIdentify(list, id.toString());
- }
-}
+package com.yeshi.fanli.service.impl.user;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import com.yeshi.fanli.entity.SystemEnum;
+import com.yeshi.fanli.entity.config.SystemConfigKeyEnum;
+import com.yeshi.fanli.service.inter.config.SystemConfigService;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.task.TaskExecutor;
+import org.springframework.stereotype.Service;
+
+import com.yeshi.fanli.dao.mybatis.user.TokenRecordMapper;
+import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.tlj.UserTaoLiJinGiveRecord;
+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.bus.user.UserSystemCouponRecord;
+import com.yeshi.fanli.entity.redpack.RedPackGiveRecord;
+import com.yeshi.fanli.entity.system.SystemCoupon;
+import com.yeshi.fanli.entity.system.SystemCoupon.CouponTypeEnum;
+import com.yeshi.fanli.exception.user.TokenRecordException;
+import com.yeshi.fanli.exception.user.UserInfoExtraException;
+import com.yeshi.fanli.log.LogHelper;
+import com.yeshi.fanli.service.inter.config.SystemCouponService;
+import com.yeshi.fanli.service.inter.money.msg.UserMoneyMsgNotificationService;
+import com.yeshi.fanli.service.inter.msg.UserOtherMsgNotificationService;
+import com.yeshi.fanli.service.inter.redpack.RedPackGiveRecordService;
+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.UserSystemCouponRecordService;
+import com.yeshi.fanli.service.inter.user.UserSystemCouponService;
+import com.yeshi.fanli.service.inter.user.integral.IntegralGetService;
+import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce;
+import com.yeshi.fanli.service.inter.user.invite.UserInviteMsgNotificationService;
+import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TokenUtil;
+import com.yeshi.fanli.util.VersionUtil;
+import com.yeshi.fanli.vo.msg.TokenVO;
+
+@Service
+public class TokenRecordServiceImpl implements TokenRecordService {
+
+ @Resource(name = "taskExecutor")
+ private TaskExecutor executor;
+
+ @Resource
+ private TokenRecordMapper tokenRecordMapper;
+
+ @Resource
+ private UserInfoService userInfoService;
+
+ @Resource
+ @Lazy
+ private UserSystemCouponService userSystemCouponService;
+
+ @Resource
+ private ThreeSaleSerivce threeSaleSerivce;
+
+ @Resource
+ private UserInfoExtraService userInfoExtraService;
+
+ @Resource
+ private UserSystemCouponRecordService userSystemCouponRecordService;
+
+ @Resource
+ private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService;
+
+ @Resource
+ private UserOtherMsgNotificationService userOtherMsgNotificationService;
+
+ @Lazy
+ @Resource
+ private IntegralGetService integralGetService;
+
+ @Resource
+ private SystemCouponService systemCouponService;
+
+ @Resource
+ private RedPackGiveRecordService redPackGiveRecordService;
+
+ @Resource
+ private SystemConfigService systemConfigService;
+
+ @Override
+ public void insertSelective(TokenRecord record) {
+ record.setCreateTime(new Date());
+ record.setUpdateTime(new Date());
+ tokenRecordMapper.insertSelective(record);
+ }
+
+ @Override
+ public void updateByPrimaryKeySelective(TokenRecord record) {
+ tokenRecordMapper.updateByPrimaryKeySelective(record);
+ }
+
+ @Override
+ public TokenRecord getNearByTypeAndIdentify(String type, String identify) {
+ return tokenRecordMapper.getNearByTypeAndIdentify(type, identify);
+ }
+
+ @Override
+ public TokenRecord getByTypeAndIdentify(String type, String identify) {
+ return tokenRecordMapper.getByTypeAndIdentify(type, identify);
+ }
+
+ @Override
+ public TokenVO discernToken(String token, Long uid, String platform, String version) throws TokenRecordException {
+ // 瑙f瀽鍙d护
+ String parseToken = TokenUtil.parseToken(token);
+ if (StringUtil.isNullOrEmpty(parseToken))
+ throw new TokenRecordException(1, "鏈彂鐜板彛浠�");
+
+ TokenRecord rokenRecord = tokenRecordMapper.getByToken(parseToken);
+ if (rokenRecord == null)
+ throw new TokenRecordException(1, "鍙d护涓嶅瓨鍦�");
+
+ Long uidToken = rokenRecord.getUid();
+ if (uid != null && uidToken != null && uid.longValue() == uidToken.longValue())
+ throw new TokenRecordException(1, "涓嶈兘鑷繁璧犻�佺粰鑷繁");
+
+ Date now = new Date();
+ Date endTimeToken = rokenRecord.getEndTime();
+ Integer stateTtoken = rokenRecord.getState();
+ if (endTimeToken != null && endTimeToken.getTime() < now.getTime() || (stateTtoken != null && stateTtoken == 1)
+ || StringUtil.isNullOrEmpty(rokenRecord.getIdentify()))
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+
+ Integer num = 0;
+ Integer type = 0;
+ String money = null;
+ boolean state = false;
+ List<String> tips = new ArrayList<String>();
+ String identify = rokenRecord.getIdentify();
+
+ TokenTypeEnum tokenType = rokenRecord.getType();
+ if (tokenType == TokenTypeEnum.freeCoupon) {
+ type = 10;
+ UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
+ .selectByPrimaryKey(Long.parseLong(identify));
+ if (giveRecord == null)
+ throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
+
+ Date endTime = giveRecord.getEndTime();
+ // 鐢ㄦ埛鍒镐俊鎭�
+ UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
+ if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive())
+ throw new TokenRecordException(1, "鍒镐笉瀛樺湪鎴栭潪璧犻�佺姸鎬�");
+
+ if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE
+ || (endTime != null && endTime.getTime() < now.getTime())) {
+ tips.add("鍝庡憖锛岃繖寮犲厤鍗曞埜宸插け鏁堜簡锛�");
+ } else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) {
+ tips.add("鍝庡憖锛岃繖寮犲厤鍗曞埜宸茶棰嗗彇浜嗭紒");
+ } else if (userCoupon.getState() == UserSystemCoupon.STATE_IN_USE) {
+ if (uid == null || uid <= 0)
+ throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾鍏嶅崟鍒竇闇�瑕佺櫥褰曞悗棰嗗彇");
+
+ state = true;
+ UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
+ if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
+ tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓濓紱");
+ tips.add("鑾疯禒鐨勫厤鍗曞埜锛岄渶瑕佹縺娲诲悗鎵嶈兘浣跨敤锛岃鎯呭弬瑙佸厤鍗曞埜婵�娲昏鍒欙紱");
+ tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濇煡鐪嬨��");
+ } else {
+ tips.add("鑾疯禒鐨勫厤鍗曞埜锛岄渶瑕佹縺娲诲悗鎵嶈兘浣跨敤锛岃鎯呭弬瑙佸厤鍗曞埜婵�娲昏鍒欙紱");
+ tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濇煡鐪嬨��");
+ }
+ } else {
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+ }
+ } else if (tokenType == TokenTypeEnum.rebatePercentCoupon) {
+ type = 11;
+
+ // 璧犻�佽褰�
+ UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
+ .selectByPrimaryKey(Long.parseLong(identify));
+ if (giveRecord == null)
+ throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
+
+ Date endTime = giveRecord.getEndTime();
+ UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
+ if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive())
+ throw new TokenRecordException(1, "鍒镐笉瀛樺湪鎴栭潪璧犻�佺姸鎬�");
+
+ if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE
+ || (endTime != null && endTime.getTime() < now.getTime())) {
+ tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸插け鏁堜簡锛�");
+ } else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) {
+ tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸茶棰嗗彇浜嗭紒");
+ } else if (userCoupon.getState() == UserSystemCoupon.STATE_IN_USE) {
+ if (uid == null || uid <= 0)
+ throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾杩斿埄濂栧姳鍒竇闇�瑕佺櫥褰曞悗棰嗗彇");
+
+ state = true;
+ UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
+ if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
+ tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓濓紱");
+ tips.add("鏉挎牀蹇渷濂栧姳鍒革紝鍙敤浜庘�滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�");
+ tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅銆�");
+ } else {
+ tips.add("鏉挎牀蹇渷濂栧姳鍒革紝鍙敤浜庘�滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�");
+ tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅銆�");
+ }
+ } else {
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+ }
+ } else if (tokenType == TokenTypeEnum.redPack) {
+ if (!VersionUtil.greaterThan_2_0_5(platform, version))
+ throw new TokenRecordException(1, "璇峰崌绾у埌鏈�鏂扮増");
+
+ type = 13;
+ RedPackGiveRecord giveRecord = redPackGiveRecordService.selectByPrimaryKey(Long.parseLong(identify));
+ if (giveRecord == null)
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+
+ Date endTime = giveRecord.getEndTime();
+ // 璧犻�侀潰棰�
+ money = giveRecord.getAmount().setScale(2).toString();
+
+ if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_OVERDUE
+ || (endTime != null && endTime.getTime() < now.getTime())) {
+ tips.add("鍝庡憖锛岃繖涓孩鍖呭凡澶辨晥浜嗭紒");
+ } else if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_RECEIVE) {
+ tips.add("鍝庡憖锛岃繖涓孩鍖呭凡琚鍙栦簡锛�");
+ } else if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_INIT) {
+ if (uid == null || uid <= 0)
+ throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾绾㈠寘]闇�瑕佺櫥褰曞悗棰嗗彇");
+ state = true;
+ UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid);
+ if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) {
+ tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓濓紱");
+ tips.add("绾㈠寘鍙彁鐜帮紝鍙喘涔版姌鎵e晢鍝侊紱");
+ tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绾㈠寘鈥濅腑鏌ョ湅銆�");
+ } else {
+ tips.add("绾㈠寘鍙彁鐜帮紝鍙喘涔版姌鎵e晢鍝侊紱");
+ tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绾㈠寘鈥濅腑鏌ョ湅銆�");
+ }
+ }
+ } else if (tokenType == TokenTypeEnum.taoLiJin) {
+ throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒");
+ } else {
+ throw new TokenRecordException(1, "鏃犲搴旂被鍨�");
+ }
+
+ String nickName = null;
+ String portrait = null;
+ Long inviteId = rokenRecord.getUid();
+ if (inviteId != null) {
+ UserInfo inviteUser = userInfoService.selectByPKey(inviteId);
+ if (inviteUser != null) {
+ nickName = inviteUser.getNickName();
+ portrait = inviteUser.getPortrait();
+ }
+ }
+
+ SystemEnum system = userInfoService.getUserSystem(rokenRecord.getUid());
+
+ if (StringUtil.isNullOrEmpty(nickName))
+ nickName = systemConfigService.getValueCache(SystemConfigKeyEnum.defaultNickNamePrefix, system) + inviteId;
+
+ if (StringUtil.isNullOrEmpty(portrait))
+ portrait = systemConfigService.getValueCache(SystemConfigKeyEnum.defaultPortrait, system);
+
+ if (nickName.length() > 6) {
+ nickName = nickName.substring(0, 6) + "...";
+ }
+
+ TokenVO tokenVO = new TokenVO();
+ tokenVO.setAmount(num);
+ tokenVO.setMoney(money);
+ tokenVO.setToken(parseToken);
+ tokenVO.setNickName(nickName + "璧犻��");
+ tokenVO.setPortrait(portrait);
+ tokenVO.setTips(tips);
+ tokenVO.setState(state);
+ tokenVO.setType(type);
+ return tokenVO;
+ }
+
+ @Override
+ public String receiveToken(String token, Long uid, AcceptData acceptData) throws TokenRecordException {
+ if (uid == null || uid <= 0)
+ throw new TokenRecordException(1, "鐢ㄦ埛鏈櫥褰�");
+
+ if (StringUtil.isNullOrEmpty(token))
+ throw new TokenRecordException(1, "鍙d护涓嶈兘涓虹┖");
+
+ TokenRecord rokenRecord = tokenRecordMapper.getByToken(token);
+ if (rokenRecord == null)
+ throw new TokenRecordException(1, "鍙d护宸插け鏁�");
+
+ Long uidToken = rokenRecord.getUid();
+ if (uidToken != null && uid.longValue() == uidToken.longValue())
+ throw new TokenRecordException(1, "涓嶈兘鑷繁璧犻�佺粰鑷繁");
+
+ 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护鏍囪瘑涓嶅瓨鍦�");
+
+ 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) {
+ // 璧犻�佽褰�
+ UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
+ .selectByPrimaryKey(Long.parseLong(identify));
+ if (giveRecord == null)
+ throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
+
+ Date endTime = giveRecord.getEndTime();
+ if (endTime != null && endTime.getTime() < now.getTime())
+ throw new TokenRecordException(1, "璧犻�佽褰曞凡杩囨湡");
+
+ UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
+ if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive()
+ || userCoupon.getState() != UserSystemCoupon.STATE_IN_USE)
+ throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦ㄦ垨闈炶禒閫�");
+
+ UserSystemCoupon userSystemCoupon = null;
+ try {
+ userSystemCoupon = userSystemCouponService.freeCouponWin(uid, CouponTypeEnum.freeCoupon,
+ UserSystemCoupon.SOURCE_GIVE, 1, true);
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ throw new TokenRecordException(1, "棰嗗彇澶辫触");
+ }
+
+ // 鏇存柊鐘舵��
+ Date date = new Date();
+ userCoupon.setId(userCoupon.getId());
+ userCoupon.setState(UserSystemCoupon.STATE_END_USE);
+ userCoupon.setUseTime(date);
+ userCoupon.setUpdateTime(date);
+ userSystemCouponService.updateByPrimaryKeySelective(userCoupon);
+
+ // 鏇存柊浣跨敤璁板綍
+ UserSystemCouponRecord useRecord = userSystemCouponRecordService.getNearByUserCouponId(userCoupon.getId());
+ if (useRecord != null) {
+ UserSystemCouponRecord updateuseRecord = new UserSystemCouponRecord();
+ updateuseRecord.setId(useRecord.getId());
+ updateuseRecord.setState(UserSystemCouponRecord.STATE_SUCCESS);
+ updateuseRecord.setUpdateTime(new Date());
+ userSystemCouponRecordService.updateByPrimaryKeySelective(updateuseRecord);
+ }
+
+ // 鏇存柊璧犻�佽褰�
+ UserSystemCouponGiveRecord updateGiveRecord = new UserSystemCouponGiveRecord();
+ updateGiveRecord.setId(giveRecord.getId());
+ updateGiveRecord.setReceiveUid(uid);
+ updateGiveRecord.setReceiveTime(new Date());
+ updateGiveRecord.setState(UserSystemCouponGiveRecord.STATE_RECEIVE);
+ if (userSystemCoupon != null) {
+ updateGiveRecord.setReceiveId(userSystemCoupon.getId());
+ }
+ userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateGiveRecord);
+
+ integralGetService.addGiveFreeCoupon(giveUid);
+
+ msg = "棰嗗彇鎴愬姛[鍏嶅崟鍒竇鎴愬姛锛岃鍒癧鎴戠殑-绂忓埄涓績]涓煡鐪�";
+ // 娑堟伅 + 闃熷憳
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ addInviteTeam(uid, giveUid, userInfoExtra);
+ }
+ });
+ } else if (tokenType == TokenTypeEnum.rebatePercentCoupon) {
+ // 璧犻�佽褰�
+ UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService
+ .selectByPrimaryKey(Long.parseLong(identify));
+ if (giveRecord == null)
+ throw new TokenRecordException(1, "璧犻�佽褰曚笉瀛樺湪");
+
+ Date endTime = giveRecord.getEndTime();
+ if (endTime != null && endTime.getTime() < now.getTime())
+ throw new TokenRecordException(1, "璧犻�佽褰曞凡杩囨湡");
+
+ UserSystemCoupon userCoupon = userSystemCouponService.selectByPrimaryKey(giveRecord.getCouponId());
+ if (userCoupon == null || userCoupon.getGive() == null || !userCoupon.getGive()
+ || userCoupon.getState() != UserSystemCoupon.STATE_IN_USE)
+ throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦ㄦ垨闈炶禒閫�");
+
+ SystemCoupon systemCoupon = userCoupon.getSystemCoupon();
+ if (systemCoupon == null)
+ throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦�");
+
+ systemCoupon = systemCouponService.selectByPrimaryKey(systemCoupon.getId());
+ if (systemCoupon == null)
+ throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦�");
+
+ UserSystemCoupon userSystemCoupon = null;
+ try {
+ userSystemCoupon = userSystemCouponService.rewardCouponWin(uid, UserSystemCoupon.SOURCE_GIVE, 1, true,
+ systemCoupon.getPercent());
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ throw new TokenRecordException(1, "棰嗗彇澶辫触");
+ }
+
+ // 鏇存柊鐘舵��
+ Date date = new Date();
+ userCoupon.setId(userCoupon.getId());
+ userCoupon.setState(UserSystemCoupon.STATE_END_USE);
+ userCoupon.setUseTime(date);
+ userCoupon.setUpdateTime(date);
+ userSystemCouponService.updateByPrimaryKeySelective(userCoupon);
+
+ // 鏇存柊浣跨敤璁板綍
+ UserSystemCouponRecord useRecord = userSystemCouponRecordService.getNearByUserCouponId(userCoupon.getId());
+ if (useRecord != null) {
+ UserSystemCouponRecord updateuseRecord = new UserSystemCouponRecord();
+ updateuseRecord.setId(useRecord.getId());
+ updateuseRecord.setState(UserSystemCouponRecord.STATE_SUCCESS);
+ updateuseRecord.setUpdateTime(new Date());
+ userSystemCouponRecordService.updateByPrimaryKeySelective(updateuseRecord);
+ }
+
+ // 鏇存柊璧犻�佽褰�
+ UserSystemCouponGiveRecord updateGiveRecord = new UserSystemCouponGiveRecord();
+ updateGiveRecord.setId(giveRecord.getId());
+ updateGiveRecord.setReceiveUid(uid);
+ updateGiveRecord.setReceiveTime(new Date());
+ updateGiveRecord.setState(UserSystemCouponGiveRecord.STATE_RECEIVE);
+ if (userSystemCoupon != null) {
+ updateGiveRecord.setReceiveId(userSystemCoupon.getId());
+ }
+ userSystemCouponGiveRecordService.updateByPrimaryKeySelective(updateGiveRecord);
+
+ integralGetService.addGiveRebateCoupon(giveUid);
+
+ msg = "棰嗗彇鎴愬姛[杩斿埄濂栧姳鍒竇鎴愬姛锛岃鍒癧鎴戠殑-绂忓埄涓績]涓煡鐪�";
+ // 娑堟伅 + 闃熷憳
+ executor.execute(new Runnable() {
+
+ @Override
+ public void run() {
+ addInviteTeam(uid, giveUid, userInfoExtra);
+ }
+ });
+ } else if (tokenType == TokenTypeEnum.redPack) {
+ if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion()))
+ throw new TokenRecordException(1, "璇峰崌绾у埌鏈�鏂扮増");
+
+ msg = "棰嗗彇绾㈠寘鎴愬姛锛岃鍒癧鎴戠殑-绾㈠寘]涓煡鐪�";
+ // 娑堟伅 + 闃熷憳
+ executor.execute(new Runnable() {
+ @Override
+ public void run() {
+ addInviteTeam(uid, giveUid, userInfoExtra);
+ }
+ });
+ } else if (tokenType == TokenTypeEnum.taoLiJin) {
+ throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒");
+ } else {
+ throw new TokenRecordException(1, "鏃犲搴旂被鍨�");
+ }
+
+ 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;
+ }
+
+
+ @Override
+ public List<TokenRecord> overdueList(int count) {
+ return tokenRecordMapper.overdueList(count);
+ }
+
+ @Override
+ public void overdue(List<TokenRecord> list) {
+ if (list == null || list.size() == 0)
+ return;
+ Date date = new Date();
+ for (TokenRecord tokenRecord : list) {
+ tokenRecord.setState(1);
+ tokenRecord.setUpdateTime(date);
+ tokenRecordMapper.updateByPrimaryKeySelective(tokenRecord);
+ }
+ }
+
+ @Override
+ public void invalidByRedPack(Long id) {
+ if (id == null)
+ return;
+
+ List<String> list = new ArrayList<String>();
+ list.add(TokenTypeEnum.redPack.name());
+ tokenRecordMapper.invalidByTypeAndIdentify(list, id.toString());
+ }
+
+ @Override
+ public void invalidByCoupon(Long id) {
+ if (id == null)
+ return;
+
+ List<String> list = new ArrayList<String>();
+ list.add(TokenTypeEnum.freeCoupon.name());
+ list.add(TokenTypeEnum.rebatePercentCoupon.name());
+ tokenRecordMapper.invalidByTypeAndIdentify(list, id.toString());
+ }
+}
--
Gitblit v1.8.0