From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java | 1130 ++++++++++++++++++++++++++++------------------------------ 1 files changed, 550 insertions(+), 580 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 19456c6..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,580 +1,550 @@ -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.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.dto.msg.MsgOtherGiveContentDTO; -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.system.SystemCoupon; -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.UserInfoExtraException; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.config.SystemCouponService; -import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; -import com.yeshi.fanli.service.inter.integral.IntegralGetService; -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.UserSystemCouponRecordService; -import com.yeshi.fanli.service.inter.user.UserSystemCouponService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.TokenUtil; -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 - private UserSystemCouponService userSystemCouponService; - - @Resource - private ThreeSaleSerivce threeSaleSerivce; - - @Resource - private UserTaoLiJinGiveRecordService userTaoLiJinGiveRecordService; - - @Resource - private UserInfoExtraService userInfoExtraService; - - @Resource - private UserSystemCouponRecordService userSystemCouponRecordService; - - @Resource - private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService; - - @Resource - private UserTaoLiJinOriginService userTaoLiJinOriginService; - - @Resource - private UserOtherMsgNotificationService userOtherMsgNotificationService; - - @Lazy - @Resource - private IntegralGetService integralGetService; - - @Resource - private SystemCouponService systemCouponService; - - - @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 TokenVO discernToken(String token, Long uid) 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 = 1; - Integer type = 0; - 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(); - 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()) - throw new TokenRecordException(1, "鍒镐笉瀛樺湪鎴栭潪璧犻�佺姸鎬�"); - - if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE) { - 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(); - 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()) - throw new TokenRecordException(1, "鍒镐笉瀛樺湪鎴栭潪璧犻�佺姸鎬�"); - - - if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE) { - 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.taoLiJin) { - type = 12; - UserTaoLiJinGiveRecord giveRecord = userTaoLiJinGiveRecordService - .selectByPrimaryKey(Long.parseLong(identify)); - if (giveRecord == null || giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_OVERDUE) { - 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; - BigDecimal amount = giveRecord.getAmount(); - num = Integer.parseInt(amount.setScale(0).toString()); - - 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 { - 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(); - - 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.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) 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); - } 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); - } - }); - } 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()); - } 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); - } - }); - } else if (tokenType == TokenTypeEnum.taoLiJin) { - UserTaoLiJinGiveRecord giveRecord = userTaoLiJinGiveRecordService - .selectByPrimaryKey(Long.parseLong(identify)); - if (giveRecord == null || giveRecord.getState() != UserTaoLiJinGiveRecord.STATE_INIT) - throw new TokenRecordException(1, "璧犻�佽褰曞け鏁堟垨宸茶棰嗗彇"); - - 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); - - integralGetService.addGiveTaoLiJin(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_TLJ); - 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, "鏃犲搴旂被鍨�"); - } - - 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; - } - -} +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