package com.qxueyou.scc.sys.action;
|
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.annotation.Resource;
|
import javax.servlet.http.Cookie;
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpSession;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.qxueyou.scc.base.util.*;
|
import com.qxueyou.scc.wx.service.IWechatService;
|
import freemarker.template.utility.StringUtil;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.kafka.common.network.LoginType;
|
import org.apache.tomcat.util.net.openssl.ciphers.Authentication;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Qualifier;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.stereotype.Controller;
|
import org.springframework.util.DigestUtils;
|
import org.springframework.web.bind.annotation.*;
|
|
import com.qxueyou.scc.admin.teacher.service.ITeacherService;
|
import com.qxueyou.scc.base.dao.CommonDAO;
|
import com.qxueyou.scc.base.model.Constants;
|
import com.qxueyou.scc.base.model.Result;
|
import com.qxueyou.scc.base.model.UserInfoWrapper;
|
import com.qxueyou.scc.base.service.ICacheService;
|
import com.qxueyou.scc.base.service.ICommonService;
|
import com.qxueyou.scc.config.SccConfig;
|
import com.qxueyou.scc.org.service.IOrganizationService;
|
import com.qxueyou.scc.sys.model.CacheParamters;
|
import com.qxueyou.scc.sys.model.SysLog;
|
import com.qxueyou.scc.sys.service.IAuthorizeService;
|
import com.qxueyou.scc.sys.service.IPrivilegeService;
|
import com.qxueyou.scc.teach.student.model.StuStudent;
|
import com.qxueyou.scc.teach.student.service.IStudentService;
|
import com.qxueyou.scc.user.model.User;
|
import com.qxueyou.scc.user.model.UserRole;
|
import com.qxueyou.scc.user.service.IUserOperateService;
|
import com.qxueyou.scc.user.service.IUserRoleService;
|
import com.qxueyou.scc.user.service.IUserService;
|
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
|
/**
|
* 注册controller 提供注册,录,注销服务
|
*
|
* @author 德虎
|
* @history 2014-11-25 新建 夏德虎
|
*/
|
@Api(tags="入相关接口")
|
@Controller
|
@CrossOrigin(origins="*",maxAge=3600)
|
@EnableConfigurationProperties(SccConfig.class)
|
@RequestMapping(value = "/sys/login")
|
public class LoginController {
|
|
@Autowired
|
private CommonDAO commonDAO;
|
|
@Autowired
|
IPrivilegeService privilegeService;
|
|
@Autowired
|
IAuthorizeService service;
|
|
@Autowired
|
IUserRoleService userRoleService;
|
|
@Autowired
|
ITeacherService teacherService;
|
|
@Autowired
|
@Qualifier("commonAppService")
|
ICommonService commonService;
|
|
@Autowired
|
IUserOperateService userOperateService;
|
|
@Autowired
|
IUserService userService;
|
|
@Autowired
|
ICacheService cacheService;
|
|
@Autowired
|
IStudentService studentService;
|
|
@Resource
|
RedisTemplate redisTemplate;
|
|
@Autowired
|
private IOrganizationService organizationService;
|
|
/**
|
* 小程序appID
|
*/
|
@Value("${wx.appId}")
|
private String appId;
|
|
|
/**
|
* 小程序secret
|
*/
|
@Value("${wx.secret}")
|
private String secret;
|
|
/**
|
* 公众号appID
|
*/
|
@Value("${wx.app.appId}")
|
private String wxappId;
|
|
|
/**
|
* 公众号secret
|
*/
|
@Value("${wx.app.secret}")
|
private String wxsecret;
|
|
public static String UUNUMBER="QXYUUNUMBER";
|
|
@Autowired
|
IWechatService wechatService;
|
|
/**
|
* 微信录
|
*
|
* @param uid
|
* @throws IOException
|
*/
|
|
@PostMapping("/wxAccountsLogin")
|
@ApiOperation("微信公众号录")
|
@ResponseBody
|
public Result wxAccountsLogin(String code) {
|
JSONObject gettoken = wechatService.gettoken(wxappId, wxsecret);
|
JSONObject OpenId = wechatService.getSessionKeyOrOpenId(code);
|
JSONObject user = wechatService.getUser(gettoken.get("access_token").toString(), OpenId.get("openid").toString());
|
return new Result(true,"成功",user);
|
}
|
|
|
@PostMapping("/wxlogin")
|
@ApiOperation("微信小程序录")
|
@ResponseBody
|
public Result wechatLogin(String code,String number) {
|
JSONObject sessionKeyOrOpenId = wechatService.getSessionKeyOrOpenId(code);
|
JSONObject gettoken = wechatService.gettoken(appId, secret);
|
Result phone = wechatService.getNumber(gettoken.get("access_token").toString(), number);
|
if(phone.getSuccess()){
|
String hql = "from User where deleteFlag is false and mobilePhone = ? ";
|
System.out.println(phone.getData());
|
List<Object> params = CollectionUtils.newList(phone.getData());
|
User user = commonDAO.findUnique(hql,params, User.class);
|
if(user==null){
|
//新增用户
|
User user1=new User();
|
user1.setMobilePhone(phone.getData().toString());
|
user1.setOpenId(sessionKeyOrOpenId.get("openid").toString());
|
commonDAO.save(user1);
|
//新增关联学员
|
String addUserSql = "from User where deleteFlag is false and mobilePhone = ? ";
|
List<Object> newParams = CollectionUtils.newList(phone.getData());
|
User newUser = commonDAO.findUnique(addUserSql,newParams, User.class);
|
StuStudent stuStudent=new StuStudent();
|
stuStudent.setStatus(StuStudent.STATUS_REGISTER);
|
stuStudent.setUserId(newUser.getUserId());
|
stuStudent.setMobilePhone(newUser.getMobilePhone());
|
commonDAO.save(stuStudent);
|
}
|
if(StringUtils.isEmpty(user.getOpenId())){
|
user.setOpenId(sessionKeyOrOpenId.get("openid").toString());
|
commonDAO.saveOrUpdate(user);
|
}
|
String studentSql = "from StuStudent where deleteFlag is false and userId = ? ";
|
List<Object> stuParams = CollectionUtils.newList(user.getUserId());
|
StuStudent stuStudent = commonDAO.findUnique(studentSql, stuParams, StuStudent.class);
|
CacheParamters param = new CacheParamters();
|
param.setUserId(user.getUserId());
|
param.setCustomRoleValue(user.getEmail());
|
param.setCustomOrgId(user.getImei());
|
param.setCacheIpFlag(true);
|
// 缓存到请求线程
|
UserInfoWrapper wrapper = cacheUserInfo(param, null);
|
// 存到redis
|
redisTemplate.opsForValue().set(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper);
|
return new Result(true,"授权成功",CollectionUtils.newObjectMap("user",user,"ClassId",stuStudent.getClassId()));
|
}
|
return phone;
|
}
|
|
|
@ApiOperation(value = "入接口", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "account", value = "账号", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "password", value = "密码", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "beforeLogin", method = RequestMethod.POST)
|
@ResponseBody
|
public Result beforeLogin(@RequestParam("account") String account, @RequestParam("password") String password,
|
HttpServletRequest request, HttpServletResponse response) {
|
if(StringUtils.isEmpty(account)||StringUtils.isEmpty(password)) {
|
return new Result(false, "用户账号密码不能为空");
|
}
|
// 查询用户信息
|
String uuNumber=null;
|
String uuReNumber=null;
|
String hql = "from User where deleteFlag is false and account = ? and password= ?";
|
List<Object> params = CollectionUtils.newList(account,password);
|
User user = commonDAO.findUnique(hql,params, User.class);
|
if (user == null ) {
|
return new Result(false, "用户账户、密码错误");
|
}
|
if (user.getSource() == null || "".equals(user.getSource())) {
|
return new Result(false, "没有权限");
|
}
|
if("exam".equals(user.getSource())){
|
// //获取Session存入uuNumber
|
// uuNumber = UUIDUtils.generateSpecialUuid(8)+account;
|
// HttpSession session = request.getSession();
|
// //设置session自动过期时间 60分钟
|
// session.setMaxInactiveInterval(60*60);
|
// session.setAttribute("uuNumber", uuNumber);
|
//uuNumber使用固定
|
uuNumber=UUNUMBER;
|
}else if("reExam".equals(user.getSource())){
|
//获取Session存入uuNumber
|
uuReNumber = UUIDUtils.generateSpecialUuid(8)+account;
|
HttpSession session = request.getSession();
|
//设置session自动过期时间 60分钟
|
session.setMaxInactiveInterval(60*60);
|
session.setAttribute("uuReNumber", uuReNumber);
|
}else {
|
return new Result(false, "没有权限");
|
}
|
// 插入日志
|
insertLoginLog(request, user, account, "SYS-LOGIN");
|
String salt = user.getSalt();
|
String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
|
//比较用户输入的密码加密后的字符串是否跟注册时填写的加密密码相同
|
if (!newPassword.equals(user.getPassword())) {
|
return new Result(false, "用户账户、密码错误或缺少凭证");
|
}
|
// 返回
|
return new Result(true, "验证成功",CollectionUtils.newObjectMap("uuNumber",uuNumber,"uuReNumber",uuReNumber));
|
}
|
|
@ApiOperation(value = "入接口", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "uuNumber", value = "uuNumber", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "uuReNumber", value = "uuReNumber", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "examLogin", method = RequestMethod.GET)
|
@ResponseBody
|
public Result examLogin(String uuNumber,String uuReNumber,
|
HttpServletRequest request, HttpServletResponse response) {
|
if(StringUtils.isEmpty(uuNumber)&&StringUtils.isEmpty(uuReNumber)){
|
return new Result(false, "验证失败");
|
}
|
if (StringUtils.isNotEmpty(uuNumber)) {
|
//有uunumber
|
String uu=ClientUtils.getUserInfo().getInfo("email");
|
if(StringUtils.isEmpty(uu)||!uuNumber.equals(uu)){
|
return new Result(false, "uuNumber验证失败");
|
}
|
} else {
|
//有uurenumber
|
HttpSession session = request.getSession();
|
String uu=(String) session.getAttribute("uuReNumber");
|
if(StringUtils.isEmpty(uu)||!uuReNumber.equals(uu)){
|
return new Result(false, "uuReNumber验证失败");
|
}
|
//验证后删除
|
request.getSession().removeAttribute("uuReNumber");
|
// String uu=ClientUtils.getUserInfo().getInfo("email");
|
// if(StringUtils.isEmpty(uu)||!uuReNumber.equals(uu)){
|
// return new Result(false, "uuReNumber验证失败");
|
// }
|
}
|
// 返回
|
return new Result(true, "验证成功");
|
}
|
|
@ApiOperation(value = "入接口", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "uuNumber", value = "uuNumber", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "uuReNumber", value = "uuReNumber", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "examssLogin", method = RequestMethod.GET)
|
@ResponseBody
|
public Result examssLogin(String uuNumber,String uuReNumber,
|
HttpServletRequest request, HttpServletResponse response) {
|
//两个都为空,表示没有参数
|
if(StringUtils.isEmpty(uuNumber)&&StringUtils.isEmpty(uuReNumber)){
|
return new Result(false, "验证失败");
|
}
|
|
if (StringUtils.isNotEmpty(uuNumber)) {
|
//有uunumber
|
// HttpSession session = request.getSession();
|
// String uu=(String) session.getAttribute("uuNumber");
|
String uu=UUNUMBER;
|
if(StringUtils.isEmpty(uu)||!uuNumber.equals(uu)){
|
return new Result(false, "uuNumber验证失败");
|
}
|
} else {
|
//有uurenumber
|
HttpSession session = request.getSession();
|
String uu=(String) session.getAttribute("uuReNumber");
|
if(StringUtils.isEmpty(uu)||!uuReNumber.equals(uu)){
|
return new Result(false, "uuReNumber验证失败");
|
}
|
}
|
// 返回
|
return new Result(true, "验证成功");
|
}
|
|
//退出录 清除session
|
@RequestMapping(value = "khdloginout", method = RequestMethod.POST)
|
@ResponseBody
|
public void khdloginout(HttpServletRequest request, HttpServletResponse response) {
|
System.out.println("清除session");
|
HttpSession session = request.getSession();
|
redisTemplate.delete(UserInfoWrapper.SESSION_USER_INFO_KEY);
|
System.out.println(session.getAttribute("userId"));
|
System.out.println(session.getAttribute("classId"));
|
session.invalidate();
|
}
|
|
/**
|
* 学员端录
|
*
|
* @param account 账户
|
* @param password 密码
|
* @return
|
*/
|
@ApiOperation(value = "入接口", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "account", value = "账号", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "password", value = "密码", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "organizationId", value = "机构id", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "platForm", value = "入平台(app,web,qLive,pc,weixin)", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "logType", value = "入type(study学员,teacher教师,否则为后台)", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "studentLogin", method = RequestMethod.POST)
|
@ResponseBody
|
public Result studentLogin(@RequestParam("userId") String userId,HttpServletRequest request, HttpServletResponse response, String logType,String organizationId, String platForm){
|
|
String hql = null;
|
List<Object> params = null;
|
hql = "from User where deleteFlag is false and userId = ?";
|
params = CollectionUtils.newList(userId);
|
// 查询用户信息
|
User user = commonDAO.findUnique(hql,params, User.class);
|
CacheParamters param = new CacheParamters();
|
param.setUserId(user.getUserId());
|
param.setCustomRoleValue(user.getEmail());
|
param.setCustomOrgId(user.getImei());
|
param.setCacheIpFlag(true);
|
param.setPlatForm(StringUtils.isEmpty(platForm) ? Constants.LOGIN_PLATFORM_WEB : platForm);
|
param.setIp(RequestClientUtils.getRemoteIP(request));
|
// 缓存到请求线程
|
UserInfoWrapper wrapper = cacheUserInfo(param, null);
|
// 存到redis
|
redisTemplate.opsForValue().set(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper);
|
request.getSession().setAttribute(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper);
|
|
return new Result(true, "success",
|
CollectionUtils.newObjectMap("userId", user.getUserId(), "userName", user.getName(), "imgPath",
|
user.getImgPath(), "orgName", ClientUtils.getOrgName(),"orgId", ClientUtils.getOrgId(), "orgLogo",
|
ClientUtils.getOrgLogoPath(), "className", ClientUtils.getClassName(), "classId",
|
ClientUtils.getClassId(), "orgShortName", ClientUtils.getOrgShortName()));
|
// return this.loginValidate(user, 1, request, response, "study", platForm, organizationId);
|
}
|
|
/**
|
* 后台录
|
*
|
* @param account 账户
|
* @param password 密码
|
* @return
|
*/
|
@ApiOperation(value = "入接口", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "account", value = "账号", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "password", value = "密码", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "organizationId", value = "机构id", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "platForm", value = "入平台(app,web,qLive,pc,weixin)", required = true, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "logType", value = "入type(study学员,teacher教师,否则为后台)", required = true, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "platformLogin", method = RequestMethod.POST)
|
@ResponseBody
|
public Result platformLogin(@RequestParam("account") String account, @RequestParam("password") String password,String uuNumber,String uuReNumber,
|
HttpServletRequest request, HttpServletResponse response, String logType,String organizationId, String platForm) {
|
// response.setHeader("Access-Control-Allow-Origin", "*");
|
if (StringUtils.isEmpty(account)) {
|
return new Result(false, "用户账号不能为空");
|
}
|
// System.out.println(account+password);
|
// System.out.println("-------------------------"+organizationId+"--------------"+platForm+"-----------"+logType);
|
String hql = null;
|
List<Object> params = null;
|
// boolean flag=true;
|
if ("study".equals(logType)) {
|
hql = "from User where deleteFlag is false and account = ?";
|
params = CollectionUtils.newList(account);
|
}else if("portal".equals(logType)){
|
hql = "from User where deleteFlag is false and email = ?";
|
params = CollectionUtils.newList(account);
|
}else if("zhyly".equals(logType)){
|
hql = "from User where deleteFlag is false and mobilePhone = ?";
|
params = CollectionUtils.newList(account);
|
}else{
|
if(StringUtils.isEmpty(password)) {
|
return new Result(false, "用户密码不能为空");
|
}
|
hql = "from User where deleteFlag is false and account = ?";
|
params = CollectionUtils.newList(account);
|
}
|
|
if(StringUtils.isNotEmpty(organizationId)){
|
hql = hql.concat(" and organizationId=? ");
|
params.add(organizationId);
|
}
|
|
// 查询用户信息
|
User user = commonDAO.findUnique(hql,params, User.class);
|
|
if(uuNumber!=null&&!"".equals(uuNumber)&&!"null".equals(uuNumber)){
|
//录成功存入user里,删除session里的uuNumber,下个人无法使用
|
user.setEmail(uuNumber);
|
// request.getSession().removeAttribute("uuNumber");
|
}
|
// if(uuReNumber!=null&&!"".equals(uuReNumber)&&!"null".equals(uuReNumber)){
|
// //录成功存入user里,删除session里的uuReNumber,下个人无法使用
|
// user.setImei(uuReNumber);
|
// request.getSession().removeAttribute("uuReNumber");
|
// }
|
|
if (user == null) {
|
return new Result(false, "用户账户不存在");
|
}
|
// 插入日志
|
insertLoginLog(request, user, account, "SYS-LOGIN");
|
String salt = user.getSalt();
|
String newPassword= DigestUtils.md5DigestAsHex((salt+password).getBytes());
|
//比较用户输入的密码加密后的字符串是否跟注册时填写的加密密码相同
|
if("study".equals(logType) || "portal".equals(logType) || "adminis".equals(logType)){
|
if (!newPassword.equals(user.getPassword())) {
|
return new Result(false, "用户账户、密码错误或缺少凭证");
|
}
|
}
|
|
// 返回用户基本信息
|
return this.loginValidate(user, 1, request, response, logType, platForm, organizationId);
|
}
|
|
/**
|
* 入验证
|
* @param user
|
* @param type
|
* @param request
|
* @param response
|
* @param logType
|
* @param platForm
|
* @param organizationId
|
* @return
|
*/
|
private Result loginValidate(User user, int type, HttpServletRequest request, HttpServletResponse response,
|
String logType, String platForm, String organizationId) {
|
HttpSession session = request.getSession();
|
// 缓存用户信息
|
CacheParamters param = new CacheParamters();
|
param.setUserId(user.getUserId());
|
param.setCustomRoleValue(user.getEmail());
|
param.setCustomOrgId(user.getImei());
|
param.setCacheIpFlag(true);
|
param.setPlatForm(StringUtils.isEmpty(platForm) ? Constants.LOGIN_PLATFORM_WEB : platForm);
|
param.setIp(RequestClientUtils.getRemoteIP(request));
|
// 缓存到请求线程
|
UserInfoWrapper wrapper = cacheUserInfo(param, null);
|
// 存到redis
|
redisTemplate.opsForValue().set(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper);
|
request.getSession().setAttribute(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper);
|
if ("study".equals(logType) || "portal".equals(logType) || "zhyly".equals(logType)) {
|
/*if (StringUtils.isEmpty(ClientUtils.getClassId()) && user.getRoles() == null) {
|
return new Result(false, "该用户未加入任何班级或未激活,请联系班主任");
|
}*/
|
|
if (StringUtils.isEmpty(user.getOrganizationId())) {
|
return new Result(false, "该用户不属于任何机构,无法入");
|
}
|
if (StringUtils.isNoneBlank(organizationId) && !user.getOrganizationId().equals(organizationId)) {
|
return new Result(false, "选择的机构错误,请确认");
|
}
|
|
//判断是否为学生,如果是学生,判断是否已冻结或移除,冻结或移除的学生不让录
|
StuStudent stu = this.studentService.getStudentByUserId(user.getUserId());
|
if(stu!=null && (stu.getDeleteFlag() || stu.getStatus().equalsIgnoreCase(StuStudent.STATUS_DEACTIVE))){
|
return new Result(false, "用户账户已经被冻结或移除");
|
}
|
|
/*if(StringUtils.isEmpty(wrapper.getInfo(UserInfoWrapper.INF_CLASS_ID))) {
|
return new Result(false, "该用户未加入任何班级,无法入");
|
}*/
|
// 保存到session中
|
return new Result(true, "success",
|
CollectionUtils.newObjectMap("userId", user.getUserId(), "userName", user.getName(), "imgPath",
|
user.getImgPath(), "orgName", ClientUtils.getOrgName(),"orgId", ClientUtils.getOrgId(), "orgLogo",
|
ClientUtils.getOrgLogoPath(), "className", ClientUtils.getClassName(), "classId",
|
ClientUtils.getClassId(), "orgShortName", ClientUtils.getOrgShortName()));
|
}else if("teacher".equals(logType)) {
|
String teacherId = teacherService.getTeacherIdByUserId(user.getUserId());
|
if (StringUtils.isEmpty(teacherId)) {
|
return new Result(false, "该账户不是老师角色,无法入");
|
}
|
if (StringUtils.isEmpty(user.getOrganizationId())) {
|
return new Result(false, "该用户不属于任何机构,无法入");
|
}
|
if (StringUtils.isNoneBlank(organizationId) && !user.getOrganizationId().equals(organizationId)) {
|
return new Result(false, "选择的机构错误,请确认");
|
}
|
|
//获取用户对应的sessionId是否与保存在redis中的一致,如果不一致则跳转到录页面
|
// stringRedisTemplate.opsForHash().put(UserInfoWrapper.REDIS_USER_ONLINE_MAP_KEY, user.getUserId(), request.getSession().getId());
|
return new Result(true, "success",
|
CollectionUtils.newObjectMap("userId", user.getUserId(), "userName", user.getName(), "imgPath",
|
user.getImgPath(), "orgName", ClientUtils.getOrgName(),"orgId", ClientUtils.getOrgId(), "orgLogo", ClientUtils.getOrgLogoPath(), "orgShortName", ClientUtils.getOrgShortName()));
|
}else {
|
Result result = privilegeService.getMenus(user);
|
Integer roleType = result.getDataT("roleType");
|
|
// 保存管理员特殊角色信息
|
if (UserRole.ROLE_TYPE_ADMIN.equals(roleType)) {
|
// boolean a=true;
|
// wrapper.setAdmin(true);
|
session.setAttribute("admin",true);
|
// System.out.println(session.getAttribute("admin"));
|
}
|
// request.getSession().setAttribute(UserInfoWrapper.SESSION_USER_INFO_KEY, wrapper);
|
// System.out.println("ccc"+wrapper.getInfo(UserInfoWrapper.INF_USER_ID));
|
//// request.getSession().setAttribute("userId", user.getUserId());
|
// System.out.println("sess"+request.getSession().getAttribute("userId"));
|
// System.out.println("aaa"+ClientUtils.getUserId());
|
return result;
|
}
|
|
}
|
|
/**
|
* 后台:退出录,后台系统
|
*
|
* @param account 账户
|
* @return
|
*/
|
@ApiOperation(value = "退出后台系统操作", notes = "")
|
@RequestMapping(value = "release", method = RequestMethod.GET)
|
public String release(HttpServletRequest httpRequest, HttpServletResponse response) {
|
doRelease(httpRequest, response);
|
return "redirect:/web/admin/index.html#login";
|
}
|
|
/**
|
* 后台:退出录,后台系统
|
*
|
* @return
|
*/
|
@ApiOperation(value = "退出app系统操作", notes = "")
|
@RequestMapping(value = "loginOut", method = RequestMethod.GET)
|
public @ResponseBody Result loginOut(HttpServletRequest httpRequest, HttpServletResponse response) {
|
doRelease(httpRequest, response);
|
return new Result(true);
|
}
|
|
/**
|
* 缓存用户信息(班主任 、 学员 角色 缓存后台clientUtils信息)
|
*
|
* @param userId
|
* @param cookieValue
|
* @param request
|
* @param charderClassId
|
* @param sutdentClassId
|
* @param adminOrgId
|
* @param teacherClassId
|
* @param customOrgId
|
*/
|
private UserInfoWrapper cacheUserInfo(CacheParamters param, UserRole role) {
|
UserInfoWrapper wrapper = userService.initUserInfoWrapper(param, true);
|
service.addClientInfo(wrapper);
|
return wrapper;
|
}
|
|
/**
|
* 插入录日志
|
*
|
* @param request
|
* @param lstUser
|
* @param account
|
* @param module
|
*/
|
private void insertLoginLog(HttpServletRequest request, User user, String account, String module) {
|
|
String userAgent = request.getHeader("user-agent");
|
String userId = user == null? null : user.getUserId();
|
String userName = user == null ? null : user.getName();
|
String ip = RequestClientUtils.getRemoteIP(request);
|
SysLog lg = new SysLog();
|
|
TraceUtils.setCreateActiveTrace(lg);
|
lg.setDeleteFlag(false);
|
lg.setContent(userAgent);
|
lg.setDesp(account);
|
lg.setIp(ip);
|
lg.setModule(module);
|
lg.setType(SysLog.LOG_TYPE_SYS);
|
lg.setUserId(userId);
|
lg.setUserName(userName);
|
|
commonService.save(lg);
|
|
}
|
|
/**
|
* 退出后台系统操作
|
*
|
* @param account 账户
|
* @return
|
*/
|
private void doRelease(HttpServletRequest httpRequest, HttpServletResponse response) {
|
HttpSession se = httpRequest.getSession();
|
se.removeAttribute(UserInfoWrapper.SESSION_USER_INFO_KEY);
|
redisTemplate.delete(UserInfoWrapper.SESSION_USER_INFO_KEY);
|
se.invalidate();
|
}
|
|
/**
|
* 用户修改密码
|
*/
|
@ApiOperation(value = "修改密码", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "usedPass", value = "老密码", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "pass", value = "新密码", required = false, paramType=" query", dataType = "String"),
|
})
|
@RequestMapping(value = "updatePassword", method = RequestMethod.POST)
|
@ResponseBody
|
public Result updatePassword(String userId, String usedPass, String pass) {
|
return userService.updatePassword(StringUtils.isEmpty(userId)?ClientUtils.getUserId():userId, usedPass, pass);
|
}
|
|
/**
|
* 获取当前用户
|
*/
|
@ApiOperation(value = "获取当前用户", notes = "")
|
@RequestMapping(value = "getCurrUser", method = RequestMethod.POST)
|
@ResponseBody
|
public Result getCurrUser() {
|
User u = this.commonDAO.read(User.class, ClientUtils.getUserId());
|
|
return new Result(true, "success", CollectionUtils.newObjectMap("name",u.getName(),"account",
|
u.getAccount(), "mobilePhone", u.getMobilePhone(), "imgPath", u.getImgPath(), "sex", u.getSex()));
|
}
|
|
/**
|
* 获取当前用户
|
*/
|
@ApiOperation(value = "获取当前教师信息", notes = "")
|
@RequestMapping(value = "getCurrTeacher", method = RequestMethod.GET)
|
@ResponseBody
|
public Result getCurrTeacher() {
|
return this.teacherService.getTeacherInfo();
|
}
|
|
/**
|
* 用户修改密码
|
*/
|
@ApiOperation(value = "修改头像", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "headPath", value = "头像地址", required = false, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "updateUserHead", method = RequestMethod.POST)
|
@ResponseBody
|
public Result updateUserHead(String headPath) {
|
return userService.updateUserHead(ClientUtils.getUserId(), headPath);
|
}
|
|
/**
|
* 修改用户其他数据
|
*/
|
@ApiOperation(value = "修改用户其他数据", notes = "")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "mobilePhone", value = "老密码", required = false, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value = "updateUserInfo", method = RequestMethod.POST)
|
@ResponseBody
|
public Result updateUserInfo(String mobilePhone) {
|
return userService.updateUserInfo(ClientUtils.getUserId(), mobilePhone);
|
}
|
|
/**
|
* 获取系统当前时间
|
*/
|
@RequestMapping(value = "currentTime", method = RequestMethod.GET)
|
@ResponseBody
|
public long getCurrentTime() {
|
return System.currentTimeMillis();
|
}
|
|
@ApiOperation(value = "获取机构列表", notes = "")
|
@RequestMapping(value = "getOrgLst", method = RequestMethod.GET)
|
@ResponseBody
|
public Result getOrgLst() {
|
List<Map<String, Object>> orgLst = organizationService.getOrgLst();
|
return new Result(true, "success", orgLst);
|
}
|
|
@ApiOperation(value = "获取机构的信息", notes = "包含基本信息和banner图和app信息")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "appCode", value = "appcode(android:androidTeacherApp,androidTeacherH5,androidStudentApp, androidStudentH5"
|
+ "IOS:IosTeacherApp,IosStudentApp)", required = false, paramType="query", dataType = "String"),
|
@ApiImplicitParam(name = "orgId", value = "机构id", required = false, paramType="query", dataType = "String")
|
})
|
@RequestMapping(value = "getOrgInfo", method = RequestMethod.GET)
|
@ResponseBody
|
public Result getOrgInfo(String appCode, String orgId) {
|
return this.organizationService.getOrgInfo(appCode, orgId);
|
}
|
|
/**
|
* APP2.0: 获取android APP版本
|
*
|
* @return|
|
*/
|
@ApiOperation(value = "获取android APP版本")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "appName", value = "app名称(android:teacherApp,teacherH5,studentApp, studentH5)", required = false, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value="getAndroidAppVersion",method=RequestMethod.GET)
|
public @ResponseBody Result getAppVersion(String appName) {
|
|
// 版本号
|
String versionName = "";
|
String versionTips = "";
|
String versionCode = "";
|
String downloadUrl = "";
|
|
if("teacherApp".equals(appName)) {
|
versionName = commonDAO.queryConfigValue("android_teacher_app_name");
|
versionTips = commonDAO.queryConfigValue("android_teacher_app_tips");
|
versionCode = commonDAO.queryConfigValue("android_teacher_app_code");
|
downloadUrl = commonDAO.queryConfigValue("android_teacher_app_download_url");
|
}else if("teacherH5".equals(appName)){
|
versionName = commonDAO.queryConfigValue("android_teacher_h5_name");
|
versionTips = commonDAO.queryConfigValue("android_teacher_h5_tips");
|
versionCode = commonDAO.queryConfigValue("android_teacher_h5_code");
|
downloadUrl = commonDAO.queryConfigValue("android_teacher_h5_download_url");
|
}else if("studentApp".equals(appName)){
|
versionName = commonDAO.queryConfigValue("android_student_app_name");
|
versionTips = commonDAO.queryConfigValue("android_student_app_tips");
|
versionCode = commonDAO.queryConfigValue("android_student_app_code");
|
downloadUrl = commonDAO.queryConfigValue("android_student_app_download_url");
|
}else if("studentH5".equals(appName)){
|
versionName = commonDAO.queryConfigValue("android_student_h5_name");
|
versionTips = commonDAO.queryConfigValue("android_student_h5_tips");
|
versionCode = commonDAO.queryConfigValue("android_student_h5_code");
|
downloadUrl = commonDAO.queryConfigValue("android_student_h5_download_url");
|
}else {
|
versionName = commonDAO.queryConfigValue(Constants.CONFIG_ANDROID_APP_VERSION);
|
versionTips = commonDAO.queryConfigValue(Constants.CONFIG_APP_VERSION_TIPS);
|
versionCode = commonDAO.queryConfigValue(Constants.CONFIG_ANDROID_APP_VERSION_CODE);
|
downloadUrl = commonDAO.queryConfigValue(Constants.CONFIG_ANDROID_APP_DOWNLOAD_URL);
|
}
|
|
return new Result(true, "", CollectionUtils.newObjectMap("versionName", versionName, "versionCode", versionCode, "versionTips", versionTips, "downloadUrl", downloadUrl));
|
}
|
|
|
/**
|
* APP2.0: 获取ios APP版本
|
*
|
* @return
|
*/
|
@ApiOperation(value = "获取ios APP版本")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "appName", value = "app名称(ios:teacherApp,studentApp)", required = false, paramType="query", dataType = "String"),
|
})
|
@RequestMapping(value="getIosAppVersion",method=RequestMethod.GET)
|
public @ResponseBody Result getIOSAppVersion(String appName) {
|
// 版本号
|
String versionCode = "";
|
String versionNo = "";
|
String versionTips = "";
|
String downloadUrl = "";
|
|
if("teacherApp".equals(appName)) {
|
versionCode = commonDAO.queryConfigValue("ios_teacher_app_code");
|
versionNo = commonDAO.queryConfigValue("ios_teacher_app_no");
|
versionTips = commonDAO.queryConfigValue("ios_teacher_app_tips");
|
downloadUrl = commonDAO.queryConfigValue("ios_teacher_app_download_url");
|
}else{
|
versionCode = commonDAO.queryConfigValue("ios_student_app_code");
|
versionNo = commonDAO.queryConfigValue("ios_student_app_no");
|
versionTips = commonDAO.queryConfigValue("ios_student_app_tips");
|
downloadUrl = commonDAO.queryConfigValue("ios_student_app_download_url");
|
}
|
|
return new Result(true, "", CollectionUtils.newObjectMap("versionCode", versionCode, "versionNo", versionNo, "versionTips", versionTips, "downloadUrl", downloadUrl));
|
}
|
|
/**
|
* APP2.0: 获取ios 版本
|
*
|
* @return
|
*/
|
@ApiOperation(value = "获取ios菜单")
|
@RequestMapping(value="getIosMenu",method=RequestMethod.GET)
|
public @ResponseBody Result getIOSAppVersion() {
|
//"课件","考试","作业","直播"
|
return new Result(true, "", new String[]{"课件","直播","考试","作业"});
|
}
|
|
|
}
|