Merge branch 'develop' of gitee.com:darlk/ShengTangManage
This commit is contained in:
commit
ffe1c18202
@ -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,191 +1,174 @@
|
|||||||
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 = '_';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取参数不为空值
|
* 获取参数不为空值
|
||||||
*
|
*
|
||||||
* @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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个Collection是否为空, 包含List,Set,Queue
|
* * 判断一个Collection是否为空, 包含List,Set,Queue
|
||||||
*
|
*
|
||||||
* @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();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个Collection是否非空,包含List,Set,Queue
|
* * 判断一个Collection是否非空,包含List,Set,Queue
|
||||||
*
|
*
|
||||||
* @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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个对象数组是否为空
|
* * 判断一个对象数组是否为空
|
||||||
*
|
*
|
||||||
* @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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个对象数组是否非空
|
* * 判断一个对象数组是否非空
|
||||||
*
|
*
|
||||||
* @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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个Map是否为空
|
* * 判断一个Map是否为空
|
||||||
*
|
*
|
||||||
* @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();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个Map是否为空
|
* * 判断一个Map是否为空
|
||||||
*
|
*
|
||||||
* @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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个字符串是否为空串
|
* * 判断一个字符串是否为空串
|
||||||
*
|
*
|
||||||
* @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());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个字符串是否为非空串
|
* * 判断一个字符串是否为非空串
|
||||||
*
|
*
|
||||||
* @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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个对象是否为空
|
* * 判断一个对象是否为空
|
||||||
*
|
*
|
||||||
* @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;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个对象是否非空
|
* * 判断一个对象是否非空
|
||||||
*
|
*
|
||||||
* @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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* * 判断一个对象是否是数组类型(Java基本型别的数组)
|
* * 判断一个对象是否是数组类型(Java基本型别的数组)
|
||||||
*
|
*
|
||||||
* @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());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 截取字符串
|
* 截取字符串
|
||||||
*
|
*
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
* @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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -194,44 +177,36 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 截取字符串
|
* 截取字符串
|
||||||
*
|
*
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
* @param start 开始
|
* @param start 开始
|
||||||
* @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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,15 +221,13 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
|
|||||||
* 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br>
|
* 通常使用:format("this is {} for {}", "a", "b") -> this is a for b<br>
|
||||||
* 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
|
* 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a<br>
|
||||||
* 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
|
* 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b<br>
|
||||||
*
|
*
|
||||||
* @param template 文本模板,被替换的部分用 {} 表示
|
* @param template 文本模板,被替换的部分用 {} 表示
|
||||||
* @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);
|
||||||
@ -262,47 +235,40 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 字符串转set
|
* 字符串转set
|
||||||
*
|
*
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
* @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));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字符串转list
|
* 字符串转list
|
||||||
*
|
*
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
* @param sep 分隔符
|
* @param sep 分隔符
|
||||||
* @param filterBlank 过滤纯空白
|
* @param filterBlank 过滤纯空白
|
||||||
* @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));
|
||||||
@ -362,19 +318,15 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否包含字符串
|
* 是否包含字符串
|
||||||
*
|
*
|
||||||
* @param str 验证字符串
|
* @param str 验证字符串
|
||||||
* @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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -384,31 +336,25 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld
|
* 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld
|
||||||
*
|
*
|
||||||
* @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)"
|
||||||
>
|
>
|
||||||
<el-avatar size="medium" :src="customer.avatar">
|
<span class="customer_avatar">
|
||||||
{{ customer.name && customer.name.substr(-1) }}
|
<el-avatar size="medium" :src="customer.avatar">
|
||||||
</el-avatar>
|
{{ customer.name && customer.name.substr(-1) }}
|
||||||
|
</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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user