|  |  | 
 |  |  | import com.alibaba.fastjson.JSONObject; | 
 |  |  | import com.matrix.component.redis.RedisClient; | 
 |  |  | import com.matrix.core.pojo.AjaxResult; | 
 |  |  | import com.matrix.core.tools.LogUtil; | 
 |  |  | import com.matrix.core.tools.StringUtils; | 
 |  |  | import com.matrix.core.tools.UUIDUtil; | 
 |  |  | import com.matrix.system.app.authority.AppAuthorityManager; | 
 |  |  | import com.matrix.system.app.dto.LoginDto; | 
 |  |  | import com.matrix.system.app.dto.PwdResetDto; | 
 |  |  | import com.matrix.system.app.dto.SmsCodeDto; | 
 |  |  | import com.matrix.system.app.dto.UploadPhotoDto; | 
 |  |  | import com.matrix.system.app.vo.UserInfoVo; | 
 |  |  | import com.matrix.system.common.authority.DefaultAuthorityManager; | 
 |  |  | import com.matrix.system.common.authority.strategy.AccountPasswordLogin; | 
 |  |  | import com.matrix.system.common.authority.strategy.LoginStrategy; | 
 |  |  | import com.matrix.system.common.bean.SysUsers; | 
 |  |  | import com.matrix.system.common.service.SysUsersService; | 
 |  |  | import com.matrix.system.common.tools.PasswordUtil; | 
 |  |  | import com.matrix.system.hive.bean.SysShopInfo; | 
 |  |  | import com.matrix.system.hive.plugin.util.CollectionUtils; | 
 |  |  | import com.matrix.system.hive.plugin.util.ImageUtil; | 
 |  |  | import com.matrix.system.hive.service.SysShopInfoService; | 
 |  |  | import io.swagger.annotations.Api; | 
 |  |  | import io.swagger.annotations.ApiOperation; | 
 |  |  | import io.swagger.annotations.ApiResponse; | 
 |  |  | import io.swagger.annotations.ApiResponses; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.beans.factory.annotation.Value; | 
 |  |  | import org.springframework.validation.annotation.Validated; | 
 |  |  | 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.RestController; | 
 |  |  | import org.springframework.web.bind.annotation.*; | 
 |  |  |  | 
 |  |  | import java.io.File; | 
 |  |  | import java.io.UnsupportedEncodingException; | 
 |  |  | import java.security.NoSuchAlgorithmException; | 
 |  |  | import java.util.List; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * @author wzy | 
 |  |  | 
 |  |  |     private SysShopInfoService sysShopInfoService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private DefaultAuthorityManager authorityManager; | 
 |  |  |     private AppAuthorityManager authorityManager; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private RedisClient redisClient; | 
 |  |  |  | 
 |  |  |     @Value("${file_storage_path}") | 
 |  |  |     private String fileStoragePath; | 
 |  |  |     @Value("${static_resource_url}") | 
 |  |  |     private String nginxUrl; | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "登陆接口", notes = "手机端登陆接口") | 
 |  |  |     @ApiResponses({ | 
 |  |  | 
 |  |  |         userInfoVo.setPhoto(user.getSuPhoto()); | 
 |  |  |  | 
 |  |  |         AjaxResult result = AjaxResult.buildSuccessInstance("登陆成功"); | 
 |  |  |         authorityManager.initUserPower(result,user); | 
 |  |  |         result.putInMap("user", userInfoVo); | 
 |  |  |         result.putInMap("token", token); | 
 |  |  |         return result; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "图片上传接口", notes = "图片上传接口") | 
 |  |  |     @PostMapping(value = "/uploadPhotoBase64") | 
 |  |  |     public AjaxResult uploadPhotoBase64(@RequestBody @Validated UploadPhotoDto uploadPhotoDto) { | 
 |  |  |         // 文件保存目录路径 | 
 |  |  |         String savePath = fileStoragePath; | 
 |  |  |         // 文件保存目录URL | 
 |  |  |         String saveUrl = nginxUrl; | 
 |  |  |  | 
 |  |  |         // 保存和访问路径检查 | 
 |  |  |         if (StringUtils.isBlank(saveUrl) || StringUtils.isBlank(savePath)) { | 
 |  |  |             return AjaxResult.buildFailInstance("文件上传失败错误代码:001"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         // 检查目录 | 
 |  |  |         File uploadDir = new File(savePath); | 
 |  |  |         if (!uploadDir.isDirectory()) { | 
 |  |  |             uploadDir.mkdir(); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         String fileName = ImageUtil.base64ToFile(uploadPhotoDto.getBase64(), savePath, UUIDUtil.getRandomID() + ".png"); | 
 |  |  |         LogUtil.info("fileName : {}", fileName); | 
 |  |  |  | 
 |  |  |         AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("上传成功"); | 
 |  |  |         ajaxResult.putInMap("file", saveUrl + fileName); | 
 |  |  |         return ajaxResult; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "短信验证码发送", notes = "短信验证码发送") | 
 |  |  |     @PostMapping(value = "/sendSmsCode") | 
 |  |  |     public AjaxResult sendSmsCode(@RequestBody @Validated SmsCodeDto smsCodeDto) { | 
 |  |  |         SysUsers user = new SysUsers(); | 
 |  |  |         user.setSuTel(smsCodeDto.getTelphone()); | 
 |  |  |         List<SysUsers> users = sysUsersService.findByModel(user); | 
 |  |  |         if (CollectionUtils.isEmpty(users)) { | 
 |  |  |             return AjaxResult.buildFailInstance("该手机号不存在"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         String codeExist = redisClient.getCachedValue(smsCodeDto.getTelphone()); | 
 |  |  |         if (StringUtils.isNotBlank(codeExist)) { | 
 |  |  |             return AjaxResult.buildFailInstance("请勿重复发送验证码"); | 
 |  |  |         } | 
 |  |  |         redisClient.saveValue(smsCodeDto.getTelphone(), "123456", 120); | 
 |  |  |         return AjaxResult.buildSuccessInstance("发送成功"); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation(value = "重置登陆密码", notes = "重置登陆密码") | 
 |  |  |     @PostMapping(value = "/resetLoginPwd") | 
 |  |  |     public AjaxResult resetLoginPwd(@RequestBody @Validated PwdResetDto pwdResetDto) throws UnsupportedEncodingException, NoSuchAlgorithmException { | 
 |  |  |         SysUsers user = new SysUsers(); | 
 |  |  |         user.setSuTel(pwdResetDto.getTelphone()); | 
 |  |  |         List<SysUsers> users = sysUsersService.findByModel(user); | 
 |  |  |         if (CollectionUtils.isEmpty(users)) { | 
 |  |  |             return AjaxResult.buildFailInstance("该手机号不存在"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         String code = redisClient.getCachedValue(pwdResetDto.getTelphone()); | 
 |  |  |         if (StringUtils.isBlank(code)) { | 
 |  |  |             return AjaxResult.buildFailInstance("验证码已失效,请重新发送"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (!code.equals(pwdResetDto.getCode())) { | 
 |  |  |             return AjaxResult.buildFailInstance("验证码错误"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         user = users.get(0); | 
 |  |  |         user.setSuPassword(pwdResetDto.getNewPwd()); | 
 |  |  |         String pwd = PasswordUtil.getEncrypUserPwd(user); | 
 |  |  |  | 
 |  |  |         int i = sysUsersService.updateUserPassword(user.getSuId(), pwd); | 
 |  |  |         if (i > 0) { | 
 |  |  |             redisClient.removeObject(pwdResetDto.getTelphone()); | 
 |  |  |             return AjaxResult.buildSuccessInstance("修改成功"); | 
 |  |  |         } | 
 |  |  |         return AjaxResult.buildFailInstance("修改失败"); | 
 |  |  |     } | 
 |  |  | } |