From 01407e36f8a1d46e065cdcfe14629540dbd6b921 Mon Sep 17 00:00:00 2001
From: yujian <yujian@123.com>
Date: 星期一, 04 十一月 2019 09:41:37 +0800
Subject: [PATCH] 红包
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 217 ++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 195 insertions(+), 22 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 a46a971..3339253 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.msg.UserAccountMsgNotificationService;
-import com.yeshi.fanli.service.inter.user.BindingAccountService;
+import com.yeshi.fanli.service.inter.money.extract.BindingAccountService;
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;
@@ -117,7 +121,8 @@
@Lazy
@Resource
private UserInfoModifyRecordService userInfoModifyRecordService;
-
+
+
@Transactional
@Override
public LoginResult login(HttpServletRequest request, AcceptData acceptData, Boolean first, String appId,
@@ -218,6 +223,8 @@
updateUserInfo.setLastLoginTime(System.currentTimeMillis());
updateUserInfo.setLoginType(loginType);
updateUserInfo.setLastLoginIp(request.getRemoteHost());
+ //鏇存柊openId
+ updateUserInfo.setOpenid(weiXinUser.getOpenid());
userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
// 鍒犻櫎閭�璇峰浘鐗�
@@ -734,7 +741,7 @@
@Override
public void bindPhone(Long uid, String phone) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
@@ -755,7 +762,7 @@
@Override
public void unBindPhone(Long uid, String phone) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
@@ -777,7 +784,7 @@
@Override
public void bindTaoBao(Long uid, String tbOpenId, String tbNickName, String tbPortrait)
throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
@@ -807,7 +814,7 @@
@Override
public void unBindTaoBao(Long uid) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
if (StringUtil.isNullOrEmpty(user.getOpenid()))
@@ -835,7 +842,7 @@
@Override
public void changeWXBind(AcceptData acceptData, Long uid, String code) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
throw new UserAccountException(4, "鐢ㄦ埛涓嶅瓨鍦�");
WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
@@ -860,7 +867,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());
}
}
@@ -886,7 +893,7 @@
TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMddHHmmss"));
// 澶囦唤鐢ㄦ埛淇℃伅
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
// TODO 澶囦唤璧勯噾鏄庣粏
@@ -923,7 +930,7 @@
public void clearUserPortrait(Long uid) {
if (uid == null)
return;
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
String prefix = String.format("/portrait/wx/%s_", user.getWxUnionId());
ObjectListing list = COSManager.getInstance().getObjectList(prefix, null, 30);
if (list != null && list.getObjectSummaries() != null)
@@ -938,7 +945,7 @@
public String repairPortrait(Long uid) {
if (uid == null)
return null;
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null)
return null;
String prefix = String.format("/portrait/wx/%s_", user.getWxUnionId());
@@ -1080,7 +1087,7 @@
// 閫氳繃Code鎹㈠彇淇℃伅
WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
- WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
+ WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(),
wxAccount.getAppSecret());
if (weiXinUser == null) {
throw new UserAccountException(1, "寰俊甯愬彿鎺堟潈澶辫触");
@@ -1118,9 +1125,26 @@
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());
@@ -1155,6 +1179,54 @@
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;
+ }
+
+
+
/**
* 鏇存柊璐︽埛鐧诲綍淇℃伅
*
@@ -1173,7 +1245,7 @@
@Override
public void bindPhoneNew(Long uid, String phone) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null) {
throw new UserAccountException(1, "鐢ㄦ埛涓嶅瓨鍦�");
}
@@ -1214,12 +1286,12 @@
@Override
public void bindWeiXin(AcceptData acceptData, Long uid, String code) throws UserAccountException {
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
if (user == null) {
throw new UserAccountException(1, "鐢ㄦ埛涓嶅瓨鍦�");
}
WXAccountInfoDTO wxAccount = Constant.getWXAccount(acceptData.getPlatform(), acceptData.getVersion());
- WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code, wxAccount.getAppId(),
+ WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code, wxAccount.getAppId(),
wxAccount.getAppSecret());
if (weiXinUser == null) {
throw new UserAccountException(2, "寰俊甯愬彿鎺堟潈澶辫触");
@@ -1236,7 +1308,7 @@
if (newUser != null) {
throw new UserAccountException(4, "璇ュ井淇″彿宸茶鍏朵粬甯愬彿缁戝畾");
}
- } else if (wxUnionId.equals(wxUnionIdExist)) {
+ } else if (wxUnionId.equalsIgnoreCase(wxUnionIdExist)) {
throw new UserAccountException(3, "寰俊甯愬彿涓�鑷存棤闇�鏇存崲");
}
@@ -1254,7 +1326,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 +1335,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);
@@ -1284,6 +1369,94 @@
userInfoModifyRecordService.addModifyRecord(uid, ModifyTypeEnum.bindWeiXin, wxUnionId);
}
+
+
+ @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) {
--
Gitblit v1.8.0