From a3e7322a0aa6b5b13a84bc76923d0c6b68b13276 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期五, 13 十二月 2019 18:27:12 +0800
Subject: [PATCH] 订单修改
---
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java | 219 ++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 193 insertions(+), 26 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..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.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;
@@ -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
@@ -734,7 +742,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 +763,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 +785,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 +815,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 +843,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 +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());
}
}
@@ -886,7 +894,7 @@
TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyyMMddHHmmss"));
// 澶囦唤鐢ㄦ埛淇℃伅
- UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
+ UserInfo user = userInfoMapper.selectAvailableByPrimaryKey(uid);
// TODO 澶囦唤璧勯噾鏄庣粏
@@ -923,7 +931,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 +946,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());
@@ -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;
}
/**
@@ -1173,7 +1242,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,13 +1283,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(),
- 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