Browse Source

1、解决验证码需要登录问题
2、人才简易信息接口增加兼容base64上传

rayson 6 months ago
parent
commit
77fd69d020

+ 12 - 12
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/controller/app/common/captcha/AppCaptchaController.java

@@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-import com.citu.framework.security.core.annotations.PreAuthenticated;
+import javax.annotation.security.PermitAll;
 import javax.servlet.http.HttpServletRequest;
 
 @Tag(name = "用户端 - 验证码")
@@ -24,9 +24,18 @@ public class AppCaptchaController {
     @Resource
     private CaptchaService captchaService;
 
+    public static String getRemoteId(HttpServletRequest request) {
+        String ip = ServletUtils.getClientIP(request);
+        String ua = request.getHeader("user-agent");
+        if (StrUtil.isNotBlank(ip)) {
+            return ip + ua;
+        }
+        return request.getRemoteAddr() + ua;
+    }
+
     @PostMapping({"/get"})
     @Operation(summary = "获得验证码")
-    @PreAuthenticated
+    @PermitAll
     public ResponseModel get(@RequestBody CaptchaVO data, HttpServletRequest request) {
         assert request.getRemoteHost() != null;
         data.setBrowserInfo(getRemoteId(request));
@@ -35,19 +44,10 @@ public class AppCaptchaController {
 
     @PostMapping("/check")
     @Operation(summary = "校验验证码")
-    @PreAuthenticated
+    @PermitAll
     public ResponseModel check(@RequestBody CaptchaVO data, HttpServletRequest request) {
         data.setBrowserInfo(getRemoteId(request));
         return captchaService.check(data);
     }
 
-    public static String getRemoteId(HttpServletRequest request) {
-        String ip = ServletUtils.getClientIP(request);
-        String ua = request.getHeader("user-agent");
-        if (StrUtil.isNotBlank(ip)) {
-            return ip + ua;
-        }
-        return request.getRemoteAddr() + ua;
-    }
-
 }

+ 21 - 0
menduner/menduner-system-biz/src/main/java/com/citu/module/menduner/system/service/person/info/PersonInfoServiceImpl.java

@@ -1,10 +1,12 @@
 package com.citu.module.menduner.system.service.person.info;
 
+import cn.hutool.core.codec.Base64Decoder;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.citu.framework.common.pojo.PageParam;
 import com.citu.framework.common.pojo.PageResult;
 import com.citu.framework.common.util.object.BeanUtils;
 import com.citu.framework.common.util.validation.ValidationUtils;
+import com.citu.module.infra.api.file.FileApi;
 import com.citu.module.menduner.common.dto.TimeRangeBaseReqVO;
 import com.citu.module.menduner.common.util.LoginUserContext;
 import com.citu.module.menduner.system.api.python.GraphSendDTO;
@@ -52,6 +54,9 @@ public class PersonInfoServiceImpl implements PersonInfoService {
     @Resource
     private GraphProducer graphProducer;
 
+    @Resource
+    private FileApi fileApi;
+
     @Override
     @DSTransactional // 单机+多数据源方案,使用 @DSTransactional 保证本地事务,以及数据源的切换
     public Long createUserInfo(PersonInfoSaveReqVO createReqVO) {
@@ -198,6 +203,22 @@ public class PersonInfoServiceImpl implements PersonInfoService {
         Long userId = LoginUserContext.getUserId();
         PersonInfoDO info = personInfoMapper.selectOne(PersonInfoDO::getUserId, userId);
         PersonInfoDO userInfo = BeanUtils.toBean(reqVO, PersonInfoDO.class);
+        if (null != reqVO.getAvatar()) {
+            if (reqVO.getAvatar().contains("base64")) {
+                // base64编码
+                // 截取, 之后的所有
+                int index = reqVO.getAvatar().indexOf(",");
+                byte[] data = Base64Decoder.decode(reqVO.getAvatar().substring(index + 1));
+                // 转为图片地址保存
+                String path = "person/" + userId + "/";
+                // 取字符当文件名称
+                String name = reqVO.getAvatar()
+                        .substring(reqVO.getAvatar().length() - 10).replaceAll("/", "") + ".jpg";
+                reqVO.setAvatar(fileApi.createFile(reqVO.getName(), path + name, data));
+            }
+            // 头像
+            userInfo.setAvatar(reqVO.getAvatar());
+        }
         userInfo.setUserId(userId);
         if (null == info) {
             personInfoMapper.insert(userInfo);