小程序登录

master
yechenhao 6 years ago
parent f6def792b6
commit f3c9dc9cfb

@ -51,6 +51,10 @@ public class ShiroConfig {
filterChainDefinitionMap.put("/view/**", "anon"); filterChainDefinitionMap.put("/view/**", "anon");
filterChainDefinitionMap.put("/templates/**", "anon"); filterChainDefinitionMap.put("/templates/**", "anon");
filterChainDefinitionMap.put("/login", "anon"); filterChainDefinitionMap.put("/login", "anon");
filterChainDefinitionMap.put("/qy/mini/login", "anon");
filterChainDefinitionMap.put("/mini/login", "anon");
filterChainDefinitionMap.put("/login/bind", "anon");
filterChainDefinitionMap.put("/user/qrCode", "anon");
// 配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了 // 配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了
filterChainDefinitionMap.put("/logout", "logout"); filterChainDefinitionMap.put("/logout", "logout");
// 过滤链定义,从上向下顺序执行,一般将/**放在最为下边 -->:这是一个坑呢,一不小心代码就不好使了 // 过滤链定义,从上向下顺序执行,一般将/**放在最为下边 -->:这是一个坑呢,一不小心代码就不好使了

@ -1,6 +1,8 @@
package com.kiisoo.ic.constants; package com.kiisoo.ic.constants;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -36,6 +38,20 @@ public class Constants {
public static final String ERROR_MSG_ACCOUNT_NOT_EXIST = "该账号不存在"; public static final String ERROR_MSG_ACCOUNT_NOT_EXIST = "该账号不存在";
/**
*
*/
public static final String ERROR_ACCOUNT_NOT_BIND = "0005";
public static final String ERROR_MSG_ACCOUNT_NOT_BIND = "该账号未绑定";
/**
*
*/
public static final String ERROR_ROLE_NO_PERMISSION = "0006";
public static final String ERROR_MSG_ROLE_NO_PERMISSION = "该角色没有登录权限";
/** /**
* *
*/ */
@ -59,4 +75,12 @@ public class Constants {
} }
}; };
/** 数字对应周 */
public static final List<String> MINI_ROLE_CODE = new ArrayList<String>() {
private static final long serialVersionUID = 1L;
{
add("DZ-DIANZHANG");
add("DG-DAOGOU");
}
};
} }

@ -51,6 +51,10 @@ public class PrivilageCpUserDO {
* () * ()
*/ */
private String mobile; private String mobile;
/**
*
*/
private String qrCode;
/** /**
* *
*/ */

@ -4,7 +4,9 @@ import com.kiisoo.ic.common.BaseController;
import com.kiisoo.ic.login.bean.LoginBean; import com.kiisoo.ic.login.bean.LoginBean;
import com.kiisoo.ic.login.enums.LoginEnum; import com.kiisoo.ic.login.enums.LoginEnum;
import com.kiisoo.ic.login.service.LoginService; import com.kiisoo.ic.login.service.LoginService;
import com.kiisoo.ic.wx.service.QWMailListManageService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.Subject;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -18,6 +20,8 @@ import javax.servlet.http.HttpSession;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import static com.kiisoo.ic.constants.Constants.ERROR_ACCOUNT_NOT_BIND;
/** /**
* @Description: * @Description:
* @Author: wangyinjia * @Author: wangyinjia
@ -63,6 +67,63 @@ public class LoginController extends BaseController {
} }
} }
/**
*
* @param login
* @param password
* @return /
*/
@RequestMapping(value = "/mini/login",method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> miniLoginAccount(@RequestParam(value = "login")String login,
@RequestParam(value = "password")String password,
@RequestParam(value = "isMD5",required = false,defaultValue = "false")Boolean isMD5){
try{
Map<String, Object> resultMap = new HashMap<>();
LoginBean loginBean = loginService.miniLogin(login, password,isMD5);
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
* @return /
*/
@RequestMapping(value = "/qy/mini/login",method = RequestMethod.GET)
@ResponseBody
public Map<String, Object> qyMiniAutoLogin(@RequestParam(value = "code")String code){
try{
Map<String, Object> resultMap = new HashMap<>();
Map<String, String> accountInfo = loginService.qyMiniAutoLogin(code);
if (accountInfo!=null){
if (StringUtils.isNotBlank(accountInfo.get("login")) && StringUtils.isNotBlank(accountInfo.get("password"))){
LoginBean loginBean = loginService.login(accountInfo.get("login"), accountInfo.get("login"), true);
resultMap.put("code", loginBean.getLoginInfo().get("code"));
resultMap.put("results", loginBean);
}else{
if (StringUtils.isNotBlank(accountInfo.get("cpUserId"))){
String cpUserId = accountInfo.get("cpUserId");
resultMap.put("code", ERROR_ACCOUNT_NOT_BIND);
resultMap.put("results", cpUserId);
}
}
}
resultMap.put("success", Boolean.TRUE);
return resultMap;
}catch (Exception e){
log.error("登录失败", e);
return fail();
}
}
/** /**
* *
* @param login * @param login
@ -76,7 +137,7 @@ public class LoginController extends BaseController {
@RequestParam("qywxUserId")String qywxUserId){ @RequestParam("qywxUserId")String qywxUserId){
try{ try{
Map<String, Object> resultMap = new HashMap<>(); Map<String, Object> resultMap = new HashMap<>();
LoginBean loginBean = loginService.login(login, password,false); LoginBean loginBean = loginService.miniLogin(login, password,false);
resultMap.put("code", loginBean.getLoginInfo().get("code")); resultMap.put("code", loginBean.getLoginInfo().get("code"));
if (LoginEnum.LOGIN_SUCCEED.getCode().equals(loginBean.getLoginInfo().get("code"))){ if (LoginEnum.LOGIN_SUCCEED.getCode().equals(loginBean.getLoginInfo().get("code"))){
loginService.bindQywxUserIdByUserId(loginBean.getUserId(),qywxUserId); loginService.bindQywxUserIdByUserId(loginBean.getUserId(),qywxUserId);

@ -22,6 +22,8 @@ public enum LoginEnum {
LOGIN_ROLE_NONENTITY("角色不存在", "0004"), LOGIN_ROLE_NONENTITY("角色不存在", "0004"),
LOGIN_USER_NONENTITY("用户不存在", "0005"), LOGIN_USER_NONENTITY("用户不存在", "0005"),
LOGIN_ROLE_NO_PERMISSION("该角色不能登录", "0006"),
; ;
/** /**

@ -1,6 +1,7 @@
package com.kiisoo.ic.login.service; package com.kiisoo.ic.login.service;
import com.kiisoo.ic.login.bean.LoginBean; import com.kiisoo.ic.login.bean.LoginBean;
import me.chanjar.weixin.common.error.WxErrorException;
import java.util.Map; import java.util.Map;
@ -20,6 +21,14 @@ public interface LoginService {
* @return bean * @return bean
*/ */
LoginBean login(String login, String password, Boolean isMD5); LoginBean login(String login, String password, Boolean isMD5);
/**
*
* @param login
* @param password
* @param isMD5 MD5
* @return bean
*/
LoginBean miniLogin(String login, String password, Boolean isMD5);
/** /**
* id()userId * id()userId
@ -34,4 +43,11 @@ public interface LoginService {
* @return * @return
*/ */
Map<String, String> getLoginInfoByQywxUserId(String qywxUserId); Map<String, String> getLoginInfoByQywxUserId(String qywxUserId);
/**
* code
* @param code
* @return
*/
Map<String, String> qyMiniAutoLogin(String code) throws WxErrorException;
} }

@ -13,7 +13,10 @@ import com.kiisoo.ic.system.enums.AccountEnum;
import com.kiisoo.ic.system.mapper.PrivilageAccountDOMapper; import com.kiisoo.ic.system.mapper.PrivilageAccountDOMapper;
import com.kiisoo.ic.system.mapper.PrivilageRoleDOMapper; import com.kiisoo.ic.system.mapper.PrivilageRoleDOMapper;
import com.kiisoo.ic.system.mapper.PrivilageUserDOMapper; import com.kiisoo.ic.system.mapper.PrivilageUserDOMapper;
import com.kiisoo.ic.wx.service.QWMailListManageService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.*; import org.apache.shiro.authc.*;
import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.Subject;
@ -25,6 +28,8 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import static com.kiisoo.ic.constants.Constants.MINI_ROLE_CODE;
/** /**
* @author jinchaofan * @author jinchaofan
* @Date 2020/2/25 12:57 * @Date 2020/2/25 12:57
@ -50,11 +55,17 @@ public class LoginServiceImpl implements LoginService {
*/ */
private final PrivilageRoleDOMapper privilageRoleDOMapper; private final PrivilageRoleDOMapper privilageRoleDOMapper;
/**
* service
*/
private final QWMailListManageService qwMailListManageService;
@Autowired @Autowired
public LoginServiceImpl(PrivilageAccountDOMapper privilageAccountDOMapper, PrivilageUserDOMapper privilageUserDOMapper, PrivilageRoleDOMapper privilageRoleDOMapper) { public LoginServiceImpl(PrivilageAccountDOMapper privilageAccountDOMapper, PrivilageUserDOMapper privilageUserDOMapper, PrivilageRoleDOMapper privilageRoleDOMapper, QWMailListManageService qwMailListManageService) {
this.privilageAccountDOMapper = privilageAccountDOMapper; this.privilageAccountDOMapper = privilageAccountDOMapper;
this.privilageUserDOMapper = privilageUserDOMapper; this.privilageUserDOMapper = privilageUserDOMapper;
this.privilageRoleDOMapper = privilageRoleDOMapper; this.privilageRoleDOMapper = privilageRoleDOMapper;
this.qwMailListManageService = qwMailListManageService;
} }
@ -95,6 +106,46 @@ public class LoginServiceImpl implements LoginService {
return loginBean; return loginBean;
} }
@Override
public LoginBean miniLogin(String login, String password, Boolean isMD5) {
UsernamePasswordToken token = new UsernamePasswordToken(login, password, isMD5);
Subject subject = SecurityUtils.getSubject();
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()) {
PrivilageAccountDO privilageAccountDO = (PrivilageAccountDO) SecurityUtils.getSubject().getPrincipal();
Map<String, Object> loginInfoMap = new HashMap<>();
PrivilageUserDO privilageUserDO = privilageUserDOMapper.selectById(privilageAccountDO.getUserId());
PrivilageRoleDO roleDO = privilageRoleDOMapper.selectRoleName(privilageAccountDO.getUserId());
//成功设置信息
loginBean.setUserName(privilageUserDO.getName());
loginBean.setUserId(privilageAccountDO.getUserId());
loginBean.setRoleId(privilageAccountDO.getId());
loginBean.setRoleCode(roleDO.getCode());
if (StringUtils.isNotBlank(roleDO.getCode()) && !MINI_ROLE_CODE.contains(roleDO.getCode())){
return new LoginBean(Constants.ERROR_ROLE_NO_PERMISSION);
}
loginBean.setLogin(login);
loginInfoMap.put("code", LoginEnum.LOGIN_SUCCEED.getCode());
loginBean.setLoginInfo(loginInfoMap);
}else {
return new LoginBean(Constants.LOGIN_NO_PERMISSIONS);
}
return loginBean;
}
@Override @Override
public void bindQywxUserIdByUserId(Long userId, String qywxUserId) { public void bindQywxUserIdByUserId(Long userId, String qywxUserId) {
Map<String, Object> selectAccountMap = new HashMap<>(); Map<String, Object> selectAccountMap = new HashMap<>();
@ -139,4 +190,28 @@ public class LoginServiceImpl implements LoginService {
} }
} }
@Override
public Map<String, String> qyMiniAutoLogin(String code) throws WxErrorException {
Map<String, String> result = new HashMap<>(3);
String cpUserId = qwMailListManageService.getCpUserIdByCode(code);
result.put("cpUserId",cpUserId);
Map<String, Object> selectAccountMap = new HashMap<>();
selectAccountMap.put("login", cpUserId);
selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_QYWX.getType());
List<PrivilageAccountDO> privilageAccountDOS = privilageAccountDOMapper.selectByMap(selectAccountMap);
//账号不存在
if (privilageAccountDOS != null && privilageAccountDOS.size() > 0) {
selectAccountMap = new HashMap<>();
selectAccountMap.put("user_id", privilageAccountDOS.get(0).getUserId());
selectAccountMap.put("type", AccountEnum.ACCOUNT_TYPE_SYSTEM.getType());
List<PrivilageAccountDO> accountDOS = privilageAccountDOMapper.selectByMap(selectAccountMap);
if (accountDOS != null && accountDOS.size() > 0) {
result.put("login", accountDOS.get(0).getLogin());
result.put("password", accountDOS.get(0).getPassword());
}
}
return result;
}
} }

@ -49,7 +49,7 @@ public class StoreEmployeeController extends BaseController {
} }
/** /**
* *
* @return * @return
*/ */
@RequestMapping(value = "import",method = RequestMethod.POST) @RequestMapping(value = "import",method = RequestMethod.POST)
@ -63,4 +63,20 @@ public class StoreEmployeeController extends BaseController {
return fail(); return fail();
} }
} }
/**
*
* @return
*/
// @RequestMapping(value = "downloadCode",method = RequestMethod.POST)
// @ResponseBody
// public Map<String,Object> downloadCode(@RequestParam("storeId")Long storeId, @RequestParam("regionId")Long regionId) {
// try {
// List<ImportErrorDTO> importErrorDTOS = storeEmployeeService.downloadStoreUserCode(storeId,regionId);
// return data(importErrorDTOS);
// } catch (Exception e) {
// log.error("添加用户失败", e);
// return fail();
// }
// }
} }

@ -129,6 +129,48 @@ public class StoreEmployeeService {
return new PageInfo<>(cpUserStoreDO) ; return new PageInfo<>(cpUserStoreDO) ;
} }
/**
*
* @param storeId id
* @param regionId id
*/
public void downloadStoreUserCode(Long storeId, Long regionId) {
Map<String,Object> result = new HashMap<>();
List<PoiStore> poiStores = null;
if (storeId != null){
QueryWrapper<PoiStore> storeParams = new QueryWrapper<>();
poiStores = poiStoreDOMapper.selectList(storeParams);
}else if(regionId != null){
poiStores = poiStoreDOMapper.selectRegionShop(regionId);
}else{
poiStores = poiStoreDOMapper.selectList(null);
}
List<StoreUserDTO> storeUserDTOS = new ArrayList<>();
if (CollectionUtils.isNotEmpty(poiStores)){
for(PoiStore store : poiStores) {
StoreUserDTO storeUserDTO = new StoreUserDTO();
BeanUtils.copyProperties(store,storeUserDTO);
//查询店铺绑定的企业微信
QueryWrapper<PrivilageCpUserStoreDO> relationParams = new QueryWrapper<>();
relationParams.eq(DATABASE_STORE_ID_KEY,storeUserDTO.getId());
PrivilageCpUserStoreDO cpUserStoreDO = privilageCpUserStoreDOMapper.selectOne(relationParams);
if (cpUserStoreDO != null){
//企业微信存在则查询数据
PrivilageCpUserDO privilageCpUserDO = privilageCpUserDOMapper.selectById(cpUserStoreDO.getCpUserId());
storeUserDTO.setCpUserId(privilageCpUserDO.getCpUserId());
storeUserDTOS.add(storeUserDTO);
}
}
}
if (CollectionUtils.isNotEmpty(storeUserDTOS)){
storeUserDTOS.forEach(storeUser -> {
});
}
}
/** /**
* excel * excel
* @param file excel * @param file excel

@ -9,6 +9,7 @@ import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.common.error.WxErrorException; import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.cp.api.*; import me.chanjar.weixin.cp.api.*;
import me.chanjar.weixin.cp.bean.WxCpDepart; import me.chanjar.weixin.cp.bean.WxCpDepart;
import me.chanjar.weixin.cp.bean.WxCpMaJsCode2SessionResult;
import me.chanjar.weixin.cp.bean.WxCpTag; import me.chanjar.weixin.cp.bean.WxCpTag;
import me.chanjar.weixin.cp.bean.WxCpUser; import me.chanjar.weixin.cp.bean.WxCpUser;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -226,4 +227,16 @@ public class QWMailListManageService {
//todo判断返回码 //todo判断返回码
} }
/**
* code
* @param code
* @return
* @throws WxErrorException
*/
public String getCpUserIdByCode(String code) throws WxErrorException {
wxCpService = WxCpConfiguration.getCpService(1000043);
WxCpMaJsCode2SessionResult wxCpMaJsCode2SessionResult = wxCpService.jsCode2Session(code);
return wxCpMaJsCode2SessionResult.getUserId();
}
} }

Loading…
Cancel
Save