From cd637932a970e7935b17d41568fe89c92775bccc Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期五, 06 十二月 2019 17:18:27 +0800 Subject: [PATCH] 双12活动添加,邀请码发布修改,爬单新规则添加 --- fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 197 +++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 182 insertions(+), 15 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 6992f0c..a495f1f 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 @@ -3,6 +3,7 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.io.InputStream; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; @@ -15,7 +16,9 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.yeshi.utils.HttpUtil; import org.yeshi.utils.JsonUtil; +import org.yeshi.utils.entity.FileUploadResult; import org.yeshi.utils.tencentcloud.COSManager; import com.google.gson.Gson; @@ -41,22 +44,23 @@ import com.yeshi.fanli.exception.user.ForbiddenUserIdentifyCodeException; import com.yeshi.fanli.exception.user.UserAccountException; import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.money.extract.BindingAccountService; -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.UserAccountBindingHistoryService; import com.yeshi.fanli.service.inter.user.UserAccountService; -import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService; import com.yeshi.fanli.service.inter.user.UserInfoDeleteRecordService; import com.yeshi.fanli.service.inter.user.UserInfoExtraService; import com.yeshi.fanli.service.inter.user.UserInfoModifyRecordService; import com.yeshi.fanli.service.inter.user.UserInfoService; +import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; +import com.yeshi.fanli.service.inter.user.msg.UserAccountMsgNotificationService; +import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.FileUtil; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.ThreadUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory; import com.yeshi.fanli.util.wx.WXLoginUtil; @@ -218,6 +222,8 @@ updateUserInfo.setLastLoginTime(System.currentTimeMillis()); updateUserInfo.setLoginType(loginType); updateUserInfo.setLastLoginIp(request.getRemoteHost()); + // 鏇存柊openId + updateUserInfo.setOpenid(weiXinUser.getOpenid()); userInfoMapper.updateByPrimaryKeySelective(updateUserInfo); // 鍒犻櫎閭�璇峰浘鐗� @@ -664,6 +670,7 @@ userInfoMapper.updateByPrimaryKeySelective(userInfo); } + @Transactional @Override public void register(UserInfo userInfo) throws UserAccountException { if (!StringUtil.isNullOrEmpty(userInfo.getPhone())) { @@ -687,6 +694,7 @@ addUser(userInfo); } + @Transactional @Override public void addUser(UserInfo user) { @@ -719,12 +727,12 @@ e.printStackTrace(); } + // 娣诲姞璐﹀彿缁戝畾鍘嗗彶 if (!StringUtil.isNullOrEmpty(user.getPhone())) userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindPhone, user.getPhone()); if (!StringUtil.isNullOrEmpty(user.getWxUnionId())) userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, user.getWxUnionId()); - } @Override @@ -860,7 +868,7 @@ String defaultNickName = Constant.systemCommonConfig.getDefaultNickName(); if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) { defaultNickName = defaultNickName + uid; - if ((defaultNickName.equals(user.getNickName()) || "杩斿埄鍒�".equals(user.getNickName()))) { + if ((defaultNickName.equals(user.getNickName()) || "鏉挎牀蹇渷".equals(user.getNickName()))) { updateUserInfo.setNickName(weiXinUser.getNickname()); } } @@ -1062,7 +1070,7 @@ } finally { jedis.del(watchKey); jedis.unwatch(); - jedisPool.returnResource(jedis); + jedis.close(); } throw new UserAccountException(10, "璇风◢鍚庡啀璇�"); } @@ -1080,8 +1088,7 @@ // 閫氳繃Code鎹㈠彇淇℃伅 WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()); - WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(), - wxAccount.getAppSecret()); + WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret()); if (weiXinUser == null) { throw new UserAccountException(1, "寰俊甯愬彿鎺堟潈澶辫触"); } @@ -1118,9 +1125,27 @@ spreadUserImgService.deleteImgUrl(userInfo.getId()); } else { LogHelper.test("寰俊unionID涓嶅瓨鍦�:" + weiXinUser.getUnionid()); + + String portrait = null; + if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl())) { + InputStream asInputStream = HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()); + if (asInputStream != null) { + FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, + String.format("/portrait/wx/%s_%s.jpg", weiXinUser.getUnionid(), + System.currentTimeMillis() + "")); + if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) + portrait = result.getUrl(); + } else { + portrait = weiXinUser.getHeadimgurl(); + } + } + + if (StringUtil.isNullOrEmpty(portrait)) + portrait = Constant.systemCommonConfig.getDefaultPortrait(); + // 鍒涘缓鏂拌处鎴� userInfo = new UserInfo(); - userInfo.setPortrait(weiXinUser.getHeadimgurl()); + userInfo.setPortrait(portrait); userInfo.setAppId(appId); userInfo.setNickName(weiXinUser.getNickname()); userInfo.setWxName(weiXinUser.getNickname()); @@ -1150,9 +1175,53 @@ } finally { jedis.del(watchKey); jedis.unwatch(); - jedisPool.returnResource(jedis); + jedis.close(); } throw new UserAccountException(10, "璇风◢鍚庡啀璇�"); + } + + @Transactional + @Override + public UserInfo loginWeiXinNew(HttpServletRequest request, AcceptData acceptData, int loginType, String wxCode, + String appId) throws UserAccountException { + // 鏃ュ織淇℃伅 + JSONObject logInfo = new JSONObject(); + logInfo.put("appId", appId); + logInfo.put("wxCode", wxCode); + logInfo.put("loginType", loginType); + LogHelper.lgoinInfo(logInfo.toString()); + + // 閫氳繃Code鎹㈠彇淇℃伅 + WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()); + WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(wxCode, wxAccount.getAppId(), wxAccount.getAppSecret()); + if (weiXinUser == null) { + throw new UserAccountException(1, "寰俊甯愬彿鎺堟潈澶辫触"); + } + 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 userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid()); + if (userInfo == null) { + String longinKey = StringUtil.Md5("WXLogin:" + weiXinUser.getUnionid()); + redisManager.cacheCommonString(longinKey, JsonUtil.getSimpleGson().toJson(weiXinUser), 60 * 20); + throw new UserAccountException(101, longinKey); + } + // 鏇存柊璐︽埛鐧诲綍淇℃伅 + updateLonginInfo(userInfo, loginType, request); + Long uid = userInfo.getId(); + ThreadUtil.run(new Runnable() { + public void run() { + // 鍒犻櫎閭�璇峰垎浜浘 + spreadUserImgService.deleteImgUrl(uid); + } + }); + return userInfo; } /** @@ -1219,8 +1288,7 @@ throw new UserAccountException(1, "鐢ㄦ埛涓嶅瓨鍦�"); } WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion()); - WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(), - wxAccount.getAppSecret()); + WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(), wxAccount.getAppSecret()); if (weiXinUser == null) { throw new UserAccountException(2, "寰俊甯愬彿鎺堟潈澶辫触"); } @@ -1236,7 +1304,7 @@ if (newUser != null) { throw new UserAccountException(4, "璇ュ井淇″彿宸茶鍏朵粬甯愬彿缁戝畾"); } - } else if (wxUnionId.equals(wxUnionIdExist)) { + } else if (wxUnionId.equalsIgnoreCase(wxUnionIdExist)) { throw new UserAccountException(3, "寰俊甯愬彿涓�鑷存棤闇�鏇存崲"); } @@ -1254,7 +1322,7 @@ String defaultNickName = Constant.systemCommonConfig.getDefaultNickName(); if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) { defaultNickName = defaultNickName + uid; - if ((defaultNickName.equals(user.getNickName()) || "杩斿埄鍒�".equals(user.getNickName()))) { + if ((defaultNickName.equals(user.getNickName()) || "鏉挎牀蹇渷".equals(user.getNickName()))) { updateUserInfo.setNickName(weiXinUser.getNickname()); } } @@ -1263,7 +1331,20 @@ String defaultPortrait = Constant.systemCommonConfig.getDefaultPortrait(); if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait) && defaultPortrait.equals(user.getPortrait())) { - updateUserInfo.setPortrait(weiXinUser.getHeadimgurl()); + String headimgurl = weiXinUser.getHeadimgurl(); + InputStream asInputStream = HttpUtil.getAsInputStream(headimgurl); + if (asInputStream == null) { + LogHelper.test("寰俊澶村儚涓嬭浇澶辫触: " + weiXinUser.getUnionid() + " " + headimgurl); + } else { + FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String + .format("/portrait/wx/%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); + if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) { + headimgurl = result.getUrl(); + } else { + LogHelper.test("寰俊澶村儚涓婁紶澶辫触: " + weiXinUser.getUnionid() + " " + headimgurl); + } + } + updateUserInfo.setPortrait(headimgurl); } userInfoMapper.updateByPrimaryKeySelective(updateUserInfo); @@ -1286,6 +1367,92 @@ } @Override + public UserInfo bindPhoneToLogin(String phone, String key, String appId, HttpServletRequest request) + throws UserAccountException { + UserInfo phoneUser = userInfoMapper.getEffectiveUserInfoByPhone(phone); + if (phoneUser != null) + throw new UserAccountException(1, "鍙风爜宸茬粡琚崰鐢�"); + + // 鍒ゆ柇鎵嬫満鍙风爜鏄惁琚皝绂� + 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); + + String value = redisManager.getCommonString(key); + if (StringUtil.isNullOrEmpty(value)) + throw new UserAccountException(1, "寰俊鎺堟潈澶辨晥锛岃浣跨敤寰俊閲嶆柊鐧诲綍"); + + WeiXinUser weiXinUser = JsonUtil.getSimpleGson().fromJson(value, WeiXinUser.class); + if (weiXinUser == null) + throw new UserAccountException(1, "寰俊鎺堟潈澶辨晥锛岃浣跨敤寰俊閲嶆柊鐧诲綍"); + + UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid()); + // 鐩存帴鐢ㄧ殑寰俊鐧诲綍 + if (userInfo != null) + throw new UserAccountException(10, "璇ュ井淇″彿宸茶鍗犵敤"); + + String portrait = null; + if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl())) { + InputStream asInputStream = HttpUtil.getAsInputStream(weiXinUser.getHeadimgurl()); + if (asInputStream != null) { + FileUploadResult result = COSManager.getInstance().uploadFile(asInputStream, String + .format("/portrait/wx/%s_%s.jpg", weiXinUser.getUnionid(), System.currentTimeMillis() + "")); + if (result != null && !StringUtil.isNullOrEmpty(result.getUrl())) + portrait = result.getUrl(); + } else { + portrait = weiXinUser.getHeadimgurl(); + } + } + + if (StringUtil.isNullOrEmpty(portrait)) + portrait = Constant.systemCommonConfig.getDefaultPortrait(); + + // 鍒涘缓鏂拌处鎴� + userInfo = new UserInfo(); + userInfo.setPhone(phone); + userInfo.setPortrait(portrait); + userInfo.setAppId(appId); + userInfo.setNickName(weiXinUser.getNickname()); + userInfo.setWxName(weiXinUser.getNickname()); + userInfo.setWxOpenId(weiXinUser.getOpenid()); + userInfo.setWxUnionId(weiXinUser.getUnionid()); + userInfo.setWxPic(weiXinUser.getHeadimgurl()); + userInfo.setLastLoginTime(System.currentTimeMillis()); + userInfo.setLoginType(2); + userInfo.setLastLoginIp(request.getRemoteHost()); + userInfo.setState(UserInfo.STATE_NORMAL); + addUser(userInfo); + + Long uid = userInfo.getId(); + ThreadUtil.run(new Runnable() { + public void run() { + try { + // 绗竴娆$櫥褰曟椂鍒涘缓鐢ㄦ埛棰濆淇℃伅 + userInfoExtraService.createUserInfoExtra(uid); + } catch (Exception e) { + e.printStackTrace(); + } + + // 鍔犲叆缁戝畾璁板綍 + UserAccountBindingHistory history = new UserAccountBindingHistory(); + history.setContent(phone); + history.setType(UserAccountBindingHistory.TYPE_PHONE); + history.setUid(uid); + history.setFirst(true); + userAccountBindingHistoryService.addUserAccountBindingHistory(history); + + userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindPhone, phone); + userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, weiXinUser.getUnionid()); + } + }); + // 鍒犻櫎缂撳瓨 + redisManager.removeCommonString(key); + + return userInfo; + } + + @Override public void forbiddenUserAll(Long uid, String reason) { UserInfo currentInfo = userInfoService.selectByPKey(uid); if (currentInfo == null) { -- Gitblit v1.8.0