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