| package com.dy.pipIrrApp.util; | 
|   | 
| import java.security.SecureRandom; | 
| import java.util.HashMap; | 
| import java.util.Map; | 
| import java.util.Random; | 
|   | 
| /** | 
|  * @author ZhuBaoMin | 
|  * @date 2024-09-11 15:48 | 
|  * @LastEditTime 2024-09-11 15:48 | 
|  * @Description | 
|  */ | 
|   | 
| public class CaptchaUtil { | 
|     /** | 
|      * 生成数学文本算式,例如1+1=? | 
|      * @param a 数字 | 
|      * @param b 数字 | 
|      * @return  字符 | 
|      */ | 
|     public static Map<String, String> mathTextCreator(int a, int b) { | 
|         Random random = new SecureRandom(); | 
|         // 生成随机操作,操作范围:[0,4),分别表示: +  -  *  / | 
|         int op = random.nextInt(4); | 
|         // 定义计算的结果 | 
|         Integer result = 0; | 
|         // 定义构建的算式字符串 | 
|         StringBuilder resultString = new StringBuilder(); | 
|         // 运算符:- | 
|         if (1 == op) { | 
|             if (a >= b) { | 
|                 result = a - b; | 
|                 resultString.append(a).append("-").append(b).append("=?@").append(result); | 
|             } else { | 
|                 result = b - a; | 
|                 resultString.append(b).append("-").append(a).append("=?@").append(result); | 
|             } | 
|         } | 
|         // 运算符:* | 
|         else if (2 == op) { | 
|             result = a * b; | 
|             resultString.append(a).append("*").append(b).append("=?@").append(result); | 
|         } | 
|         // 运算符:/ | 
|         else if (3 == op) { | 
|             if (a != 0 && b % a == 0) { | 
|                 result = b / a; | 
|                 resultString.append(b).append("/").append(a).append("=?@").append(result); | 
|             } else if (b != 0 && a % b == 0) { | 
|                 result = a / b; | 
|                 resultString.append(a).append("/").append(b).append("=?@").append(result); | 
|             } else { | 
|                 return mathTextCreator(a, b); | 
|             } | 
|         } | 
|         // 运算符:+ | 
|         else { | 
|             result = b + a; | 
|             resultString.append(a).append("+").append(b).append("=?@").append(result); | 
|         } | 
|         Map<String, String> ret = new HashMap<String, String>(); | 
|         ret.put("resultCode", result.toString()); | 
|         ret.put("resultString", resultString.toString()); | 
|         return ret; | 
|     } | 
| } |