纯前端小工具1.0

静态页面写的 本地或者联网拿js和css ,vue,eui

大小写转换(有时候要写枚举值的时候)

类字段变json(没有用apifox同步时候,用json去生成数据模型)

mybatisplus生成代码换注释(mybatisplusHelper生成的代码,写实体类时候,懒得一个个去写)

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="../../jscss/vue.js"></script>
    <script src="../../jscss/eui.js"></script>
    <script src="../../jscss/axios.js"></script>
    <script src="../../jscss/my/myCommon.js"></script>
    <title>杂</title>
    <link rel="stylesheet" href="../../jscss/eui.css">
</head>
<body>
<div id="app">
    <el-descriptions title="" :column="1" border>
        <el-descriptions-item label="大小写变换" >
            <el-row>
                <el-col :span="12"> <el-input  v-model="strCaseConversionStr"/></el-col>
                <el-col :span="12"> <el-button @click="getStrCaseConversion(strCaseConversionStr,'upper')">转大写</el-button>
                    <el-button @click="getStrCaseConversion(strCaseConversionStr,'lower')">转小写</el-button>
                </el-col>
            </el-row>
        </el-descriptions-item>
    </el-descriptions>
    <br>
    <el-descriptions title="" :column="1" border>
        <el-descriptions-item label="java2ApiFoxJson" >
            <el-row>
                <el-col :span="20">
                    <el-input type="textarea"  v-model="java2JsonStr"/>
                </el-col>
                <el-col :span="4">
                    <el-button @click="getJava2Json()">转换</el-button>
                </el-col>
            </el-row>
        </el-descriptions-item>
        <el-descriptions-item label="java2ApiFoxJson结果" >
            <el-input type="textarea"  v-model="java2JsonRspStr"/>
        </el-descriptions-item>
    </el-descriptions>
    <br>
    <el-descriptions title="" :column="1" border>
        <el-descriptions-item label="MybatisPlusBaseConversion" >
            <el-row>
                <el-col :span="20">
                    <el-input type="textarea"  v-model="mybatisPlusBaseConversionStr"/>
                </el-col>
                <el-col :span="4">
                    <el-button @click="getMybatisPlusBaseConversion()">转换</el-button>
                </el-col>
            </el-row>
        </el-descriptions-item>
        <el-descriptions-item label="MybatisPlusBaseConversion结果" >
            <el-input type="textarea"  v-model="mybatisPlusBaseConversionRspStr"/>
        </el-descriptions-item>
    </el-descriptions>
</div>
</body>
<!-- import Vue before Element -->
<script>
    let appUrl
    let vm_data={
        strCaseConversionStr:'',
        java2JsonStr: '',
        java2JsonRspStr:'',
        mybatisPlusBaseConversionStr:'',
        mybatisPlusBaseConversionRspStr:'',
    };
    myVue= new Vue({
        el: '#app',
        data: vm_data,
        methods:{
            //StrCaseConversion
            getStrCaseConversion(str,type){
                let ref='';
                switch (type){
                    case 'upper':{ref=str.toUpperCase();break;}
                    case 'lower':{ref=str.toLowerCase();break;}
                }
                vm_data.strCaseConversionStr=ref
            },
            //Java2Json===============
            getJava2Json(){
                let strs=vm_data.java2JsonStr.split("\n")
                let apiModelPropertyValue=null;
                let fieldItems=[]
                for (let i = 0; i < strs.length ; i++) {
                    let str= strs[i]!=null?strs[i].trim():'';
                    if(str==''){continue;}
                    if(str.startsWith("@ApiModelProperty")){
                        apiModelPropertyValue=this.getApiModelPropertyValue(str)
                    }else if(!(str.startsWith('//')||str.startsWith('@'))){
                        let fieldItem= this.getFieldItem(str,apiModelPropertyValue)
                        if(fieldItem!=null){
                            fieldItems.push(fieldItem);
                        }
                    }
                }
                //组装
                let jsonStr='{\n';
                for (let i = 0; i < fieldItems.length; i++) {
                    let fieldItem=  fieldItems[i];
                    let fieldValue=this.getFieldRandomValueStr(fieldItem);
                    jsonStr+="'"+fieldItem.fieldName+"':"+fieldValue+",//"+fieldItem.apiModelPropertyValue+"\n"
                }
                jsonStr+='}\n'
                vm_data.java2JsonRspStr=jsonStr
            },
            getFieldRandomValueStr(fieldItem){
                let fieldType=fieldItem.fieldType;
                switch (fieldType){
                    case 'String':{
                        let fieldName= fieldItem.fieldName.toLowerCase()
                        if(fieldName.includes('email')){
                            return "'"+this.generateRandomEmail()+"'";
                        }
                        if(fieldName.includes('phone')||fieldName.includes('mobile')){
                            return "'"+this.generateRandomPhoneNumber()+"'";
                        }
                        return "'"+crypto.randomUUID()+"'";
                        break;}
                    case 'Integer':{return myGetRandomNDigitNumberInt(myGetRandomInt(1,5));break;}
                    case 'LocalDateTime':{return "'"+formatDate(new Date(), 'yyyy-MM-dd HH:mm:ss')+"'";break;}
                    case 'LocalDate':{ return "'"+formatDate(new Date(), 'yyyy-MM-dd')+"'";break;}
                }
            },
            generateRandomEmail() {
                const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
                let username = '';
                for (let i = 0; i < 8; i++) { // 用户名长度可以调整
                    const randomIndex = Math.floor(Math.random() * characters.length);
                    username += characters[randomIndex];
                }
                const domains = ['gmail.com', 'yahoo.com', 'outlook.com', 'hotmail.com']; // 可以添加更多域名
                const randomDomainIndex = Math.floor(Math.random() * domains.length);
                const domain = domains[randomDomainIndex];
                return `${username}@${domain}`;
            },
            generateRandomPhoneNumber() {
                const prefix = '1'; // 中国手机号码以1开头
                const secondDigit = String(Math.floor(Math.random() * 7) + 3); // 第二位是3-9中的任意一个
                let remainingDigits = '';
                for (let i = 0; i < 9; i++) { // 剩余9位数字
                    remainingDigits += Math.floor(Math.random() * 10);
                }
                return `${prefix}${secondDigit}${remainingDigits}`;
            },
            getFieldItem(str,apiModelPropertyValue){
                let strList= str.replace(";",'').split(" ");
                let refList=[];
                for (let i = 0; i < strList.length; i++) {
                    let strSplit=  strList[i]!=null?strList[i].trim():'';
                    if(strSplit==''){continue;}
                    refList.push(strSplit);
                }
                if(refList.length==3){
                    return {
                        fieldAuthority:refList[0],
                        fieldType:refList[1],
                        fieldName:refList[2],
                        apiModelPropertyValue:apiModelPropertyValue
                    };
                }
                return null;
            },
            getApiModelPropertyValue(str){
                const regex = /@ApiModelProperty\("(.*?)"\)/;
                const codeSnippet = str; // Replace this with your actual code snippet
                const match = codeSnippet.match(regex);
                if (match) {
                    return match[1];
                } else {
                    return "";
                }
            },
            getJava2JsonStr(){
                return "    @ApiModelProperty(\"届数\")\n" +
                    "    private Integer exhibitionSession;\n" +
                    "    @ApiModelProperty(\"联系人\")\n" +
                    "    private String contactMan;\n" +
                    "\n" +
                    "    @ApiModelProperty(\"联系邮箱\")\n" +
                    "    @JsonDeserialize(using = UpperCaseDeserializer.class)\n" +
                    "    private String contactEmail;\n" +
                    "\n" +
                    "    @ApiModelProperty(\"联系电话\")\n" +
                    "    private String contactPhone;\n" +
                    "\n" +
                    "    @ApiModelProperty(\"翻译开始日期\")\n" +
                    "    private LocalDate startDate;\n"+
                    "\n" +
                    "    @ApiModelProperty(\"约见时间\")\n" +
                    "    private LocalDateTime meetingDate;\n"
            },
            //MybatisPlusBaseConversion
            getMybatisPlusBaseConversion(){
                let fieldItems=[];
                let note='';//注释
             let strs= vm_data.mybatisPlusBaseConversionStr.trim().split("\n")
                for (let i = 0; i < strs.length; i++) {
                    let str=strs[i]!=null?strs[i].trim():'';
                    if(str==''){continue;}
                    if (str.startsWith("* ")){
                        console.log(str)
                       note=str.replace("* ","")
                    }
                    if(!(str.startsWith('/**')||str.startsWith('*/')||str.startsWith('*')||str.startsWith('@'))){
                           fieldItems.push({
                               fieldStr:str,
                               fieldNote:note
                           });
                    }
                }
                //组装
                let rspStr=''
                for (let i = 0; i < fieldItems.length; i++) {
                    let fieldItem=fieldItems[i]
                    rspStr+='@ApiModelProperty(\"'+fieldItem.fieldNote+'\")\n';
                    rspStr+=fieldItem.fieldStr+'\n';
                    rspStr+='\n';
                }
                vm_data.mybatisPlusBaseConversionRspStr=rspStr
            },
            getMybatisPlusBaseConversionStr(){
                return "  /**\n" +
                    "     * 主键\n" +
                    "     */\n" +
                    "    @TableId(value = \"common_dict_id\", type = IdType.ASSIGN_ID)\n" +
                    "    private String commonDictId;\n" +
                    "\n" +
                    "    /**\n" +
                    "     * 字典编码\n" +
                    "     */\n" +
                    "    @TableField(\"dict_code\")\n" +
                    "    private String dictCode;\n" +
                    "\n" +
                    "    /**\n" +
                    "     * 字典中文名称\n" +
                    "     */\n" +
                    "    @TableField(\"dict_name_cn\")\n" +
                    "    private String dictNameCn;";
            },
        },
        created:function (){
            vm_data.java2JsonStr=this.getJava2JsonStr();
            vm_data.mybatisPlusBaseConversionStr=this.getMybatisPlusBaseConversionStr()
        }
    })
</script>
</html>
let myVue
let appHost
function myPost(url,req,afterFun){
    getAppHost()
    axios.post(appHost+url,req)
        .then(resp=>{
            try{
                handError(resp)
                afterFun(resp.data.data)
            }catch (e) {
                msgError(e)
            }
        })
}

function myGet(url,afterFun){
    getAppHost()
    axios.get(appHost+url)
        .then(resp=>{
            try{
                handError(resp)
                afterFun(resp.data.data)
            }catch (e) {
                msgError(e)
            }
        })
}
function myQuickGet(url){
    getAppHost()
    axios.get(appHost+url)
        .then(resp=>{
            try{
          console.info(resp.data)
            }catch (e) {
                msgError(e)
            }
        })
}
function handError(resp){
    if(resp.data.code!=200){
        msgError(resp.data.msg)
    }
}

function getAppHost(){
    let hostname = window.location.hostname;
    // 获取端口号,注意如果没有指定端口号,则默认为空字符串
    let port = window.location.port;
    // 组合主机名和端口号
    let hostWithPort = hostname + (port ? ':' + port : '');
    appHost="http://"+hostWithPort
    // console.info(appHost)
}

function getUrlParams(key){
    // 创建一个URL对象
    let urlObject = new URL(window.location);
  let params = new URLSearchParams(urlObject.search);
   return  params.get(key);
}

function msgError(msg){
    myVue.$message({
        message: msg,
        type: 'error'
    });
}

function msgSuccess(msg){
    myVue.$message({
        message: msg,
        type: 'success'
    });
}

function removeByObj(array,Obj){
    array.splice(array.indexOf(Obj), 1);
}


/*
  在数组中找到数组对象某属性某值的第一个对象
 */
function getFirstOneFromArrayByObjField(array,objFieldName,objFieldValue){
    let refObj=null;
        for (let i = 0; i <array.length ; i++) {
            let obj = array[i]
            if (obj[objFieldName] === objFieldValue) {
                refObj = obj;
                break;
            }
        }
    return refObj;
}

/*
  在数组中找到数组对象某属性某值的第一个对象
 */
function sout(obj){
   console.info(obj)
}
function soutj(obj){
    console.info(JSON.stringify(obj))
}

/**
 * 获取随机值(权重)
 * @param array 随机获得的对象数组
 * @param weights 每个对象的权重
 */
function myGetRandomObjByWeight(array,weights) {
    if (array.length != weights.length) {
        msgError("获取随机值(权重),随机对象和权重数量不一致")
    }
    let totalWeight = 0;
    for (let i = 0; i < weights.length; i++) {
        totalWeight = totalWeight + ((typeof weights[i] === 'string')?parseInt(weights[i] ,10):weights[i]);
    }
    let magnification = 1000;
    totalWeight = totalWeight * magnification;
    let randomInt = myGetRandomInt(1, totalWeight);
    let endIndex = 0;
    for (let i = 0; i < array.length; i++) {
        endIndex = endIndex + weights[i] * magnification;
        if (randomInt <= endIndex) {
            return array[i];
        }
    }
}

function myGetRandomObjByAverage(array) {
    let randomInt = myGetRandomInt(0, array.length-1);
    return array[randomInt];
}


function myGetRandomInt(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

/**
 * 获取随机位数整数
 * @param n
 * @returns {number}
 */
function myGetRandomNDigitNumberInt(n) {
    if (n <= 0) return 0; // 如果n不是正整数,返回0或抛出错误(根据需求)
    const min = Math.pow(10, n - 1);
    const max = Math.pow(10, n) - 1;
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

function formatDate(date, formatString) {
    const daysOfWeek = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
    const monthsOfYear = [
        'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'
    ];

    const padZero = (num) => (num < 10 ? '0' : '') + num;

    return formatString.replace(/yyyy|MM|dd|HH|mm|ss|EEE|MMM/g, (match) => {
        switch (match) {
            case 'yyyy': return date.getFullYear();
            case 'MM': return padZero(date.getMonth() + 1);
            case 'dd': return padZero(date.getDate());
            case 'HH': return padZero(date.getHours());
            case 'mm': return padZero(date.getMinutes());
            case 'ss': return padZero(date.getSeconds());
            case 'EEE': return daysOfWeek[date.getDay()];
            case 'MMM': return monthsOfYear[date.getMonth()];
            default: return match;
        }
    });
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值