From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 18 一月 2020 12:06:27 +0800 Subject: [PATCH] 用户注册信息 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java | 348 +++++++++++++++++++++++++++++++++++++++------------------ 1 files changed, 235 insertions(+), 113 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 c9d8e3c..0f6faa1 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,6 +1,5 @@ package com.yeshi.fanli.service.impl.user; -import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; @@ -8,11 +7,17 @@ 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; @@ -21,24 +26,30 @@ 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.tlj.UserTaoLiJinOriginException; +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.hongbao.ThreeSaleSerivce; +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.tlj.UserTaoLiJinGiveRecordService; -import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService; +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 @@ -54,13 +65,11 @@ private UserInfoService userInfoService; @Resource + @Lazy private UserSystemCouponService userSystemCouponService; @Resource private ThreeSaleSerivce threeSaleSerivce; - - @Resource - private UserTaoLiJinGiveRecordService userTaoLiJinGiveRecordService; @Resource private UserInfoExtraService userInfoExtraService; @@ -72,10 +81,23 @@ private UserSystemCouponGiveRecordService userSystemCouponGiveRecordService; @Resource - private UserTaoLiJinOriginService userTaoLiJinOriginService; + private UserOtherMsgNotificationService userOtherMsgNotificationService; + + @Lazy + @Resource + private IntegralGetService integralGetService; @Resource - private UserOtherMsgNotificationService userOtherMsgNotificationService; + private SystemCouponService systemCouponService; + + @Resource + private UserInviteMsgNotificationService userInviteMsgNotificationService; + + @Resource + private RedPackGiveRecordService redPackGiveRecordService; + + @Resource + private UserMoneyMsgNotificationService userMoneyMsgNotificationService; @Override public void insertSelective(TokenRecord record) { @@ -84,24 +106,28 @@ 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 { + 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)) + if (StringUtil.isNullOrEmpty(parseToken)) throw new TokenRecordException(1, "鏈彂鐜板彛浠�"); - + TokenRecord rokenRecord = tokenRecordMapper.getByToken(parseToken); if (rokenRecord == null) throw new TokenRecordException(1, "鍙d护涓嶅瓨鍦�"); @@ -109,21 +135,21 @@ 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())) + if (endTimeToken != null && endTimeToken.getTime() < now.getTime() || (stateTtoken != null && stateTtoken == 1) + || StringUtil.isNullOrEmpty(rokenRecord.getIdentify())) throw new TokenRecordException(1, "鍙d护宸插け鏁�"); - - Integer num = 1; + 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; @@ -131,28 +157,26 @@ .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, "璧犻�佽褰曞凡杩囨湡"); + 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) { + + 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("鑾疯禒鐨勫厤鍗曞埜锛岄渶瑕佹縺娲诲悗鎵嶈兘浣跨敤锛岃鎯呭弬瑙佸厤鍗曞埜婵�娲昏鍒欙紱"); tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濇煡鐪嬨��"); } else { @@ -170,17 +194,14 @@ .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, "璧犻�佽褰曞凡杩囨湡"); + 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) { + + if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE + || (endTime != null && endTime.getTime() < now.getTime())) { tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸插け鏁堜簡锛�"); } else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) { tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸茶棰嗗彇浜嗭紒"); @@ -191,44 +212,50 @@ state = true; UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) { - tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱"); - tips.add("杩斿埄鍒稿鍔卞埜锛屽彲鐢ㄤ簬鈥滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�"); + tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓濓紱"); + tips.add("鏉挎牀蹇渷濂栧姳鍒革紝鍙敤浜庘�滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�"); tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅銆�"); } else { - tips.add("杩斿埄鍒稿鍔卞埜锛屽彲鐢ㄤ簬鈥滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�"); + 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 (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("鍝庡憖锛屾帹骞跨孩鍖呭凡琚鍙栦簡锛�"); + tips.add("鍝庡憖锛岃繖涓孩鍖呭凡琚鍙栦簡锛�"); } else if (giveRecord.getState() == UserTaoLiJinGiveRecord.STATE_INIT) { if (uid == null || uid <= 0) - throw new TokenRecordException(1001, "娓╅Θ鎻愮ず锛孾鎺ㄥ箍绾㈠寘]闇�瑕佺櫥褰曞悗棰嗗彇"); - + 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("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-鎺ㄥ箍绾㈠寘鈥濅腑鏌ョ湅銆�"); + tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勭洿鎺ョ矇涓濓紱"); + tips.add("绾㈠寘鍙彁鐜帮紝鍙喘涔版姌鎵e晢鍝侊紱"); + tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绾㈠寘鈥濅腑鏌ョ湅銆�"); } else { - tips.add("鎺ㄥ箍绾㈠寘锛屽彲鍒嗕韩鐖嗘鍟嗗搧锛岃鍒嗕韩璁㈠崟鎴愬崟鐜囨洿楂橈紱"); - tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-鎺ㄥ箍绾㈠寘鈥濅腑鏌ョ湅銆�"); + tips.add("绾㈠寘鍙彁鐜帮紝鍙喘涔版姌鎵e晢鍝侊紱"); + tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绾㈠寘鈥濅腑鏌ョ湅銆�"); } - } else { - throw new TokenRecordException(1, "鍙d护澶辨晥"); } + } else if (tokenType == TokenTypeEnum.taoLiJin) { + throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒"); } else { throw new TokenRecordException(1, "鏃犲搴旂被鍨�"); } @@ -245,7 +272,7 @@ } if (StringUtil.isNullOrEmpty(nickName)) - nickName = Constant.systemCommonConfig.getDefaultNickName(); + nickName = Constant.systemCommonConfig.getDefaultNickName() + inviteId; if (StringUtil.isNullOrEmpty(portrait)) portrait = Constant.systemCommonConfig.getDefaultPortrait(); @@ -253,9 +280,10 @@ 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); @@ -264,11 +292,9 @@ tokenVO.setType(type); return tokenVO; } - - @Override - public String receiveToken(String token, Long uid) throws TokenRecordException { + public String receiveToken(String token, Long uid, AcceptData acceptData) throws TokenRecordException { if (uid == null || uid <= 0) throw new TokenRecordException(1, "鐢ㄦ埛鏈櫥褰�"); @@ -278,11 +304,11 @@ 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()) @@ -304,7 +330,6 @@ String msg = "棰嗗彇鎴愬姛"; TokenTypeEnum tokenType = rokenRecord.getType(); if (tokenType == TokenTypeEnum.freeCoupon) { - // 璧犻�佽褰� UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService .selectByPrimaryKey(Long.parseLong(identify)); @@ -320,9 +345,10 @@ || userCoupon.getState() != UserSystemCoupon.STATE_IN_USE) throw new TokenRecordException(1, "璇ュ埜涓嶅瓨鍦ㄦ垨闈炶禒閫�"); + UserSystemCoupon userSystemCoupon = null; try { - userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.freeCoupon.name(), - UserSystemCoupon.SOURCE_GIVE); + userSystemCoupon = userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.freeCoupon.name(), + UserSystemCoupon.SOURCE_GIVE, null, true); } catch (Exception e) { LogHelper.errorDetailInfo(e); throw new TokenRecordException(1, "棰嗗彇澶辫触"); @@ -348,21 +374,27 @@ // 鏇存柊璧犻�佽褰� 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"); + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); boolean addTeam = addInviteTeam(uid, giveUid, userInfoExtra); String beiZhu = "鏃�"; if (addTeam) - beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勪竴绾ч槦鍛�"; + beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勭洿鎺ョ矇涓�"; String userName = "鏃�"; UserInfo user = userInfoService.selectByPKey(uid); @@ -377,6 +409,10 @@ 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) { @@ -395,9 +431,19 @@ || 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 { - userSystemCouponService.insertUserCoupon(uid, CouponTypeEnum.freeCoupon.name(), - UserSystemCoupon.SOURCE_GIVE); + userSystemCoupon = userSystemCouponService.insertUserCoupon(uid, + CouponTypeEnum.rebatePercentCoupon.name(), UserSystemCoupon.SOURCE_GIVE, + systemCoupon.getPercent(), true); } catch (Exception e) { LogHelper.errorDetailInfo(e); throw new TokenRecordException(1, "棰嗗彇澶辫触"); @@ -423,21 +469,28 @@ // 鏇存柊璧犻�佽褰� 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"); + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); boolean addTeam = addInviteTeam(uid, giveUid, userInfoExtra); String beiZhu = "鏃�"; if (addTeam) - beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勪竴绾ч槦鍛�"; + beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勭洿鎺ョ矇涓�"; String userName = "鏃�"; UserInfo user = userInfoService.selectByPKey(uid); @@ -448,65 +501,73 @@ msgOther.setType(MsgOtherGiveContentDTO.TYEP_COUPON); msgOther.setTitle("璧犻�佸鍔卞埜"); msgOther.setGiveType("浣犺禒閫佺殑濂栧姳鍒歌鎴愬姛棰嗗彇"); - msgOther.setReceiveInfo("鏄电О: " + userName + " ID:" + uid); + 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.taoLiJin) { - UserTaoLiJinGiveRecord giveRecord = userTaoLiJinGiveRecordService - .selectByPrimaryKey(Long.parseLong(identify)); - if (giveRecord == null || giveRecord.getState() != UserTaoLiJinGiveRecord.STATE_INIT) - throw new TokenRecordException(1, "璧犻�佽褰曞け鏁堟垨宸茶棰嗗彇"); + } else if (tokenType == TokenTypeEnum.redPack) { + if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) + 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); - - msg = "棰嗗彇鎴愬姛[鎺ㄥ箍绾㈠寘]鎴愬姛锛岃鍒癧鎴戠殑-鎺ㄥ箍绾㈠寘]涓煡鐪�"; - + 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"); + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd HH:mm"); boolean addTeam = addInviteTeam(uid, giveUid, userInfoExtra); - String beiZhu = "鏃�"; - if (addTeam) - beiZhu = "棰嗗彇浜哄凡缁忔垚涓轰綘鐨勪竴绾ч槦鍛�"; + 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(); - - 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); + 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 (UserTaoLiJinOriginException e) { - e.printStackTrace(); + } catch (RedPackGiveRecordException e) { + throw new TokenRecordException(1, e.getMsg()); } + } else if (tokenType == TokenTypeEnum.taoLiJin) { + throw new TokenRecordException(1, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒"); } else { throw new TokenRecordException(1, "鏃犲搴旂被鍨�"); } @@ -541,4 +602,65 @@ 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()); + } } -- Gitblit v1.8.0