diff --git a/pjcloud-auth/src/main/java/com/bsd/pjcloud/auth/endpoint/ImageCodeEndpoint.java b/pjcloud-auth/src/main/java/com/bsd/pjcloud/auth/endpoint/ImageCodeEndpoint.java
index 3aad570e..e477b7e6 100644
--- a/pjcloud-auth/src/main/java/com/bsd/pjcloud/auth/endpoint/ImageCodeEndpoint.java
+++ b/pjcloud-auth/src/main/java/com/bsd/pjcloud/auth/endpoint/ImageCodeEndpoint.java
@@ -14,10 +14,7 @@ import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springframework.data.redis.core.StringRedisTemplate;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import java.util.concurrent.TimeUnit;
@@ -59,6 +56,18 @@ public class ImageCodeEndpoint {
captcha.out(response.getOutputStream());
}
+ @SneakyThrows
+ @GetMapping("/visitor/image")
+ public void visitorImage(@RequestParam(value = "randomStr")String randomStr, HttpServletResponse response) {
+ ArithmeticCaptcha captcha = new ArithmeticCaptcha(DEFAULT_IMAGE_WIDTH, DEFAULT_IMAGE_HEIGHT);
+
+ String result = captcha.text();
+
+ redisTemplate.opsForValue()
+ .set(CacheConstants.VISITOR_CODE_KEY + randomStr, result, SecurityConstants.CODE_TIME, TimeUnit.SECONDS);
+ // 转换流信息写出
+ captcha.out(response.getOutputStream());
+ }
/**
* 行为 创建滑块图形验证码
*/
diff --git a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java
index c1bee2b8..7756812e 100644
--- a/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java
+++ b/pjcloud-common/pjcloud-common-core/src/main/java/com/bsd/pjcloud/common/core/constant/CacheConstants.java
@@ -20,6 +20,13 @@ public interface CacheConstants {
*/
String DEFAULT_CODE_KEY = "DEFAULT_CODE_KEY:";
+ String VISITOR_CODE_KEY = "visitor_code_key";
+
+
+ String SMS_CODE_KEY = "smsCode_";
+
+ String SMS_VISITOR_CODE_KEY = "sms_visitor_code:";
+
/**
* 菜单信息缓存
*/
@@ -147,6 +154,4 @@ public interface CacheConstants {
/* ************************************* end 第三方对接相关 end ************************************* */
- /** mfa */
- String SMS_CODE_KEY="sms_code:";
}
diff --git a/pjcloud-integrated/pjcloud-integrated-biz/pom.xml b/pjcloud-integrated/pjcloud-integrated-biz/pom.xml
index cff671b5..e45b58ff 100644
--- a/pjcloud-integrated/pjcloud-integrated-biz/pom.xml
+++ b/pjcloud-integrated/pjcloud-integrated-biz/pom.xml
@@ -13,6 +13,12 @@
pjcloud-integrated-biz
+
+
+ io.jsonwebtoken
+ jjwt
+ 0.9.1
+
com.bsd
diff --git a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorUserController.java b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorUserController.java
index 03651b43..249df72e 100644
--- a/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorUserController.java
+++ b/pjcloud-integrated/pjcloud-integrated-biz/src/main/java/com/bsd/pjcloud/integrated/controller/AppVisitorUserController.java
@@ -6,24 +6,33 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.bsd.pjcloud.common.core.constant.CacheConstants;
import com.bsd.pjcloud.common.core.util.R;
+import com.bsd.pjcloud.common.core.util.WebUtils;
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
import com.bsd.pjcloud.common.log.annotation.SysLog;
+import com.bsd.pjcloud.common.security.annotation.Inner;
import com.bsd.pjcloud.integrated.entity.VisitorUserEntity;
import com.bsd.pjcloud.integrated.service.VisitorUserService;
+import io.jsonwebtoken.Jwts;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.springdoc.core.annotations.ParameterObject;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.HttpHeaders;
import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.web.bind.annotation.*;
-import java.util.List;
-import java.util.Map;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.concurrent.TimeUnit;
/**
* 访客用户
@@ -39,74 +48,76 @@ import java.util.Map;
public class AppVisitorUserController {
private final VisitorUserService visitorUserService;
+ @Autowired
+ private RedisTemplate redisTemplate;
- /**
- * 分页查询
- * @param page 分页对象
- * @param visitorUser 访客用户
- * @return
- */
- @Operation(summary = "分页查询" , description = "分页查询" )
- @GetMapping("/page" )
- @PreAuthorize("@pms.hasPermission('integrated_visitorUser_view')" )
- public R getVisitorUserPage(@ParameterObject Page page, @ParameterObject VisitorUserEntity visitorUser) {
- LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
- wrapper.like(StrUtil.isNotBlank(visitorUser.getRealName()),VisitorUserEntity::getRealName,visitorUser.getRealName());
- wrapper.like(StrUtil.isNotBlank(visitorUser.getPhone()),VisitorUserEntity::getPhone,visitorUser.getPhone());
- return R.ok(visitorUserService.page(page, wrapper));
+
+ // 登录验证
+ @PostMapping("/login")
+ public R