jiangping
2025-02-17 66ca3c7a1abce80143a3bd5c1e197aa020c396b6
server/services/src/main/java/com/doumee/core/constants/Constants.java
@@ -1,18 +1,19 @@
package com.doumee.core.constants;
import ch.qos.logback.core.util.COWArrayList;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.HttpServletRequest;
import java.awt.*;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.*;
import java.util.List;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -23,16 +24,50 @@
  public static final String FALSE = "f";
  public static final String TOKEN ="TOKEN" ;
    public static final String SYSTEM ="SYSTEM" ;
    public static final String DINGDING ="DINGDING" ;
    public static final String DINGDING_APPKEY ="DINGDING_APPKEY" ;
    public static final String DINGDING_CHATTOKEN ="DINGDING_CHATTOKEN" ;
    public static final String DINGDING_ROBOTCODE ="DINGDING_ROBOTCODE" ;
    public static final String DINGDING_SECRET ="DINGDING_SECRET" ;
    public static final String DINGDING_TOKEN ="DINGDING_TOKEN" ;
    public static final String MINI_PROGRAMME ="MINI_PROGRAMME" ;
    public static final String FREE_RENT_TIME ="FREE_RENT_TIME" ;
    public static final String ACCESS_TOKEN ="ACCESS_TOKEN" ;
    public static final String IMG_DIR = "IMG_DIR";
    public static final String FILE_DIR ="FILE_DIR" ;
    public static final String PRIVATE_KEY = "PRIVATE_KEY";
    public static final String PROJECT_FILE = "PROJECT_FILE";
    public static final String PROJECTS = "PROJECTS";
    public static final String FORCE_BACK_LOCK = "FORCE_BACK_LOCK";
    public static final String FORCE_BACK_SITE = "FORCE_BACK_SITE";
    //车辆类型数据
    public static final String  BIKE_TYPE ="0,1,2,3,4,5,6,7,8" ;
    public static final String MINI_PROGRAMME_REALEASE ="MINI_PROGRAMME_REALEASE" ;
    public static final int FOUR =4 ;
    public static String REDIS_DEBUG_STR="test_";
    public static final String AD = "AD";
    public static String REPAIR = "REPAIR";
    public static final String NOTICE_SITE_LINK_LIMIT="NOTICE_SITE_LINK_LIMIT";
    public  interface MqttTopic{
        //开锁
        String openLock = "OPENLOCK";
        //关闭锁头
        String closeLock = "CLOSELOCK";
        String topic_index = "device/lock/";
        //开锁(发布)
        String pub_openLock = "device/lock/{siteId}/{lockId}/unlock";
        //站点全量锁头数量信息
        String sub_siteInfo = "device/lock/+/siteInfo";
        //管理员刷卡记录上报
        String sub_adminCard = "device/lock/+/+/adminCard";
        //锁信息,在初始化、状态变更时会推送锁的完整状态(订阅)
        String sub_lockInfo = "device/lock/+/+/info";
        //还车锁头(订阅)
        String sub_closeLock = "device/lock/+/+/bike";
        String sub_health= "device/lock/+/health";
        String sub_brokers = "$SYS/brokers/+/clients/#";
        //实时获取锁信息(发布)
        String pub_getLockInfo = "device/lock/{siteId}/{lockId}/getInfo";
    }
    /**
@@ -44,6 +79,14 @@
        int all =2;
        int partful = 3;
  }
    public interface LockStatus{
      //  //状态,0闭合, 1打开,2运行中, 3异常 -1自检
        int closed =0;
        int open =1;
        int running =2;
        int error= 3;
        int checking= -1;
    }
    public interface goodsorderStatus{
        int waitPay =0;
        int pay =1;
@@ -55,13 +98,63 @@
        int waitPay =0;
        int pay =1;
    }
    public interface transactionsType{
        int deposit =0;
        int consumption =1;
    public enum TRANSACTIONS_TYPE{
      //交易类型 0租车押金 1结算实际消费 2结算退款 3平台退款"
        DEPOSIT(0,"租车押金", "租车押金"),
        int refund =2;
        int platformRefund = 3;
        CONSUMPTION(1,"订单消费结算", "订单消费结算"),
        REFUND(2,"结算退押金", "结算退押金"),
        PLATFORMREFUND(3,"平台退押金", "平台退押金")
        ;
        String name;
        Integer key;
        String info;
        TRANSACTIONS_TYPE(Integer key, String name, String info) {
            this.name = name;
            this.key = key;
            this.info = info;
        }
        public static TRANSACTIONS_TYPE get(int key) {
            TRANSACTIONS_TYPE[] values = TRANSACTIONS_TYPE.values();
            for (TRANSACTIONS_TYPE object : values) {
                if (object.key == key) {
                    return object;
                }
            }
            return null;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public Integer getKey() {
            return key;
        }
        public void setKey(Integer key) {
            this.key = key;
        }
        public String getInfo() {
            return info;
        }
        public void setInfo(String info) {
            this.info = info;
        }
    }
public static  String getUUID(){
      return UUID.randomUUID().toString().replace("-","");
@@ -95,6 +188,8 @@
        public static final String RENT_DEPOSIT = "RENT_DEPOSIT";
        //温馨提示
        public static final String TIPS = "TIPS";
        //温馨提示
        public static final String RENT_NOTICE = "RENT_NOTICE";
        //小程序停止服务提示
        public static final String STOP_SERVE_TIPS = "STOP_SERVE_TIPS";
        //小程序是否停止服务 0否 1是
@@ -107,6 +202,19 @@
        public static final String BUSINESS_STARTTIME = "BUSINESS_STARTTIME";
        //小程序每日服务结束时间
        public static final String BUSINESS_ENDTIME = "BUSINESS_ENDTIME";
        //钉钉通知地址
        public static final String DINGDING_URL = "DINGDING_URL";
        //钉钉签名
        public static void main(String[] args) {
            double[][] polygon = {{120, 30}, {121, 30}, {121, 31}, {120, 31}}; // 经纬度列表表示多边形顶点
            boolean isInside = isPointInPolygon(122.5, 30.5, polygon);
            System.out.println("Is inside: " + isInside);
        }
        //小程序满载预警(%)最大值
        public static final String WARN_MAX = "WARN_MAX";
        //小程序满载预警(%)最小值
        public static final String WARN_MIN = "WARN_MIN";
        public static final String FILES_DIR = "FILES_DIR";
@@ -121,6 +229,14 @@
                return 0;
            }
            return num;
        }
        public static Integer formatIntegerFromStr(String num) {
            try {
                return  Integer.parseInt(num);
            }catch (Exception e){
            }
            return null;
        }
        public interface UserActionsType {
@@ -236,13 +352,13 @@
    public enum REFUND_TYPE{
        // '退款类型 0用户结算退款 1平台自动结算退款 2强制结算退款 3结算后退款'
        NORMAL(  0,"用户结算退款",""),
        NORMAL(  0,"用户结算退款","结算退押金"),
        PLAT_AUTO( 1,"平台自动结算退款",""),
        PLAT_AUTO( 1,"平台自动结算退款","平台退押金"),
        PLAT_FORCE( 2,"强制结算退款",""),
        PLAT_FORCE( 2,"强制结算退款","平台退押金"),
        BACK( 3,"结算后退款",""),
        BACK( 3,"结算后退款","平台退款"),
        ;
        String name;
@@ -258,6 +374,15 @@
            this.info = info;
        }
        public static REFUND_TYPE get(int key) {
            REFUND_TYPE[] values = REFUND_TYPE.values();
            for (REFUND_TYPE object : values) {
                if (object.key == key) {
                    return object;
                }
            }
            return null;
        }
        public String getName() {
            return name;
        }
@@ -469,4 +594,23 @@
        }
        public static BigDecimal translateMoney(BigDecimal money){
            return  Constants.formatDecimalNum(money).divide(new BigDecimal(100), 2, BigDecimal.ROUND_UP);
        }
    public static boolean isPointInPolygon(double px, double py, double[]... polygon) {
        int i, j;
        boolean result = false;
        for (i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
            if ((polygon[i][1] > py) != (polygon[j][1] > py) &&
                    (px < (polygon[j][0] - polygon[i][0]) * (py - polygon[i][1]) / (polygon[j][1] - polygon[i][1]) + polygon[i][0])) {
                result = !result;
            }
        }
        return result;
    }
}