From 8b2191df2f7d94aa299bd43dcbe97c94e5a61bbd Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 20 十一月 2019 14:53:34 +0800 Subject: [PATCH] RocketMQ的消息整改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/TokenRecordServiceImpl.java | 150 +++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 136 insertions(+), 14 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 54dd5b5..dd59cea 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 @@ -11,9 +11,14 @@ 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; @@ -21,13 +26,17 @@ 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; @@ -40,6 +49,7 @@ 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 @@ -83,6 +93,12 @@ @Resource private UserInviteMsgNotificationService userInviteMsgNotificationService; + @Resource + private RedPackGiveRecordService redPackGiveRecordService; + + @Resource + private UserMoneyMsgNotificationService userMoneyMsgNotificationService; + @Override public void insertSelective(TokenRecord record) { @@ -103,7 +119,7 @@ } @Override - public TokenVO discernToken(String token, Long uid) throws TokenRecordException { + public TokenVO discernToken(String token, Long uid, AcceptData acceptData) throws TokenRecordException { // 瑙f瀽鍙d护 String parseToken = TokenUtil.parseToken(token); if (StringUtil.isNullOrEmpty(parseToken)) @@ -125,8 +141,9 @@ 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(); @@ -140,15 +157,12 @@ 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) { + if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE || (endTime != null && endTime.getTime() < now.getTime())) { tips.add("鍝庡憖锛岃繖寮犲厤鍗曞埜宸插け鏁堜簡锛�"); } else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) { tips.add("鍝庡憖锛岃繖寮犲厤鍗曞埜宸茶棰嗗彇浜嗭紒"); @@ -159,7 +173,7 @@ state = true; UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) { - tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱"); + tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勪竴绾ч槦鍛橈紱"); tips.add("鑾疯禒鐨勫厤鍗曞埜锛岄渶瑕佹縺娲诲悗鎵嶈兘浣跨敤锛岃鎯呭弬瑙佸厤鍗曞埜婵�娲昏鍒欙紱"); tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濇煡鐪嬨��"); } else { @@ -179,15 +193,12 @@ 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) { + if (userCoupon.getState() == UserSystemCoupon.STATE_OVERDUE|| (endTime != null && endTime.getTime() < now.getTime())) { tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸插け鏁堜簡锛�"); } else if (userCoupon.getState() == UserSystemCoupon.STATE_END_USE) { tips.add("鍝庡憖锛岃繖寮犺繑鍒╁鍔卞埜宸茶棰嗗彇浜嗭紒"); @@ -198,7 +209,7 @@ state = true; UserInfoExtra userInfoExtra = userInfoExtraService.getUserInfoExtra(uid); if (userInfoExtra == null || StringUtil.isNullOrEmpty(userInfoExtra.getInviteCode())) { - tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佽�呯殑涓�绾ч槦鍛橈紱"); + tips.add("纭棰嗗彇鍚庯紝浣犲皢鎴愪负璧犻�佷汉鐨勪竴绾ч槦鍛橈紱"); tips.add("鏉挎牀蹇渷濂栧姳鍒革紝鍙敤浜庘�滃凡鍒拌处鈥濈殑杩斿埄璁㈠崟锛屽湪杩斿埄鐨勫熀纭�涓婂啀鑾峰緱涓�瀹氭瘮渚嬬殑杩斿埄锛�"); tips.add("鎴愬姛棰嗗彇鍚庯紝璇峰埌鈥滄垜鐨�-绂忓埄涓績鈥濅腑鏌ョ湅銆�"); } else { @@ -207,6 +218,39 @@ } } 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, "鎺ㄥ箍绾㈠寘鐩稿叧鍔熻兘宸蹭笅绾匡紒"); @@ -237,6 +281,7 @@ TokenVO tokenVO = new TokenVO(); tokenVO.setAmount(num); + tokenVO.setMoney(money); tokenVO.setToken(parseToken); tokenVO.setNickName(nickName + "璧犻��"); tokenVO.setPortrait(portrait); @@ -249,7 +294,7 @@ @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, "鐢ㄦ埛鏈櫥褰�"); @@ -285,7 +330,6 @@ String msg = "棰嗗彇鎴愬姛"; TokenTypeEnum tokenType = rokenRecord.getType(); if (tokenType == TokenTypeEnum.freeCoupon) { - // 璧犻�佽褰� UserSystemCouponGiveRecord giveRecord = userSystemCouponGiveRecordService .selectByPrimaryKey(Long.parseLong(identify)); @@ -465,6 +509,58 @@ 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 { @@ -530,9 +626,35 @@ return; Date date = new Date(); for (TokenRecord tokenRecord: list) { + Integer state = tokenRecord.getState(); + if (state != null && state == 0) + continue; + 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