package cn.timer.api.controller; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import cn.timer.api.aspect.lang.annotation.Log; import cn.timer.api.aspect.lang.enums.BusinessType; import cn.timer.api.bean.jxgl.JxglBasicSetting; import cn.timer.api.bean.kqmk.KqglAssoLeaveEmployeeBalance; import cn.timer.api.bean.kqmk.KqglAssoLeaveRules; import cn.timer.api.bean.kqmk.KqglAssoLeaveRulesT; import cn.timer.api.bean.qyxx.CmsContent; import cn.timer.api.bean.qyzx.QyzxEmpEntAsso; import cn.timer.api.bean.qyzx.QyzxEmpLogin; import cn.timer.api.bean.qyzx.QyzxEntInfoM; import cn.timer.api.bean.qyzx.QyzxSms; import cn.timer.api.bean.qyzx.businessService.QyzxRemainingQuantity; import cn.timer.api.bean.yggl.YgglMainEmp; import cn.timer.api.bean.zzgl.ZzglAuth; import cn.timer.api.bean.zzgl.ZzglBmgwM; import cn.timer.api.config.annotation.CurrentUser; import cn.timer.api.config.annotation.UserBean; import cn.timer.api.config.enuminterface.YgEnumInterface; import cn.timer.api.config.enuminterface.YgEnumInterface.YgJobType; import cn.timer.api.config.enums.CommonEnum; import cn.timer.api.config.enums.SysRoleType; import cn.timer.api.config.exception.CustomException; import cn.timer.api.controller.jxgl.service.JxglService; import cn.timer.api.controller.spmk.service.SpmkServiceImpl; import cn.timer.api.dao.kqmk.KqglAssoLeaveRulesMapper; import cn.timer.api.dao.qyzx.QyzxEmpEntAssoMapper; import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper; import cn.timer.api.dao.yggl.YgglMainEmpMapper; import cn.timer.api.dao.zzgl.ZzglBmgwMMapper; import cn.timer.api.dto.login.QysDto; import cn.timer.api.dto.qyzx.EntRegisterDto; import cn.timer.api.utils.Md5; import cn.timer.api.utils.Result; import cn.timer.api.utils.ResultUtil; import cn.timer.api.utils.UserIp; import cn.timer.api.utils.aliyun.AliyunSMS; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @RestController @Api(tags = "1.0登录注册") @Transactional @RequestMapping(value = "/login", produces = { "application/json" }) public class LoginController { @Value(value = "${config-8timer.init-password}") public String pwd; // 系统赠送时间 @Value("${config-8timer.register-free-time}") public Integer offset; // 系统赠送时间 @Value("${config-8timer.register-company-max-num}") public Integer max; @Value("${config-8timer.register-childAccount-max-num}") public Integer maxChildAccount; @Value("${config-8timer.Aliyun.PROJECT_NAME}") private String PROJECT_NAME; @Value("${config-8timer.Aliyun.REGION_ID}") private String REGION_ID; @Value("${config-8timer.Aliyun.ACCESSKEY_ID}") private String ACCESSKEY_ID; @Value("${config-8timer.Aliyun.SECRET}") private String SECRET; // public static String host; // public static String PROJECT_ID; // public static String PROJECT_SECRET; // // @Value("${config-8timer.esign.host}") // private String host_s; // // @Value("${config-8timer.esign.PROJECT_ID}") // private String PROJECT_ID_s; // // @Value("${config-8timer.esign.PROJECT_SECRET}") // private String PROJECT_SECRET_s; // // @PostConstruct // public void init() { // host = host_s; // PROJECT_ID = PROJECT_ID_s; // PROJECT_SECRET = PROJECT_SECRET_s; // } @Value("${config-8timer.Aliyun.PROJECT_NAME}") private String endpoint; @Value("${config-8timer.Aliyun.ACCESSKEY_ID}") private String accessKeyId; @Value("${config-8timer.Aliyun.SECRET}") private String accessKeySecret; @Value("${config-8timer.Aliyun.bucketName}") private String bucketName; @Value("${config-8timer.Aliyun.bucketName_pri}") private String bucketName_pri; @Value("${config-8timer.Aliyun.project_package}") private String project_package; @Value("${config-8timer.Aliyun.expirationTime}") private String expirationTime; @Value("${config-8timer.Aliyun.expirationTime_pri}") private String expirationTime_pri; @Value("${config-8timer.qyxx.title}") private String title; @Value("${config-8timer.qyxx.author}") private String author; @Value("${config-8timer.qyxx.cover}") private String cover; @Value("${config-8timer.qyxx.summary}") private String summary; @Autowired private HttpSession session; @Autowired private QyzxEmpLoginMapper qyzxEmpLoginMapper; @Autowired private QyzxEmpEntAssoMapper qyzxEmpEntAssoMapper; @Autowired private ZzglBmgwMMapper zzglBmgwMMapper; @Autowired private YgglMainEmpMapper ygglMainEmpMapper; @Autowired private AliyunSMS aliyunSMS; // @Autowired // private DataSourceTransactionManager transactionManager; /** * 发送验证码 * * @param qyzxEmpLogin * @return */ @PostMapping(value = "/sendcode") @ApiOperation(value = "1.发送验证码", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 1) @Log(title = "发送验证码", businessType = BusinessType.SEND_CODE) public Result<String> sendCode(@RequestBody EntRegisterDto entRegisterDto) { String phone = entRegisterDto.getPhone(); if (phone == null || StrUtil.hasBlank(phone)) { return ResultUtil.error("请输入手机号"); } Integer orgCode = null; if (entRegisterDto.getTc() != 4) { // 如果不是注册,则判断 QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().build() .selectOne(new LambdaQueryWrapper<QyzxEmpLogin>().eq(QyzxEmpLogin::getPhone, phone)); orgCode = qyzxEmpLogin.getOrgId(); QyzxRemainingQuantity quantity = QyzxRemainingQuantity.builder().build() .selectOne(new LambdaQueryWrapper<QyzxRemainingQuantity>() .eq(QyzxRemainingQuantity::getOrgCode, orgCode).eq(QyzxRemainingQuantity::getPmid, 1) .gt(QyzxRemainingQuantity::getRemainder, 0)); Date date = null; Integer remainder = null; if (quantity != null) { remainder = quantity.getRemainder(); date = quantity.getExpireDate(); } if (remainder == null || remainder <= 0) { // 判断充了钱没 return ResultUtil.error("请充值后使用短信功能!"); } if (date != null && date.getTime() <= new Date().getTime()) { System.err.println("企业 " + orgCode + " :短信套餐已过期"); return ResultUtil.error("短信套餐已到期!"); } } // 6位随机数验证码 try { Integer code = (int) ((Math.random() * 9 + 1) * 100000); if (phone == null || "".equals(phone)) { phone = entRegisterDto.getUsername(); entRegisterDto.setPhone(phone); } List<Object> list = aliyunSMS.authCode(entRegisterDto, entRegisterDto.getTc(), code); Integer useId = (Integer) list.get(0); JSONObject j = (JSONObject) list.get(1); // 获取当前日期的字符串格式 String today = DateUtil.today(); // yyyy-MM-dd today = today.replace("-", ""); Thread.sleep(1000); JSONObject jsonObject = (JSONObject) JSONObject .parseObject(aliyunSMS.QuerySendDetails(phone, today, j.getString("BizId"))) .getJSONObject("SmsSendDetailDTOs").getJSONArray("SmsSendDetailDTO").get(0); String phoneNum = jsonObject.getString("PhoneNum"); String content = jsonObject.getString("Content"); // String templateCode = jsonObject.getString("TemplateCode"); // String sendStatus = jsonObject.getString("SendStatus"); // String sendDate = jsonObject.getString("SendDate"); QyzxSms qyzxSms = new QyzxSms(); qyzxSms.setContent(content); qyzxSms.setCreateTime(new Date()); qyzxSms.setMessageType(entRegisterDto.getTc()); qyzxSms.setPhone(phoneNum); qyzxSms.setOrgCode(orgCode); qyzxSms.setUseId(useId); qyzxSms.insert(); String message = j.getString("Message"); if ("OK".equals(message)) { session.setAttribute(phone, code); // redisTemplate.set(phone, code); // redisTemplate.expire(phone, 60); return ResultUtil.data("发送验证码成功"); } else { return ResultUtil.error("发送验证码失败"); } } catch (Exception e) { e.printStackTrace(); return ResultUtil.error("发送验证码失败"); } } /** * 手机号码认证 * * @param qyzxEmpLogin * @return */ @PostMapping(value = "/authentication") @ApiOperation(value = "2.手机号码认证", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 2) public Result<String> authentication(@RequestBody EntRegisterDto entRegisterDto) { String phone = entRegisterDto.getPhone(); String code = entRegisterDto.getCode().toString(); String codeRedis = session.getAttribute(phone) != null ? session.getAttribute(phone).toString() : ""; if (code == null || !code.equals(codeRedis)) { return ResultUtil.error("验证码不符"); } return ResultUtil.success("验证码正确"); } /** * 手机号码认证 * * @param qyzxEmpLogin * @return * @throws IOException *//* * @PostMapping(value = "/test") * * @ApiOperation(value = "3.测试", httpMethod = "POST", notes = "接口发布说明") * * @ApiOperationSupport(order = 3) public void test(HttpServletRequest request, * HttpServletResponse res) throws IOException { * * res.setHeader("content-type","text/html;charset=UTF-8"); * res.setHeader("selfHeader","selfHeaderValue"); // * res.addHeader("response_code", "123"); // * res.setContentType("application/octet-stream"); // * res.addHeader("Content-Length", "0"); * * res.addHeader("response_code", "100"); res.addHeader("trans_id", ""); * res.addHeader("cmd_code", "NO com"); * * res.setContentType("application/octet-stream"); * res.addHeader("Content-Length", "0"); * * res.flushBuffer(); // response.addHeader("response_code", * "ERROR_INVALID_LIB_NAME"); // * response.setContentType("application/octet-stream"); // * response.addHeader("Content-Length", "0"); // response.flushBuffer(); * System.out.println(111); } */ @PostMapping(value = "/updatePwd") @ApiOperation(value = "4.修改密码(新)", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 4) @Log(title = "修改密码", businessType = BusinessType.UPDATE) public Result<String> updatepwd(@RequestBody EntRegisterDto entRegisterDto) { String oldPwd = entRegisterDto.getOldPwd();// 输入的原密码 String pw = entRegisterDto.getPw();// 输入的新密码 String phone = entRegisterDto.getPhone();// 手机号 String code = entRegisterDto.getCode();// 验证码 Integer type = entRegisterDto.getPwUpdateType();// 验证方式 QyzxEmpLogin qyzxEmpLogin = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper) .eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one();// 员工登录表 String dbPwd = qyzxEmpLogin.getPw();// 数据库原密码 if (type == 1) { if (!Md5.md5(oldPwd).equals(dbPwd)) { return ResultUtil.error("原密码验证失败"); } if (pw.equals(oldPwd)) { return ResultUtil.error("新密码与原密码相同,请修改后重试!"); } } else { String codeRedis = session.getAttribute(phone) != null ? session.getAttribute(phone).toString() : ""; if (!code.equals(codeRedis)) { return ResultUtil.error("短信验证码错误"); } if (Md5.md5(pw).equals(dbPwd)) { return ResultUtil.error("新密码与原密码相同,请修改后重试!"); } } qyzxEmpLogin.setPw(Md5.md5(pw)); qyzxEmpLogin.updateById(); return ResultUtil.success("修改成功"); } /** * 修改密码 * * @param qyzxEmpLogin * @return */ @PostMapping(value = "/updatepassword") @ApiOperation(value = "3.修改密码", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 3) public Result<String> updatepassword(@RequestBody EntRegisterDto entRegisterDto) { String phone = entRegisterDto.getPhone(); String pw = entRegisterDto.getPw(); String code = entRegisterDto.getCode(); if (entRegisterDto.getPwUpdateType() != 2) { String codeRedis = session.getAttribute(phone) != null ? session.getAttribute(phone).toString() : ""; if (code == null) { return ResultUtil.error("请填写验证码"); } if (!code.toString().equals(codeRedis)) { return ResultUtil.error("验证码不符"); } QyzxEmpLogin qyzxEmpLogin = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper) .eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one(); if (qyzxEmpLogin != null) { qyzxEmpLogin.setPhone(phone); qyzxEmpLogin.setPw(Md5.md5(pw)); qyzxEmpLogin.updateById(); return ResultUtil.success("修改密码成功"); } else { return ResultUtil.error("修改密码失败,查找不到该人员!"); } } else { if (code == null) { return ResultUtil.error("请填写原密码"); } if (pw.trim().equals(code.trim())) { return ResultUtil.error("新密码与原密码相同!请更改重试"); } QyzxEmpLogin qyzxEmpLogin = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper) .eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one(); if (qyzxEmpLogin != null) { if (qyzxEmpLogin.getPw().equals(Md5.md5(pw))) { qyzxEmpLogin.setPhone(phone); qyzxEmpLogin.setPw(Md5.md5(code)); qyzxEmpLogin.updateById(); return ResultUtil.success("修改密码成功"); } else { return ResultUtil.error("原密码有误!请核对重试"); } } return ResultUtil.error("修改密码失败,查找不到该人员!"); } // return ResultUtil.error("修改密码失败"); } /** * 修改手机号/用户名 * * @param qyzxEmpLogin * @return */ @PostMapping(value = "/updatephone") @ApiOperation(value = "5.修改手机号/用户名", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 5) public Result<String> updatephone(@CurrentUser UserBean userBean, @RequestBody EntRegisterDto entRegisterDto) { /* * 登录->发送验证码 (参数:新手机号 新手机号验证码 )-> 验证 -> 修改手机号成功 密码初始化为123456 ->登出-> 重新登录 */ Integer empNum = userBean.getEmpNum(); String phone = entRegisterDto.getPhone(); String code = entRegisterDto.getCode(); // String codeRedis = redisTemplate.get(phone).toString(); String codeRedis = session.getAttribute(phone) != null ? session.getAttribute(phone).toString() : ""; if (code == null || !code.toString().equals(codeRedis)) { return ResultUtil.error("验证码不符/失效"); } QyzxEmpLogin qyzxEmpLogin1 = qyzxEmpLoginMapper.selectById(empNum); if (qyzxEmpLogin1 != null) { qyzxEmpLogin1.setPhone(phone); qyzxEmpLogin1.setPw(Md5.md5(pwd));// 密码初始化 qyzxEmpLogin1.updateById(); // 员工信息 手机号修改 YgglMainEmp.builder().phone(phone).build().update( new UpdateWrapper<YgglMainEmp>().lambda().eq(YgglMainEmp::getEmpNum, qyzxEmpLogin1.getId())); return ResultUtil.success("修改手机号/用户名成功"); } return ResultUtil.error("修改手机号/用户名失败"); } /** * 是否有账号 * * @return */ @GetMapping(value = "/user") @ApiOperation(value = "5.是否有账号", httpMethod = "GET", notes = "是否有账号") @ApiOperationSupport(order = 5) public Result<String> updatephone(@CurrentUser UserBean userBean, @RequestParam String phone) { QyzxEmpLogin login = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper) .eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one(); if (login == null) { return ResultUtil.success("0"); } return ResultUtil.success("1"); } @Autowired SpmkServiceImpl SpmkService; @Autowired JxglService jxglService; @Autowired private KqglAssoLeaveRulesMapper kqglassoleaverulesmapper; /** * 注册企业 * * @param entRegisterDto * @return */ @PostMapping(value = "/register") @ApiOperation(value = "6.注册企业", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 6) @Log(title = "企业注册", businessType = BusinessType.INSERT) public Result<String> register(@RequestBody EntRegisterDto entRegisterDto) throws Exception { try { String phone = entRegisterDto.getPhone(); String username = entRegisterDto.getUsername(); String name = entRegisterDto.getName(); String pw = entRegisterDto.getPw(); String email = entRegisterDto.getEmail(); if ((phone == null || StrUtil.hasBlank(phone)) || (username == null || StrUtil.hasBlank(username)) || (name == null || StrUtil.hasBlank(name)) || (pw == null || StrUtil.hasBlank(pw))) { return ResultUtil.error("用户信息不能为空"); } QyzxEmpLogin login = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper) .eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one(); if (login != null) { Integer count = new LambdaQueryChainWrapper<QyzxEmpEntAsso>(qyzxEmpEntAssoMapper) .eq(QyzxEmpEntAsso::getEmpNum, login.getId()) .eq(QyzxEmpEntAsso::getUserType, SysRoleType.U_TYPE_ADMIN.getType()).count(); if (count > max) { return ResultUtil.error("已注册过企业"); } } // 企业信息 QyzxEntInfoM qyzxEntInfoM = QyzxEntInfoM.builder().name(name).registerTime(DateUtil.date()).phone(phone) .operName(username).endTime(DateUtil.offsetDay(new Date(), offset)) .level(CommonEnum.LEVEL_PROBATION.getType()).build(); boolean b1 = qyzxEntInfoM.insert(); Integer qyId = qyzxEntInfoM.getId(); if (!b1) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return ResultUtil.error("注册企业失败1"); } if (login == null) { // 员工信息 QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().phone(phone).pw(Md5.md5(pw)).email(email) .sts(CommonEnum.U_STS_ON.getType()).orgId(qyId).regTime(DateUtil.date()).build(); boolean b2 = qyzxEmpLogin.insert(); if (!b2) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return ResultUtil.error("注册企业失败2"); } login = qyzxEmpLogin; } else { login.setOrgId(qyId); login.updateById(); } // 员工信息 boolean b4 = YgglMainEmp.builder().orgCode(qyId).empNum(login.getId()).rzTime(new Date()).name(username) .phone(phone).workEmail(email).jobType(YgJobType.QUANZHI.getType()) .jobStatus(YgEnumInterface.jobStatus.ZHENSHI.getType()).build().insert(); if (!b4) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return ResultUtil.error("注册企业失败3"); } // 员工企业关联表 // 主账号权限 QyzxEmpEntAsso qyzxEmpEntAsso = QyzxEmpEntAsso.builder().empNum(login.getId()).orgCode(qyzxEntInfoM.getId()) .status(1).userType(SysRoleType.U_TYPE_ADMIN.getType()).build(); boolean b3 = qyzxEmpEntAsso.insert(); if (!b3) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); return ResultUtil.error("注册企业失败4"); } SpmkService.createCustomApproval(qyzxEntInfoM.getId()); // *****************************考勤假期初始化 // 获取模板数据 // List<KqglAssoLeaveRules> ruless = new LambdaQueryChainWrapper<KqglAssoLeaveRules>(kqglassoleaverulesmapper) // .eq(KqglAssoLeaveRules::getOrgCode, 0).list(); List<KqglAssoLeaveRulesT> ruless = KqglAssoLeaveRulesT.builder().build().selectAll(); // 查询当前公司是否已初始化 KqglAssoLeaveRules rule = kqglassoleaverulesmapper.selectOne(new QueryWrapper<KqglAssoLeaveRules>().lambda() .eq(KqglAssoLeaveRules::getOrgCode, qyzxEntInfoM.getId()).eq(KqglAssoLeaveRules::getLeaveType, 1) .last("LIMIT 1")); if (rule == null) { List<KqglAssoLeaveRules> rullist = new ArrayList<KqglAssoLeaveRules>(); for (KqglAssoLeaveRulesT rul : ruless) { KqglAssoLeaveRules vice = KqglAssoLeaveRules.builder().name(rul.getName()).company(rul.getCompany()) .leaveType(rul.getLeaveType()).apply(rul.getApply()).createTime(new Date().getTime()) .createUserid(999).orgCode(qyzxEntInfoM.getId()).isOpen(rul.getIsOpen()) .leaveBalance(rul.getLeaveBalance()).rulesType(rul.getRulesType()).build(); rullist.add(vice); } if (rullist.size() > 0) { kqglassoleaverulesmapper.insertleaverulesList(rullist); } System.out.println("操作成功!"); } else { System.out.println("重复初始化数据!"); } //假期规则初始化 String current_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()); List<KqglAssoLeaveRules> rul = KqglAssoLeaveRules.builder().build().selectList(new QueryWrapper<KqglAssoLeaveRules>().lambda().eq(KqglAssoLeaveRules::getOrgCode, qyId)); for(KqglAssoLeaveRules r : rul) { if(r.getLeaveBalance() == 0) { KqglAssoLeaveEmployeeBalance.builder().leaveRulesId(r.getId()).userid(login.getId()).balanceDays(-1).modifyUserid(login.getId()).modifyTimer(current_time).orgCode(qyId).build().insert(); }else { KqglAssoLeaveEmployeeBalance.builder().leaveRulesId(r.getId()).userid(login.getId()).balanceDays(0.0).modifyUserid(login.getId()).modifyTimer(current_time).orgCode(qyId).build().insert(); } } // 绩效设置初始化 JxglBasicSetting bS = jxglService.selectAT(qyId); if (bS == null) { boolean res = jxglService.initJxglBasicSetting(qyId); if (!res) { throw new CustomException("绩效设置异常"); } } /********** 默认企业讯息添加 ***********/ CmsContent cmsContent = CmsContent.builder().build(); cmsContent.setTitle(title); cmsContent.setPublisherName(author); cmsContent.setAuthor(author); cmsContent.setModularid(1); cmsContent.setFmtpath(cover); cmsContent.setSummary(summary); cmsContent.setStatus(1); cmsContent.setOrganizationId(qyId); cmsContent.setReleasestate(0); cmsContent.setAddeddate(new Date().getTime()); cmsContent.setReleasetime(String.valueOf(new Date().getTime())); cmsContent.insert(); /********** 默认企业讯息添加 ***********/ return ResultUtil.success("注册企业成功"); } catch (Exception e) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); e.printStackTrace(); return ResultUtil.error("注册异常"); } } /** * 验证码登录 * * @param qyzxEmpLogin * @return */ @PostMapping(value = "/code") @ApiOperation(value = "7.验证码登录", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 7) @Log(title = "用户登录", businessType = BusinessType.OTHER) public Result<QyzxEmpLogin> codelogin(@RequestBody EntRegisterDto entRegisterDto, HttpServletRequest request) { String code = entRegisterDto.getCode(); if (StringUtils.isEmpty(code)) { return ResultUtil.error("请输入验证码"); } String phone = entRegisterDto.getPhone(); String codeRedis = session.getAttribute(phone) != null ? session.getAttribute(phone).toString() : ""; if (codeRedis == null || !code.equals(codeRedis)) return ResultUtil.error("验证码不符"); QyzxEmpLogin qyzxEmpLogin1 = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper) .eq(!StrUtil.hasBlank(phone), QyzxEmpLogin::getPhone, phone).one(); return loginhan(qyzxEmpLogin1, request); } private Result<QyzxEmpLogin> loginhan(QyzxEmpLogin qyzxEmpLogin1, HttpServletRequest request) { if (qyzxEmpLogin1 == null) return ResultUtil.error("帐号不存在!"); String ip; try { ip = UserIp.getIpAddr(request); qyzxEmpLogin1.setIp(ip); } catch (Exception e) { e.printStackTrace(); } Integer isLeader = zzglBmgwMMapper .selectCount(new QueryWrapper<ZzglBmgwM>().lambda().eq(ZzglBmgwM::getLeader, qyzxEmpLogin1.getId()) .eq(ZzglBmgwM::getOrgCode, qyzxEmpLogin1.getOrgId())) > 0 ? 0 : 1; QyzxEmpEntAsso eEA = qyzxEmpEntAssoMapper.selectOne(new QueryWrapper<QyzxEmpEntAsso>().lambda() .select(QyzxEmpEntAsso::getUserType).eq(QyzxEmpEntAsso::getEmpNum, qyzxEmpLogin1.getId()) .eq(QyzxEmpEntAsso::getOrgCode, qyzxEmpLogin1.getOrgId())); qyzxEmpLogin1.setIsLeader(isLeader); qyzxEmpLogin1.setUserType(eEA != null ? eEA.getUserType() : null); List<QysDto> qys = qyzxEmpLoginMapper.getQys(qyzxEmpLogin1.getId()); // 查询部门放进去 for (QysDto qysDto : qys) { Integer bmgwId = qysDto.getBmgwId(); ZzglBmgwM gw = ZzglBmgwM.builder().build() .selectOne(new LambdaQueryWrapper<ZzglBmgwM>().eq(ZzglBmgwM::getId, bmgwId)); if (gw != null) { qysDto.setGwName(gw.getName()); if (gw.getUpId() != null) { Integer upId = gw.getUpId(); ZzglBmgwM bm = ZzglBmgwM.builder().build() .selectOne(new LambdaQueryWrapper<ZzglBmgwM>().eq(ZzglBmgwM::getId, upId)); if (bm != null && bm.getName() != null) qysDto.setBmName(bm.getName()); } } } if (qys.size() == 0) return ResultUtil.error("没有任何公司可以查看!"); qyzxEmpLogin1.setQys(qys); QysDto ctrl = qys.get(0); if (qyzxEmpLogin1.getOrgId() != null) { for (QysDto qysDto : qys) { if (qyzxEmpLogin1.getOrgId().equals(qysDto.getId()) && qysDto.getStatus() == 1) { ctrl = qysDto; } } } YgglMainEmp userInfo = ygglMainEmpMapper.selectOne(new QueryWrapper<YgglMainEmp>().lambda() .select(YgglMainEmp::getName, YgglMainEmp::getPhone, YgglMainEmp::getBmgwId) .eq(YgglMainEmp::getEmpNum, qyzxEmpLogin1.getId()) .eq(YgglMainEmp::getOrgCode, qyzxEmpLogin1.getOrgId())); if (userInfo == null) { return ResultUtil.error("账号不存在"); } qyzxEmpLogin1.setYgglMainEmp(userInfo); if (ctrl.getStatus() == null || ctrl.getStatus().equals(0)) { return ResultUtil.error("帐号被禁用"); } qyzxEmpLogin1.setOrgId(ctrl.getId()); if (SysRoleType.U_TYPE_ADMIN.getType().equals(ctrl.getUserType()) || SysRoleType.U_TYPE_C_ADMIN.getType().equals(ctrl.getUserType())) { } else { // 获取权限 ArrayList<Integer> list = new ArrayList<Integer>(); List<ZzglBmgwM> zzglBmgwMs = new LambdaQueryChainWrapper<ZzglBmgwM>(zzglBmgwMMapper) .eq(ZzglBmgwM::getOrgCode, qyzxEmpLogin1.getOrgId()).list(); // 传入的部门岗位是登录者的岗位id.获取的list中只有一个元素,不必要 ZzglBmgwM.getupDepts(list, ctrl.getBmgwId(), zzglBmgwMs); if (list != null && list.size() > 0) { LambdaQueryWrapper<ZzglAuth> wp = new LambdaQueryWrapper<>(); wp.select(ZzglAuth::getMenuId).eq(ZzglAuth::getOrgCode, qyzxEmpLogin1.getOrgId()) .and(i -> i.in(ZzglAuth::getBmgwId, list.toArray())); List<ZzglAuth> zas = ZzglAuth.builder().build().selectList(wp); List<String> menus = new ArrayList<>(); zas.stream().forEach(o -> menus.add(o.getMenuId())); qyzxEmpLogin1.setMenus(menus); } } // 可操作企业 // 需要更新最后一次登陆信息 // 用户信息缓存 session.setAttribute("ui", qyzxEmpLogin1); return ResultUtil.data(qyzxEmpLogin1); } /** * 密码登录 * * @param qyzxEmpLogin * @return */ @PostMapping(value = "/password") @ApiOperation(value = "8.密码登录", httpMethod = "POST", notes = "接口发布说明") @ApiOperationSupport(order = 8) @Log(title = "用户登录", businessType = BusinessType.OTHER) public Result<QyzxEmpLogin> passwordlogin(@RequestBody EntRegisterDto entRegisterDto, HttpServletRequest request) { String phone = entRegisterDto.getPhone(); String pw = entRegisterDto.getPw(); if (phone == null || "".equals(phone)) { return ResultUtil.error("手机号不能为空!"); } QyzxEmpLogin qyzxEmpLogin1 = new LambdaQueryChainWrapper<QyzxEmpLogin>(qyzxEmpLoginMapper) .eq(QyzxEmpLogin::getPhone, phone).one(); if (qyzxEmpLogin1 != null) { if (StrUtil.hasBlank(pw) || !qyzxEmpLogin1.getPw().equals(Md5.md5(pw))) return ResultUtil.error("帐号密码错误"); return loginhan(qyzxEmpLogin1, request); } else { return ResultUtil.error("帐号不存在-错误"); } } /** * 绑定邮箱 * * @param empNum * @return */ @GetMapping(value = "/band/{empNum}") public Result<Object> bandEmail(@PathVariable Integer empNum) { QyzxEmpLogin qyzxEmpLogin = QyzxEmpLogin.builder().id(empNum).build().selectById(); if (qyzxEmpLogin == null) return ResultUtil.error("员工不存在"); Integer emailStatus = qyzxEmpLogin.getEmailStatus(); if (emailStatus != 0 && emailStatus != 1) return ResultUtil.error("请确认邮箱绑定状态"); if (emailStatus == 1) return ResultUtil.error("邮箱已绑定,请勿重复绑定"); if (QyzxEmpLogin.builder().id(empNum).emailStatus(1).build().updateById()) return ResultUtil.error("绑定成功"); return ResultUtil.error("绑定失败"); } }