登录模块(手机验证码)

article/2025/10/13 2:13:54

本人为实习生,第一次写博客,写的不好的大家多多谅解

应公司近期需求,需要单独开发一个后台管理系统。

自己按实际业务写了一个登录接口已经实现,时序图如下



源码牵扯业务量太大,这里只放出部分关键实现源码,整合思路可以配合时序图去理解。

Controller层

package com.royalnu.business.login.franchisee.gateway.web;import java.sql.Timestamp;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.poi.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;import com.alibaba.druid.util.StringUtils;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.royalnu.common.exception.CommonException;
import com.royalnu.common.security.MD5Utils;
import com.royalnu.common.utils.json.GsonUtil;
import com.royalnu.common.validate.json.JsonSchemaValidator;
import com.royalnu.core.component.cache.redis.service.StringRedisCache;
import com.royalnu.core.module.com.BaseController;
import com.royalnu.business.login.franchisee.api.model.Franchisee;
import com.royalnu.business.login.franchisee.api.service.FranchiseeService;
import com.royalnu.business.login.franchiseeDetailed.api.model.FranchiseeDetailed;
import com.royalnu.business.login.franchiseeDetailed.api.service.FranchiseeDetailedService;
import com.royalnu.business.login.message.api.model.Message;
import com.royalnu.business.login.message.api.service.MessageService;
import com.royalnu.util.FilePath;
import com.royalnu.util.FranchiseeMethodUtils;
import com.royalnu.util.FranchiseeParamUtils;
import com.royalnu.util.InitializationUtil;
import com.royalnu.util.IpUtil;
import com.royalnu.util.RedisKeyPrefixUtil;
import com.royalnu.util.SingleSendSms;
import com.royalnu.util.VerifyCode;import lombok.extern.log4j.Log4j2;@Log4j2
@SuppressWarnings("unused")
@RestController
@RequestMapping(value = "/franchisee/login")
public class FranchiseeController extends BaseController<Franchisee> {@Autowiredprivate FilePath filePath;@Resourceprivate FranchiseeService franchiseeService;@Resourceprivate FranchiseeDetailedService franchiseeDetailedService;@Resourceprivate MessageService messageService;@Resourceprivate StringRedisCache stringRedisCache;@Autowiredprivate HttpSession session;private IpUtil ipUtil = new IpUtil();// 加盟商登录入口 附手机验证码@RequestMapping(value = "/dologin", method = RequestMethod.POST)public String dologin(Franchisee franchisee, HttpServletRequest request,HttpServletResponse response) throws CommonException {Map<String, Object> data = new HashMap<String, Object>();Map<String, Object> params = new HashMap<>();// 验证请求手机号String codeTelephone = request.getParameter("codeTelephone");// 验证码String codeNum = request.getParameter("codeNum");// 获取ip地址String UserIp = ipUtil.getIpAddr(request);// 获取系统当前时间Timestamp currentTime = new Timestamp(System.currentTimeMillis());// 模拟前端加密传参/*String idip = "ww-" + franchisee.getTelephone() + "{xykj}" + UserIp + "+lsw";*/String  idipPassword = request.getParameter("idipPassword");// 后台解密获取正确参数if(idipPassword==null||idipPassword.equals("")) {data.put("code", 2);data.put("msg", "访问源IP地址非法,请确认");return GsonUtil.GSON.toJson(data);}String idipPassword1 = idipPassword.substring(3, idipPassword.length() - 4).replace("{xykj}", "");Message message1 = messageServi

http://chatgpt.dhexx.cn/article/PhtSn1j7.shtml

相关文章

java十大排序算法

十大排序算法在面试java过程中想必或多或少都会有。尤其是在笔试题上&#xff0c;有些大厂就让你现场写个十大排序。是不是一下子整懵了。。。 目录 一、首先先介绍下十大排序算法&#xff1a; 1、算法分类 2 、算法复杂度 3、 相关概念 二、详细分析各个算法 1、冒泡排…

Go语言十大排序算法

文章目录 Go语言十大排序算法0x01 冒泡排序0x02 选择排序0x03 插入排序0x04 希尔排序0x05 归并排序0x06 快速排序0x07 堆排序0x08 计数排序0x09 桶排序0x10 基数排序总结按时间复杂度分类&#xff1a;按稳定性分类按排序方式 Go语言十大排序算法 稳定&#xff1a;如果a原本在b前…

排序算法——十大排序算法总结与对比

一、十大排序算法复杂度对比 二、关于排序算法的总结 1、基数排序仅仅适用于整型数的排序&#xff0c;一般不与另外的排序方法一起比较。 2、关于算法的稳定性&#xff1a;不稳定的算法有 “快希选堆”——快速排序&#xff0c;希尔排序&#xff0c;选择排序和堆排序。 3、关…

十大排序算法(面试必备)

目录 简单排序 1、冒泡排序 2、选择排序 3、插入排序 高级排序 4、希尔排序&#xff08;缩小增量排序&#xff09; 5、归并排序 6、快速排序 7、计数排序 8、堆排序 9、桶排序 10、基数排序 总结&#xff1a; 1、十大排序算法对比 2、基数排序、计数排序、桶排序…

十大排序算法学习

Sort 排序类算法是非常常见的算法&#xff0c;包括了比较类排序与非比较类排序 排序能够解决很多问题&#xff0c;有的编程语言也提供了一些排序算法函数&#xff08;比如C的sort&#xff09;但是掌握基本的排序算法原理以及写法仍然是很重要的&#xff0c;并且排序也是面试常…

十大排序算法(Java)

目录 1.冒泡排序 2.快速排序 3.插入排序 4.希尔排序 5.选择排序 6.堆排序 7.归并排序 8.计数排序&#xff1a;速度快&#xff0c;一般用于整数排序 9.桶排序 10.基数排序 1.冒泡排序 冒泡排序思路&#xff1a;&#xff08;两层for循环&#xff09; 比较相邻的元素。…

十大排序算法(C++)

十大排序算法Sorting algorithm(C) 百度百科&#xff1a; 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的排列起来的操作。排序算法&#xff0c;就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地…

十大排序算法——C语言实现

1.冒泡排序 ​ 冒泡排序&#xff08;Bubble Sort&#xff09;也是一种简单直观的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换&#xff0c;也就是说该数…

Python实现十大排序算法

1.排序算法概述 非线性时间比较类排序&#xff1a;通过比较来决定元素间的相对次序&#xff0c;由于其时间复杂度不能突破O(nlogn)&#xff0c;因此称为非线性时间比较类排序。 线性时间非比较类排序&#xff1a;不通过比较来决定元素间的相对次序&#xff0c;它可以突破基于比…

Java实现十大排序算法

Java实现十大排序算法 十大排序算法分别为&#xff1a;选择排序、冒泡排序、插入排序、快速排序、归并排序、堆排序、希尔排序、桶排序、计数排序、基数排序。 本篇只是为了方便我在代码中直接复制调用&#xff0c;因此原理和思想解释的并不清楚&#xff0c;想看原理的朋友可…

十大排序算法(C++版)

十大排序算法 前言一、插入排序二、希尔排序三、冒泡排序四、快速排序五、选择排序六、归并排序七、堆排序八、计数排序九、桶排序十、基数排序总结 前言 什么是排序&#xff1f; 排序&#xff1a;将一组杂乱无章的数据按一定规律顺次排列起来。即&#xff0c;将无序序列排成一…

十大排序算法详解

十大排序算法详解 参考程序员必知必会的十大排序算法详解 引言 对于排序的分类&#xff0c;可以将排序算法分为两大类&#xff1a;基于比较和非比较的算法。 基于比较的排序算法可以细分为&#xff1a; 基于交换类&#xff1a;冒泡排序、快速排序基于插入类&#xff1a;直接插入…

JS 实现十大排序算法

文章目录 前言零、十大排序一、冒泡排序&#xff08;bubbleSort&#xff09;二、选择排序&#xff08;selectionSort&#xff09;三、插入排序&#xff08;insertSort&#xff09;四、希尔排序&#xff08;shellSort&#xff09;五、归并排序&#xff08;mergeSort&#xff09;…

十大经典排序算法Java版(动图演示)

文章目录 0 排序算法说明0.1 内部排序和外部排序0.2 比较类排序和非比较类排序0.3 关于时间复杂度0.4 关于稳定性0.5 名词解释&#xff1a; 1 交换排序——冒泡排序&#xff08;Bubble Sort&#xff09;1.1 什么时候最快1.2 什么时候最慢1.3 算法步骤1.4 动图演示1.5 Java实现 …

html之如何让button按钮居中

解决措施&#xff1a;使用center或者div的align属性 示例代码&#xff1a; <html> <body><center><button onClick"clickme()">hit me</button></center><script>function clickme(){alert("123");} </scr…

HTML中让表单和提交按钮居中的方法

表单&#xff1a; form{ width: 500px; /*设置宽度&#xff0c;方便使其居中*/ margin: 40px auto auto auto; /*上右下左*/ font-size: 25px; 提交按钮&#xff1a;div的align属性 <div align"center"><button onClick"clickme()">提交…

android中的Button按钮居中(水平垂直中)

今天发现一个很怪异的事 Android Studio中居然一个简单的按钮水品垂直居中都写不出来 下图为理想效果&#xff1a; 可是当我写原始出代码的时候&#xff08;如下&#xff09;&#xff1a; <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android&quo…

Vue组件居中:文字居中,按钮居中,图片居中等,如何实现在容器中居中

Vue实现组件在容器中居中显示的办法 本文用实验的方法理解各种方法实现居中的效果。 实现水平居中的样式主要有&#xff1a;text-align: center&#xff0c; margin: auto。 当然还有别的方式也可以实现&#xff0c;也会写在下面。 用三个同样的div来控制变量法看效果&#xf…

Contact form 7 提交按钮居中,怎么设置submit button居中显示

Contact form 7 提交按钮居中&#xff0c;怎么设置submit button居中显示 前言 最近公司在做网站&#xff0c;毫无疑问用的是wordpress程序&#xff0c;然后就用到了contact form 7这个插件。单是这个插件的按钮始终无法居中显示&#xff0c;查了很多教程有的让改主题&#x…

tkinter 让按钮居中显示

def ask(self, title, text, btn_comfirm_name"确定", btn_cancel_name"取消", wraplength400):self.master.title(title)tk.Label(self.middle, texttext, bg"#ffffff", wraplengthwraplength,justify"left").pack(pady15)self.botto…