From 7bedd903b10c125660d25373ffea23201bed22cc Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期四, 14 十一月 2019 14:10:19 +0800
Subject: [PATCH] 邀请成功新版消息
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 258 ++++++++++++++++++++++++++-------------------------
1 files changed, 130 insertions(+), 128 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 048b7c0..a5fae9c 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;
@@ -118,8 +121,7 @@
@Lazy
@Resource
private UserInfoModifyRecordService userInfoModifyRecordService;
-
-
+
@Transactional
@Override
public LoginResult login(HttpServletRequest request, AcceptData acceptData, Boolean first, String appId,
@@ -220,6 +222,8 @@
updateUserInfo.setLastLoginTime(System.currentTimeMillis());
updateUserInfo.setLoginType(loginType);
updateUserInfo.setLastLoginIp(request.getRemoteHost());
+ // 鏇存柊openId
+ updateUserInfo.setOpenid(weiXinUser.getOpenid());
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
// 鍒犻櫎閭�璇峰浘鐗�
@@ -689,6 +693,7 @@
addUser(userInfo);
}
+ @Transactional
@Override
public void addUser(UserInfo user) {
@@ -721,12 +726,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
@@ -1082,8 +1087,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, "寰俊甯愬彿鎺堟潈澶辫触");
}
@@ -1120,9 +1124,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());
@@ -1157,10 +1179,10 @@
throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
}
-
@Transactional
@Override
- public UserInfo loginWeiXinNew(HttpServletRequest request, AcceptData acceptData, int loginType, String wxCode, String appId) throws UserAccountException {
+ public UserInfo loginWeiXinNew(HttpServletRequest request, AcceptData acceptData, int loginType, String wxCode,
+ String appId) throws UserAccountException {
// 鏃ュ織淇℃伅
JSONObject logInfo = new JSONObject();
logInfo.put("appId", appId);
@@ -1170,8 +1192,7 @@
// 閫氳繃Code鎹㈠彇淇℃伅
WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
- WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(wxCode, wxAccount.getAppId(),
- wxAccount.getAppSecret());
+ WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(wxCode, wxAccount.getAppId(), wxAccount.getAppSecret());
if (weiXinUser == null) {
throw new UserAccountException(1, "寰俊甯愬彿鎺堟潈澶辫触");
}
@@ -1184,49 +1205,24 @@
throw new UserAccountException(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC);
}
- // 閲囩敤redis浜嬪姟闃叉涓�涓井淇″彿澶氭娉ㄥ唽闂
- String watchKey = StringUtil.Md5("REGISTER:" + weiXinUser.getUnionid());
- Jedis jedis = jedisPool.getResource();
- try {
- jedis.watch(watchKey);
- if (jedis.get(watchKey) != null && Integer.parseInt(jedis.get(watchKey)) > 1)
- throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
- Transaction tran = jedis.multi();
- tran.incr(watchKey);
- List<Object> exec = tran.exec();
- if (exec == null || exec.size() == 0)
- throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
-
- UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
- if (userInfo == null) {
- redisManager.cacheCommonString(watchKey, JsonUtil.getSimpleGson().toJson(weiXinUser), 60 * 20);
- throw new UserAccountException(101, watchKey);
- }
-
- LogHelper.test("寰俊unionID瀛樺湪:" + weiXinUser.getUnionid());
- // 鏇存柊璐︽埛鐧诲綍淇℃伅
- updateLonginInfo(userInfo, loginType, request);
- Long uid = userInfo.getId();
- ThreadUtil.run(new Runnable() {
- public void run() {
- // 鍒犻櫎閭�璇峰垎浜浘
- spreadUserImgService.deleteImgUrl(uid);
- }
- });
- return userInfo;
-
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- jedis.del(watchKey);
- jedis.unwatch();
- jedisPool.returnResource(jedis);
+ 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);
}
- throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
+ // 鏇存柊璐︽埛鐧诲綍淇℃伅
+ updateLonginInfo(userInfo, loginType, request);
+ Long uid = userInfo.getId();
+ ThreadUtil.run(new Runnable() {
+ public void run() {
+ // 鍒犻櫎閭�璇峰垎浜浘
+ spreadUserImgService.deleteImgUrl(uid);
+ }
+ });
+ return userInfo;
}
-
-
/**
* 鏇存柊璐︽埛鐧诲綍淇℃伅
*
@@ -1291,8 +1287,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, "寰俊甯愬彿鎺堟潈澶辫触");
}
@@ -1308,7 +1303,7 @@
if (newUser != null) {
throw new UserAccountException(4, "璇ュ井淇″彿宸茶鍏朵粬甯愬彿缁戝畾");
}
- } else if (wxUnionId.equals(wxUnionIdExist)) {
+ } else if (wxUnionId.equalsIgnoreCase(wxUnionIdExist)) {
throw new UserAccountException(3, "寰俊甯愬彿涓�鑷存棤闇�鏇存崲");
}
@@ -1335,7 +1330,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);
@@ -1356,98 +1364,92 @@
userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, wxUnionId);
}
-
-
+
@Override
- public UserInfo bindPhoneToLogin(String phone, String key, String appId, HttpServletRequest request) throws UserAccountException {
+ public UserInfo bindPhoneToLogin(String phone, String key, String appId, HttpServletRequest request)
+ throws UserAccountException {
UserInfo phoneUser = userInfoMapper.getEffectiveUserInfoByPhone(phone);
- if (phoneUser != null)
+ 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, "寰俊鎺堟潈澶辨晥锛岃浣跨敤寰俊閲嶆柊鐧诲綍");
-
- String watchKey = StringUtil.Md5("REGISTER:" + weiXinUser.getUnionid());
- Jedis jedis = jedisPool.getResource();
- try {
- jedis.watch(watchKey);
- if (jedis.get(watchKey) != null && Integer.parseInt(jedis.get(watchKey)) > 1)
- throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
-
- Transaction tran = jedis.multi();
- tran.incr(watchKey);
- List<Object> exec = tran.exec();
- if (exec == null || exec.size() == 0)
- throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
- UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
- // 鐩存帴鐢ㄧ殑寰俊鐧诲綍
- if (userInfo != null)
- throw new UserAccountException(10, "璇ュ井淇″彿宸茶鍗犵敤");
-
- // 鍒涘缓鏂拌处鎴�
- userInfo = new UserInfo();
- userInfo.setPortrait(weiXinUser.getHeadimgurl());
- 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);
+ UserInfo userInfo = userInfoMapper.getEffectiveUserInfoByWXUnionId(weiXinUser.getUnionid());
+ // 鐩存帴鐢ㄧ殑寰俊鐧诲綍
+ if (userInfo != null)
+ throw new UserAccountException(10, "璇ュ井淇″彿宸茶鍗犵敤");
- userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindPhone, phone);
- userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, weiXinUser.getUnionid());
- }
- });
- // 鍒犻櫎缂撳瓨
- redisManager.removeCommonString(key);
-
- return userInfo;
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- jedis.del(watchKey);
- jedis.unwatch();
- jedisPool.returnResource(jedis);
+ 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();
+ }
}
- throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
- }
-
+ 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) {
--
Gitblit v1.8.0