From 833ec62ccef409ddeee5594af855ea050060257d Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期四, 19 十二月 2019 19:29:34 +0800
Subject: [PATCH] 队员改为粉丝,京东短链解析商品ID修改
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 201 ++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 184 insertions(+), 17 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 22f9533..f04b8c3 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;
@@ -57,6 +60,7 @@
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;
@@ -118,7 +122,7 @@
@Resource
private UserInfoModifyRecordService userInfoModifyRecordService;
- @Transactional
+ @Transactional(rollbackFor=Exception.class)
@Override
public LoginResult login(HttpServletRequest request, AcceptData acceptData, Boolean first, String appId,
String code, String phone, UserInfo tbUserInfo, boolean wxinstall, int loginType)
@@ -218,6 +222,8 @@
updateUserInfo.setLastLoginTime(System.currentTimeMillis());
updateUserInfo.setLoginType(loginType);
updateUserInfo.setLastLoginIp(request.getRemoteHost());
+ // 鏇存柊openId
+ updateUserInfo.setOpenid(weiXinUser.getOpenid());
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
// 鍒犻櫎閭�璇峰浘鐗�
@@ -374,7 +380,7 @@
}
}
- @Transactional
+ @Transactional(rollbackFor=Exception.class)
@Override
public LoginResult loginNoInstallWX(AcceptData acceptData, String appId, String code, String phone,
UserInfo tbUserInfo, int loginType) throws UserAccountException {
@@ -497,7 +503,7 @@
connectUsers(mainUser, lessUser);
}
- @Transactional
+ @Transactional(rollbackFor=Exception.class)
@Override
public void connectUsers(UserInfo mainUser, UserInfo lessUser) throws UserAccountException {
mainUser = userInfoMapper.selectByPrimaryKeyForUpdate(mainUser.getId());
@@ -664,6 +670,7 @@
userInfoMapper.updateByPrimaryKeySelective(userInfo);
}
+ @Transactional(rollbackFor=Exception.class)
@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());
}
}
@@ -967,7 +975,7 @@
return user.getPortrait();
}
- @Transactional
+ @Transactional(rollbackFor=Exception.class)
@Override
public UserInfo loginPhone(HttpServletRequest request, int loginType, String vcode, String phone, String appId)
throws UserAccountException {
@@ -1062,12 +1070,12 @@
} finally {
jedis.del(watchKey);
jedis.unwatch();
- jedisPool.returnResource(jedis);
+ jedis.close();
}
throw new UserAccountException(10, "璇风◢鍚庡啀璇�");
}
- @Transactional
+ @Transactional(rollbackFor=Exception.class)
@Override
public UserInfo loginWinXin(HttpServletRequest request, AcceptData acceptData, int loginType, String code,
String appId) throws UserAccountException {
@@ -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(rollbackFor=Exception.class)
+ @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