静态页面写的 本地或者联网拿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;
}
});
}