浏览代码

fix 记录双重验证码刷新记录;后台展示查看双重验证码记录列表

zoujiajian 3 年之前
父节点
当前提交
4a420af243

+ 13 - 0
netflix-dao/src/main/java/com/cyksj/mapper/DoubleVerifyClickRefreshRecordMapper.java

@@ -0,0 +1,13 @@
+package com.cyksj.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.cyksj.model.entity.DoubleVerifyClickRefreshRecord;
+
+/*
+ *项目名: netflix
+ *文件名: DoubleVerifyClickRefreshRecordMapper
+ *创建者: JavaZou
+ *创建时间:2023/5/25 14:18
+ */
+public interface DoubleVerifyClickRefreshRecordMapper extends BaseMapper<DoubleVerifyClickRefreshRecord> {
+}

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/dto/DoubleVerifyDto.java

@@ -0,0 +1,18 @@
+package com.cyksj.model.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: DoubleVerifyDto
+ *创建者: JavaZou
+ *创建时间:2023/5/25 14:03
+ */
+@Getter
+@Setter
+public class DoubleVerifyDto {
+	private String apiSecret;
+
+	private Long clickId;
+}

+ 18 - 0
netflix-dao/src/main/java/com/cyksj/model/entity/DoubleVerifyClickRefreshRecord.java

@@ -0,0 +1,18 @@
+package com.cyksj.model.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/*
+ *项目名: netflix
+ *文件名: DoubleVerifyClickRefreshRecord
+ *创建者: JavaZou
+ *创建时间:2023/5/25 14:17
+ */
+@Getter
+@Setter
+public class DoubleVerifyClickRefreshRecord extends BaseEntity{
+	private Long userId;
+
+	private Long clickId;
+}

+ 48 - 0
netflix-dao/src/main/java/com/cyksj/model/views/AccountDoubleVerifyUserListView.java

@@ -0,0 +1,48 @@
+package com.cyksj.model.views;
+
+import com.ejlchina.searcher.bean.DbField;
+import com.ejlchina.searcher.bean.SearchBean;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/*
+ *项目名: netflix
+ *文件名: AccountDoubleVerifyUserListView
+ *创建者: JavaZou
+ *创建时间:2023/5/25 14:23
+ */
+@Getter
+@Setter
+@SearchBean(tables = "double_verify_click_record dr left join user u on u.id = dr.user_id" +
+		" left join goods_don_sku sku on sku.id = dr.sku_id" +
+		" left join goods_don g on g.id = sku.goods_id")
+public class AccountDoubleVerifyUserListView {
+	@DbField("dr.id")
+	private Long id;
+
+	@DbField("dr.account")
+	private String account;
+
+	@DbField("dr.account_id")
+	private Long accountId;
+
+	@DbField("g.id")
+	private Long goodsId;
+
+	@DbField("g.title")
+	private String title;
+
+	@DbField("dr.sku_id")
+	private Long skuId;
+
+	@DbField("sku.spec_val")
+	private String specVal;
+
+	@DbField("dr.user_id")
+	private Long userId;
+
+	@DbField("dr.created_time")
+	private Date createdTime;
+}

+ 38 - 11
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -11,10 +11,12 @@ import com.cyksj.common.constant.Constant;
 import com.cyksj.common.exception.BusinessRuntimeException;
 import com.cyksj.common.task.GlobalThreadPoolTaskExecutor;
 import com.cyksj.common.util.GoogleGenerator;
+import com.cyksj.common.util.Jsons;
 import com.cyksj.common.util.StringUtil;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
 import com.cyksj.mapper.*;
+import com.cyksj.model.dto.DoubleVerifyDto;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.request.OrderPayRequest;
@@ -68,6 +70,8 @@ public class GroupRelationController {
 
     private final SysConfigMapper sysConfigMapper;
 
+    private final DoubleVerifyClickRefreshRecordMapper refreshRecordMapper;
+
     private final GlobalThreadPoolTaskExecutor THREAD_POOL;
 
     @RequestMapping("/get/renewal")
@@ -214,8 +218,11 @@ public class GroupRelationController {
             doubleVerifyClickRecord.setSkuId(groupsRelationView.getSkuId());
             doubleVerifyRecordMapper.insert(doubleVerifyClickRecord);
 
-            redisService.set(String.format("%s-%s", userId, sb.toString()), 0, 60 * 60l);
-            redisService.set(String.format("%s/%s", userId, sb.toString()), groupsRelationView.getApiSecret(), 60 * 60l);
+            DoubleVerifyDto doubleVerifyDto = new DoubleVerifyDto();
+            doubleVerifyDto.setClickId(doubleVerifyClickRecord.getId());
+            doubleVerifyDto.setApiSecret(groupsRelationView.getApiSecret());
+            redisService.set(String.format("%s-%s", userId, sb.toString()), 0, 60 * 10l);
+            redisService.set(String.format("%s/%s", userId, sb.toString()), Jsons.toJson(doubleVerifyDto), 60 * 10l);
         } catch (Exception e) {
             throw BusinessRuntimeException.getInstance("获取双重验证码错误,请联系客服");
         }
@@ -238,19 +245,32 @@ public class GroupRelationController {
     @GetMapping("/refresh/code")
     public Result<String> refreshCode(String code) {
         long userId = StpUserUtil.getLoginIdAsLong();
-        String key = String.format("%s-%s", userId, code);
-        String apiSecretKey = String.format("%s/%s", userId, code);
-        Object value =  redisService.get(key);
-        if (value == null) {
+        String numKey = String.format("%s-%s", userId, code);
+        Object num = redisService.get(numKey);
+
+        String objKey = String.format("%s/%s", userId, code);
+        Object objValue =  redisService.get(objKey);
+        if (objValue == null || num == null) {
             throw BusinessRuntimeException.getInstance("请重新获取双重验证码");
         }
-        Integer refreshNum = Integer.parseInt(value.toString());
+        Integer refreshNum = Integer.parseInt(num.toString());
+        String apiSecret = null;
+        Long clickId = 0l;
+        try {
+            DoubleVerifyDto dto = Jsons.parseObject(objValue.toString(), DoubleVerifyDto.class);
+            apiSecret = dto.getApiSecret();
+            clickId = dto.getClickId();
+        } catch (Exception e) {
+            apiSecret = objValue.toString();
+        }
         if (refreshNum >= 3) {
-            redisService.del(key);
-            redisService.del(apiSecretKey);
+            redisService.del(numKey);
+            redisService.del(objKey);
             throw BusinessRuntimeException.getInstance("刷新次数已达到3次,请重新获取验证码");
         }
-        String apiSecret = redisService.getStr(apiSecretKey);
+        if (apiSecret == null) {
+            throw BusinessRuntimeException.getInstance("请重新获取双重验证码");
+        }
         StringBuilder sb = new StringBuilder();
         try {
             long c = GoogleGenerator.getCode(apiSecret, DateTime.now().getTime());
@@ -258,11 +278,18 @@ public class GroupRelationController {
             while (sb.length() < 6) {
                 sb.insert(0, 0);
             }
-            redisService.incr(key, 1l);
+            redisService.incr(numKey, 1l);
 
         } catch (Exception e) {
             throw BusinessRuntimeException.getInstance("刷新双重验证码错误,请联系客服");
         }
+        if (clickId != 0) {
+            //刷新双重验证码记录
+            DoubleVerifyClickRefreshRecord refreshRecord = new DoubleVerifyClickRefreshRecord();
+            refreshRecord.setClickId(clickId);
+            refreshRecord.setUserId(userId);
+            refreshRecordMapper.insert(refreshRecord);
+        }
         return GatewayResponse.SUCCESS.newBuilder().toResult(sb.toString());
     }
 

+ 19 - 4
netflix-web/src/main/java/com/cyksj/web/controller/manage/account/CmsAccountController.java

@@ -30,10 +30,7 @@ import com.cyksj.model.manage.views.AccountView;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.response.ExpiredAccountRep;
 import com.cyksj.model.response.OrderDonAccountRep;
-import com.cyksj.model.views.CustomerServiceUpdatePwdDetail;
-import com.cyksj.model.views.DoubleVerifyAccountView;
-import com.cyksj.model.views.GoodsDonSkuView;
-import com.cyksj.model.views.UserTicketClearedRecordView;
+import com.cyksj.model.views.*;
 import com.cyksj.service.mange.CmsAccountService;
 import com.cyksj.service.mange.CmsGroupService;
 import com.cyksj.service.mange.cms.CmsUserManager;
@@ -720,4 +717,22 @@ public class CmsAccountController {
 	public void exportDoubleVerifyAccountTemplate(HttpServletResponse response) {
 		EasyExcelUtils.createTemplateExcel(response, ExcelImportDoubleVerifyAccountData.class, "账号双重认证码导入模板", "账号双重认证码导入模板", ExcelTypeEnum.XLS, null);
 	}
+
+	/**
+	 * 查看账号双重认证验证码列表记录
+	 */
+	@GetMapping("/get/doubleVerify/viewList")
+	public Result<SearchResult<AccountDoubleVerifyUserListView>> getAccountDoubleVerifyUserListView() {
+		SearchResult<AccountDoubleVerifyUserListView> search = beanSearcher.search(AccountDoubleVerifyUserListView.class, MapUtils.flatBuilder(request.getParameterMap()).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
+
+	/**
+	 * 查看账号双重认证验证码列表刷新记录
+	 */
+	@GetMapping("/get/doubleVerify/clickRefresh/list")
+	public Result<List<DoubleVerifyClickRefreshRecord>> getDoubleVerifyClickRefreshRecord() {
+		List<DoubleVerifyClickRefreshRecord> search = beanSearcher.searchAll(DoubleVerifyClickRefreshRecord.class, MapUtils.flatBuilder(request.getParameterMap()).build());
+		return GatewayResponse.SUCCESS.newBuilder().toResult(search);
+	}
 }