diff --git a/continew-admin-common/pom.xml b/continew-admin-common/pom.xml
index 40bcbbbbd84622021a2c15207450a34faa0bc937..07ccca229f0c200fcb5247741f11aaa4e3bd5ecd 100644
--- a/continew-admin-common/pom.xml
+++ b/continew-admin-common/pom.xml
@@ -52,6 +52,12 @@
continew-starter-captcha-graphic
+
+
+ top.charles7c.continew
+ continew-starter-captcha-behavior
+
+
top.charles7c.continew
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/enums/MessageTemplateEnum.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/enums/MessageTemplateEnum.java
index 156bf02f87bd89e2fef5a749ed4f0d4594df3f95..d07a0add21fe58274e248479377300bbb69147c1 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/enums/MessageTemplateEnum.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/enums/MessageTemplateEnum.java
@@ -22,7 +22,7 @@ import lombok.RequiredArgsConstructor;
/**
* 消息模板枚举
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:51
*/
@Getter
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/MessageMapper.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/MessageMapper.java
index b0700bc13878cf7d1ce0440024cdd89dc1f10abf..93f8668d4d4d96b23d3d672078e5d3962d7eae17 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/MessageMapper.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/MessageMapper.java
@@ -29,7 +29,7 @@ import top.charles7c.continew.starter.data.mybatis.plus.base.BaseMapper;
/**
* 消息 Mapper
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
public interface MessageMapper extends BaseMapper {
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/MessageUserMapper.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/MessageUserMapper.java
index ee1b34c222347ddc936a278d80c5ad9bedbe5a21..c9ee3041884bc4895f79dc275cc8a462107e094a 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/MessageUserMapper.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/mapper/MessageUserMapper.java
@@ -24,7 +24,7 @@ import top.charles7c.continew.starter.data.mybatis.plus.base.BaseMapper;
/**
* 消息和用户 Mapper
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 20:25
*/
public interface MessageUserMapper extends BaseMapper {
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MessageDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MessageDO.java
index 5cac1853676e0e1575f573274b2b12f11d507d72..e2b55a5e34bec515e1c66f4fd8ba10f9f11114d4 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MessageDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MessageDO.java
@@ -32,7 +32,7 @@ import top.charles7c.continew.admin.common.enums.MessageTypeEnum;
/**
* 消息实体
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
@Data
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MessageUserDO.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MessageUserDO.java
index 1d51a1966a76bf72476804df3702020ebf644222..58b1ece5b9fd6b6a086de4644fbe1d3ee1b03af0 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MessageUserDO.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/entity/MessageUserDO.java
@@ -26,7 +26,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
/**
* 消息和用户关联实体
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 20:25
*/
@Data
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/query/MessageQuery.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/query/MessageQuery.java
index 1ddd2d2c9e5c9f0761d5a29518f76de3d2af8960..99857f710eec55246ed1930cce9195671e388664 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/query/MessageQuery.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/query/MessageQuery.java
@@ -28,7 +28,7 @@ import top.charles7c.continew.starter.data.mybatis.plus.query.QueryType;
/**
* 消息查询条件
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
@Data
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MessageReq.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MessageReq.java
index d44d5a996117b20068a76302dc0aa9aa3519824f..a1c90ce8dfae0acf359eb788f5bc2d21e5c5bce4 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MessageReq.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/req/MessageReq.java
@@ -33,7 +33,7 @@ import top.charles7c.continew.starter.extension.crud.base.BaseReq;
/**
* 创建消息信息
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
@Data
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/MessageResp.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/MessageResp.java
index b6f8c166a4e5e0722ee3cb67b8ae1f51fbed8116..5c02028f0a8f875199c1880568310521052de706 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/MessageResp.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/model/resp/MessageResp.java
@@ -31,7 +31,7 @@ import top.charles7c.continew.admin.common.enums.MessageTypeEnum;
/**
* 消息信息
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
@Data
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MessageService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MessageService.java
index 39904d3c833228c88d076d47fd2c1478df5b9a80..2ed355d9f2d27991473520ff4203355d9907f417 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MessageService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MessageService.java
@@ -27,7 +27,7 @@ import top.charles7c.continew.starter.extension.crud.model.resp.PageDataResp;
/**
* 消息业务接口
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
public interface MessageService {
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MessageUserService.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MessageUserService.java
index 06487b33fa0cc4dabb10c5100c973c3708d45675..493a29f2b64a79b36b4c2b2ba1eda4a016973a0a 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MessageUserService.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/MessageUserService.java
@@ -23,7 +23,7 @@ import top.charles7c.continew.admin.system.model.resp.MessageUnreadResp;
/**
* 消息和用户关联业务接口
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
public interface MessageUserService {
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageServiceImpl.java
index 1451479f0f1942615e161825eaba9e752814f3fb..13830e72d755e45a4ed50a47cfba68bd241f366f 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageServiceImpl.java
@@ -47,7 +47,7 @@ import top.charles7c.continew.starter.extension.crud.model.resp.PageDataResp;
/**
* 消息业务实现
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
@Service
diff --git a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageUserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageUserServiceImpl.java
index 847d39353f7f09f5611c3377dab6270bae5e7a0b..0b53ccd3668544ff9752f70d058ed6cb68db3faa 100644
--- a/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageUserServiceImpl.java
+++ b/continew-admin-system/src/main/java/top/charles7c/continew/admin/system/service/impl/MessageUserServiceImpl.java
@@ -38,7 +38,7 @@ import top.charles7c.continew.starter.core.util.validate.CheckUtils;
/**
* 消息和用户关联业务实现
*
- * @author BULL_BCLS
+ * @author Bull-BCLS
* @since 2023/10/15 19:05
*/
@Service
diff --git a/continew-admin-ui/src/api/common/captcha.ts b/continew-admin-ui/src/api/common/captcha.ts
index d8efb0f52a5522ed98cfd8f187d354055851b7b5..8e4267924592cfd84e21727eb58faf8024fa3c5c 100644
--- a/continew-admin-ui/src/api/common/captcha.ts
+++ b/continew-admin-ui/src/api/common/captcha.ts
@@ -1,11 +1,35 @@
import axios from 'axios';
+import qs from 'query-string';
-const BASE_URL = '/common/captcha';
+const BASE_URL = '/captcha';
export interface ImageCaptchaRes {
uuid: string;
img: string;
}
+
+export interface BehaviorCaptchaRes {
+ originalImageBase64: string;
+ point: {
+ x: number;
+ y: number;
+ };
+ jigsawImageBase64: string;
+ token: string;
+ secretKey: string;
+}
+
+export interface BehaviorCaptchaReq {
+ captchaType?: string;
+ captchaVerification?: string;
+ clientUid?: string;
+}
+
+export interface CheckBehaviorCaptchaRes {
+ repCode: string;
+ repMsg: string;
+}
+
export function getImageCaptcha() {
return axios.get(`${BASE_URL}/img`);
}
@@ -14,6 +38,26 @@ export function getMailCaptcha(email: string) {
return axios.get(`${BASE_URL}/mail?email=${email}`);
}
-export function getSmsCaptcha(phone: string) {
- return axios.get(`${BASE_URL}/sms?phone=${phone}`);
+export function getSmsCaptcha(
+ phone: string,
+ behaviorCaptcha: BehaviorCaptchaReq,
+) {
+ return axios.get(
+ `${BASE_URL}/sms?phone=${phone}&captchaVerification=${encodeURIComponent(
+ behaviorCaptcha.captchaVerification || '',
+ )}`,
+ );
+}
+
+export function getBehaviorCaptcha(params: any) {
+ return axios.get(`${BASE_URL}/behavior`, {
+ params,
+ paramsSerializer: (obj) => {
+ return qs.stringify(obj);
+ },
+ });
+}
+
+export function checkBehaviorCaptcha(params: any) {
+ return axios.post(`${BASE_URL}/behavior`, params);
}
diff --git a/continew-admin-ui/src/components/index.ts b/continew-admin-ui/src/components/index.ts
index 09d54c0a48fa2efb4c632200cf25e539da4bf07b..b10eaeb747026849cd273dfc2d690b6966ea4c86 100644
--- a/continew-admin-ui/src/components/index.ts
+++ b/continew-admin-ui/src/components/index.ts
@@ -17,6 +17,7 @@ import RightToolbar from './right-toolbar/index.vue';
import SvgIcon from './svg-icon/index.vue';
import IconSelect from './icon-select/index.vue';
import download from './crud';
+import Verify from './verifition/Verify.vue';
// Manually introduce ECharts modules to reduce packing size
@@ -46,5 +47,6 @@ export default {
Vue.component('RightToolbar', RightToolbar);
Vue.component('SvgIcon', SvgIcon);
Vue.component('IconSelect', IconSelect);
+ Vue.component('Verify', Verify);
},
};
diff --git a/continew-admin-ui/src/components/verifition/Verify.vue b/continew-admin-ui/src/components/verifition/Verify.vue
new file mode 100644
index 0000000000000000000000000000000000000000..9c9871b67e29874d58c90d94857fe30d41594e91
--- /dev/null
+++ b/continew-admin-ui/src/components/verifition/Verify.vue
@@ -0,0 +1,431 @@
+
+
+
+
+ 请完成安全验证
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/continew-admin-ui/src/components/verifition/Verify/VerifyPoints.vue b/continew-admin-ui/src/components/verifition/Verify/VerifyPoints.vue
new file mode 100644
index 0000000000000000000000000000000000000000..add38991aa6b2d255fe6a81af7e5d9ea9ffc67f7
--- /dev/null
+++ b/continew-admin-ui/src/components/verifition/Verify/VerifyPoints.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+
+
![]()
+
+
+ {{ index + 1 }}
+
+
+
+
+
+ {{ text }}
+
+
+
+
+
diff --git a/continew-admin-ui/src/components/verifition/Verify/VerifySlide.vue b/continew-admin-ui/src/components/verifition/Verify/VerifySlide.vue
new file mode 100644
index 0000000000000000000000000000000000000000..c648fbe1aeb3f06f8ef4bea8ab662ae9ec70d3e0
--- /dev/null
+++ b/continew-admin-ui/src/components/verifition/Verify/VerifySlide.vue
@@ -0,0 +1,462 @@
+
+
+
+
+
![]()
+
+
+ {{ tipWords }}
+
+
+
+
+
+
+
+
+
+
+
+
![]()
+
+
+
+
+
+
+
+
diff --git a/continew-admin-ui/src/components/verifition/utils/ase.js b/continew-admin-ui/src/components/verifition/utils/ase.js
new file mode 100644
index 0000000000000000000000000000000000000000..9ed83769381ec7de73392ed8e358c580bd14123a
--- /dev/null
+++ b/continew-admin-ui/src/components/verifition/utils/ase.js
@@ -0,0 +1,14 @@
+import CryptoJS from 'crypto-js';
+/**
+ * @word 要加密的内容
+ * @keyWord String 服务器随机返回的关键字
+ * */
+export function aesEncrypt(word, keyWord = 'XwKsGlMcdPMEhR1B') {
+ const key = CryptoJS.enc.Utf8.parse(keyWord);
+ const arcs = CryptoJS.enc.Utf8.parse(word);
+ const encrypted = CryptoJS.AES.encrypt(arcs, key, {
+ mode: CryptoJS.mode.ECB,
+ padding: CryptoJS.pad.Pkcs7,
+ });
+ return encrypted.toString();
+}
diff --git a/continew-admin-ui/src/components/verifition/utils/util.js b/continew-admin-ui/src/components/verifition/utils/util.js
new file mode 100644
index 0000000000000000000000000000000000000000..901e307ff0ff60fe45d97e77a8fd61da505805b8
--- /dev/null
+++ b/continew-admin-ui/src/components/verifition/utils/util.js
@@ -0,0 +1,39 @@
+export function resetSize(vm) {
+ let img_width;
+ let img_height;
+ let bar_width;
+ let bar_height; // 图片的宽度、高度,移动条的宽度、高度
+
+ const parentWidth = vm.$el.parentNode.offsetWidth || window.offsetWidth;
+ const parentHeight = vm.$el.parentNode.offsetHeight || window.offsetHeight;
+ if (vm.imgSize.width.indexOf('%') !== -1) {
+ img_width = `${(parseInt(vm.imgSize.width, 10) / 100) * parentWidth}px`;
+ } else {
+ img_width = vm.imgSize.width;
+ }
+
+ if (vm.imgSize.height.indexOf('%') !== -1) {
+ img_height = `${(parseInt(vm.imgSize.height, 10) / 100) * parentHeight}px`;
+ } else {
+ img_height = vm.imgSize.height;
+ }
+
+ if (vm.barSize.width.indexOf('%') !== -1) {
+ bar_width = `${(parseInt(vm.barSize.width, 10) / 100) * parentWidth}px`;
+ } else {
+ bar_width = vm.barSize.width;
+ }
+
+ if (vm.barSize.height.indexOf('%') !== -1) {
+ bar_height = `${(parseInt(vm.barSize.height, 10) / 100) * parentHeight}px`;
+ } else {
+ bar_height = vm.barSize.height;
+ }
+
+ return {
+ imgWidth: img_width,
+ imgHeight: img_height,
+ barWidth: bar_width,
+ barHeight: bar_height,
+ };
+}
diff --git a/continew-admin-ui/src/views/login/components/phone-login.vue b/continew-admin-ui/src/views/login/components/phone-login.vue
index 71b634a7453d2dbad9c684033639cddaf88d3180..621225d61e1353d01eb62f33c9df491b642ee306 100644
--- a/continew-admin-ui/src/views/login/components/phone-login.vue
+++ b/continew-admin-ui/src/views/login/components/phone-login.vue
@@ -29,7 +29,7 @@
class="captcha-btn"
:loading="captchaLoading"
:disabled="captchaDisable"
- @click="handleSendCaptcha"
+ @click="handleOpenBehaviorCaptcha"
>
{{ captchaBtnName }}
@@ -43,6 +43,13 @@
>{{ $t('login.button') }}(演示不开放)
+