diff --git a/src/main/java/com/kiisoo/ic/constants/Constants.java b/src/main/java/com/kiisoo/ic/constants/Constants.java index 5a0da9b..43a069a 100644 --- a/src/main/java/com/kiisoo/ic/constants/Constants.java +++ b/src/main/java/com/kiisoo/ic/constants/Constants.java @@ -50,6 +50,11 @@ public class Constants { */ public static final String ERROR_ROLE_NO_PERMISSION = "0006"; + /** + * 该账号不存在 + */ + public static final String ERROR_MOBILE_NO_USER = "1008"; + public static final String ERROR_MSG_ROLE_NO_PERMISSION = "该角色没有登录权限"; /** diff --git a/src/main/java/com/kiisoo/ic/login/controller/LoginController.java b/src/main/java/com/kiisoo/ic/login/controller/LoginController.java index 226f839..ae27cac 100644 --- a/src/main/java/com/kiisoo/ic/login/controller/LoginController.java +++ b/src/main/java/com/kiisoo/ic/login/controller/LoginController.java @@ -86,6 +86,27 @@ public class LoginController extends BaseController { } } + /** + * 小程序登录账号 + * @param loginParams 登录参数 + * @return 成功/失败 + */ + @RequestMapping(value = "/mobile/login",method = RequestMethod.GET) + @ResponseBody + public Map mobileLoginAccount(@RequestParam("mobile") String mobile){ + try{ + Map resultMap = new HashMap<>(); + LoginBean loginBean = loginService.mobileLogin(mobile); + resultMap.put("code", loginBean.getLoginInfo().get("code")); + resultMap.put("results", loginBean); + resultMap.put("success", Boolean.TRUE); + return resultMap; + }catch (Exception e){ + log.error("登录失败", e); + return fail(); + } + } + /** * 登录账号 * @param code diff --git a/src/main/java/com/kiisoo/ic/login/service/LoginService.java b/src/main/java/com/kiisoo/ic/login/service/LoginService.java index 98dfd7b..7bc1fb4 100644 --- a/src/main/java/com/kiisoo/ic/login/service/LoginService.java +++ b/src/main/java/com/kiisoo/ic/login/service/LoginService.java @@ -50,4 +50,6 @@ public interface LoginService { * @return */ Map qyMiniAutoLogin(String code) throws WxErrorException; + + LoginBean mobileLogin(String mobile); } diff --git a/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java b/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java index 5c06c37..9098296 100644 --- a/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java +++ b/src/main/java/com/kiisoo/ic/login/service/impl/LoginServiceImpl.java @@ -7,6 +7,8 @@ import com.kiisoo.ic.constants.Constants; import com.kiisoo.ic.login.bean.LoginBean; import com.kiisoo.ic.login.enums.LoginEnum; import com.kiisoo.ic.login.service.LoginService; +import com.kiisoo.ic.store.entity.PoiStoreStaff; +import com.kiisoo.ic.store.mapper.PoiStoreStaffDOMapper; import com.kiisoo.ic.system.entity.PrivilageAccountDO; import com.kiisoo.ic.system.entity.PrivilageRoleDO; import com.kiisoo.ic.system.entity.PrivilageUserDO; @@ -61,13 +63,20 @@ public class LoginServiceImpl implements LoginService { * 企业微信service */ private final QWMailListManageService qwMailListManageService; + /** + * 企业微信service + */ + private final PoiStoreStaffDOMapper poiStoreStaffDOMapper; @Autowired - public LoginServiceImpl(PrivilageAccountDOMapper privilageAccountDOMapper, PrivilageUserDOMapper privilageUserDOMapper, PrivilageRoleDOMapper privilageRoleDOMapper, QWMailListManageService qwMailListManageService) { + public LoginServiceImpl(PrivilageAccountDOMapper privilageAccountDOMapper, PrivilageUserDOMapper privilageUserDOMapper, + PrivilageRoleDOMapper privilageRoleDOMapper, QWMailListManageService qwMailListManageService, + PoiStoreStaffDOMapper poiStoreStaffDOMapper) { this.privilageAccountDOMapper = privilageAccountDOMapper; this.privilageUserDOMapper = privilageUserDOMapper; this.privilageRoleDOMapper = privilageRoleDOMapper; this.qwMailListManageService = qwMailListManageService; + this.poiStoreStaffDOMapper = poiStoreStaffDOMapper; } @@ -174,6 +183,78 @@ public class LoginServiceImpl implements LoginService { return loginBean; } + @Override + public LoginBean mobileLogin(String mobile) { + //查询账号 + QueryWrapper accountQw = new QueryWrapper<>(); + accountQw.eq("login",mobile); + accountQw.eq("type",AccountEnum.ACCOUNT_TYPE_MOBILE.getType()); + List mobileAccounts = privilageAccountDOMapper.selectList(accountQw); + Subject subject = SecurityUtils.getSubject(); + UsernamePasswordToken token = null; + Long userId = null; + if (CollectionUtils.isNotEmpty(mobileAccounts)){ + token = new UsernamePasswordToken(mobileAccounts.get(0).getLogin(), mobileAccounts.get(0).getPassword(), true); + userId = mobileAccounts.get(0).getUserId(); + }else{ + QueryWrapper userQw = new QueryWrapper<>(); + userQw.eq("mobil",mobile); + //无账号则绑定账号 + List privilageUserDOS = privilageUserDOMapper.selectList(userQw); + if (CollectionUtils.isNotEmpty(mobileAccounts)){ + userId = privilageUserDOS.get(0).getId(); + PrivilageAccountDO privilageAccountDO = new PrivilageAccountDO(); + privilageAccountDO.setLogin(mobile); + privilageAccountDO.setStatus(1); + privilageAccountDO.setUserId(userId); + privilageAccountDO.setType(AccountEnum.ACCOUNT_TYPE_MOBILE.getType()); + int insert = privilageAccountDOMapper.insert(privilageAccountDO); + if (insert > 1){ + token = new UsernamePasswordToken(mobile, "", true); + }else{ + return new LoginBean(Constants.ERROR_SYSTEM); + } + }else{ + return new LoginBean(Constants.ERROR_ROLE_NO_PERMISSION); + } + } + + try { + subject.login(token); + } catch (UnknownAccountException e) {//账号不存在 + return new LoginBean(Constants.ERROR_ACCOUNT_NOT_EXIST); + } catch (IncorrectCredentialsException e) {//密码错误 + return new LoginBean(Constants.ERROR_PASSWORD); + }catch (AuthenticationException e) { + log.info("login exception", e); + return new LoginBean(Constants.ERROR_SYSTEM); + } + + LoginBean loginBean = new LoginBean(); + if (subject.isAuthenticated()) { + Map selectAccountMap = new HashMap<>(); + PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(userId); + PrivilageRoleDO roleDO = privilageRoleDOMapper.selectRoleName(userId); + Long storeId = privilageUserDOMapper.selectStoreIdByUserId(userId); + Map loginInfoMap = new HashMap<>(); + //成功设置信息 + loginBean.setUserName(privilageUserDO.getName()); + loginBean.setUserId(privilageUserDO.getId()); + loginBean.setRoleId(privilageUserDO.getId()); + loginBean.setRoleCode(roleDO.getCode()); + loginBean.setStoreId(storeId); + if (StringUtils.isNotBlank(roleDO.getCode()) && !MINI_ROLE_CODE.contains(roleDO.getCode())){ + return new LoginBean(Constants.ERROR_ROLE_NO_PERMISSION); + } + loginBean.setLogin(mobile); + loginInfoMap.put("code", LoginEnum.LOGIN_SUCCEED.getCode()); + loginBean.setLoginInfo(loginInfoMap); + }else { + return new LoginBean(Constants.LOGIN_NO_PERMISSIONS); + } + return loginBean; + } + @Override public void bindQywxUserIdByUserId(Long userId, String qywxUserId) { Map selectAccountMap = new HashMap<>(); diff --git a/src/main/java/com/kiisoo/ic/system/enums/AccountEnum.java b/src/main/java/com/kiisoo/ic/system/enums/AccountEnum.java index 51a2207..21a766b 100644 --- a/src/main/java/com/kiisoo/ic/system/enums/AccountEnum.java +++ b/src/main/java/com/kiisoo/ic/system/enums/AccountEnum.java @@ -17,6 +17,7 @@ public enum AccountEnum { ACCOUNT_MODIFY_STATUS_SUCCEED("账号修改成功", 0), ACCOUNT_MODIFY_STATUS_EXISTS("账号已存在", 1), ACCOUNT_TYPE_QYWX("企业微信账号类型", 2), + ACCOUNT_TYPE_MOBILE("企业微信账号类型", 3), ACCOUNT_FIRST_PWD("123456", 0); /**