package com.uas.sso.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.uas.account.entity.UserDetail; import com.uas.account.exception.AccountException; import com.uas.account.support.Page; import com.uas.account.util.AccountUtils; import com.uas.sso.common.util.HttpUtil; import com.uas.sso.core.Const; import com.uas.sso.core.Status; import com.uas.sso.entity.User; import com.uas.sso.entity.UserRecord; import com.uas.sso.entity.UserView; import com.uas.sso.entity.Userspace; import com.uas.sso.service.ApplyUserSpaceService; import com.uas.sso.service.UserService; import com.uas.sso.service.UserspaceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.ModelMap; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.sql.Timestamp; import java.util.ArrayList; import java.util.List; import java.util.Set; import static org.springframework.data.jpa.domain.AbstractPersistable_.id; /** * 用户信息管理controller * * @author wangmh * @date 2018/1/2 */ @RestController @RequestMapping("/api/user") public class UserManagerController extends BaseController { @Autowired private UserService userService; @Autowired private UserspaceService userspaceService; @Autowired private ApplyUserSpaceService applyUserSpaceService; /** * 用户信息新增、修改 * * @param userView * @return */ @RequestMapping(method = RequestMethod.POST) @ResponseBody public ModelMap apiSave(@RequestBody UserView userView, String appId) { if (userView == null || appId == null) { throw new AccountException("参数错误"); } User user = new User(); if (userView.getUserUU() != null) { user = userService.findOne(userView.getUserUU()); } return success(userService.save(user)); } /** * 校验手机号是否被注册 * * @param mobile 手机号 * @return */ @RequestMapping(value = "/checkMobile", method = RequestMethod.GET) public ModelMap checkMobile(String mobile) { return new ModelMap("hasRegister", userService.mobileHasRegistered(mobile)); } /** * 校验真实姓名是否被认证 * * @author wangmh * @date 2018/1/11 15:05 * @param realName 真实姓名 * @return */ @RequestMapping(value = "/realName/valid", method = RequestMethod.GET) public ModelMap realNameIsValid(String realName) { return success(new ModelMap("isValid", userService.realNameIsValid(realName))); } /** * 校验身份证号是否被认证 * * @author wangmh * @date 2018/1/11 15:06 * @param idCard 身份证号 * @return {"isValid", b} b为true说明已认证 */ @RequestMapping(value = "/idCard/valid", method = RequestMethod.GET) public ModelMap idCardIsValid(String idCard) { return success(new ModelMap("isValid", userService.idCardIsValid(idCard))); } /** * 根据企业uu号查询企业下所有用户信息 * @author wangmh * @date 2018/1/26 14:43 * @param page 当前页数 * @param size 每页大小 * @param spaceUU 企业uu号 * @return org.springframework.data.domain.Page, content 为用户信息集合 */ @RequestMapping(value = "/find/member", method = RequestMethod.GET) public ModelMap findMember(@RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size, Long spaceUU) { return success(userService.findMemberBySpaceUU(page, size, spaceUU)); } /** * 根据用户uu号查询用户信息 * @author wangmh * @date 2018/1/26 14:46 * @param userUU 用户uu号 * @return 用户信息 */ @RequestMapping(value = "/info", method = RequestMethod.GET) public ModelMap findOne(@RequestParam Long userUU) { return success(userService.findOne(userUU)); } /** * 用户申请绑定企业 * * @author wangmh * @date 2018/1/31 18:22 * @param userUU 用户uu号 * @param spaceUU 企业uu奥 * @return 用户信息 */ @RequestMapping(value = "/apply/bind", method = RequestMethod.POST) public ModelMap bindUserSpace(@RequestParam Long userUU, Long spaceUU) { applyUserSpaceService.applyBindUserSpace(userUU, spaceUU); return success(); } /** * 根据用户uu号查询分页查询申请信息 * @param userUU 用户uu号 * @param page 当前页,默认值为1 * @param size 每页大小,默认值为20 * @return org.springframework.data.domain.Page,content为ApplyUserSpace集合 */ @RequestMapping(value = "/apply/info", method = RequestMethod.GET) public ModelMap findApplyInfo(Long userUU, @RequestParam(defaultValue = "1") int page, @RequestParam(defaultValue = "20") int size) { return success(applyUserSpaceService.findApplyByUserUU(userUU, page, size)); } /** * 用户解除绑定企业 * @param userUU 企业uu号 * @param spaceUU 企业uu号 * @return */ @RequestMapping(params = "_operate=unbind", method = RequestMethod.POST) public ModelMap unbindUserSpace(Long userUU, Long spaceUU) { if (StringUtils.isEmpty(userUU) || StringUtils.isEmpty(spaceUU)) { return error("参数错误"); } userService.unbindUserspace(userUU, spaceUU); return success(); } /** * 企业添加已注册用户 * @param userUU 企业uu号 * @param spaceUU 企业uu号 * @return */ @RequestMapping(params = "_operate=bind", method = RequestMethod.POST) public ModelMap addUser(Long userUU, Long spaceUU) { if (StringUtils.isEmpty(userUU) || StringUtils.isEmpty(spaceUU)) { return error("参数错误"); } userService.bindUserspace(userUU, spaceUU); return success(); } /** * 企业添加已注册用户 * @param user 用户信息 * @param spaceUU 企业uu号 * @return */ @RequestMapping(params = "_operate=add", method = RequestMethod.POST) public ModelMap addUser(User user, Long spaceUU) { // 参数判断 if (user == null || user.getUserUU() != null || spaceUU == null) { return error("参数错误"); } // 注册新用户,无密码则使用默认密码 if (StringUtils.isEmpty(user.getPassword())) { user.setPassword("111111"); } user = userService.register(user); // 绑定企业 userService.bindUserspace(user.getUserUU(), spaceUU); return success(user); } /** * 接口调用验证密码登录 * *
* 这个比较特殊,指定应用可能密码为空,需要借用其他应用的密码来校验
*
*
* @return
*/
@RequestMapping(params = "_operate=fuzzyCheck")
public ModelMap apiFuzzyLogin(User user) {
if (null == user || null == user.getPassword()) {
return error("参数错误");
}
if (!StringUtils.isEmpty(user.getMobile())) {
User userInfo = userService.findByMobile(user.getMobile());
if (userInfo == null) {
return error("未找到用户");
}
// 允许应用在调用该接口前,已经将用户输入的明文加密为密文
String encryPwd = user.getPassword().length() >= 32 ? user.getPassword() : userService.getEncryPassword(
Const.ENCRY_FORMAT, user.getPassword(), userInfo.getSalt());
if (encryPwd.equals(userInfo.getPassword())) {
return success();
}
return error("密码错误");
}
return error("请填写手机号");
}
@RequestMapping("/update/password/{userUU}/{spaceUU}")
public ModelMap updatePassword(@PathVariable Long userUU, @PathVariable Long spaceUU, String password) {
// 获取企业密钥
Userspace userspace = userspaceService.findOne(spaceUU);
// 校验请求
checkRequest(userspace.getAccessSecret());
// 修改密码
userService.updatePassword(userUU, password);
return success();
}
/**
* 数据从旧账户中心同步
* @return
*/
@RequestMapping(value = "/sync", method = RequestMethod.GET)
public ModelMap sync(@RequestParam(defaultValue = "1") int pageNumber, @RequestParam(defaultValue = "20") int pageSize, @RequestParam(defaultValue = "true") boolean isAll) {
Page