package com.sinata.rest.modular.system.controller.common;
|
|
import com.sinata.common.enums.EnumAppSetKey;
|
import com.sinata.common.enums.EnumMemberGrade;
|
import com.sinata.common.enums.EnumUserBankDetailDoneType;
|
import com.sinata.common.enums.EnumUserBankDetailType;
|
import com.sinata.common.enums.mall.EnumMallGoodsState;
|
import com.sinata.common.enums.mall.EnumMallOrderState;
|
import com.sinata.rest.common.ApiUtils;
|
import com.sinata.rest.config.properties.JwtProperties;
|
import com.sinata.rest.config.properties.RestProperties;
|
import com.sinata.rest.core.util.MD5Util;
|
import com.sinata.rest.modular.auth.converter.BaseTransferEntity;
|
import com.sinata.rest.modular.auth.security.impl.Base64SecurityAction;
|
import com.sinata.rest.modular.auth.util.JwtTokenUtil;
|
import com.sinata.rest.modular.system.controller.common.vo.ApiVo;
|
import io.swagger.annotations.Api;
|
import io.swagger.annotations.ApiImplicitParam;
|
import io.swagger.annotations.ApiImplicitParams;
|
import io.swagger.annotations.ApiOperation;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.util.StringUtils;
|
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import javax.annotation.Resource;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
/**
|
* API接口
|
*/
|
@Slf4j
|
@RestController
|
@RequestMapping("/api")
|
@Api(tags="API通用接口", description = "通用接口")
|
public class ApiController {
|
|
@Autowired
|
private RestProperties restProperties;
|
|
@Autowired
|
private JwtProperties jwtProperties;
|
|
@Resource
|
private JwtTokenUtil jwtTokenUtil;
|
|
/**
|
* Swagger接口文档是否开启(true或false)
|
*/
|
@Value("${rest.swagger-open}")
|
private boolean swaggerOpen;
|
|
@RequestMapping(value = "/queryEnum", method = RequestMethod.GET)
|
@ApiOperation(value = "枚举字典", notes = "枚举字典")
|
public Object queryEnum() {
|
List<Object> list = new ArrayList<>();
|
|
list.add("——————————————————————————————————————————");
|
list.add("【APP设置ID】");
|
for (EnumAppSetKey e : EnumAppSetKey.values()) {
|
list.add(e + "【" + e.index + "," + e.mark + "】");
|
}
|
list.add("——————————————————————————————————————————");
|
|
list.add("——————————————————————————————————————————");
|
list.add("【用户等级】");
|
for (EnumMemberGrade e : EnumMemberGrade.values()) {
|
list.add(e + "【" + e.index + "," + e.mark + "】");
|
}
|
list.add("——————————————————————————————————————————");
|
|
list.add("——————————————————————————————————————————");
|
list.add("【商品状态】");
|
for (EnumMallGoodsState e : EnumMallGoodsState.values()) {
|
list.add(e + "【" + e.index + "," + e.mark + "】");
|
}
|
list.add("——————————————————————————————————————————");
|
|
list.add("——————————————————————————————————————————");
|
list.add("【商品订单状态】");
|
for (EnumMallOrderState e : EnumMallOrderState.values()) {
|
list.add(e + "【" + e.index + "," + e.mark + "】");
|
}
|
list.add("——————————————————————————————————————————");
|
|
list.add("——————————————————————————————————————————");
|
list.add("【用户账户详细-类型】");
|
for (EnumUserBankDetailType e : EnumUserBankDetailType.values()) {
|
list.add(e + "【" + e.index + "," + e.mark + "】");
|
}
|
list.add("——————————————————————————————————————————");
|
|
list.add("——————————————————————————————————————————");
|
list.add("【用户账户详细-触发类型】");
|
for (EnumUserBankDetailDoneType e : EnumUserBankDetailDoneType.values()) {
|
list.add(e + "【" + e.index + "," + e.mark + "】");
|
}
|
list.add("——————————————————————————————————————————");
|
|
return list;
|
}
|
|
@RequestMapping(value = "/querySet", method = RequestMethod.GET)
|
@ApiOperation(value = "查询是否开启鉴权/签名,跳过鉴权的请求", notes = "鉴权/签名配置", response = ApiVo.class)
|
public Object querySet() {
|
ApiVo vo = new ApiVo();
|
vo.setSignOpen(restProperties.isSignOpen());
|
vo.setAuthOpen(restProperties.isAuthOpen());
|
vo.setAuthPath(jwtProperties.getAuthPath());
|
|
return ApiUtils.returnOK(vo);
|
}
|
|
@GetMapping(value = "/auth")
|
@ApiOperation(value = "测试-认证", notes = "测试-认证")
|
@ApiImplicitParams({
|
@ApiImplicitParam(name = "userId", value = "用户ID", defaultValue = "1", dataType = "Int", paramType = "query", required = true),
|
@ApiImplicitParam(name = "jsonString", value = "请求参数实体转Json字符串", dataType = "String", paramType = "query"),
|
})
|
public Object auth(Integer userId, String jsonString) {
|
// Swagger接口文档是否开启,false上线模式禁止访问
|
if(!swaggerOpen) {
|
return null;
|
}
|
// 测试用户ID
|
String uuid = userId == null ? "1" : userId.toString();
|
|
// 获取混淆MD5签名用的随机字符串
|
final String randomKey = jwtTokenUtil.getRandomKey();
|
// 获取Token
|
final String token = jwtTokenUtil.generateToken(uuid, randomKey);
|
|
// 封装用户登录认证信息
|
Map<String, Object> map = new HashMap<>(4);
|
map.put("id", uuid);
|
map.put("randomKey", randomKey);
|
map.put("token", "Bearer " + token);
|
|
|
// 模拟POST请求参数
|
if (!StringUtils.isEmpty(jsonString)) {
|
// 2、对Json字符串(请求参数)进行Base64加密
|
String encode = new Base64SecurityAction().doAction(jsonString);
|
// 3、Base64加密后的Json字符串(请求参数) + 随机字符串,进行Md5加密
|
String md5 = MD5Util.encrypt(encode + randomKey);
|
|
BaseTransferEntity baseTransferEntity = new BaseTransferEntity();
|
// Json字符串(请求参数)进行Base64加密,实体字符串
|
baseTransferEntity.setObject(encode);
|
// Base64加密后的Json字符串(请求参数) + 随机字符串,进行Md5加密,签名字符串
|
baseTransferEntity.setSign(md5);
|
map.put("body", baseTransferEntity);
|
}
|
return map;
|
}
|
}
|