From 6e510a9e46d0beaa101360a07f5c33ac51648d05 Mon Sep 17 00:00:00 2001
From: mg <maokecheng@163.com>
Date: 星期日, 09 十月 2022 14:56:03 +0800
Subject: [PATCH] 修改bug和消息管理功能优化
---
ycl-platform/src/main/java/com/ycl/common/util/RandomStringUtil.java | 6
ycl-platform/src/main/java/com/ycl/common/util/DateUtils.java | 248 +++++++++
ycl-platform/src/main/java/com/ycl/service/message/Provider.java | 13
ycl-platform/pom.xml | 6
ycl-platform/src/main/java/com/ycl/entity/message/Message.java | 2
ycl-platform/src/main/java/com/ycl/service/message/impl/IMessageServiceImpl.java | 44 +
ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java | 2
ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java | 259 ++++++++++
ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java | 16
ycl-platform/src/main/java/com/ycl/service/message/factory/MailFactory.java | 19
ycl-platform/src/main/java/com/ycl/service/message/factory/SmsFactory.java | 19
ycl-platform/src/main/java/com/ycl/service/message/factory/InnerFactory.java | 19
ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java | 63 ++
ycl-platform/src/main/java/com/ycl/service/message/factory/SmsSender.java | 20
ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java | 20
ycl-platform/src/main/java/com/ycl/common/util/Md5.java | 68 ++
ycl-platform/src/main/java/com/ycl/common/util/ParamsMap.java | 248 +++++++++
ycl-platform/src/main/java/com/ycl/service/message/Sender.java | 16
ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java | 5
ycl-platform/src/main/java/com/ycl/common/util/CommonUtils.java | 375 +++++++++++++++
ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java | 5
ycl-platform/src/main/java/com/ycl/common/util/RandomNumberGenerator.java | 8
22 files changed, 1,456 insertions(+), 25 deletions(-)
diff --git a/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java b/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java
index d233205..8d86cc7 100644
--- a/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java
+++ b/ycl-common/src/main/java/com/ycl/dto/UmsAdminParam.java
@@ -5,6 +5,7 @@
import lombok.Setter;
import javax.validation.constraints.*;
+import java.util.List;
/**
* 鐢ㄦ埛鐧诲綍鍙傛暟
@@ -55,6 +56,10 @@
@ApiModelProperty(value = "搴ф満/鍒嗘満")
private String zj;
+ @NotBlank(message = "瑙掕壊Id鍒楄〃涓嶈兘涓虹┖")
+ @ApiModelProperty(value = "瑙掕壊Id鍒楄〃", required = true)
+ private List<Long> roleIds;
+
// @ApiModelProperty(value = "鏄惁鏄礋璐d汉锛�0->false,1->true锛岄粯璁�0",example = "0")
// @NotNull(message = "璐熻矗浜烘湭閫夋嫨")
// private byte isManager;
diff --git a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
index 3283364..b40d47a 100644
--- a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
+++ b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
@@ -10,6 +10,7 @@
import java.io.Serializable;
import java.util.Date;
+import java.util.List;
/**
* <p>
@@ -89,4 +90,8 @@
@ApiModelProperty(value = "鎵嬫満鍙风爜")
private String mobile;
+
+ @ApiModelProperty(value = "瑙掕壊鍒楄〃")
+ @TableField(exist = false)
+ private List<UmsRole> roles;
}
diff --git a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
index 0774bac..a88c754 100644
--- a/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
+++ b/ycl-common/src/main/java/com/ycl/service/user/impl/UmsAdminServiceImpl.java
@@ -115,6 +115,19 @@
String encodePassword = passwordEncoder.encode(umsAdmin.getPassword());
umsAdmin.setPassword(encodePassword);
baseMapper.insert(umsAdmin);
+
+ //娣诲姞瑙掕壊鎺堟潈
+ List<Long> ids = umsAdminParam.getRoleIds();
+ if (!ids.isEmpty()) {
+ List<UmsAdminRoleRelation> roleIds = new ArrayList<>();
+ for(Long id:ids){
+ UmsAdminRoleRelation urr = new UmsAdminRoleRelation();
+ urr.setAdminId(umsAdmin.getId());
+ urr.setRoleId(id);
+ roleIds.add(urr);
+ }
+ umsAdminRoleRelationService.saveBatch(roleIds);
+ }
//瀵圭敤鎴峰悕绯荤粺榛樿娣诲姞
umsAdmin.setNickName(RandomUtils.getUserId(umsAdmin.getId()));
baseMapper.updateById(umsAdmin);
@@ -329,6 +342,9 @@
if (null != umsDepart) {
e.setDepartName(umsDepart.getDepartName());
}
+ //鑾峰彇瑙掕壊鍒楄〃
+ List<UmsRole> roles = umsRoleMapper.getRoleList(e.getId());
+ e.setRoles(roles);
});
}
return page1;
diff --git a/ycl-platform/pom.xml b/ycl-platform/pom.xml
index 3f73696..084ec6a 100644
--- a/ycl-platform/pom.xml
+++ b/ycl-platform/pom.xml
@@ -25,7 +25,11 @@
<artifactId>ycl-common</artifactId>
<version>1.0.0</version>
</dependency>
-
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>3.0.1</version>
+ </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
diff --git a/ycl-platform/src/main/java/com/ycl/common/util/CommonUtils.java b/ycl-platform/src/main/java/com/ycl/common/util/CommonUtils.java
new file mode 100644
index 0000000..f9b3180
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/util/CommonUtils.java
@@ -0,0 +1,375 @@
+package com.ycl.common.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.text.SimpleDateFormat;
+import java.util.*;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+public class CommonUtils {
+ /**
+ * 妫�鏌ュ璞℃槸鍚︿负绌�
+ *
+ * @param obj
+ * java浠绘剰绫诲瀷
+ * @return
+ */
+ @SuppressWarnings("rawtypes")
+ public static boolean isEmpty(Object obj) {
+ if (obj == null) {
+ return true;
+
+ } else if (obj instanceof String && (obj.toString().trim().equals(""))) {
+ return true;
+
+ } else if (obj instanceof Number && ((Number) obj).doubleValue() < 0) {
+ return true;
+
+ } else if (obj instanceof Collection && ((Collection) obj).isEmpty()) {
+ return true;
+
+ } else if (obj instanceof Map && ((Map) obj).isEmpty()) {
+ return true;
+
+ } else if (obj instanceof Object[] && ((Object[]) obj).length == 0) {
+ return true;
+
+ }
+ return false;
+ }
+
+ /**
+ * 妫�鏌涓璞℃槸鍚︿负绌�
+ *
+ * @param obj
+ * @return
+ */
+ public static boolean isEmpty(Object... obj) {
+ boolean res = false;
+ for (Object o : obj) {
+ if (isEmpty(o)) {
+ res = true;
+ break;
+ }
+ }
+ return res;
+ }
+
+ /**
+ *
+ *
+ * @param obj
+ * @return
+ */
+ @SuppressWarnings("rawtypes")
+ public static boolean hasLength(Object obj, int length) {
+
+ if (obj == null) {
+ return false;
+
+ } else if (obj instanceof String) {
+ return obj.toString().trim().length() == length;
+
+ } else if (obj instanceof Collection) {
+ return ((Collection) obj).size() == length;
+
+ } else if (obj instanceof Map) {
+ return ((Map) obj).size() == length;
+
+ } else if (obj instanceof Object[]) {
+ return ((Object[]) obj).length == length;
+
+ }
+
+ return false;
+
+ }
+
+ /**
+ * 妫�鏌ュ璞℃槸鍚︿笉涓虹┖
+ *
+ * @param obj
+ * @return
+ */
+ public static boolean isNotEmpty(Object obj) {
+ return !isEmpty(obj);
+ }
+
+ /**
+ * 妫�鏌ュ璞℃槸鍚︿笉涓虹┖
+ *
+ * @param obj
+ * @return
+ */
+ public static boolean isNotEmpty(Object... obj) {
+ boolean res = true;
+ for (Object o : obj) {
+ if (isEmpty(o)) {
+ res = false;
+ }
+ }
+ return res;
+ }
+
+
+
+ /**
+ * 鍏嬮殕涓�涓璞�
+ *
+ * @param obj
+ * @return
+ * @throws Exception
+ */
+ public static Object cloneObject(Object obj) throws Exception {
+ ByteArrayOutputStream byteOut = new ByteArrayOutputStream();
+ ObjectOutputStream out = new ObjectOutputStream(byteOut);
+ out.writeObject(obj);
+ ByteArrayInputStream byteIn = new ByteArrayInputStream(byteOut.toByteArray());
+ ObjectInputStream in = new ObjectInputStream(byteIn);
+ return in.readObject();
+ }
+
+ /**
+ * 鍒ゆ柇鏄惁涓轰腑鏂�
+ *
+ * @param c
+ * @return
+ */
+ public static boolean isChinese(char c) {
+ Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
+ if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
+ || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
+ || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
+ || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
+ || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
+ || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isChinese(String str) {
+ if (null != str && str.length() > 0) {
+ char[] chares = str.toCharArray();
+ for (char c : chares) {
+ if (isChinese(c))
+ return true;
+ }
+ } else
+ return false;
+
+ return false;
+ }
+
+ /**
+ * 鍒ゆ柇鏄惁涓轰腑鏂囦贡鐮�
+ *
+ * @param strName
+ * @return
+ */
+ public static boolean hasMessyCode(String target) {
+ Pattern p = Pattern.compile("\\s*|\t*|\r*|\n*");
+ Matcher m = p.matcher(target);
+ String after = m.replaceAll("");
+ String temp = after.replaceAll("}", "");
+ char[] ch = temp.trim().toCharArray();
+ float chLength = ch.length;
+ float count = 0;
+ for (int i = 0; i < ch.length; i++) {
+ char c = ch[i];
+ if (!Character.isLetterOrDigit(c)) {
+
+ if (!isChinese(c)) {
+ count = count + 1;
+ }
+ }
+ }
+ float result = count / chLength;
+ if (result > 0.4) {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * 鐢熸垚N浣嶉殢鏈烘暟
+ *
+ * @return
+ */
+ public static String getRandom(int N) {
+ int[] rand = new int[N];
+ StringBuffer numString = new StringBuffer();
+ for (int i = 0; i < rand.length; i++) {
+ rand[i] = (Integer) new Random().nextInt(9);
+ numString.append(rand[i]);
+ }
+ return numString.toString();
+ }
+
+ /**
+ * 鍚岀被瀵硅薄灞炴�у鍒�(private,public) 澶嶅埗鍑烘潵鐨勪负鏂板璞�
+ *
+ * @param object
+ * @return
+ * @throws Exception
+ */
+ public static Object copyThisToNewOne(Object object) throws Exception {
+ Class<?> classType = object.getClass();
+ Object obj = classType.getConstructor(new Class[] {}).newInstance(new Object[] {});
+ Field[] fields = classType.getDeclaredFields();
+ for (Field field : fields) {
+ if (Modifier.isPrivate(field.getModifiers())) {// 鍙渶瑕佺鏈夊瓧娈�
+ String name = field.getName();
+ String firstLetter = name.substring(0, 1).toUpperCase();
+ String getMethodName = "get" + firstLetter + name.substring(1);
+ String setMethodName = "set" + firstLetter + name.substring(1);
+ Method getMethod = classType.getMethod(getMethodName, new Class[] {});
+ Method setMethod = classType.getMethod(setMethodName, new Class[] { field.getType() });
+ Object value = getMethod.invoke(object, new Object[] {});
+ if (value != null) {
+ setMethod.invoke(obj, new Object[] { value });
+ }
+ } else {
+ System.out.println(field.get(object));
+ obj.getClass().getField(field.getName()).set((Object) obj, field.get(object));
+ }
+ }
+ return obj;
+ }
+
+ /**
+ * 鍚岀被瀵硅薄灞炴�у鍒�(private,public) 鎶�2涓凡鏈夌殑瀵硅薄灞炴�ц繘琛屽鍒� 姝ゆ柟娉晄rc浠h〃鏉ユ簮鏁版嵁瀵硅薄锛�
+ * result浠h〃瑕佹妸src涓殑灞炴�у鍒跺埌鐨勫璞�
+ *
+ * @param object
+ * @return
+ * @throws Exception
+ */
+ public static Object copyThisToAnother(Object src, Object result) throws Exception {
+ Class<?> classType = src.getClass();
+ Object obj = classType.getConstructor(new Class[] {}).newInstance(new Object[] {});
+ Field[] fields = classType.getDeclaredFields();
+ for (Field field : fields) {
+ if (Modifier.isPrivate(field.getModifiers())) {// 鍙渶瑕佺鏈夊瓧娈�
+ String name = field.getName();
+ String firstLetter = name.substring(0, 1).toUpperCase();
+ String getMethodName = "get" + firstLetter + name.substring(1);
+ String setMethodName = "set" + firstLetter + name.substring(1);
+ Method getMethod = classType.getMethod(getMethodName, new Class[] {});
+ Method setMethod = classType.getMethod(setMethodName, new Class[] { field.getType() });
+ Object value = getMethod.invoke(src, new Object[] {});
+ if (value != null) {
+ setMethod.invoke(result, new Object[] { value });
+ }
+ } else {
+ System.out.println(field.get(src));
+ obj.getClass().getField(field.getName()).set(result, field.get(src));
+ }
+ }
+ return result;
+ }
+
+ public static String getRandomString(int length) { // length琛ㄧず鐢熸垚瀛楃涓茬殑闀垮害
+ String base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+ Random random = new Random();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < length; i++) {
+ int number = random.nextInt(base.length());
+ sb.append(base.charAt(number));
+ }
+ return sb.toString();
+ }
+
+ public static String getUpperStringRandom(int length) { // length琛ㄧず鐢熸垚瀛楃涓茬殑闀垮害
+
+ return getRandomString(length).toUpperCase();
+ }
+
+ /**
+ * 鏁板瓧闅忔満鐮佺爜
+ *
+ * @param length
+ * @return
+ */
+ public static String getDigitRandom(int length) { // length琛ㄧず鐢熸垚瀛楃涓茬殑闀垮害
+ String base = "0123456789";
+ Random random = new Random();
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < length; i++) {
+ int number = random.nextInt(base.length());
+ sb.append(base.charAt(number));
+ }
+ return sb.toString();
+ }
+
+ public static String getFormatParam(Object... obj) { // length琛ㄧず鐢熸垚瀛楃涓茬殑闀垮害
+
+ StringBuffer sb = new StringBuffer();
+ for (Object o : obj) {
+ if (CommonUtils.isEmpty(sb.toString()))
+ sb.append(o.toString());
+ else
+ sb.append("," + o.toString());
+
+ }
+ return sb.toString();
+ }
+
+ /**
+ * 鑾峰彇涓�涓椂闂存牸寮忕殑缂栧彿
+ *
+ * @param random
+ * @return yyyyMMddHHmmss + random(bit)
+ */
+ public static String getIdentityByTime(int random) {
+
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
+ Date date = new Date();
+ return dateFormat.format(date) + getDigitRandom(random);
+ }
+
+ public static String getUUID(boolean hasSplit) {
+ UUID uuid = UUID.randomUUID();
+ return hasSplit ? uuid.toString() : uuid.toString().replace("-", "");
+ }
+
+ public static <T> List<T> removeNull(List<? extends T> oldList) {
+ oldList.removeAll(Collections.singleton(null));
+ Iterator iterator = oldList.iterator();
+ while (iterator.hasNext()) {
+ if (checkIsEtmy(iterator.next())) {
+ iterator.remove();
+ }
+ }
+ return (List<T>) oldList;
+ }
+
+ public static boolean checkIsEtmy(Object o) {
+ boolean flag = true;
+ //鑾峰彇鍙傛暟绫�
+ Class cls = o.getClass();
+ //灏嗗弬鏁扮被杞崲涓哄搴斿睘鎬ф暟閲忕殑Field绫诲瀷鏁扮粍锛堝嵆璇ョ被鏈夊灏戜釜灞炴�у瓧娈� N 杞崲鍚庣殑鏁扮粍闀垮害鍗充负 N锛�
+ Field[] fields = cls.getDeclaredFields();
+ for(int i = 0;i < fields.length; i ++){
+ Field f = fields[i];
+ f.setAccessible(true);
+ //f.getName()寰楀埌瀵瑰簲瀛楁鐨勫睘鎬у悕锛宖.get(o)寰楀埌瀵瑰簲瀛楁灞炴�у��,f.getGenericType()寰楀埌瀵瑰簲瀛楁鐨勭被鍨�
+ try {
+ if (f.get(o)!=null&&!"".equals(f.get(o).toString())) {
+ flag = false;
+ }
+ } catch (IllegalArgumentException | IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ return flag;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/common/util/DateUtils.java b/ycl-platform/src/main/java/com/ycl/common/util/DateUtils.java
new file mode 100644
index 0000000..2115b5d
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/util/DateUtils.java
@@ -0,0 +1,248 @@
+package com.ycl.common.util;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+
+public class DateUtils {
+
+ /**
+ * 鑾峰彇涓ゆ棩鏈熶箣闂撮棿闅旂殑澶╂暟
+ *
+ * @param smdate
+ * 杈冨皬鐨勬椂闂�
+ * @param bdate
+ * 杈冨ぇ鐨勬椂闂�
+ * @return 鐩稿樊澶╂暟
+ */
+ public static int daysBetween(Date smdate, Date bdate) {
+ long between_days = 0;
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ smdate = sdf.parse(sdf.format(smdate));
+ bdate = sdf.parse(sdf.format(bdate));
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(smdate);
+ long time1 = cal.getTimeInMillis();
+ cal.setTime(bdate);
+ long time2 = cal.getTimeInMillis();
+ between_days = (time2 - time1) / (1000 * 3600 * 24);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ return Integer.parseInt(String.valueOf(between_days));
+ }
+
+ public static boolean isBetween(Date date, Date startDate, Date endDate) {
+
+ try {
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ startDate = sdf.parse(sdf.format(startDate));
+ endDate = sdf.parse(sdf.format(endDate));
+ date = sdf.parse(sdf.format(date));
+
+ Calendar cal = Calendar.getInstance();
+
+ cal.setTime(date);
+ long time0 = cal.getTimeInMillis();
+ cal.setTime(startDate);
+ long time1 = cal.getTimeInMillis();
+ cal.setTime(endDate);
+ long time2 = cal.getTimeInMillis();
+
+ if (time0 > time1 && time0 <= time2)
+ return true;
+
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return false;
+
+ }
+
+ public static boolean isToday(Date date) {
+
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
+ String _date = sdf.format(date);
+ String _today = sdf.format(new Date());
+
+ return _date.equals(_today);
+ }
+
+ public static long DifferMillis(Date sDate, Date eDate) {
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ sDate = sdf.parse(sdf.format(sDate));
+ eDate = sdf.parse(sdf.format(eDate));
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(sDate);
+ long time1 = cal.getTimeInMillis();
+ cal.setTime(eDate);
+ long time2 = cal.getTimeInMillis();
+ return Math.abs(time1 - time2);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+
+ return -1L;
+ }
+
+ public static long DifferSeconds(Date sDate, Date eDate) {
+
+ return DifferMillis(sDate, eDate) / 1000;
+ }
+
+ /**
+ * 鐩稿樊鍒嗛挓鏁�
+ *
+ * @param sDate
+ * @param eDate
+ * @return
+ */
+ public static long DifferMinutes(Date sDate, Date eDate) {
+
+ return Long.parseLong(String.valueOf(DifferMillis(sDate, eDate)
+ / (1000 * 60)));
+ }
+
+ public static String getNowDate(String format) {
+ return new SimpleDateFormat(format).format(new Date());
+ }
+
+ public static String getTomorrowDate(String format) {
+ return new SimpleDateFormat(format).format(addDate(new Date(), 1));
+ }
+
+ public static String getDateString(Date date, String format) {
+ return new SimpleDateFormat(format).format(date);
+ }
+
+ public static String getNow() {
+ return getDateString(new Date(), DateUtils.DATE_TIME_PATTERN);
+ }
+ public static Date parse(String date, String format) {
+
+ try {
+ return new SimpleDateFormat(format).parse(date);
+ } catch (ParseException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public static boolean nowTimeBetween(String beginTimeStr, String endTimeStr)
+ throws ParseException {
+ SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm:ss");
+ Long beginTime = dateFormat.parse(beginTimeStr).getTime();
+ Long endTime = dateFormat.parse(endTimeStr).getTime();
+ Long nowTime = dateFormat.parse(dateFormat.format(new Date()))
+ .getTime();
+ if (nowTime >= beginTime && nowTime <= endTime) {
+ return true;
+ }
+ return false;
+ }
+
+ @SuppressWarnings("static-access")
+ public static Date addDate(Date date, int days) {
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ calendar.add(calendar.DATE, days);// 鎶婃棩鏈熷線鍚庡鍔犱竴澶�.鏁存暟寰�鍚庢帹,璐熸暟寰�鍓嶇Щ鍔�
+ return calendar.getTime(); // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ }
+
+ @SuppressWarnings("static-access")
+ public static Date addHour(Date date, int hour) {
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ calendar.add(calendar.HOUR, hour);// 鎶婃棩鏈熷線鍚庡鍔犱竴澶�.鏁存暟寰�鍚庢帹,璐熸暟寰�鍓嶇Щ鍔�
+ return calendar.getTime(); // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ }
+
+ @SuppressWarnings("static-access")
+ public static Date addMinute(Date date, int minute) {
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ calendar.add(calendar.MINUTE, minute);// 鎶婃棩鏈熷線鍚庡鍔犱竴澶�.鏁存暟寰�鍚庢帹,璐熸暟寰�鍓嶇Щ鍔�
+ return calendar.getTime(); // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ }
+
+ @SuppressWarnings("static-access")
+ public static Date addSecond(Date date, int second) {
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ calendar.add(calendar.SECOND, second);// 鎶婃棩鏈熷線鍚庡鍔犱竴澶�.鏁存暟寰�鍚庢帹,璐熸暟寰�鍓嶇Щ鍔�
+ return calendar.getTime(); // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ }
+
+ /**
+ *
+ * @param timestamp
+ * 绉�
+ * @return
+ */
+ public static Date getDate(String timestamp) {
+ return getDateBySecond(Long.parseLong(timestamp)); // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ }
+
+ /**
+ *
+ * @param timestamp
+ * 姣
+ * @return
+ */
+ public static Date getDateByMillis(long timestamp) {
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTimeInMillis(timestamp);
+ return calendar.getTime(); // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ }
+
+ /**
+ *
+ * @param timestamp
+ * 绉�
+ * @return
+ */
+ public static Date getDateBySecond(long timestamp) {
+ return getDateByMillis(timestamp * 1000); // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ }
+
+ public static long getTimestamp(Date date) {
+ Calendar calendar = new GregorianCalendar();
+ calendar.setTime(date);
+ return calendar.getTimeInMillis(); // 杩欎釜鏃堕棿灏辨槸鏃ユ湡寰�鍚庢帹涓�澶╃殑缁撴灉
+ }
+
+ public static long DifferMillis(String timestamp, String nowTimestamp) {
+ Date date1 = parse(timestamp, DATE_TIME_PATTERN);
+ Date date2 = parse(nowTimestamp, DATE_TIME_PATTERN);
+
+ return DifferMillis(date1, date2);
+ }
+
+ public static long DifferMillis(String timestamp, Date date) {
+ Date date1 = parse(timestamp, DATE_TIME_PATTERN);
+
+ return DifferMillis(date1, date);
+ }
+ public static String dateToStamp(String s) throws ParseException{
+ String res;
+ SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ Date date = simpleDateFormat.parse(s);
+ long ts = date.getTime();
+ res = String.valueOf(ts);
+ return res;
+ }
+ public static void main(String[] args) throws ParseException {
+ System.out.println(DateUtils.getDateString(new Date(), "yyyy-MM-dd HH:mm:ss"));
+ }
+
+
+ public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
+}
\ No newline at end of file
diff --git a/ycl-platform/src/main/java/com/ycl/common/util/Md5.java b/ycl-platform/src/main/java/com/ycl/common/util/Md5.java
new file mode 100644
index 0000000..aebeb9f
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/util/Md5.java
@@ -0,0 +1,68 @@
+package com.ycl.common.util;
+
+import java.security.MessageDigest;
+
+public class Md5 {
+/**
+* md5鍔犲瘑鏂规硶
+* @author: zhengsunlei
+* Jul 30, 2010 4:38:28 PM
+* @param plainText 鍔犲瘑瀛楃涓�
+* @return String 杩斿洖32浣峬d5鍔犲瘑瀛楃涓�(16浣嶅姞瀵嗗彇substring(8,24))
+* 姣忎綅宸ョ▼甯堥兘鏈変繚鎸佷唬鐮佷紭闆呯殑涔夊姟
+* each engineer has a duty to keep the code elegant
+*/
+public final static String md5(String plainText) {
+ // 杩斿洖瀛楃涓�
+ String md5Str = null;
+ try {
+ // 鎿嶄綔瀛楃涓�
+ StringBuffer buf = new StringBuffer();
+ /**
+ * MessageDigest 绫讳负搴旂敤绋嬪簭鎻愪緵淇℃伅鎽樿绠楁硶鐨勫姛鑳斤紝濡� MD5 鎴� SHA 绠楁硶銆�
+ * 淇℃伅鎽樿鏄畨鍏ㄧ殑鍗曞悜鍝堝笇鍑芥暟锛屽畠鎺ユ敹浠绘剰澶у皬鐨勬暟鎹紝骞惰緭鍑哄浐瀹氶暱搴︾殑鍝堝笇鍊笺��
+ *
+ * MessageDigest 瀵硅薄寮�濮嬭鍒濆鍖栥��
+ * 璇ュ璞¢�氳繃浣跨敤 update()鏂规硶澶勭悊鏁版嵁銆�
+ * 浠讳綍鏃跺�欓兘鍙互璋冪敤 reset()鏂规硶閲嶇疆鎽樿銆�
+ * 涓�鏃︽墍鏈夐渶瑕佹洿鏂扮殑鏁版嵁閮藉凡缁忚鏇存柊浜嗭紝搴旇璋冪敤digest()鏂规硶涔嬩竴瀹屾垚鍝堝笇璁$畻銆�
+ *
+ * 瀵逛簬缁欏畾鏁伴噺鐨勬洿鏂版暟鎹紝digest 鏂规硶鍙兘琚皟鐢ㄤ竴娆°��
+ * 鍦ㄨ皟鐢� digest 涔嬪悗锛孧essageDigest 瀵硅薄琚噸鏂拌缃垚鍏跺垵濮嬬姸鎬併��
+ */
+ MessageDigest md = MessageDigest.getInstance("MD5");
+
+ // 娣诲姞瑕佽繘琛岃绠楁憳瑕佺殑淇℃伅,浣跨敤 plainText 鐨� byte 鏁扮粍鏇存柊鎽樿銆�
+ md.update(plainText.getBytes("UTF-8"));
+ // 璁$畻鍑烘憳瑕�,瀹屾垚鍝堝笇璁$畻銆�
+ byte b[] = md.digest();
+ int i;
+ for (int offset = 0; offset < b.length; offset++) {
+ i = b[offset];
+ if (i < 0) {
+ i += 256;
+ }
+ if (i < 16) {
+ buf.append("0");
+ }
+ // 灏嗘暣鍨� 鍗佽繘鍒� i 杞崲涓�16浣嶏紝鐢ㄥ崄鍏繘鍒跺弬鏁拌〃绀虹殑鏃犵鍙锋暣鏁板�肩殑瀛楃涓茶〃绀哄舰寮忋��
+ buf.append(Integer.toHexString(i));
+ }
+ // 32浣嶇殑鍔犲瘑
+ md5Str = buf.toString().toUpperCase();
+ // 16浣嶇殑鍔犲瘑
+ // md5Str = buf.toString().md5Strstring(8,24);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return md5Str;
+}
+
+ public static boolean checkMD5(String verifyString, String md5) {
+ return md5.equals(md5(verifyString));
+ }
+
+ public static void main(String[] args) {
+ System.out.println(md5("appId=wx593e357018dd07f1&nonceStr=3EdGqO3vHlTzMKeyCvV2mdBSeWXNSSwq&package=wx20150715200343f61cb138620134794141&signType=MD5&timeStamp=20150715200347&key=waibjtam19801116passwordyurimeng"));
+ }
+}
\ No newline at end of file
diff --git a/ycl-platform/src/main/java/com/ycl/common/util/ParamsMap.java b/ycl-platform/src/main/java/com/ycl/common/util/ParamsMap.java
new file mode 100644
index 0000000..6df2b8a
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/util/ParamsMap.java
@@ -0,0 +1,248 @@
+package com.ycl.common.util;
+
+import lombok.extern.slf4j.Slf4j;
+
+import javax.servlet.http.HttpServletRequest;
+import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+
+@Slf4j
+public class ParamsMap extends HashMap<String, Object> implements Serializable{
+
+ private static final long serialVersionUID = -6716714932665322981L;
+
+ public ParamsMap(){}
+
+ public ParamsMap(HttpServletRequest request) {
+ if(request==null)return;
+ Iterator<Entry<String, String[]>> entries = request.getParameterMap().entrySet().iterator();
+ Entry<String, String[]> entry;
+ String name = "";
+ while (entries.hasNext()) {
+ String value = "";
+ entry = (Entry<String, String[]>) entries.next();
+ name = (String) entry.getKey();
+ Object valueObj = entry.getValue();
+ if(null == valueObj){
+ value = "";
+ }else if(valueObj instanceof String[]){
+ String[] values = (String[])valueObj;
+ for(int i=0;i<values.length;i++){
+ value += values[i] + ",";
+ }
+ value = value.substring(0, value.length()-1);
+ }else{
+ value = valueObj.toString();
+ }
+ this.put(name, value);
+ }
+ }
+
+ public ParamsMap(String code, Object value) {
+ this.put(code, value);
+ }
+
+ /**
+ *
+ * @Title: getString
+ * @Description: 鑾峰彇瀛楃涓插��
+ * @param key
+ * @return
+ */
+ public String getString(String key) {
+ try {
+ if (containsKey(key)) {
+ if(get(key)!=null) return get(key).toString();
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getString is error:{}",e);
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @Title: getInteter
+ * @Description: 鑾峰彇鏁村瀷鍊�
+ * @param key
+ * @return
+ */
+ public Integer getInteter(String key) {
+ try {
+ if (containsKey(key)) {
+ if(get(key)!=null && !"".equals(get(key)))
+ return Integer.parseInt(getString(key));
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getInteter is error:{}",e);
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @Title: getAsLong
+ * @Description: 鑾峰彇Long鍊�
+ * @param key
+ * @return
+ */
+ public Long getLong(String key){
+ try {
+ if (containsKey(key)) {
+ if(get(key)!=null && !"".equals(get(key)))
+ return Long.parseLong(getString(key));
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getLong is error:{}",e);
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @Title: getAsDouble
+ * @Description: 鑾峰彇Double鍊�
+ * @param key
+ * @return
+ */
+ public Double getDouble(String key){
+ try {
+ if (containsKey(key)) {
+ if(get(key)!=null && !"".equals(get(key)))
+ return Double.parseDouble(getString(key));
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getDouble is error:{}",e);
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @Title: getFloat
+ * @Description: 鑾峰彇Float鍊�
+ * @param key
+ * @return
+ */
+ public Float getFloat(String key){
+ try {
+ if (containsKey(key)) {
+ if(get(key)!=null && !"".equals(get(key)))
+ return Float.parseFloat(getString(key));
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getFloat is error:{}",e);
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @Title: getBoolean
+ * @Description: 鑾峰彇Boolean鍊�
+ * @param key
+ * @return
+ */
+ public Boolean getBoolean(String key){
+ try {
+ if (containsKey(key)) {
+ if(get(key)!=null && !"".equals(get(key)))
+ return Boolean.parseBoolean(getString(key));
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getBoolean is error:{}",e);
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @Title: getDate
+ * @Description: 鑾峰彇鏃ユ湡鍊�
+ * @param key
+ * @return
+ */
+ public Date getDate(String key){
+ try {
+ if (containsKey(key)) {
+ SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ if(get(key)!=null && !"".equals(get(key)))
+ return df.parse(get(key).toString());
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getDate is error:{}",e);
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @Title: getStringArray
+ * @Description: 鑾峰彇瀛楃涓叉暟缁�
+ * @param key
+ * @return
+ */
+ public String[] getArray(String key){
+ try {
+ if (containsKey(key)) {
+ if(get(key)==null && !"".equals(get(key))) return new String[0];
+ return get(key).toString().split(",");
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getStringArray is error:{}",e);
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+ /**
+ *
+ * @Title: getIntegerArray
+ * @Description: 鑾峰彇鏁村瀷鏁扮粍
+ * @param key
+ * @return
+ */
+ public Integer[] getIntegerArray(String key){
+ try {
+ if (containsKey(key)) {
+ String [] tmp = getArray(key);
+ if(tmp==null)return null;
+ Integer []tmpInt = new Integer[tmp.length];
+ int index = 0;
+ for(String s:tmp){
+ if(s==null||s.equals(""))continue;
+ tmpInt[index]=Integer.parseInt(s);
+ }
+ return tmpInt;
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getAsIntegerArray is error:{}",e);
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+ public Long[] getLongArray(String key) {
+ try {
+ if(containsKey(key)) {
+ String [] tmp = getArray(key);
+ if(tmp==null)return null;
+ Long [] tmpInt = new Long[tmp.length];
+ int index = 0;
+ for(String s:tmp){
+ if(s==null||s.equals(""))continue;
+ tmpInt[index]=Long.parseLong(s);
+ }
+ return tmpInt;
+ }
+ } catch (Exception e) {
+ log.error("ParamsMap getLongArray is error:{}",e);
+ e.printStackTrace();
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/ycl-platform/src/main/java/com/ycl/common/util/RandomNumberGenerator.java b/ycl-platform/src/main/java/com/ycl/common/util/RandomNumberGenerator.java
index c228537..d351cba 100644
--- a/ycl-platform/src/main/java/com/ycl/common/util/RandomNumberGenerator.java
+++ b/ycl-platform/src/main/java/com/ycl/common/util/RandomNumberGenerator.java
@@ -1,5 +1,7 @@
package com.ycl.common.util;
+import java.text.SimpleDateFormat;
+import java.util.Date;
import java.util.Random;
public class RandomNumberGenerator {
@@ -48,8 +50,6 @@
public static void main(String[] args) {
- for (int i = 0; i < 10; i++) {
- System.out.println(generateNumber(8));
- }
- }
+ System.out.println(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + generateNumber(6));
+ }
}
diff --git a/ycl-platform/src/main/java/com/ycl/common/util/RandomStringUtil.java b/ycl-platform/src/main/java/com/ycl/common/util/RandomStringUtil.java
index 513410a..eae8313 100644
--- a/ycl-platform/src/main/java/com/ycl/common/util/RandomStringUtil.java
+++ b/ycl-platform/src/main/java/com/ycl/common/util/RandomStringUtil.java
@@ -6,7 +6,11 @@
public static final String NUMBERS = "0123456789";
public static final String LOWER_CASE = "abcdefghijklmnopqrstuvwxyz";
public static final String CAPITAL = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ public static final String CAPITAL_NUM = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ public static final String CAPITAL_NUM_LOWER = "0123456789abcdefghijklmnopqrstuvwxyz";
public static final String ALL = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
+
/**
* 鐢熸垚鎸囧畾闀垮害鐨勯殢鏈哄瓧绗︿覆
@@ -26,6 +30,6 @@
}
public static void main(String[] args) {
- System.out.println(getRandomString(24, RandomStringUtil.ALL));
+ System.out.println(getRandomString(6, RandomStringUtil.NUMBERS));
}
}
diff --git a/ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java b/ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java
new file mode 100644
index 0000000..17429ba
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java
@@ -0,0 +1,259 @@
+package com.ycl.common.util;
+
+
+import java.lang.reflect.Field;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+public class UtilNumber {
+
+
+ public static String getCode(String type ,int n) {
+ String code = type + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())+RandomStringUtil.getRandomString(n,RandomStringUtil.ALL);
+ return code;
+ }
+ public static String getNumber(String type ,int n) {
+ String code = type + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date())+RandomNumberGenerator.generateNumber(n);
+ return code;
+ }
+ public static String getApplicationCode(String type ,int n) {
+ String code = type+getApplicationSecret(n);
+ return code;
+ }
+ public static String getApplicationSecret(int n) {
+ String code = RandomStringUtil.getRandomString(n,RandomStringUtil.CAPITAL_NUM_LOWER);
+ return code;
+ }
+ public static String getRqUID(String channel) {
+ // 6浣嶉殢鏈烘暟,鐢ㄤ簬鐢熸垚璁㈠崟鍙�
+
+ String rand1 = RandomNumberGenerator.generateNumber(4);
+ String rand2 = RandomNumberGenerator.generateNumber(6);
+
+ String rqUID = channel + DateUtils.getNowDate("yyyyMMdd")
+ + DateUtils.getNowDate("HHmmss") + rand1 + rand2;
+ return rqUID;
+ }
+ public static String getRqTradeNo(String channel) {
+ // 6浣嶉殢鏈烘暟,鐢ㄤ簬鐢熸垚浜ゆ槗鍙�
+ String rand2 = RandomNumberGenerator.generateNumber(6);
+ String rqUID = channel + DateUtils.getNowDate("yyyyMMdd")
+ + DateUtils.getNowDate("HHmmss") + rand2;
+ return rqUID;
+ }
+ public static String getSettleAccount(String memberId) {
+ // md5
+ String subStr = memberId.substring(memberId.length() - 12,
+ memberId.length());
+ String md5Str = Md5.md5(Md5.md5(subStr));
+// String rand1 = RandomNumberGenerator.generateNumber(4);
+// String rand2 = RandomNumberGenerator.generateNumber(6);
+ String merchantId = subStr + md5Str.substring(0, 3);
+ return merchantId;
+
+ }
+
+ public static String getShopQRCode(String memberId) {
+ // md5
+ String rand1 = RandomNumberGenerator.generateNumber(4);
+ String rand2 = RandomNumberGenerator.generateNumber(6);
+ String shopQRCode = Md5.md5(memberId.substring(0, 12) + rand1 + rand2);
+ return shopQRCode;
+
+ }
+
+ public static String getMsgId() {
+ String rand1 = RandomNumberGenerator.generateNumber(4);
+ String rand2 = RandomNumberGenerator.generateNumber(4);
+
+ String msgId = "merchant"
+ + DateUtils.getNowDate("yyyyMMdd")
+ + DateUtils.getNowDate("HHmmss") + rand1 + rand2;
+ return msgId;
+
+ }
+
+ public static String toSignStr(Object obj, Class<?> clazz) {
+ if (obj == null) {
+ return "";
+ }
+ List<String> listStr = new ArrayList<String>();
+
+ Field[] fields = clazz.getDeclaredFields();// 鏍规嵁Class瀵硅薄鑾峰緱灞炴�� 绉佹湁鐨勪篃鍙互鑾峰緱
+ try {
+ for (Field f : fields) {
+ f.setAccessible(true); // 璁剧疆浜涘睘鎬ф槸鍙互璁块棶鐨�
+ Object val = f.get(obj); // 寰楀埌姝ゅ睘鎬х殑鍊�
+ String name = f.getName(); // 寰楀埌姝ゅ睘鎬х殑鍚嶇О
+ if (!name.equals("sign") && CommonUtils.isNotEmpty(val)) {
+ listStr.add(name + "=" + val);
+ }
+ }
+
+ } catch (IllegalAccessException e) {
+ }
+ // 鑺傜偣闂翠互&绗﹁繛鎺ワ紝褰㈡垚鏈�缁堝緟绛惧悕瀛楃涓�
+ Collections.sort(listStr);
+ StringBuffer sb = new StringBuffer();
+ for (int i = 0; i < listStr.size(); i++) {
+ String msg = listStr.get(i);
+ if (i > 0) {
+ sb.append("&");
+ }
+ sb.append(msg);
+ }
+ return sb.toString();
+ }
+
+ /**
+ *
+ * 鍔熻兘鎻忚堪锛氬幓闄ゅ瓧绗︿覆棣栭儴涓�"0"瀛楃
+ *
+ * @param str
+ * 浼犲叆闇�瑕佽浆鎹㈢殑瀛楃涓�
+ * @return 杞崲鍚庣殑瀛楃涓�
+ */
+ public static String removeZero(String str) {
+ char ch;
+ String result = "";
+ if (str != null && str.trim().length() > 0
+ && !str.trim().equalsIgnoreCase("null")) {
+ try {
+ for (int i = 0; i < str.length(); i++) {
+ ch = str.charAt(i);
+ if (ch != '0') {
+ result = str.substring(i);
+ break;
+ }
+ }
+ } catch (Exception e) {
+ result = "";
+ }
+ } else {
+ result = "";
+ }
+ return result;
+
+ }
+
+ /**
+ *
+ * 鍔熻兘鎻忚堪锛氶噾棰濆瓧绗︿覆杞崲锛氬崟浣嶅垎杞垚鍗曞厓
+ *
+ * @param str
+ * 浼犲叆闇�瑕佽浆鎹㈢殑閲戦瀛楃涓�
+ * @return 杞崲鍚庣殑閲戦瀛楃涓�
+ */
+ public static String fenToYuan(Object o) {
+ if (o == null)
+ return "0.00";
+ String s = o.toString();
+ int len = -1;
+ StringBuilder sb = new StringBuilder();
+ if (s != null && s.trim().length() > 0 && !s.equalsIgnoreCase("null")) {
+ s = removeZero(s);
+ if (s != null && s.trim().length() > 0
+ && !s.equalsIgnoreCase("null")) {
+ len = s.length();
+ int tmp = s.indexOf("-");
+ if (tmp >= 0) {
+ if (len == 2) {
+ sb.append("-0.0").append(s.substring(1));
+ } else if (len == 3) {
+ sb.append("-0.").append(s.substring(1));
+ } else {
+ sb.append(s.substring(0, len - 2)).append(".")
+ .append(s.substring(len - 2));
+ }
+ } else {
+ if (len == 1) {
+ sb.append("0.0").append(s);
+ } else if (len == 2) {
+ sb.append("0.").append(s);
+ } else {
+ sb.append(s.substring(0, len - 2)).append(".")
+ .append(s.substring(len - 2));
+ }
+ }
+ } else {
+ sb.append("0.00");
+ }
+ } else {
+ sb.append("0.00");
+ }
+ return sb.toString();
+ }
+
+ /**
+ *
+ * 鍔熻兘鎻忚堪锛氶噾棰濆瓧绗︿覆杞崲锛氬崟浣嶅厓杞垚鍗曞垎
+ *
+ * @param str
+ * 浼犲叆闇�瑕佽浆鎹㈢殑閲戦瀛楃涓�
+ * @return 杞崲鍚庣殑閲戦瀛楃涓�
+ */
+ public static String yuanToFen(Object o) {
+ if (o == null)
+ return "0";
+ String s = o.toString();
+ int posIndex = -1;
+ String str = "";
+ StringBuilder sb = new StringBuilder();
+ if (s != null && s.trim().length() > 0 && !s.equalsIgnoreCase("null")) {
+ posIndex = s.indexOf(".");
+ if (posIndex > 0) {
+ int len = s.length();
+ if (len == posIndex + 1) {
+ str = s.substring(0, posIndex);
+ if (str == "0") {
+ str = "";
+ }
+ sb.append(str).append("00");
+ } else if (len == posIndex + 2) {
+ str = s.substring(0, posIndex);
+ if (str == "0") {
+ str = "";
+ }
+ sb.append(str)
+ .append(s.substring(posIndex + 1, posIndex + 2))
+ .append("0");
+ } else if (len == posIndex + 3) {
+ str = s.substring(0, posIndex);
+ if (str == "0") {
+ str = "";
+ }
+ sb.append(str).append(
+ s.substring(posIndex + 1, posIndex + 3));
+ } else {
+ str = s.substring(0, posIndex);
+ if (str == "0") {
+ str = "";
+ }
+ sb.append(str).append(
+ s.substring(posIndex + 1, posIndex + 3));
+ }
+ } else {
+ sb.append(s).append("00");
+ }
+ } else {
+ sb.append("0");
+ }
+ str = removeZero(sb.toString());
+ if (str != null && str.trim().length() > 0
+ && !str.trim().equalsIgnoreCase("null")) {
+ return str;
+ } else {
+ return "0";
+ }
+ }
+
+
+
+ public static void main(String[] args) {
+ System.out.println(getRqUID("1"));
+
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java b/ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java
index 08cdb03..82ae17b 100644
--- a/ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java
+++ b/ycl-platform/src/main/java/com/ycl/dto/message/MessageParam.java
@@ -26,7 +26,7 @@
/**
* 娑堟伅绫诲瀷
*/
- @ApiModelProperty(value = "娑堟伅绫诲瀷")
+ @ApiModelProperty(value = "娑堟伅绫诲瀷0-绔欏唴淇�1-閭欢2-鐭俊")
@NotNull(message = "娑堟伅绫诲瀷涓虹┖")
private Integer messageType;
/**
diff --git a/ycl-platform/src/main/java/com/ycl/entity/message/Message.java b/ycl-platform/src/main/java/com/ycl/entity/message/Message.java
index cd18772..703a1e3 100644
--- a/ycl-platform/src/main/java/com/ycl/entity/message/Message.java
+++ b/ycl-platform/src/main/java/com/ycl/entity/message/Message.java
@@ -49,7 +49,7 @@
* 娑堟伅绫诲瀷
*/
@TableField("message_type")
- @ApiModelProperty(value = "娑堟伅绫诲瀷")
+ @ApiModelProperty(value = "娑堟伅绫诲瀷0-绔欏唴淇�1-閭欢2-鐭俊")
@NotBlank(message = "娑堟伅绫诲瀷涓虹┖")
private Integer messageType;
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/Provider.java b/ycl-platform/src/main/java/com/ycl/service/message/Provider.java
new file mode 100644
index 0000000..ce68d15
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/message/Provider.java
@@ -0,0 +1,13 @@
+package com.ycl.service.message;
+
+/**
+ * <p>
+ * 绫昏鏄�
+ * </p>
+ *
+ * @author mg
+ * @since 2022-10-09
+ */
+public interface Provider {
+ public Sender produce();
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/Sender.java b/ycl-platform/src/main/java/com/ycl/service/message/Sender.java
new file mode 100644
index 0000000..7a20524
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/message/Sender.java
@@ -0,0 +1,16 @@
+package com.ycl.service.message;
+
+import com.ycl.dto.message.MessageParam;
+import com.ycl.entity.message.Message;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author mg
+ * @since 2022-10-09
+ */
+public interface Sender {
+ Message sendMessage(MessageParam messageParam);
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerFactory.java b/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerFactory.java
new file mode 100644
index 0000000..17c4f80
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerFactory.java
@@ -0,0 +1,19 @@
+package com.ycl.service.message.factory;
+
+import com.ycl.service.message.Provider;
+import com.ycl.service.message.Sender;
+
+/**
+ * <p>
+ * 鍐呴儴宸ュ巶
+ * </p>
+ *
+ * @author mg
+ * @since 2022-10-09
+ */
+public class InnerFactory implements Provider {
+ @Override
+ public Sender produce() {
+ return new InnerSender();
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java b/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java
new file mode 100644
index 0000000..09593e7
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/message/factory/InnerSender.java
@@ -0,0 +1,63 @@
+package com.ycl.service.message.factory;
+
+import com.ycl.common.util.UtilNumber;
+import com.ycl.dto.message.MessageParam;
+import com.ycl.entity.message.Message;
+import com.ycl.service.message.IMessageService;
+import com.ycl.service.message.Sender;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * <p>
+ * 鍐呯珯鍙戦�佸櫒
+ * </p>
+ *
+ * @author mg
+ * @since 2022-10-09
+ */
+@Component
+public class InnerSender implements Sender {
+
+
+
+ private static IMessageService iMessageService;
+ @Autowired
+ public void setIMessageService(IMessageService iMessageService) {
+ InnerSender.iMessageService = iMessageService;
+ }
+
+ @Override
+ public Message sendMessage(MessageParam messageParam) {
+ Message message = new Message();
+ List<Message> messages = new ArrayList<>();
+ String[] ids = messageParam.getTargetTo().split(",");
+ for (String id : ids) {
+ Message messageAdd = new Message();
+ BeanUtils.copyProperties(messageParam, messageAdd);
+ //璁剧疆鎺ユ敹鑰�
+ messageAdd.setTargetTo(id);
+ //鐢熸垚8浣嶉殢鏈烘暟娑堟伅缂栫爜
+ messageAdd.setMessageNumber(UtilNumber.getNumber("MC",6));
+ //鍙戦�佹椂闂�
+ messageAdd.setSendTime(new Date());
+ //鐢熸垚榛樿鍙傛暟
+ messageAdd.setCreateTime(new Date());
+ messageAdd.setUpdateTime(new Date());
+ messageAdd.setCreateUser(messageParam.getCreateUser());
+ messageAdd.setUpdateUser(messageParam.getCreateUser());
+ messageAdd.setIsView(0);
+ messageAdd.setVersion(0);
+ messages.add(messageAdd);
+ }
+ BeanUtils.copyProperties(messageParam, message);
+ //鎵归噺鏂板
+ iMessageService.saveBatch(messages);
+ return message;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/factory/MailFactory.java b/ycl-platform/src/main/java/com/ycl/service/message/factory/MailFactory.java
new file mode 100644
index 0000000..7ae6506
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/message/factory/MailFactory.java
@@ -0,0 +1,19 @@
+package com.ycl.service.message.factory;
+
+import com.ycl.service.message.Provider;
+import com.ycl.service.message.Sender;
+
+/**
+ * <p>
+ * 閭欢宸ュ巶
+ * </p>
+ *
+ * @author mg
+ * @since 2022-10-09
+ */
+public class MailFactory implements Provider {
+ @Override
+ public Sender produce() {
+ return new MailSender();
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java b/ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java
new file mode 100644
index 0000000..f0e17e5
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/message/factory/MailSender.java
@@ -0,0 +1,20 @@
+package com.ycl.service.message.factory;
+
+import com.ycl.dto.message.MessageParam;
+import com.ycl.entity.message.Message;
+import com.ycl.service.message.Sender;
+
+/**
+ * <p>
+ * 閭欢鍙戦�佸櫒
+ * </p>
+ *
+ * @author mg
+ * @since 2022-10-09
+ */
+public class MailSender implements Sender {
+ @Override
+ public Message sendMessage(MessageParam messageParam) {
+ return null;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/factory/SmsFactory.java b/ycl-platform/src/main/java/com/ycl/service/message/factory/SmsFactory.java
new file mode 100644
index 0000000..5a0711b
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/message/factory/SmsFactory.java
@@ -0,0 +1,19 @@
+package com.ycl.service.message.factory;
+
+import com.ycl.service.message.Provider;
+import com.ycl.service.message.Sender;
+
+/**
+ * <p>
+ * 绫昏鏄�
+ * </p>
+ *
+ * @author mg
+ * @since 2022-10-09
+ */
+public class SmsFactory implements Provider {
+ @Override
+ public Sender produce() {
+ return new SmsSender();
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/factory/SmsSender.java b/ycl-platform/src/main/java/com/ycl/service/message/factory/SmsSender.java
new file mode 100644
index 0000000..a44c8d0
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/service/message/factory/SmsSender.java
@@ -0,0 +1,20 @@
+package com.ycl.service.message.factory;
+
+import com.ycl.dto.message.MessageParam;
+import com.ycl.entity.message.Message;
+import com.ycl.service.message.Sender;
+
+/**
+ * <p>
+ * 鐭俊鍙戦�佸櫒
+ * </p>
+ *
+ * @author mg
+ * @since 2022-10-09
+ */
+public class SmsSender implements Sender {
+ @Override
+ public Message sendMessage(MessageParam messageParam) {
+ return null;
+ }
+}
diff --git a/ycl-platform/src/main/java/com/ycl/service/message/impl/IMessageServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/message/impl/IMessageServiceImpl.java
index f9ec3ab..fc5484d 100644
--- a/ycl-platform/src/main/java/com/ycl/service/message/impl/IMessageServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/message/impl/IMessageServiceImpl.java
@@ -1,15 +1,16 @@
package com.ycl.service.message.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.ycl.common.util.RandomNumberGenerator;
import com.ycl.dto.message.MessageParam;
import com.ycl.entity.message.Message;
import com.ycl.mapper.message.MessageMapper;
import com.ycl.service.message.IMessageService;
-import org.springframework.beans.BeanUtils;
+import com.ycl.service.message.Provider;
+import com.ycl.service.message.Sender;
+import com.ycl.service.message.factory.InnerFactory;
+import com.ycl.service.message.factory.MailFactory;
+import com.ycl.service.message.factory.SmsFactory;
import org.springframework.stereotype.Service;
-
-import java.util.Date;
/**
* <p>
@@ -22,19 +23,28 @@
@Service
public class IMessageServiceImpl extends ServiceImpl<MessageMapper, Message> implements IMessageService {
@Override
- public Message sendMessage(MessageParam mssageParam) {
- Message message = new Message();
- BeanUtils.copyProperties(mssageParam, message);
- //鐢熸垚8浣嶉殢鏈烘暟娑堟伅缂栫爜
- String messageNumber = RandomNumberGenerator.generateNumber(8);
- StringBuilder sb = new StringBuilder("XX");
- sb.append(messageNumber);
- message.setMessageNumber(sb.toString());
- //鐢熸垚榛樿鍙傛暟
- message.setCreateTime(new Date());
- message.setUpdateTime(new Date());
- message.setIsView(0);
- baseMapper.insert(message);
+ public Message sendMessage(MessageParam messageParam) {
+ Message message = null;
+ Provider provider = null;
+ switch (messageParam.getMessageType())
+ {
+ //鍐呯珯鍙戦��
+ case 0:
+ provider = new InnerFactory();
+ break;
+ //閭欢鍙戦��
+ case 1:
+ provider = new MailFactory();
+ break;
+ //鐭俊鍙戦��
+ case 2:
+ provider = new SmsFactory();
+ break;
+ default:
+ System.out.println("鎶涘紓甯�");
+ }
+ Sender sender = provider.produce();
+ sender.sendMessage(messageParam);
return message;
}
}
--
Gitblit v1.8.0