parent
eac6deb84e
commit
4287429779
@ -0,0 +1,19 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
//加密
|
||||
export function encryption(data) {
|
||||
return request({
|
||||
url: '/openapi/md5/encryption',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
//解密
|
||||
export function decrypt(data) {
|
||||
return request({
|
||||
url: '/openapi/md5/decrypt',
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
package com.xjs.tools;
|
||||
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.log.annotation.Log;
|
||||
import com.ruoyi.common.security.annotation.RequiresLogin;
|
||||
import com.xjs.exception.BusinessException;
|
||||
import com.xjs.tools.domain.ToolMd5;
|
||||
import com.xjs.tools.service.ToolMd5Service;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.Size;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.xjs.consts.RegexConst.*;
|
||||
|
||||
/**
|
||||
* md5工具Controller
|
||||
*
|
||||
* @author xiejs
|
||||
* @since 2022-05-10
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("md5")
|
||||
@Api(tags = "业务模块-md5加解密")
|
||||
@Log4j2
|
||||
@Validated
|
||||
public class ToolMd5Controller {
|
||||
|
||||
@Autowired
|
||||
private ToolMd5Service toolMd5Service;
|
||||
|
||||
|
||||
@GetMapping("encryption")
|
||||
@ApiOperation("加密md5")
|
||||
@Log(title = "加密md5")
|
||||
@RequiresLogin
|
||||
public AjaxResult encryption(@NotBlank(message = "参数不能为空") @Size(max = 20, message = "长度不能大于 20 字符") String str) {
|
||||
ToolMd5 md5 = toolMd5Service.encryption(str);
|
||||
return AjaxResult.success(md5);
|
||||
}
|
||||
|
||||
|
||||
@GetMapping("decrypt")
|
||||
@ApiOperation("解密md5")
|
||||
@Log(title = "解密md5")
|
||||
@RequiresLogin
|
||||
public AjaxResult decrypt(@NotBlank(message = "参数不能为空") @Size(max = 32, message = "长度不能大于 32 字符") String str) {
|
||||
boolean md516Regex = Pattern.matches(MD5_16_REGEX, str);
|
||||
boolean md532Regex = Pattern.matches(MD5_32_REGEX, str);
|
||||
|
||||
if (!md516Regex && !md532Regex) {
|
||||
throw new BusinessException("请输入正确的md5");
|
||||
}
|
||||
|
||||
String value = toolMd5Service.decrypt(str);
|
||||
if (StringUtils.isEmpty(value)) {
|
||||
throw new BusinessException("解密未成功");
|
||||
}
|
||||
|
||||
return AjaxResult.success(value);
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
package com.xjs.tools.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.ruoyi.common.core.annotation.Excel;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* md5工具实体类
|
||||
*
|
||||
* @author xiejs
|
||||
* @since 2022-05-10
|
||||
*/
|
||||
@Data
|
||||
public class ToolMd5 implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 来源字符
|
||||
*/
|
||||
@Excel(name = "来源字符")
|
||||
private String source;
|
||||
|
||||
/**
|
||||
* 目标字符16位
|
||||
*/
|
||||
@Excel(name = "目标字符16位")
|
||||
private String target16;
|
||||
|
||||
/**
|
||||
* 目标字符32位
|
||||
*/
|
||||
@Excel(name = "目标字符32位")
|
||||
private String target32;
|
||||
|
||||
@Excel(name = "创建时间",dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.xjs.tools.mapper;
|
||||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.xjs.tools.domain.ToolMd5;
|
||||
|
||||
/**
|
||||
* md5工具mapper
|
||||
*
|
||||
* @author xiejs
|
||||
* @since 2022-05-10
|
||||
*/
|
||||
public interface ToolMd5Mapper extends BaseMapper<ToolMd5> {
|
||||
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package com.xjs.tools.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.xjs.tools.domain.ToolMd5;
|
||||
|
||||
/**
|
||||
* md5工具service接口
|
||||
* @author xiejs
|
||||
* @since 2022-05-10
|
||||
*/
|
||||
public interface ToolMd5Service extends IService<ToolMd5> {
|
||||
|
||||
/**
|
||||
* 加密md5
|
||||
* @param str 来源字符串
|
||||
* @return 16位和32位md5
|
||||
*/
|
||||
ToolMd5 encryption(String str);
|
||||
|
||||
/**
|
||||
* 解密md5
|
||||
* @param str md5
|
||||
* @return 解密的字符串
|
||||
*/
|
||||
String decrypt(String str);
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
package com.xjs.tools.service.impl;
|
||||
|
||||
import cn.hutool.crypto.digest.DigestUtil;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.xjs.tools.domain.ToolMd5;
|
||||
import com.xjs.tools.mapper.ToolMd5Mapper;
|
||||
import com.xjs.tools.service.ToolMd5Service;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* md5工具service实现
|
||||
* @author xiejs
|
||||
* @since 2022-05-10
|
||||
*/
|
||||
@Service
|
||||
public class ToolMd5ServiceImpl extends ServiceImpl<ToolMd5Mapper, ToolMd5> implements ToolMd5Service {
|
||||
|
||||
@Override
|
||||
public ToolMd5 encryption(String str) {
|
||||
String md5Hex32 = DigestUtil.md5Hex(str);
|
||||
String md5Hex16 = DigestUtil.md5Hex16(str);
|
||||
|
||||
ToolMd5 toolMd5 = new ToolMd5();
|
||||
toolMd5.setSource(str);
|
||||
toolMd5.setTarget16(md5Hex16);
|
||||
toolMd5.setTarget32(md5Hex32);
|
||||
|
||||
try {
|
||||
LambdaQueryWrapper<ToolMd5> wrapper = new LambdaQueryWrapper<ToolMd5>()
|
||||
.eq(ToolMd5::getTarget16, toolMd5.getTarget16())
|
||||
.eq(ToolMd5::getTarget32, toolMd5.getTarget32());
|
||||
|
||||
ToolMd5 one = super.getOne(wrapper, false);
|
||||
if (Objects.isNull(one)) {
|
||||
super.save(toolMd5);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
return toolMd5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String decrypt(String str) {
|
||||
str = str.toLowerCase();
|
||||
|
||||
LambdaQueryWrapper<ToolMd5> wrapper = new LambdaQueryWrapper<ToolMd5>()
|
||||
.eq(ToolMd5::getTarget32, str)
|
||||
.or()
|
||||
.eq(ToolMd5::getTarget16, str);
|
||||
|
||||
ToolMd5 one = super.getOne(wrapper, false);
|
||||
|
||||
if (one != null) {
|
||||
return one.getSource();
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
@ -0,0 +1,75 @@
|
||||
package com.xjs.domain.todo;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.ruoyi.common.core.annotation.Excel;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 待办对象 todo_list
|
||||
*
|
||||
* @author xiejs
|
||||
* @since 2022-05-07
|
||||
*/
|
||||
@Data
|
||||
public class TodoList implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 待办内容
|
||||
*/
|
||||
@Excel(name = "待办内容")
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 颜色 #999999
|
||||
*/
|
||||
@Excel(name = "颜色 #999999")
|
||||
private String color;
|
||||
|
||||
/**
|
||||
* 排序
|
||||
*/
|
||||
@Excel(name = "排序")
|
||||
private Long sort;
|
||||
|
||||
/**
|
||||
* 截止时间
|
||||
*/
|
||||
@Excel(name = "截止时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 是否完成 1:完成 2:未完成
|
||||
*/
|
||||
@Excel(name = "是否完成", readConverterExp = " 1=完成,2=未完成")
|
||||
private Integer success;
|
||||
|
||||
/**
|
||||
* 待办类别id
|
||||
*/
|
||||
@Excel(name = "待办类别id")
|
||||
private Long categoryId;
|
||||
|
||||
/**
|
||||
* 创建者
|
||||
*/
|
||||
@Excel(name = "创建者")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
private Date createTime;
|
||||
|
||||
}
|
Loading…
Reference in new issue