From 56364722d3ed70d48ec41f567a4e59e5ccbbb868 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 19 五月 2022 17:45:42 +0800 Subject: [PATCH] 增加权限管理 --- src/main/resources/code/service/app/src/main/java/com/ks/app/service/impl/user/UserAccountServiceImpl.java | 104 +++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 94 insertions(+), 10 deletions(-) diff --git a/src/main/resources/code/service/app/src/main/java/com/ks/app/service/impl/user/UserAccountServiceImpl.java b/src/main/resources/code/service/app/src/main/java/com/ks/app/service/impl/user/UserAccountServiceImpl.java index c3e5e6e..89aa0b6 100644 --- a/src/main/resources/code/service/app/src/main/java/com/ks/app/service/impl/user/UserAccountServiceImpl.java +++ b/src/main/resources/code/service/app/src/main/java/com/ks/app/service/impl/user/UserAccountServiceImpl.java @@ -1,27 +1,24 @@ package com.ks.app.service.impl.user; import com.ks.app.dto.user.LoginInfoDTO; +import com.ks.app.entity.SystemEnum; import com.ks.app.entity.config.SystemConfigKey; import com.ks.app.entity.user.UserInfo; import com.ks.app.entity.user.UserLoginRecord; import com.ks.app.entity.user.WXUserInfo; import com.ks.app.exception.user.LoginException; +import com.ks.app.exception.user.UserAccountException; import com.ks.app.service.inter.config.SystemConfigService; import com.ks.app.service.inter.user.*; import com.ks.app.service.manager.VerifyCodeManager; import com.ks.app.utils.AliyunOneKeyLoginUtil; -import org.apache.zookeeper.Login; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.yeshi.utils.PropertiesUtil; import org.yeshi.utils.StringUtil; -import org.yeshi.utils.entity.wx.WXAPPInfo; import org.yeshi.utils.entity.wx.WeiXinUser; import org.yeshi.utils.wx.WXAppLoginUtil; -import org.yeshi.utils.wx.WXUtil; import javax.annotation.Resource; -import java.util.Properties; import java.util.UUID; @Service @@ -66,8 +63,8 @@ loginInfo.setPhone(mobile); } else { //楠岃瘉鐮佺櫥褰� - if (!verifyCodeManager.isPhoneCodeRight(loginInfo.getPhone(), loginInfo.getVcode())) { - throw new LoginException("楠岃瘉鐮佸嚭閿�"); + if (!verifyCodeManager.isPhoneCodeRight(loginInfo.getSystem(), loginInfo.getPhone(), loginInfo.getVcode())) { + throw new LoginException("楠岃瘉鐮侀敊璇�"); } } //鎵ц鐧诲綍鎿嶄綔 @@ -104,8 +101,11 @@ //淇濆瓨寰俊鐢ㄦ埛淇℃伅 WXUserInfo wxUserInfo = null; try { - wxUserInfo = wxUserInfoService.save(WXUserInfo.create(weiXinUser)); + WXUserInfo temp = WXUserInfo.create(weiXinUser); + temp.setSystem(loginInfo.getSystem()); + wxUserInfo = wxUserInfoService.save(temp); } catch (Exception e) { + e.printStackTrace(); throw new LoginException("淇濆瓨寰俊鎺堟潈淇℃伅澶辫触"); } wxUserInfo.setSystem(loginInfo.getSystem()); @@ -116,7 +116,11 @@ newUser.setWxUser(wxUserInfo); newUser.setSystem(loginInfo.getSystem()); newUser.setNickName(wxUserInfo.getNickName()); - newUser.setPortrait(wxUserInfo.getHeadImgUrl()); + if (StringUtil.isNullOrEmpty(wxUserInfo.getHeadImgUrl())) { + newUser.setPortrait(systemConfigService.getValueCache(loginInfo.getSystem(), SystemConfigKey.defaultPortrait)); + } else { + newUser.setPortrait(wxUserInfo.getHeadImgUrl()); + } try { userInfoService.add(newUser); } catch (Exception e) { @@ -151,9 +155,89 @@ } loginSuccess(user.getId(), loginInfo); - return null; + return user; } + @Override + public void unRegister(Long uid) { + UserInfo update = new UserInfo(); + update.setId(uid); + update.setStatus(UserInfo.STATUS_OWN_DELETE); + userInfoService.update(update); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void bindWX(Long uid, String code) throws UserAccountException { + UserInfo user = userInfoService.get(uid); + + if (user == null) { + throw new UserAccountException(UserAccountException.CODE_USER_ERROR, "鐢ㄦ埛涓嶅瓨鍦�"); + } + + SystemEnum system = user.getSystem(); + String appId = systemConfigService.getValueCache(system, SystemConfigKey.wxAppId); + String appSecret = systemConfigService.getValueCache(system, SystemConfigKey.wxAppSecret); + WeiXinUser weiXinUser = WXAppLoginUtil.getWeiXinUser(code, appId, appSecret); + if (weiXinUser == null) { + throw new UserAccountException(UserAccountException.CODE_ERROR_WX_INFO, "寰俊鎺堟潈淇℃伅鑾峰彇澶辫触"); + } + //淇濆瓨寰俊鐢ㄦ埛淇℃伅 + WXUserInfo wxUserInfo = null; + try { + WXUserInfo temp = WXUserInfo.create(weiXinUser); + temp.setSystem(system); + wxUserInfo = wxUserInfoService.save(temp); + } catch (Exception e) { + throw new UserAccountException(UserAccountException.CODE_ERROR_WX_INFO, "淇濆瓨寰俊鎺堟潈淇℃伅澶辫触"); + } + UserInfo u = userInfoService.selectByWXIdAndSystemAndStatus(wxUserInfo.getId(), system, UserInfo.STATUS_NORMAL); + if (u != null) { + throw new UserAccountException(UserAccountException.CODE_ALREAD_BIND, "寰俊宸茬粦瀹氬叾浠栬处鍙�"); + } + //缁戝畾鍒扮敤鎴� + UserInfo update = new UserInfo(); + update.setId(uid); + update.setWxUser(wxUserInfo); + userInfoService.update(update); + } + + @Override + public void bindPhone(Long uid, String phone, String vcode, String token) throws UserAccountException { + UserInfo user = userInfoService.get(uid); + if (user == null) { + throw new UserAccountException(UserAccountException.CODE_USER_ERROR, "鐢ㄦ埛涓嶅瓨鍦�"); + } + SystemEnum system = user.getSystem(); + if (!StringUtil.isNullOrEmpty(token)) { + //涓�閿櫥褰� + //鑾峰彇鐢佃瘽鍙风爜 + String mobile = AliyunOneKeyLoginUtil.getMobile(token, UUID.randomUUID().toString(), systemConfigService.getValueCache(system, SystemConfigKey.aliyunOneKeyAuthAcessKey), systemConfigService.getValueCache(system, SystemConfigKey.aliyunOneKeyAuthAcessSecret)); + if (StringUtil.isNullOrEmpty(mobile)) { + throw new UserAccountException(UserAccountException.CODE_ERROR_PHONE, "鐢佃瘽鍙风爜鑾峰彇澶辫触"); + } + phone = mobile; + } else { + //楠岃瘉鐮佺櫥褰� + if (!verifyCodeManager.isPhoneCodeRight(system, phone, vcode)) { + throw new UserAccountException(UserAccountException.CODE_ERROR_PHONE, "楠岃瘉鐮侀敊璇�"); + } + } + + + UserInfo u = userInfoService.selectByPhoneAndSystemAndStatus(phone, system, UserInfo.STATUS_NORMAL); + if (u != null) { + throw new UserAccountException(UserAccountException.CODE_ALREAD_BIND, "鎵嬫満鍙峰凡缁戝畾鍏朵粬璐﹀彿"); + } + + //缁戝畾鍒扮敤鎴� + UserInfo update = new UserInfo(); + update.setId(uid); + update.setPhone(phone); + userInfoService.update(update); + } + + /** * @return void * @author hxh -- Gitblit v1.8.0