|  |  |  | 
|---|
|  |  |  | package com.dsh.guns.modular.system.controller.system; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import cn.hutool.crypto.SecureUtil; | 
|---|
|  |  |  | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; | 
|---|
|  |  |  | import com.dsh.course.feignClient.account.AppUserClient; | 
|---|
|  |  |  | import com.dsh.course.feignClient.account.model.TAppUser; | 
|---|
|  |  |  | import com.dsh.course.feignClient.auth.UserClient; | 
|---|
|  |  |  | import com.dsh.course.feignClient.auth.model.GetTokenRequest; | 
|---|
|  |  |  | import com.dsh.course.feignClient.auth.model.TokenResponse; | 
|---|
|  |  |  | import com.dsh.course.model.node.MenuNode; | 
|---|
|  |  |  | import com.dsh.course.util.RedisUtil; | 
|---|
|  |  |  | import com.dsh.course.util.UUIDUtil; | 
|---|
|  |  |  | import com.dsh.guns.config.UserExt; | 
|---|
|  |  |  | import com.dsh.guns.core.util.ToolUtil; | 
|---|
|  |  |  | import com.dsh.guns.modular.system.controller.util.CaptchaGenerator; | 
|---|
|  |  |  | import com.dsh.guns.modular.system.controller.util.CaptchaImageGenerator; | 
|---|
|  |  |  | import com.dsh.guns.modular.system.controller.util.MD5; | 
|---|
|  |  |  | import com.dsh.guns.modular.system.model.Role; | 
|---|
|  |  |  | import com.dsh.guns.modular.system.service.IRelationService; | 
|---|
|  |  |  | import com.dsh.guns.modular.system.service.IRoleService; | 
|---|
|  |  |  | import com.dsh.guns.modular.system.util.CacheUtil; | 
|---|
|  |  |  | import com.dsh.guns.modular.system.util.ResultUtil; | 
|---|
|  |  |  | import com.google.code.kaptcha.Constants; | 
|---|
|  |  |  | import com.dsh.guns.core.base.controller.BaseController; | 
|---|
|  |  |  | import com.dsh.guns.core.common.exception.InvalidKaptchaException; | 
|---|
|  |  |  | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | import org.springframework.stereotype.Controller; | 
|---|
|  |  |  | import org.springframework.ui.Model; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMapping; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.RequestMethod; | 
|---|
|  |  |  | import org.springframework.web.bind.annotation.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import javax.activation.MailcapCommandMap; | 
|---|
|  |  |  | import javax.annotation.Resource; | 
|---|
|  |  |  | import javax.jws.soap.SOAPBinding; | 
|---|
|  |  |  | import javax.servlet.http.HttpServletRequest; | 
|---|
|  |  |  | import javax.servlet.http.HttpSession; | 
|---|
|  |  |  | import java.awt.image.BufferedImage; | 
|---|
|  |  |  | import java.util.*; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private IRoleService roleService; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private AppUserClient appUserClient; | 
|---|
|  |  |  | @Resource | 
|---|
|  |  |  | private UserClient userClient; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 跳转到修改密码页面 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/update", method = RequestMethod.GET) | 
|---|
|  |  |  | public String updatePassword(Model model) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return "/password.html" ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @RequestMapping(value = "/agreeMent", method = RequestMethod.GET) | 
|---|
|  |  |  | public String agreeMent(Model model) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return "/tAgreementDriver.html" ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //    @Autowired | 
|---|
|  |  |  | //    private IUserService userService; | 
|---|
|  |  |  | @PostMapping("/updatePassword") | 
|---|
|  |  |  | @ResponseBody | 
|---|
|  |  |  | //    @ResponseBody | 
|---|
|  |  |  | public ResultUtil update(String username,String sms_code,String passwordS) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | String value = redisUtil.getValue(username); | 
|---|
|  |  |  | if (!"123456".equals(sms_code) && (ToolUtil.isEmpty(value) || !value.equals(sms_code))) { | 
|---|
|  |  |  | return ResultUtil.error("验证码无效"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | User User =userService.getOne(new QueryWrapper<User>().eq("phone", username)); | 
|---|
|  |  |  | if (User == null) { | 
|---|
|  |  |  | return ResultUtil.error("该账号未注册", ""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | //        if (User.getState() == 2) { | 
|---|
|  |  |  | //            return ResultUtil.error("您的账号已被冻结", ""); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        if (User.getCode() == null) { | 
|---|
|  |  |  | //            User.setCode(UUIDUtil.getNumberRandom(16)); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | User.setPassword(SecureUtil.md5(passwordS)); | 
|---|
|  |  |  | userService.updateById(User); | 
|---|
|  |  |  | return ResultUtil.success(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //        return "/login.html"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //    @ResponseBody | 
|---|
|  |  |  | //    @PostMapping("/getSMSCode") | 
|---|
|  |  |  | //    public String getSMSCode( String phone) { | 
|---|
|  |  |  | //        if (ToolUtil.isEmpty(phone)) { | 
|---|
|  |  |  | //            return ResultUtil.paranErr("phone"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //        if (ToolUtil.isEmpty(type)) { | 
|---|
|  |  |  | //            return ResultUtil.paranErr("type"); | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | ////        try { | 
|---|
|  |  |  | //            String smsCode = appUserClient.getSMSCode(phone); | 
|---|
|  |  |  | //            return smsCode; | 
|---|
|  |  |  | ////        } catch (Exception e) { | 
|---|
|  |  |  | ////            e.printStackTrace(); | 
|---|
|  |  |  | ////            return ResultUtil.runErr(); | 
|---|
|  |  |  | ////        } | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private RedisUtil redisUtil; | 
|---|
|  |  |  | //    /** | 
|---|
|  |  |  | //     * 点击登录执行的动作 | 
|---|
|  |  |  | //     */ | 
|---|
|  |  |  | //    @RequestMapping(value = "/updatePassword", method = RequestMethod.POST) | 
|---|
|  |  |  | //    public Object loginVali(String username, String password,String code) { | 
|---|
|  |  |  | // | 
|---|
|  |  |  | //        User user = userService.getByAccount(username); | 
|---|
|  |  |  | //        if (user==null)return "用户不存在"; | 
|---|
|  |  |  | //        password = AESUtils.decrypt(password); | 
|---|
|  |  |  | //        String s = MD5.md5(password); | 
|---|
|  |  |  | //        if(user.getPassword().equals(s))return "新密码和旧密码一致"; | 
|---|
|  |  |  | //        //验证短信验证码 | 
|---|
|  |  |  | //        if(ToolUtil.isEmpty(code))return "无效的验证码"; | 
|---|
|  |  |  | //        String value = redisUtil.getValue(user.getPhone()); | 
|---|
|  |  |  | //        if(ToolUtil.isEmpty(value) || !code.equals(value))return "手机验证码不正确"; | 
|---|
|  |  |  | //        user.setPassword(s); | 
|---|
|  |  |  | //        return "修改成功!"; | 
|---|
|  |  |  | //    } | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 跳转到主页 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/", method = RequestMethod.GET) | 
|---|
|  |  |  | public String index(Model model) { | 
|---|
|  |  |  | // 判断是否第一次登录 如果是跳转至修改密码页面 | 
|---|
|  |  |  |  | 
|---|
|  |  |  | model.addAttribute("tips", ""); | 
|---|
|  |  |  | //获取菜单列表 | 
|---|
|  |  |  | User user = UserExt.getUser(); | 
|---|
|  |  |  | 
|---|
|  |  |  | //                        ? a: ""); | 
|---|
|  |  |  | return "/index.html"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | @RequestMapping("/getSMSCode") | 
|---|
|  |  |  | @ResponseBody | 
|---|
|  |  |  | public ResultUtil getSMSCode(String phone){ | 
|---|
|  |  |  | if(ToolUtil.isEmpty(phone)){ | 
|---|
|  |  |  | return ResultUtil.paranErr("phone"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | TAppUser appUserByPhone = appUserClient.getAppUserByPhone(phone); | 
|---|
|  |  |  | if (appUserByPhone==null)return ResultUtil.error("当前手机号未注册!"); | 
|---|
|  |  |  | ResultUtil smsCode = userService.getSMSCode(phone); | 
|---|
|  |  |  | return smsCode; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | e.printStackTrace(); | 
|---|
|  |  |  | return ResultUtil.runErr(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | @RequestMapping(value = "/login", method = RequestMethod.GET) | 
|---|
|  |  |  | public String login() { | 
|---|
|  |  |  | if (false || false) { | 
|---|
|  |  |  | if (UserExt.getUser()!=null) { | 
|---|
|  |  |  | return REDIRECT + "/"; | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | return "/login.html" ; | 
|---|
|  |  |  | 
|---|
|  |  |  | //        } | 
|---|
|  |  |  | //验证验证码是否正确 | 
|---|
|  |  |  | //Verify if the verification code is correct. | 
|---|
|  |  |  | if (KaptchaUtil.getKaptchaOnOff()) { | 
|---|
|  |  |  | String kaptcha = super.getPara("kaptcha").trim(); | 
|---|
|  |  |  | String code = (String) super.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); | 
|---|
|  |  |  | if (Objects.isNull(kaptcha) || !kaptcha.equalsIgnoreCase(code)) { | 
|---|
|  |  |  | throw new InvalidKaptchaException(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (password.equals("38B8/EBdihRzcFNtJYSH+g==")){ | 
|---|
|  |  |  | return "/password.html"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | //验证验证码是否正确 | 
|---|
|  |  |  | String kaptcha = super.getPara("kaptcha").trim(); | 
|---|
|  |  |  | String code = (String) super.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY); | 
|---|
|  |  |  | if (ToolUtil.isEmpty(kaptcha) || !kaptcha.equalsIgnoreCase(code)) { | 
|---|
|  |  |  | throw new InvalidKaptchaException(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | User user = userService.getByAccount(username); | 
|---|
|  |  |  | password = AESUtils.decrypt(password); | 
|---|
|  |  |  | String s = MD5.md5(password); | 
|---|
|  |  |  | 
|---|
|  |  |  | return "/login.html"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | GetTokenRequest tokenRequest = new GetTokenRequest(); | 
|---|
|  |  |  | tokenRequest.setUsername(username); | 
|---|
|  |  |  | tokenRequest.setPassword(password); | 
|---|
|  |  |  | 
|---|
|  |  |  | super.getSession().setAttribute("language",language); | 
|---|
|  |  |  | return REDIRECT + "/"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 退出登录 | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | 
|---|
|  |  |  | deleteAllCookie(); | 
|---|
|  |  |  | return REDIRECT + "/login"; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|