From d2ee731b6a64fa002bceddebf0cc59c78b6c17ce Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 27 二月 2019 10:12:31 +0800 Subject: [PATCH] 邀请成功消息提醒 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 193 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 179 insertions(+), 14 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java index c437e29..4e3fad1 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java @@ -13,6 +13,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.tencentcloud.COSManager; import com.google.gson.Gson; import com.qcloud.cos.model.COSObjectSummary; @@ -31,6 +33,8 @@ import com.yeshi.fanli.entity.bus.user.AccountDetails; import com.yeshi.fanli.entity.bus.user.AccountMessage; import com.yeshi.fanli.entity.bus.user.BindingAccount; +import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode; +import com.yeshi.fanli.entity.bus.user.ForbiddenUserIdentifyCode.ForbiddenUserIdentifyCodeTypeEnum; import com.yeshi.fanli.entity.bus.user.HongBao; import com.yeshi.fanli.entity.bus.user.LoginResult; import com.yeshi.fanli.entity.bus.user.MoneyRecord; @@ -44,16 +48,20 @@ import com.yeshi.fanli.exception.UserAccountException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.hongbao.HongBaoService; +import com.yeshi.fanli.service.inter.msg.UserAccountMsgNotificationService; +import com.yeshi.fanli.service.inter.user.ForbiddenUserIdentifyCodeService; import com.yeshi.fanli.service.inter.user.SpreadUserImgService; import com.yeshi.fanli.service.inter.user.UserAccountService; +import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.FileUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.factory.AccountDetailsFactory; +import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory; import com.yeshi.fanli.util.wx.WXLoginUtil; -import org.yeshi.utils.JsonUtil; -import org.yeshi.utils.tencentcloud.COSManager; + +import net.sf.json.JSONObject; @Service public class UserAccountServiceImpl implements UserAccountService { @@ -96,10 +104,29 @@ @Resource private SpreadUserImgService spreadUserImgService; + @Resource + private UserAccountMsgNotificationService userAccountMsgNotificationService; + + @Resource + private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; + + @Resource + private ForbiddenUserIdentifyCodeService forbiddenUserIdentifyCodeService; + @Transactional @Override public LoginResult login(HttpServletRequest request, Boolean first, String appId, String code, String phone, UserInfo tbUserInfo, boolean wxinstall, int loginType) throws UserAccountException { + + JSONObject logInfo = new JSONObject(); + logInfo.put("appId", appId); + logInfo.put("code", code); + logInfo.put("phone", phone); + if (tbUserInfo != null) + logInfo.put("tbUserInfo", tbUserInfo.getId()); + logInfo.put("loginType", loginType); + LogHelper.lgoinInfo(logInfo.toString()); + HttpSession session = request.getSession(); if (first != null && first == true) session.removeAttribute("LAST_LOGIN_USER"); @@ -110,7 +137,20 @@ WeiXinUser weiXinUser = null; switch (loginType) { case 1:// 娣樺疂 + // 鍒ゆ柇娣樺疂鏄惁琚皝绂� + if (!StringUtil.isNullOrEmpty(tbUserInfo.getTaoBaoUid())) { + ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode( + ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, tbUserInfo.getTaoBaoUid()); + if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective()) + throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, + Constant.FORBIDDEN_USER_REASON_DESC); + } userInfo = getUserInfoByTaoBaoOpenId(appId, tbUserInfo.getOpenid()); + // 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄� + if (userInfo != null && userInfo.getState() != null + && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE + || userInfo.getState() == UserInfo.STATE_DELETE)) + userInfo = null; if (userInfo == null) {// 鍘熷厛鐨勮处鍙蜂笉瀛樺湪 userInfo = new UserInfo(); userInfo.setAppId(appId); @@ -142,7 +182,18 @@ if (weiXinUser == null) throw new UserAccountException(1001, "鏃犳硶鑾峰彇鍒板井淇′釜浜轰俊鎭�"); LogHelper.test("寰俊鎺堟潈鐢ㄦ埛淇℃伅锛�" + new Gson().toJson(weiXinUser)); + // 鍒ゆ柇寰俊unionid鏄惁琚皝绂� + ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode( + ForbiddenUserIdentifyCodeTypeEnum.wxUnionId, weiXinUser.getUnionid()); + if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective()) + throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC); + userInfo = getUserInfoByWXUnionId(appId, weiXinUser.getUnionid()); + // 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄� + if (userInfo != null && userInfo.getState() != null + && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE + || userInfo.getState() == UserInfo.STATE_DELETE)) + userInfo = null; // 鐩存帴鐢ㄧ殑寰俊鐧诲綍 if (lastUser == null) { if (userInfo != null) { @@ -206,13 +257,17 @@ // 缁戝畾鍏崇郴 UserInfo updateUserInfo = new UserInfo(userInfo.getId()); - if (!StringUtil.isNullOrEmpty(lastUser.getPhone())) + if (!StringUtil.isNullOrEmpty(lastUser.getPhone())) { updateUserInfo.setPhone(lastUser.getPhone()); - + userAccountMsgNotificationService.bindingSuccess(userInfo.getId(), + MsgAccountDetailFactory.TYPE_PHONE); + } if (!StringUtil.isNullOrEmpty(lastUser.getOpenid())) { updateUserInfo.setOpenid(lastUser.getOpenid()); updateUserInfo.setTbName(lastUser.getTbName()); updateUserInfo.setTbPic(lastUser.getTbPic()); + userAccountMsgNotificationService.bindingSuccess(userInfo.getId(), + MsgAccountDetailFactory.TYPE_TB); } updateUserInfo.setLastLoginTime(System.currentTimeMillis()); userInfoMapper.updateByPrimaryKeySelective(updateUserInfo); @@ -264,7 +319,19 @@ } } case 3:// 鎵嬫満鍙风爜 + // 鍒ゆ柇鎵嬫満鍙风爜鏄惁琚皝绂� + ForbiddenUserIdentifyCode identifyCode1 = forbiddenUserIdentifyCodeService + .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone); + if (identifyCode1 != null && identifyCode1.getEffective() != null && identifyCode1.getEffective()) + throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC); + userInfo = getUserInfoByPhone(appId, phone); + // 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄� + if (userInfo != null && userInfo.getState() != null + && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE + || userInfo.getState() == UserInfo.STATE_DELETE)) + userInfo = null; + if (userInfo == null) {// 鍘熷厛鐨勮处鍙蜂笉瀛樺湪 userInfo = new UserInfo(); userInfo.setAppId(appId); @@ -303,10 +370,25 @@ @Override public LoginResult loginNoInstallWX(String appId, String code, String phone, UserInfo tbUserInfo, int loginType) throws UserAccountException { + JSONObject logInfo = new JSONObject(); + logInfo.put("appId", appId); + logInfo.put("code", code); + logInfo.put("phone", phone); + if (tbUserInfo != null) + logInfo.put("tbUserInfo", tbUserInfo.getId()); + logInfo.put("loginType", loginType); + LogHelper.lgoinInfo(logInfo.toString()); + UserInfo userInfo = null; WeiXinUser weiXinUser = null; switch (loginType) { case 1:// 娣樺疂 + if (!StringUtil.isNullOrEmpty(tbUserInfo.getTaoBaoUid())) { + ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService.listByTypeAndIdentifyCode( + ForbiddenUserIdentifyCodeTypeEnum.taobaoUid, tbUserInfo.getTaoBaoUid()); + if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective()) + throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC); + } userInfo = getUserInfoByTaoBaoOpenId(appId, tbUserInfo.getOpenid()); break; case 2:// 寰俊 @@ -314,12 +396,29 @@ weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code); if (weiXinUser == null) throw new UserAccountException(1001, "鏃犳硶鑾峰彇鍒板井淇′釜浜轰俊鎭�"); + + // 鍒ゆ柇鏄惁琚皝绂� + ForbiddenUserIdentifyCode identifyCode = forbiddenUserIdentifyCodeService + .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone); + if (identifyCode != null && identifyCode.getEffective() != null && identifyCode.getEffective()) + throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC); + userInfo = getUserInfoByWXUnionId(appId, weiXinUser.getUnionid()); break; case 3:// 鎵嬫満鍙风爜 + // 鍒ゆ柇鏄惁琚皝绂� + ForbiddenUserIdentifyCode identifyCode1 = forbiddenUserIdentifyCodeService + .listByTypeAndIdentifyCode(ForbiddenUserIdentifyCodeTypeEnum.phone, phone); + if (identifyCode1 != null && identifyCode1.getEffective() != null && identifyCode1.getEffective()) + throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC); userInfo = getUserInfoByPhone(appId, phone); break; } + + // 鍒ゆ柇鐢ㄦ埛鏄惁琚垹闄� + if (userInfo != null && userInfo.getState() != null && (userInfo.getState() == UserInfo.STATE_DELETE_OUT_OF_DATE + || userInfo.getState() == UserInfo.STATE_DELETE)) + userInfo = null; if (userInfo != null) { UserInfo updateUserInfo = new UserInfo(userInfo.getId()); @@ -400,9 +499,9 @@ if (!StringUtil.isNullOrEmpty(mainUser.getPhone()) && !StringUtil.isNullOrEmpty(lessUser.getPhone())) throw new UserAccountException(9, "涓や釜璐﹀彿閮界粦瀹氫簡鎵嬫満鍙风爜锛岃瑙g粦鍏朵腑涓�涓�"); - if (lessUser.getMyHongBao().compareTo(new BigDecimal("20")) >= 0 - && mainUser.getMyHongBao().compareTo(new BigDecimal("20")) > 0) - throw new UserAccountException(10, String.format("璐︽埛ID:%s 鐨勮祫閲戣秴杩�20鍏冿紝涓轰繚璇佽祫閲戝畨鍏ㄨ鑱旂郴瀹㈡湇鎵撻��", lessUser.getId() + "")); + if (lessUser.getMyHongBao().compareTo(new BigDecimal("10")) >= 0 + && mainUser.getMyHongBao().compareTo(new BigDecimal("10")) > 0) + throw new UserAccountException(10, String.format("璐︽埛ID:%s 鐨勮祫閲戣秴杩�10鍏冿紝涓轰繚璇佽祫閲戝畨鍏ㄨ鑱旂郴瀹㈡湇鎵撻��", lessUser.getId() + "")); // 鍒ゅ畾鏄惁缁戝畾浜嗗悓涓�鏀粯瀹� List<BindingAccount> mainUserAccountList = bindingAccountMapper.selectByUid(mainUser.getId()); @@ -510,6 +609,7 @@ moneyRecordMapper.insertSelective(moneyRecord); } + userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId()); } /** @@ -519,8 +619,25 @@ * @param unionId * @return */ - public UserInfo getUserInfoByWXUnionId(String appId, String unionId) { - return userInfoMapper.getUserInfoByAppIdAndWXUnionId(appId, unionId); + public UserInfo getUserInfoByWXUnionId(String appId, String unionId) throws UserAccountException { + if (StringUtil.isNullOrEmpty(appId)) + throw new UserAccountException(1, "appId涓虹┖"); + if (StringUtil.isNullOrEmpty(unionId)) + throw new UserAccountException(2, "unionId涓虹┖"); + + List<UserInfo> list = userInfoMapper.listByAppIdAndWXUnionId(appId, unionId); + // 鍓旈櫎琚垹闄ゆ帀鐨勭敤鎴� + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getState() == UserInfo.STATE_DELETE + || list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) { + list.remove(i); + i--; + } + } + if (list.size() > 0) + return list.get(list.size() - 1); + else + return null; } /** @@ -530,9 +647,26 @@ * @param openId * @return */ - public UserInfo getUserInfoByTaoBaoOpenId(String appId, String openId) { + public UserInfo getUserInfoByTaoBaoOpenId(String appId, String openId) throws UserAccountException { + if (StringUtil.isNullOrEmpty(appId)) + throw new UserAccountException(1, "appId涓虹┖"); + if (StringUtil.isNullOrEmpty(openId)) + throw new UserAccountException(2, "openId涓虹┖"); + List<UserInfo> list = userInfoMapper.listByAppIdAndTaoBaoOpenId(appId, openId); - return userInfoMapper.getUserInfoByAppIdAndTaoBaoOpenId(appId, openId); + // 鍓旈櫎琚垹闄ゆ帀鐨勭敤鎴� + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getState() == UserInfo.STATE_DELETE + || list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) { + list.remove(i); + i--; + } + } + if (list.size() > 0) + return list.get(list.size() - 1); + else + return null; + } /** @@ -542,9 +676,26 @@ * @param phone * @return */ - public UserInfo getUserInfoByPhone(String appId, String phone) { + public UserInfo getUserInfoByPhone(String appId, String phone) throws UserAccountException { + if (StringUtil.isNullOrEmpty(appId)) + throw new UserAccountException(1, "appId涓虹┖"); + if (StringUtil.isNullOrEmpty(phone)) + throw new UserAccountException(2, "phone涓虹┖"); + List<UserInfo> list = userInfoMapper.listByAppIdAndPhone(appId, phone); - return userInfoMapper.getUserInfoByAppIdAndPhone(appId, phone); + // 鍓旈櫎琚垹闄ゆ帀鐨勭敤鎴� + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getState() == UserInfo.STATE_DELETE + || list.get(i).getState() == UserInfo.STATE_DELETE_OUT_OF_DATE) { + list.remove(i); + i--; + } + } + if (list.size() > 0) + return list.get(list.size() - 1); + else + return null; + } private void updateLatestLoginTime(Long uid) { @@ -624,6 +775,7 @@ UserInfo update = new UserInfo(user.getId()); update.setPhone(phone); userInfoMapper.updateByPrimaryKeySelective(update); + userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_PHONE); } @Override @@ -644,6 +796,7 @@ UserInfo updateUserInfo = new UserInfo(uid); updateUserInfo.setPhone(""); userInfoMapper.updateByPrimaryKeySelective(updateUserInfo); + userAccountMsgNotificationService.unBindingSuccess(uid, MsgAccountDetailFactory.TYPE_PHONE); } @Override @@ -653,8 +806,12 @@ if (user == null) throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�"); - if (!StringUtil.isNullOrEmpty(user.getOpenid())) + if (!StringUtil.isNullOrEmpty(user.getOpenid()) && !user.getOpenid().equalsIgnoreCase(tbOpenId)) throw new UserAccountException(5, "褰撳墠璐﹀彿宸茬粡缁戝畾浜嗘窐瀹濓紝璇峰厛瑙g粦"); + + // 缁戝畾鍚屼竴涓窐瀹濆彿 + if (!StringUtil.isNullOrEmpty(user.getOpenid()) && user.getOpenid().equalsIgnoreCase(tbOpenId)) + return; UserInfo taoBaoUser = getUserInfoByTaoBaoOpenId(user.getAppId(), tbOpenId); if (taoBaoUser != null) @@ -669,6 +826,8 @@ update.setPortrait(tbPortrait); } userInfoMapper.updateByPrimaryKeySelective(update); + + userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_TB); } @Override @@ -693,6 +852,10 @@ } userInfoMapper.updateByPrimaryKeySelective(update); + + userExtraTaoBaoInfoService.unBindUid(uid); + + userAccountMsgNotificationService.unBindingSuccess(uid, MsgAccountDetailFactory.TYPE_TB); } @Override @@ -725,6 +888,8 @@ updateUserInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait()); } userInfoMapper.updateByPrimaryKeySelective(updateUserInfo); + + userAccountMsgNotificationService.changeBindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX); } @Override -- Gitblit v1.8.0