一、设计第三方应用信息表
package com.szsz.core.domain;
import com.szsz.common.annotation.Excel;
import com.szsz.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
/**
* 第三方应用信息对象 bus_third_app
*
* @author szsz
* @date 2025-04-25
*/
@ApiModel("第三方应用信息")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class BusThirdApp extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 第三方key */
private String appKey;
/** 第三方密钥 */
@Excel(name = "第三方密钥")
@ApiModelProperty("第三方密钥")
private String appSecret;
/** 第三方名称 */
@Excel(name = "第三方名称")
@ApiModelProperty("第三方名称")
private String appName;
/** 帐号状态(0正常 1停用) */
@Excel(name = "帐号状态", readConverterExp = "0=正常,1=停用")
@ApiModelProperty("帐号状态")
private String status;
@Override
public String toString() {
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
.append("appKey", getAppKey())
.append("appSecret", getAppSecret())
.append("appName", getAppName())
.append("createTime", getCreateTime())
.append("status", getStatus())
.toString();
}
}
示例、
二、具体实现如下:
package com.szsz.web.controller.core;
import com.szsz.common.core.domain.AjaxResult;
import com.szsz.common.utils.ServletUtils;
import com.szsz.common.utils.sign.Md5Utils;
import com.szsz.core.domain.BusThirdApp;
import com.szsz.core.service.IBusThirdAppService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author szsz
* @description
* @date 2025/4/29
*/
@RestController
@RequestMapping("/core/thirdApp")
@Api(tags = "三方接口")
public class BusThirdAppController {
@Autowired
private IBusThirdAppService thirdAppService;
@GetMapping(value = "/test")
public AjaxResult test()
{
checkSign();
return AjaxResult.success();
}
private void checkSign() {
String appKey = ServletUtils.getRequest().getHeader("appKey");
String sign = ServletUtils.getRequest().getHeader("sign");
BusThirdApp thirdApp = thirdAppService.selectBusThirdAppByAppKey(appKey);
if(thirdApp!=null){
if("0".equals(thirdApp.getStatus())){
String secret = thirdApp.getAppSecret();
if (!sign.equals(Md5Utils.hash(thirdApp.getAppKey() + secret))) {
throw new RuntimeException("签名校验错误");
}
}else {
//停用
throw new RuntimeException("权限已停用");
}
}else {
throw new RuntimeException("key不存在");
}
}
}