Helius
2021-01-06 4adcef1e676bf1e9ff8e130f00ffe329dea1bfd5
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -3,25 +3,38 @@
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
@@ -39,10 +52,15 @@
    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({
@@ -57,8 +75,11 @@
        LoginStrategy apLogin = new AccountPasswordLogin(user, sysUsersService);
        user = authorityManager.login(apLogin);
        UserInfoVo userInfoVo = new UserInfoVo();
        if(user.getShopId()!=null){
            user.setShopName(sysShopInfoService.findById(user.getShopId()).getShopName());
            SysShopInfo shopInfo = sysShopInfoService.findById(user.getShopId());
            user.setShopName(shopInfo.getShopName());
            userInfoVo.setShopName(shopInfo.getShopShortName());
        }
        user.setSuPassword(null);
@@ -66,15 +87,91 @@
        redisClient.saveValueForever(token, JSONObject.toJSONString(user));
        redisClient.saveValueForever(user.getSuId().toString(), token);
        UserInfoVo userInfoVo = new UserInfoVo();
        userInfoVo.setId(user.getSuId());
        userInfoVo.setName(user.getSuName());
        userInfoVo.setRoleName(user.getRoleName());
        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("修改失败");
    }
}