Merge branch 'develop' of gitee.com:darlk/ShengTangManage
This commit is contained in:
		| @@ -3,12 +3,10 @@ package com.stdiet.web.controller.custom; | |||||||
| import com.stdiet.common.core.controller.BaseController; | import com.stdiet.common.core.controller.BaseController; | ||||||
| import com.stdiet.common.core.domain.AjaxResult; | import com.stdiet.common.core.domain.AjaxResult; | ||||||
| import com.stdiet.common.utils.DateUtils; | import com.stdiet.common.utils.DateUtils; | ||||||
|  | import com.stdiet.common.utils.StringUtils; | ||||||
| import com.stdiet.custom.domain.SysOrderPause; | import com.stdiet.custom.domain.SysOrderPause; | ||||||
| import com.stdiet.custom.domain.SysWxAdLog; | import com.stdiet.custom.domain.SysWxAdLog; | ||||||
| import com.stdiet.custom.service.ISysOrderPauseService; | import com.stdiet.custom.service.*; | ||||||
| import com.stdiet.custom.service.ISysRecipesService; |  | ||||||
| import com.stdiet.custom.service.ISysWapServices; |  | ||||||
| import com.stdiet.custom.service.ISysWxSaleAccountService; |  | ||||||
| import com.stdiet.custom.utils.HttpRequestUtils; | import com.stdiet.custom.utils.HttpRequestUtils; | ||||||
| import com.stdiet.system.service.ISysDictTypeService; | import com.stdiet.system.service.ISysDictTypeService; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| @@ -37,6 +35,9 @@ public class SysWapController extends BaseController { | |||||||
|     @Autowired |     @Autowired | ||||||
|     ISysWxSaleAccountService iSysWxSaleAccountService; |     ISysWxSaleAccountService iSysWxSaleAccountService; | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     ISysSmsConfirmServie iSysSmsConfirmServie; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 客户食谱详情 |      * 客户食谱详情 | ||||||
|      * |      * | ||||||
| @@ -139,4 +140,39 @@ public class SysWapController extends BaseController { | |||||||
|         return toAjax(iSysWxSaleAccountService.logWxAd(sysWxAdLog)); |         return toAjax(iSysWxSaleAccountService.logWxAd(sysWxAdLog)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @GetMapping(value = "/getCode") | ||||||
|  |     public AjaxResult getCode(@RequestParam String phone) { | ||||||
|  |  | ||||||
|  |         if (!StringUtils.isMobileNO(phone)) { | ||||||
|  |             return AjaxResult.error(50001, "非法手机号"); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         int code = iSysSmsConfirmServie.sendSmsCode(phone); | ||||||
|  |         if (code == 1) { | ||||||
|  |             return AjaxResult.error(50001, "非法手机号"); | ||||||
|  |         } else if (code == 0) { | ||||||
|  |             return AjaxResult.success(); | ||||||
|  |         } else { | ||||||
|  |             return AjaxResult.error(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @GetMapping(value = "/checkCode") | ||||||
|  |     public AjaxResult checkCode(@RequestParam String phone, @RequestParam String code) { | ||||||
|  |         if (StringUtils.isEmpty(code)) { | ||||||
|  |             return AjaxResult.error(50002, "验证码不能为空"); | ||||||
|  |         } | ||||||
|  |         int checkCode = iSysSmsConfirmServie.checkSmsCode(phone, code); | ||||||
|  |         if (checkCode == 0) { | ||||||
|  |             return AjaxResult.success(); | ||||||
|  |         } else if (checkCode == 1) { | ||||||
|  |             return AjaxResult.error(50003, "验证码失效"); | ||||||
|  |         } else if (checkCode == 2) { | ||||||
|  |             return AjaxResult.error(50004, "验证码错误"); | ||||||
|  |         } else { | ||||||
|  |             return AjaxResult.error(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -1,24 +1,25 @@ | |||||||
| package com.stdiet.common.utils; | package com.stdiet.common.utils; | ||||||
|  |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.Collection; |  | ||||||
| import java.util.HashSet; |  | ||||||
| import java.util.List; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.Set; |  | ||||||
| import com.stdiet.common.core.text.StrFormatter; | import com.stdiet.common.core.text.StrFormatter; | ||||||
|  |  | ||||||
|  | import java.util.*; | ||||||
|  | import java.util.regex.Matcher; | ||||||
|  | import java.util.regex.Pattern; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 字符串工具类 |  * 字符串工具类 | ||||||
|  * |  * | ||||||
|  * @author ruoyi |  * @author ruoyi | ||||||
|  */ |  */ | ||||||
| public class StringUtils extends org.apache.commons.lang3.StringUtils | public class StringUtils extends org.apache.commons.lang3.StringUtils { | ||||||
| { |     /** | ||||||
|     /** 空字符串 */ |      * 空字符串 | ||||||
|  |      */ | ||||||
|     private static final String NULLSTR = ""; |     private static final String NULLSTR = ""; | ||||||
|  |  | ||||||
|     /** 下划线 */ |     /** | ||||||
|  |      * 下划线 | ||||||
|  |      */ | ||||||
|     private static final char SEPARATOR = '_'; |     private static final char SEPARATOR = '_'; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -27,8 +28,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param value defaultValue 要判断的value |      * @param value defaultValue 要判断的value | ||||||
|      * @return value 返回值 |      * @return value 返回值 | ||||||
|      */ |      */ | ||||||
|     public static <T> T nvl(T value, T defaultValue) |     public static <T> T nvl(T value, T defaultValue) { | ||||||
|     { |  | ||||||
|         return value != null ? value : defaultValue; |         return value != null ? value : defaultValue; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -38,8 +38,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param coll 要判断的Collection |      * @param coll 要判断的Collection | ||||||
|      * @return true:为空 false:非空 |      * @return true:为空 false:非空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isEmpty(Collection<?> coll) |     public static boolean isEmpty(Collection<?> coll) { | ||||||
|     { |  | ||||||
|         return isNull(coll) || coll.isEmpty(); |         return isNull(coll) || coll.isEmpty(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -49,8 +48,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param coll 要判断的Collection |      * @param coll 要判断的Collection | ||||||
|      * @return true:非空 false:空 |      * @return true:非空 false:空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isNotEmpty(Collection<?> coll) |     public static boolean isNotEmpty(Collection<?> coll) { | ||||||
|     { |  | ||||||
|         return !isEmpty(coll); |         return !isEmpty(coll); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -58,10 +56,9 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * * 判断一个对象数组是否为空 |      * * 判断一个对象数组是否为空 | ||||||
|      * |      * | ||||||
|      * @param objects 要判断的对象数组 |      * @param objects 要判断的对象数组 | ||||||
|      ** @return true:为空 false:非空 |      *                * @return true:为空 false:非空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isEmpty(Object[] objects) |     public static boolean isEmpty(Object[] objects) { | ||||||
|     { |  | ||||||
|         return isNull(objects) || (objects.length == 0); |         return isNull(objects) || (objects.length == 0); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -71,8 +68,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param objects 要判断的对象数组 |      * @param objects 要判断的对象数组 | ||||||
|      * @return true:非空 false:空 |      * @return true:非空 false:空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isNotEmpty(Object[] objects) |     public static boolean isNotEmpty(Object[] objects) { | ||||||
|     { |  | ||||||
|         return !isEmpty(objects); |         return !isEmpty(objects); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -82,8 +78,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param map 要判断的Map |      * @param map 要判断的Map | ||||||
|      * @return true:为空 false:非空 |      * @return true:为空 false:非空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isEmpty(Map<?, ?> map) |     public static boolean isEmpty(Map<?, ?> map) { | ||||||
|     { |  | ||||||
|         return isNull(map) || map.isEmpty(); |         return isNull(map) || map.isEmpty(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -93,8 +88,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param map 要判断的Map |      * @param map 要判断的Map | ||||||
|      * @return true:非空 false:空 |      * @return true:非空 false:空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isNotEmpty(Map<?, ?> map) |     public static boolean isNotEmpty(Map<?, ?> map) { | ||||||
|     { |  | ||||||
|         return !isEmpty(map); |         return !isEmpty(map); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -104,8 +98,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param str String |      * @param str String | ||||||
|      * @return true:为空 false:非空 |      * @return true:为空 false:非空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isEmpty(String str) |     public static boolean isEmpty(String str) { | ||||||
|     { |  | ||||||
|         return isNull(str) || NULLSTR.equals(str.trim()); |         return isNull(str) || NULLSTR.equals(str.trim()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -115,8 +108,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param str String |      * @param str String | ||||||
|      * @return true:非空串 false:空串 |      * @return true:非空串 false:空串 | ||||||
|      */ |      */ | ||||||
|     public static boolean isNotEmpty(String str) |     public static boolean isNotEmpty(String str) { | ||||||
|     { |  | ||||||
|         return !isEmpty(str); |         return !isEmpty(str); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -126,8 +118,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param object Object |      * @param object Object | ||||||
|      * @return true:为空 false:非空 |      * @return true:为空 false:非空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isNull(Object object) |     public static boolean isNull(Object object) { | ||||||
|     { |  | ||||||
|         return object == null; |         return object == null; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -137,8 +128,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param object Object |      * @param object Object | ||||||
|      * @return true:非空 false:空 |      * @return true:非空 false:空 | ||||||
|      */ |      */ | ||||||
|     public static boolean isNotNull(Object object) |     public static boolean isNotNull(Object object) { | ||||||
|     { |  | ||||||
|         return !isNull(object); |         return !isNull(object); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -148,16 +138,14 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param object 对象 |      * @param object 对象 | ||||||
|      * @return true:是数组 false:不是数组 |      * @return true:是数组 false:不是数组 | ||||||
|      */ |      */ | ||||||
|     public static boolean isArray(Object object) |     public static boolean isArray(Object object) { | ||||||
|     { |  | ||||||
|         return isNotNull(object) && object.getClass().isArray(); |         return isNotNull(object) && object.getClass().isArray(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 去空格 |      * 去空格 | ||||||
|      */ |      */ | ||||||
|     public static String trim(String str) |     public static String trim(String str) { | ||||||
|     { |  | ||||||
|         return (str == null ? "" : str.trim()); |         return (str == null ? "" : str.trim()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -168,24 +156,19 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param start 开始 |      * @param start 开始 | ||||||
|      * @return 结果 |      * @return 结果 | ||||||
|      */ |      */ | ||||||
|     public static String substring(final String str, int start) |     public static String substring(final String str, int start) { | ||||||
|     { |         if (str == null) { | ||||||
|         if (str == null) |  | ||||||
|         { |  | ||||||
|             return NULLSTR; |             return NULLSTR; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (start < 0) |         if (start < 0) { | ||||||
|         { |  | ||||||
|             start = str.length() + start; |             start = str.length() + start; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (start < 0) |         if (start < 0) { | ||||||
|         { |  | ||||||
|             start = 0; |             start = 0; | ||||||
|         } |         } | ||||||
|         if (start > str.length()) |         if (start > str.length()) { | ||||||
|         { |  | ||||||
|             return NULLSTR; |             return NULLSTR; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -200,38 +183,30 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param end   结束 |      * @param end   结束 | ||||||
|      * @return 结果 |      * @return 结果 | ||||||
|      */ |      */ | ||||||
|     public static String substring(final String str, int start, int end) |     public static String substring(final String str, int start, int end) { | ||||||
|     { |         if (str == null) { | ||||||
|         if (str == null) |  | ||||||
|         { |  | ||||||
|             return NULLSTR; |             return NULLSTR; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (end < 0) |         if (end < 0) { | ||||||
|         { |  | ||||||
|             end = str.length() + end; |             end = str.length() + end; | ||||||
|         } |         } | ||||||
|         if (start < 0) |         if (start < 0) { | ||||||
|         { |  | ||||||
|             start = str.length() + start; |             start = str.length() + start; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (end > str.length()) |         if (end > str.length()) { | ||||||
|         { |  | ||||||
|             end = str.length(); |             end = str.length(); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (start > end) |         if (start > end) { | ||||||
|         { |  | ||||||
|             return NULLSTR; |             return NULLSTR; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (start < 0) |         if (start < 0) { | ||||||
|         { |  | ||||||
|             start = 0; |             start = 0; | ||||||
|         } |         } | ||||||
|         if (end < 0) |         if (end < 0) { | ||||||
|         { |  | ||||||
|             end = 0; |             end = 0; | ||||||
|         } |         } | ||||||
|  |  | ||||||
| @@ -251,10 +226,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param params   参数值 |      * @param params   参数值 | ||||||
|      * @return 格式化后的文本 |      * @return 格式化后的文本 | ||||||
|      */ |      */ | ||||||
|     public static String format(String template, Object... params) |     public static String format(String template, Object... params) { | ||||||
|     { |         if (isEmpty(params) || isEmpty(template)) { | ||||||
|         if (isEmpty(params) || isEmpty(template)) |  | ||||||
|         { |  | ||||||
|             return template; |             return template; | ||||||
|         } |         } | ||||||
|         return StrFormatter.format(template, params); |         return StrFormatter.format(template, params); | ||||||
| @@ -267,8 +240,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param sep 分隔符 |      * @param sep 分隔符 | ||||||
|      * @return set集合 |      * @return set集合 | ||||||
|      */ |      */ | ||||||
|     public static final Set<String> str2Set(String str, String sep) |     public static final Set<String> str2Set(String str, String sep) { | ||||||
|     { |  | ||||||
|         return new HashSet<String>(str2List(str, sep, true, false)); |         return new HashSet<String>(str2List(str, sep, true, false)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -281,28 +253,22 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param trim        去掉首尾空白 |      * @param trim        去掉首尾空白 | ||||||
|      * @return list集合 |      * @return list集合 | ||||||
|      */ |      */ | ||||||
|     public static final List<String> str2List(String str, String sep, boolean filterBlank, boolean trim) |     public static final List<String> str2List(String str, String sep, boolean filterBlank, boolean trim) { | ||||||
|     { |  | ||||||
|         List<String> list = new ArrayList<String>(); |         List<String> list = new ArrayList<String>(); | ||||||
|         if (StringUtils.isEmpty(str)) |         if (StringUtils.isEmpty(str)) { | ||||||
|         { |  | ||||||
|             return list; |             return list; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         // 过滤空白字符串 |         // 过滤空白字符串 | ||||||
|         if (filterBlank && StringUtils.isBlank(str)) |         if (filterBlank && StringUtils.isBlank(str)) { | ||||||
|         { |  | ||||||
|             return list; |             return list; | ||||||
|         } |         } | ||||||
|         String[] split = str.split(sep); |         String[] split = str.split(sep); | ||||||
|         for (String string : split) |         for (String string : split) { | ||||||
|         { |             if (filterBlank && StringUtils.isBlank(string)) { | ||||||
|             if (filterBlank && StringUtils.isBlank(string)) |  | ||||||
|             { |  | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
|             if (trim) |             if (trim) { | ||||||
|             { |  | ||||||
|                 string = string.trim(); |                 string = string.trim(); | ||||||
|             } |             } | ||||||
|             list.add(string); |             list.add(string); | ||||||
| @@ -314,10 +280,8 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|     /** |     /** | ||||||
|      * 下划线转驼峰命名 |      * 下划线转驼峰命名 | ||||||
|      */ |      */ | ||||||
|     public static String toUnderScoreCase(String str) |     public static String toUnderScoreCase(String str) { | ||||||
|     { |         if (str == null) { | ||||||
|         if (str == null) |  | ||||||
|         { |  | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
|         StringBuilder sb = new StringBuilder(); |         StringBuilder sb = new StringBuilder(); | ||||||
| @@ -327,31 +291,23 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|         boolean curreCharIsUpperCase = true; |         boolean curreCharIsUpperCase = true; | ||||||
|         // 下一字符是否大写 |         // 下一字符是否大写 | ||||||
|         boolean nexteCharIsUpperCase = true; |         boolean nexteCharIsUpperCase = true; | ||||||
|         for (int i = 0; i < str.length(); i++) |         for (int i = 0; i < str.length(); i++) { | ||||||
|         { |  | ||||||
|             char c = str.charAt(i); |             char c = str.charAt(i); | ||||||
|             if (i > 0) |             if (i > 0) { | ||||||
|             { |  | ||||||
|                 preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); |                 preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1)); | ||||||
|             } |             } else { | ||||||
|             else |  | ||||||
|             { |  | ||||||
|                 preCharIsUpperCase = false; |                 preCharIsUpperCase = false; | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             curreCharIsUpperCase = Character.isUpperCase(c); |             curreCharIsUpperCase = Character.isUpperCase(c); | ||||||
|  |  | ||||||
|             if (i < (str.length() - 1)) |             if (i < (str.length() - 1)) { | ||||||
|             { |  | ||||||
|                 nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); |                 nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1)); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) |             if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) { | ||||||
|             { |  | ||||||
|                 sb.append(SEPARATOR); |                 sb.append(SEPARATOR); | ||||||
|             } |             } else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) { | ||||||
|             else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase) |  | ||||||
|             { |  | ||||||
|                 sb.append(SEPARATOR); |                 sb.append(SEPARATOR); | ||||||
|             } |             } | ||||||
|             sb.append(Character.toLowerCase(c)); |             sb.append(Character.toLowerCase(c)); | ||||||
| @@ -367,14 +323,10 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param strs 字符串组 |      * @param strs 字符串组 | ||||||
|      * @return 包含返回true |      * @return 包含返回true | ||||||
|      */ |      */ | ||||||
|     public static boolean inStringIgnoreCase(String str, String... strs) |     public static boolean inStringIgnoreCase(String str, String... strs) { | ||||||
|     { |         if (str != null && strs != null) { | ||||||
|         if (str != null && strs != null) |             for (String s : strs) { | ||||||
|         { |                 if (str.equalsIgnoreCase(trim(s))) { | ||||||
|             for (String s : strs) |  | ||||||
|             { |  | ||||||
|                 if (str.equalsIgnoreCase(trim(s))) |  | ||||||
|                 { |  | ||||||
|                     return true; |                     return true; | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
| @@ -388,27 +340,21 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|      * @param name 转换前的下划线大写方式命名的字符串 |      * @param name 转换前的下划线大写方式命名的字符串 | ||||||
|      * @return 转换后的驼峰式命名的字符串 |      * @return 转换后的驼峰式命名的字符串 | ||||||
|      */ |      */ | ||||||
|     public static String convertToCamelCase(String name) |     public static String convertToCamelCase(String name) { | ||||||
|     { |  | ||||||
|         StringBuilder result = new StringBuilder(); |         StringBuilder result = new StringBuilder(); | ||||||
|         // 快速检查 |         // 快速检查 | ||||||
|         if (name == null || name.isEmpty()) |         if (name == null || name.isEmpty()) { | ||||||
|         { |  | ||||||
|             // 没必要转换 |             // 没必要转换 | ||||||
|             return ""; |             return ""; | ||||||
|         } |         } else if (!name.contains("_")) { | ||||||
|         else if (!name.contains("_")) |  | ||||||
|         { |  | ||||||
|             // 不含下划线,仅将首字母大写 |             // 不含下划线,仅将首字母大写 | ||||||
|             return name.substring(0, 1).toUpperCase() + name.substring(1); |             return name.substring(0, 1).toUpperCase() + name.substring(1); | ||||||
|         } |         } | ||||||
|         // 用下划线将原始字符串分割 |         // 用下划线将原始字符串分割 | ||||||
|         String[] camels = name.split("_"); |         String[] camels = name.split("_"); | ||||||
|         for (String camel : camels) |         for (String camel : camels) { | ||||||
|         { |  | ||||||
|             // 跳过原始字符串中开头、结尾的下换线或双重下划线 |             // 跳过原始字符串中开头、结尾的下换线或双重下划线 | ||||||
|             if (camel.isEmpty()) |             if (camel.isEmpty()) { | ||||||
|             { |  | ||||||
|                 continue; |                 continue; | ||||||
|             } |             } | ||||||
|             // 首字母大写 |             // 首字母大写 | ||||||
| @@ -421,30 +367,22 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|     /** |     /** | ||||||
|      * 驼峰式命名法 例如:user_name->userName |      * 驼峰式命名法 例如:user_name->userName | ||||||
|      */ |      */ | ||||||
|     public static String toCamelCase(String s) |     public static String toCamelCase(String s) { | ||||||
|     { |         if (s == null) { | ||||||
|         if (s == null) |  | ||||||
|         { |  | ||||||
|             return null; |             return null; | ||||||
|         } |         } | ||||||
|         s = s.toLowerCase(); |         s = s.toLowerCase(); | ||||||
|         StringBuilder sb = new StringBuilder(s.length()); |         StringBuilder sb = new StringBuilder(s.length()); | ||||||
|         boolean upperCase = false; |         boolean upperCase = false; | ||||||
|         for (int i = 0; i < s.length(); i++) |         for (int i = 0; i < s.length(); i++) { | ||||||
|         { |  | ||||||
|             char c = s.charAt(i); |             char c = s.charAt(i); | ||||||
|  |  | ||||||
|             if (c == SEPARATOR) |             if (c == SEPARATOR) { | ||||||
|             { |  | ||||||
|                 upperCase = true; |                 upperCase = true; | ||||||
|             } |             } else if (upperCase) { | ||||||
|             else if (upperCase) |  | ||||||
|             { |  | ||||||
|                 sb.append(Character.toUpperCase(c)); |                 sb.append(Character.toUpperCase(c)); | ||||||
|                 upperCase = false; |                 upperCase = false; | ||||||
|             } |             } else { | ||||||
|             else |  | ||||||
|             { |  | ||||||
|                 sb.append(c); |                 sb.append(c); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @@ -452,15 +390,21 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @SuppressWarnings("unchecked") |     @SuppressWarnings("unchecked") | ||||||
|     public static <T> T cast(Object obj) |     public static <T> T cast(Object obj) { | ||||||
|     { |  | ||||||
|         return (T) obj; |         return (T) obj; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 手机号隐式处理 |      * 手机号隐式处理 | ||||||
|      * */ |      */ | ||||||
|     public static String hiddenPhoneNumber(String phoneNumber){ |     public static String hiddenPhoneNumber(String phoneNumber) { | ||||||
|         return phoneNumber.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); |         return phoneNumber.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2"); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public static boolean isMobileNO(String phone) { | ||||||
|  |         String rule = "((\\+86|0086)?\\s*)((134[0-8]\\d{7})|(((13([0-3]|[5-9]))|(14[5-9])|15([0-3]|[5-9])|(16(2|[5-7]))|17([0-3]|[5-8])|18[0-9]|19(1|[8-9]))\\d{8})|(14(0|1|4)0\\d{7})|(1740([0-5]|[6-9]|[10-12])\\d{7}))"; | ||||||
|  |         Pattern p = Pattern.compile(rule); | ||||||
|  |         Matcher m = p.matcher(phone); | ||||||
|  |         return m.matches(); | ||||||
|  |     } | ||||||
| } | } | ||||||
| @@ -0,0 +1,13 @@ | |||||||
|  | package com.stdiet.custom.service; | ||||||
|  |  | ||||||
|  | public interface ISysRedisService { | ||||||
|  |     void set(String key, String value); | ||||||
|  |  | ||||||
|  |     String get(String key); | ||||||
|  |  | ||||||
|  |     Boolean expire(String key, long expire); | ||||||
|  |  | ||||||
|  |     void remove(String key); | ||||||
|  |  | ||||||
|  |     Long increment(String key, long delta); | ||||||
|  | } | ||||||
| @@ -0,0 +1,9 @@ | |||||||
|  | package com.stdiet.custom.service; | ||||||
|  |  | ||||||
|  | public interface ISysSmsConfirmServie { | ||||||
|  |  | ||||||
|  |     public Integer sendSmsCode(String phone); | ||||||
|  |  | ||||||
|  |     public Integer checkSmsCode(String phone, String code); | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -0,0 +1,40 @@ | |||||||
|  | package com.stdiet.custom.service.impl; | ||||||
|  |  | ||||||
|  | import com.stdiet.custom.service.ISysRedisService; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.data.redis.core.StringRedisTemplate; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | import java.util.concurrent.TimeUnit; | ||||||
|  |  | ||||||
|  | @Service | ||||||
|  | public class SysRedisServiceImp implements ISysRedisService { | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     private StringRedisTemplate stringRedisTemplate; | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void set(String key, String value) { | ||||||
|  |         stringRedisTemplate.opsForValue().set(key, value); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public String get(String key) { | ||||||
|  |         return stringRedisTemplate.opsForValue().get(key); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Boolean expire(String key, long expire) { | ||||||
|  |         return stringRedisTemplate.expire(key, expire, TimeUnit.SECONDS); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public void remove(String key) { | ||||||
|  |         stringRedisTemplate.delete(key); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Long increment(String key, long delta) { | ||||||
|  |         return stringRedisTemplate.opsForValue().increment(key, delta); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,87 @@ | |||||||
|  | package com.stdiet.custom.service.impl; | ||||||
|  |  | ||||||
|  | import com.alibaba.fastjson.JSONObject; | ||||||
|  | import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse; | ||||||
|  | import com.aliyuncs.exceptions.ClientException; | ||||||
|  | import com.stdiet.common.utils.DateUtils; | ||||||
|  | import com.stdiet.common.utils.StringUtils; | ||||||
|  | import com.stdiet.custom.domain.wechat.WxSubscribePostLog; | ||||||
|  | import com.stdiet.custom.service.ISysRedisService; | ||||||
|  | import com.stdiet.custom.service.ISysSmsConfirmServie; | ||||||
|  | import com.stdiet.custom.service.IWxSubscribePostLogService; | ||||||
|  | import com.stdiet.custom.utils.SmsUtils; | ||||||
|  | import org.apache.commons.lang3.RandomStringUtils; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | @Service | ||||||
|  | public class SysSmsConfirmServiceImpl implements ISysSmsConfirmServie { | ||||||
|  |  | ||||||
|  |     private static long CODE_EXPIRE_SECONDS = 600;    //设置验证码过期时间为600秒 | ||||||
|  |  | ||||||
|  |     @Autowired | ||||||
|  |     ISysRedisService redisService; | ||||||
|  |     @Autowired | ||||||
|  |     IWxSubscribePostLogService wxSubscribePostLogService; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Integer sendSmsCode(String phone) { | ||||||
|  |         int reCode = -1; | ||||||
|  |         try { | ||||||
|  |             String code = RandomStringUtils.randomNumeric(6); | ||||||
|  |             JSONObject paramObj = new JSONObject(); | ||||||
|  |             paramObj.put("code", code); | ||||||
|  |             SendSmsResponse response = SmsUtils.sendSms(phone, paramObj.toJSONString(), SmsUtils.SMS_217025172); | ||||||
|  |             if (response.getCode().equals("OK")) { | ||||||
|  |                 // 发送成功 | ||||||
|  |                 redisService.remove(phone); | ||||||
|  |                 redisService.set(phone, code); | ||||||
|  |                 redisService.expire(phone, CODE_EXPIRE_SECONDS); | ||||||
|  |                 reCode = 0; | ||||||
|  |             } else if (response.getCode().equals("isv.MOBILE_NUMBER_ILLEGAL")) { | ||||||
|  |                 // 非法手机号 | ||||||
|  |                 reCode = 1; | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             WxSubscribePostLog postLog = new WxSubscribePostLog(); | ||||||
|  |             postLog.setPhone(phone); | ||||||
|  |             JSONObject resultObj = new JSONObject(); | ||||||
|  |             resultObj.put("requestId", response.getRequestId()); | ||||||
|  |             resultObj.put("bizId", response.getBizId()); | ||||||
|  |             resultObj.put("code", response.getCode()); | ||||||
|  |             resultObj.put("message", response.getMessage()); | ||||||
|  |             postLog.setResult(resultObj); | ||||||
|  |             paramObj.put("phone", phone); | ||||||
|  |             paramObj.put("tmpCode", SmsUtils.SMS_217025172); | ||||||
|  |             paramObj.put("signName", SmsUtils.SMS_SIGN_NAME); | ||||||
|  |             postLog.setData(paramObj); | ||||||
|  |             postLog.setSendTime(DateUtils.getNowDate()); | ||||||
|  |             postLog.setType(2); | ||||||
|  |             wxSubscribePostLogService.insertWxSubscribePostLog(postLog); | ||||||
|  |         } catch (ClientException e) { | ||||||
|  |             e.printStackTrace(); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return reCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Integer checkSmsCode(String phone, String code) { | ||||||
|  |         String cachedCode = redisService.get(phone); | ||||||
|  |         int resCode = -1; | ||||||
|  |         if (StringUtils.isEmpty(cachedCode)) { | ||||||
|  |             // 验证码失效 | ||||||
|  |             resCode = 1; | ||||||
|  |             redisService.remove(phone); | ||||||
|  |         } else if (!code.equals(cachedCode)) { | ||||||
|  |             // 验证码错误 | ||||||
|  |             resCode = 2; | ||||||
|  |         } else if (code.equals(cachedCode)) { | ||||||
|  |             // 校验成功 | ||||||
|  |             resCode = 0; | ||||||
|  |             redisService.remove(phone); | ||||||
|  |         } | ||||||
|  |         return resCode; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -29,9 +29,6 @@ import java.util.concurrent.TimeUnit; | |||||||
| public class WeChartAppletServiceImp implements IWechatAppletService { | public class WeChartAppletServiceImp implements IWechatAppletService { | ||||||
|     static final String WX_TEM_ID = "Ow0j0Jt4OJhjy6GruBstOMLTGjAVagM4hTZRLAaxqJo"; |     static final String WX_TEM_ID = "Ow0j0Jt4OJhjy6GruBstOMLTGjAVagM4hTZRLAaxqJo"; | ||||||
|  |  | ||||||
|     static final String SMS_TEM_ID = "SMS_216839183"; |  | ||||||
|     static final String SMS_SIGN_NAME = "胜唐体控"; |  | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired | ||||||
|     private RedisCache redisCache; |     private RedisCache redisCache; | ||||||
|  |  | ||||||
| @@ -128,7 +125,9 @@ public class WeChartAppletServiceImp implements IWechatAppletService { | |||||||
|     public Integer postSms(Long cusId, Long planId, String plan) { |     public Integer postSms(Long cusId, Long planId, String plan) { | ||||||
|         try { |         try { | ||||||
|             SysCustomer customer = sysCustomerService.selectSysCustomerById(cusId); |             SysCustomer customer = sysCustomerService.selectSysCustomerById(cusId); | ||||||
|             SendSmsResponse response = SmsUtils.sendSms(customer.getPhone(), plan, SMS_TEM_ID, SMS_SIGN_NAME); |             JSONObject paramObj = new JSONObject(); | ||||||
|  |             paramObj.put("plan", plan); | ||||||
|  |             SendSmsResponse response = SmsUtils.sendSms(customer.getPhone(), paramObj.toJSONString(), SmsUtils.SMS_216839183, SmsUtils.SMS_SIGN_NAME); | ||||||
|  |  | ||||||
|             WxSubscribePostLog postLog = new WxSubscribePostLog(); |             WxSubscribePostLog postLog = new WxSubscribePostLog(); | ||||||
|             postLog.setPhone(customer.getPhone()); |             postLog.setPhone(customer.getPhone()); | ||||||
| @@ -142,8 +141,8 @@ public class WeChartAppletServiceImp implements IWechatAppletService { | |||||||
|             JSONObject dataParam = new JSONObject(); |             JSONObject dataParam = new JSONObject(); | ||||||
|             dataParam.put("phone", customer.getPhone()); |             dataParam.put("phone", customer.getPhone()); | ||||||
|             dataParam.put("plan", plan); |             dataParam.put("plan", plan); | ||||||
|             dataParam.put("tmpCode", SMS_TEM_ID); |             dataParam.put("tmpCode", SmsUtils.SMS_216839183); | ||||||
|             dataParam.put("signName", SMS_SIGN_NAME); |             dataParam.put("signName", SmsUtils.SMS_SIGN_NAME); | ||||||
|             postLog.setData(dataParam); |             postLog.setData(dataParam); | ||||||
|             postLog.setSendTime(DateUtils.getNowDate()); |             postLog.setSendTime(DateUtils.getNowDate()); | ||||||
|             postLog.setType(1); |             postLog.setType(1); | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| package com.stdiet.custom.utils; | package com.stdiet.custom.utils; | ||||||
|  |  | ||||||
| import com.alibaba.fastjson.JSONObject; |  | ||||||
| import com.aliyuncs.DefaultAcsClient; | import com.aliyuncs.DefaultAcsClient; | ||||||
| import com.aliyuncs.IAcsClient; | import com.aliyuncs.IAcsClient; | ||||||
| import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest; | import com.aliyuncs.dysmsapi.model.v20170525.QuerySendDetailsRequest; | ||||||
| @@ -16,12 +15,42 @@ import java.text.SimpleDateFormat; | |||||||
| import java.util.Date; | import java.util.Date; | ||||||
|  |  | ||||||
| public class SmsUtils { | public class SmsUtils { | ||||||
|  |     /** | ||||||
|  |      * 身份验证码 | ||||||
|  |      */ | ||||||
|  |     public static final String SMS_217025173 = "SMS_217025173"; | ||||||
|  |     /** | ||||||
|  |      * 登录确认验证码 | ||||||
|  |      */ | ||||||
|  |     public static final String SMS_217025172 = "SMS_217025172"; | ||||||
|  |     /** | ||||||
|  |      * 用户注册验证码 | ||||||
|  |      */ | ||||||
|  |     public static final String SMS_217025170 = "SMS_217025170"; | ||||||
|  |     /** | ||||||
|  |      * 修改密码验证码 | ||||||
|  |      */ | ||||||
|  |     public static final String SMS_217025169 = "SMS_217025169"; | ||||||
|  |     /** | ||||||
|  |      * 新食谱通知 | ||||||
|  |      */ | ||||||
|  |     public static final String SMS_216839183 = "SMS_216839183"; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 签名 | ||||||
|  |      */ | ||||||
|  |     public static final String SMS_SIGN_NAME = "胜唐体控"; | ||||||
|  |  | ||||||
|     //产品名称:云通信短信API产品,开发者无需替换 |     //产品名称:云通信短信API产品,开发者无需替换 | ||||||
|     static final String product = "Dysmsapi"; |     static final String product = "Dysmsapi"; | ||||||
|     //产品域名,开发者无需替换 |     //产品域名,开发者无需替换 | ||||||
|     static final String domain = "dysmsapi.aliyuncs.com"; |     static final String domain = "dysmsapi.aliyuncs.com"; | ||||||
|  |  | ||||||
|     public static SendSmsResponse sendSms(String phone, String plan, String tmpCode, String signName) throws ClientException { |     public static SendSmsResponse sendSms(String phone, String paramStr, String tmpCode) throws ClientException { | ||||||
|  |         return sendSms(phone, paramStr, tmpCode, SMS_SIGN_NAME); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static SendSmsResponse sendSms(String phone, String paramStr, String tmpCode, String signName) throws ClientException { | ||||||
|  |  | ||||||
|         //可自助调整超时时间 |         //可自助调整超时时间 | ||||||
|         System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); |         System.setProperty("sun.net.client.defaultConnectTimeout", "10000"); | ||||||
| @@ -41,9 +70,7 @@ public class SmsUtils { | |||||||
|         //必填:短信模板-可在短信控制台中找到 |         //必填:短信模板-可在短信控制台中找到 | ||||||
|         request.setTemplateCode(tmpCode); |         request.setTemplateCode(tmpCode); | ||||||
|         //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 |         //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为 | ||||||
|         JSONObject paramObj = new JSONObject(); |         request.setTemplateParam(paramStr); | ||||||
|         paramObj.put("plan", plan); |  | ||||||
|         request.setTemplateParam(paramObj.toJSONString()); |  | ||||||
|  |  | ||||||
|         //选填-上行短信扩展码(无特殊需求用户请忽略此字段) |         //选填-上行短信扩展码(无特殊需求用户请忽略此字段) | ||||||
|         //request.setSmsUpExtendCode("90997"); |         //request.setSmsUpExtendCode("90997"); | ||||||
|   | |||||||
| @@ -10,9 +10,11 @@ | |||||||
|           }`" |           }`" | ||||||
|           @click="handleOnCustomerClick(customer)" |           @click="handleOnCustomerClick(customer)" | ||||||
|         > |         > | ||||||
|  |           <span class="customer_avatar"> | ||||||
|             <el-avatar size="medium" :src="customer.avatar"> |             <el-avatar size="medium" :src="customer.avatar"> | ||||||
|               {{ customer.name && customer.name.substr(-1) }} |               {{ customer.name && customer.name.substr(-1) }} | ||||||
|             </el-avatar> |             </el-avatar> | ||||||
|  |           </span> | ||||||
|           <span class="customer_name"> |           <span class="customer_name"> | ||||||
|             {{ customer.name }} |             {{ customer.name }} | ||||||
|           </span> |           </span> | ||||||
| @@ -38,11 +40,10 @@ | |||||||
|             <div class="topic_content" :style="{ width: `${itemWidth}px` }"> |             <div class="topic_content" :style="{ width: `${itemWidth}px` }"> | ||||||
|               {{ topic.content }} |               {{ topic.content }} | ||||||
|             </div> |             </div> | ||||||
|             <div class="topic_user_name">by {{ topic.name }}</div> |             <div class="topic_time">{{ formatDate(topic.createTime) }}</div> | ||||||
|           </div> |           </div> | ||||||
|           <div class="topic_info"> |           <div class="topic_info"> | ||||||
|             <el-tag size="small">{{ topicTypeDict[topic.topicType] }}</el-tag> |             <el-tag size="small">{{ topicTypeDict[topic.topicType] }}</el-tag> | ||||||
|             <div class="topic_time">{{ formatDate(topic.createTime) }}</div> |  | ||||||
|           </div> |           </div> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
| @@ -306,6 +307,9 @@ export default { | |||||||
|  |  | ||||||
|       .customer_name { |       .customer_name { | ||||||
|         margin-left: 8px; |         margin-left: 8px; | ||||||
|  |         overflow: hidden; | ||||||
|  |         white-space: nowrap; | ||||||
|  |         text-overflow: ellipsis; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -362,22 +366,16 @@ export default { | |||||||
|           line-height: 1.5; |           line-height: 1.5; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         .topic_user_name { |         .topic_time { | ||||||
|           color: #8c8c8c; |  | ||||||
|           font-size: 14px; |           font-size: 14px; | ||||||
|           margin-top: 8px; |           margin-top: 6px; | ||||||
|  |           color: #8c8c8c; | ||||||
|         } |         } | ||||||
|       } |       } | ||||||
|  |  | ||||||
|       .topic_info { |       .topic_info { | ||||||
|         flex: 0 0 80px; |         flex: 0 0 80px; | ||||||
|         text-align: center; |         text-align: center; | ||||||
|  |  | ||||||
|         .topic_time { |  | ||||||
|           font-size: 14px; |  | ||||||
|           margin-top: 8px; |  | ||||||
|           color: #8c8c8c; |  | ||||||
|         } |  | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user