From e5bf0d08d05f5c58224fe28cdf743a1bae88e3f0 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期四, 30 十一月 2023 16:48:55 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java |  317 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 317 insertions(+), 0 deletions(-)

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..cf3ee1f
--- /dev/null
+++ b/ycl-platform/src/main/java/com/ycl/common/util/UtilNumber.java
@@ -0,0 +1,317 @@
+package com.ycl.common.util;
+
+
+import com.ycl.mapper.common.GeneratedCodeMapper;
+import com.ycl.utils.common.RandomUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.lang.reflect.Field;
+import java.text.SimpleDateFormat;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+@Component
+public class UtilNumber {
+    private GeneratedCodeMapper generatedCodeMapper;
+
+    @Autowired
+    public void setGeneratedCodeMapper(GeneratedCodeMapper generatedCodeMapper) {
+        this.generatedCodeMapper = generatedCodeMapper;
+    }
+
+    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";
+        }
+    }
+
+    /**
+     * 鍒涘缓鍟嗛摵缂栧彿
+     * 搴楅摵缂栧彿锛氬勾鏈堟棩 + 搴忓彿  渚嬶細202210100001
+     *
+     * @param
+     * @return java.lang.String
+     * @author AI
+     * @date 2022-10-10 15:43
+     */
+    public String createShopCode() {
+        String ymd = getYMD();
+        Integer number = generatedCodeMapper.createNumber(ymd, "shop");
+        String numberStr = RandomUtils.formatSign(number, 4);
+        return getYMD() + numberStr;
+    }
+
+    /**
+     * 鍒涘缓妗堜欢缂栧彿
+     * 妗堜欢缂栧彿瑙勫垯锛氬勾浠� + 鍖哄幙缂栧彿 + 鏈堟棩 + 搴忓彿  渚嬶細202233112310100001
+     *
+     * @param
+     * @return java.lang.String
+     * @author AI
+     * @date 2022-10-10 15:43
+     */
+    public String createCaseCode() {
+        String ymd = getYMD();
+        double num = Math.random();
+        int myRandInt = (int)(num*100+1);
+//        Integer number = myRandInt;
+         Integer number = generatedCodeMapper.createNumber(ymd, "case");
+        String numberStr = RandomUtils.formatSign(number, 4);
+        String year = String.valueOf(LocalDateTime.now().getYear());
+        String areaCode = "331123";
+        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("MMdd");
+        String md = dtf2.format(LocalDateTime.now());
+        StringBuilder stringBuilder = new StringBuilder();
+        stringBuilder.append(year);
+        stringBuilder.append(areaCode);
+        stringBuilder.append(md);
+        stringBuilder.append(numberStr);
+        return stringBuilder.toString();
+    }
+
+    private static String getYMD() {
+        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyyMMdd");
+        return dtf2.format(LocalDateTime.now());
+    }
+
+    public static void main(String[] args) {
+
+    }
+}

--
Gitblit v1.8.0