添加微信登录获取信息接口
This commit is contained in:
parent
ad522cd293
commit
1e9648225b
|
@ -57,6 +57,11 @@ public class H5ApiAdvisoryInfoController extends JeecgController<NuBizAdvisoryIn
|
||||||
return Result.OK(nuBizAdvisoryInfo);
|
return Result.OK(nuBizAdvisoryInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取是否有注册信息
|
||||||
|
* @param openId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
@GetMapping(value = "/queryByOpenId")
|
@GetMapping(value = "/queryByOpenId")
|
||||||
public Result<NuBizAdvisoryInfo> queryByOpenId(@RequestParam(name="openId",required=true) String openId) {
|
public Result<NuBizAdvisoryInfo> queryByOpenId(@RequestParam(name="openId",required=true) String openId) {
|
||||||
QueryWrapper<NuBizAdvisoryInfo> queryWrapper = new QueryWrapper<>();
|
QueryWrapper<NuBizAdvisoryInfo> queryWrapper = new QueryWrapper<>();
|
||||||
|
@ -97,4 +102,17 @@ public class H5ApiAdvisoryInfoController extends JeecgController<NuBizAdvisoryIn
|
||||||
}
|
}
|
||||||
return Result.OK(nuBizAdvisoryInfo);
|
return Result.OK(nuBizAdvisoryInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取微信信息
|
||||||
|
* @param openId
|
||||||
|
* @param wechatName
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@GetMapping(value = "/queryWeixinInfo")
|
||||||
|
public Result<NuBizAdvisoryInfo> queryByOpenId(@RequestParam(name="openId",required=true) String openId,@RequestParam(name="wechatName",required=true) String wechatName) {
|
||||||
|
NuBizAdvisoryInfo nuBizAdvisoryInfo = nuBizAdvisoryInfoService.queryWeixinInfo(openId,wechatName);
|
||||||
|
return Result.OK(nuBizAdvisoryInfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,4 +11,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
*/
|
*/
|
||||||
public interface INuBizAdvisoryInfoService extends IService<NuBizAdvisoryInfo> {
|
public interface INuBizAdvisoryInfoService extends IService<NuBizAdvisoryInfo> {
|
||||||
|
|
||||||
|
NuBizAdvisoryInfo queryWeixinInfo(String openId, String wechatName);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package com.nu.modules.NuBizAdvisoryInfo.service.impl;
|
package com.nu.modules.NuBizAdvisoryInfo.service.impl;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.nu.modules.NuBizAdvisoryInfo.entity.NuBizAdvisoryInfo;
|
import com.nu.modules.NuBizAdvisoryInfo.entity.NuBizAdvisoryInfo;
|
||||||
import com.nu.modules.NuBizAdvisoryInfo.mapper.NuBizAdvisoryInfoMapper;
|
import com.nu.modules.NuBizAdvisoryInfo.mapper.NuBizAdvisoryInfoMapper;
|
||||||
import com.nu.modules.NuBizAdvisoryInfo.service.INuBizAdvisoryInfoService;
|
import com.nu.modules.NuBizAdvisoryInfo.service.INuBizAdvisoryInfoService;
|
||||||
|
@ -16,4 +17,19 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
@Service
|
@Service
|
||||||
public class NuBizAdvisoryInfoServiceImpl extends ServiceImpl<NuBizAdvisoryInfoMapper, NuBizAdvisoryInfo> implements INuBizAdvisoryInfoService {
|
public class NuBizAdvisoryInfoServiceImpl extends ServiceImpl<NuBizAdvisoryInfoMapper, NuBizAdvisoryInfo> implements INuBizAdvisoryInfoService {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public NuBizAdvisoryInfo queryWeixinInfo(String openId, String wechatName) {
|
||||||
|
QueryWrapper<NuBizAdvisoryInfo> queryWrapper = new QueryWrapper<>();
|
||||||
|
queryWrapper.eq("open_id",openId);
|
||||||
|
queryWrapper.eq("wechat_name",wechatName);
|
||||||
|
NuBizAdvisoryInfo nuBizAdvisoryInfo = baseMapper.selectOne(queryWrapper);
|
||||||
|
//查询是否有微信注册信息,没有则创建
|
||||||
|
if(nuBizAdvisoryInfo==null) {
|
||||||
|
nuBizAdvisoryInfo = new NuBizAdvisoryInfo();
|
||||||
|
nuBizAdvisoryInfo.setOpenId(openId);
|
||||||
|
nuBizAdvisoryInfo.setWechatName(wechatName);
|
||||||
|
baseMapper.insert(nuBizAdvisoryInfo);
|
||||||
|
}
|
||||||
|
return nuBizAdvisoryInfo;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,154 @@
|
||||||
|
package com.nu.modules.weixin.controller;
|
||||||
|
|
||||||
|
import com.alibaba.cloud.commons.lang.StringUtils;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.nu.modules.appversionconfig.entity.AppVersionConfig;
|
||||||
|
import com.nu.modules.appversionconfig.service.IAppVersionConfigService;
|
||||||
|
import com.nu.modules.weixin.utils.SignUtil;
|
||||||
|
import io.swagger.annotations.Api;
|
||||||
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.jeecg.common.api.vo.Result;
|
||||||
|
import org.jeecg.common.aspect.annotation.AutoLog;
|
||||||
|
import org.jeecg.common.system.base.controller.JeecgController;
|
||||||
|
import org.jeecg.common.system.query.QueryGenerator;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Map;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.ui.Model;
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
|
import org.springframework.web.client.RestTemplate;
|
||||||
|
|
||||||
|
import com.fasterxml.jackson.databind.JsonNode;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
@RequestMapping("/weixin")
|
||||||
|
@Slf4j
|
||||||
|
public class WeixinController {
|
||||||
|
@Value("${wechat.appId}")
|
||||||
|
private String appId;
|
||||||
|
|
||||||
|
|
||||||
|
@Value("${wechat.appSecret:}")
|
||||||
|
private String appSecret;
|
||||||
|
|
||||||
|
// RestTemplate 用于发送 HTTP 请求
|
||||||
|
private final RestTemplate restTemplate;
|
||||||
|
|
||||||
|
public WeixinController(RestTemplate restTemplate) {
|
||||||
|
this.restTemplate = restTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @description 微信公众号服务器配置校验token
|
||||||
|
* @author: liyinlong
|
||||||
|
* @date 2019-05-09 9:38
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@ApiOperation("微信公众号服务器配置校验token")
|
||||||
|
@RequestMapping("/checkToken")
|
||||||
|
public void checkToken(HttpServletRequest request,HttpServletResponse response){
|
||||||
|
//token验证代码段
|
||||||
|
try{
|
||||||
|
log.info("请求已到达,开始校验token");
|
||||||
|
if (StringUtils.isNotBlank(request.getParameter("signature"))) {
|
||||||
|
String signature = request.getParameter("signature");
|
||||||
|
String timestamp = request.getParameter("timestamp");
|
||||||
|
String nonce = request.getParameter("nonce");
|
||||||
|
String echostr = request.getParameter("echostr");
|
||||||
|
log.info("signature[{}], timestamp[{}], nonce[{}], echostr[{}]", signature, timestamp, nonce, echostr);
|
||||||
|
if (SignUtil.checkSignature(signature, timestamp, nonce)) {
|
||||||
|
log.info("数据源为微信后台,将echostr[{}]返回!", echostr);
|
||||||
|
response.getOutputStream().println(echostr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch (IOException e){
|
||||||
|
log.error("校验出错");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@GetMapping("/auth/callback")
|
||||||
|
public String wxCallback(String code) {
|
||||||
|
// 1. 用code换token
|
||||||
|
// 2. 获取用户信息 return
|
||||||
|
return "redirect:https://www.focusnu.com/wechat/thd/#/pages/index/callback";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@GetMapping("/wechat/callback")
|
||||||
|
public JsonNode callback(@RequestParam("code") String code, Model model) {
|
||||||
|
String tokenUrl = String.format(
|
||||||
|
"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code",
|
||||||
|
appId, appSecret, code
|
||||||
|
);
|
||||||
|
System.out.println(tokenUrl);
|
||||||
|
|
||||||
|
RestTemplate restTemplate = new RestTemplate();
|
||||||
|
System.out.println("-------------------11111111111111111----------");
|
||||||
|
String tokenResponse = restTemplate.getForObject(tokenUrl, String.class);
|
||||||
|
System.out.println("-------------------22222222222222222----------"+tokenResponse);
|
||||||
|
|
||||||
|
JsonNode retJson = null;
|
||||||
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
try {
|
||||||
|
System.out.println("-------------------33333333333333----------");
|
||||||
|
JsonNode tokenNode = objectMapper.readTree(tokenResponse);
|
||||||
|
System.out.println("-------------------444444444444444----------"+tokenNode);
|
||||||
|
String accessToken = tokenNode.get("access_token").asText();
|
||||||
|
System.out.println("-------------------55555555555555----------"+accessToken);
|
||||||
|
String openId = tokenNode.get("openid").asText();
|
||||||
|
System.out.println("-------------------666666666666666----------"+openId);
|
||||||
|
|
||||||
|
String userInfoUrl = String.format(
|
||||||
|
"https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN",
|
||||||
|
accessToken, openId
|
||||||
|
);
|
||||||
|
System.out.println("-------------------777777777777777----------"+userInfoUrl);
|
||||||
|
|
||||||
|
String userInfoResponse = restTemplate.getForObject(userInfoUrl, String.class);
|
||||||
|
System.out.println("-------------------888888888888888----------"+userInfoResponse);
|
||||||
|
JsonNode userInfoNode = objectMapper.readTree(userInfoResponse);
|
||||||
|
System.out.println("-------------------999999999999999----------"+userInfoNode);
|
||||||
|
|
||||||
|
model.addAttribute("openid", openId);
|
||||||
|
System.out.println("-------------------999999999999999----------"+openId);
|
||||||
|
model.addAttribute("nickname", userInfoNode.get("nickname").asText());
|
||||||
|
model.addAttribute("headimgurl", userInfoNode.get("headimgurl").asText());
|
||||||
|
model.addAttribute("code", code);
|
||||||
|
retJson = userInfoNode;
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
model.addAttribute("openid", "Error parsing JSON response");
|
||||||
|
}
|
||||||
|
|
||||||
|
return retJson;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
package com.nu.modules.weixin.utils;
|
||||||
|
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
import java.security.NoSuchAlgorithmException;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
public class SignUtil {
|
||||||
|
private static String token = "Blxc20250520";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 校验签名
|
||||||
|
* @param signature 签名
|
||||||
|
* @param timestamp 时间戳
|
||||||
|
* @param nonce 随机数
|
||||||
|
* @return 布尔值
|
||||||
|
*/
|
||||||
|
public static boolean checkSignature(String signature,String timestamp,String nonce){
|
||||||
|
String checktext = null;
|
||||||
|
if (null != signature) {
|
||||||
|
//对ToKen,timestamp,nonce 按字典排序
|
||||||
|
String[] paramArr = new String[]{token,timestamp,nonce};
|
||||||
|
Arrays.sort(paramArr);
|
||||||
|
//将排序后的结果拼成一个字符串
|
||||||
|
String content = paramArr[0].concat(paramArr[1]).concat(paramArr[2]);
|
||||||
|
|
||||||
|
try {
|
||||||
|
MessageDigest md = MessageDigest.getInstance("SHA-1");
|
||||||
|
//对接后的字符串进行sha1加密
|
||||||
|
byte[] digest = md.digest(content.toString().getBytes());
|
||||||
|
checktext = byteToStr(digest);
|
||||||
|
} catch (NoSuchAlgorithmException e){
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//将加密后的字符串与signature进行对比
|
||||||
|
return checktext !=null ? checktext.equals(signature.toUpperCase()) : false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将字节数组转化我16进制字符串
|
||||||
|
* @param byteArrays 字符数组
|
||||||
|
* @return 字符串
|
||||||
|
*/
|
||||||
|
private static String byteToStr(byte[] byteArrays){
|
||||||
|
String str = "";
|
||||||
|
for (int i = 0; i < byteArrays.length; i++) {
|
||||||
|
str += byteToHexStr(byteArrays[i]);
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将字节转化为十六进制字符串
|
||||||
|
* @param myByte 字节
|
||||||
|
* @return 字符串
|
||||||
|
*/
|
||||||
|
private static String byteToHexStr(byte myByte) {
|
||||||
|
char[] Digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
|
||||||
|
char[] tampArr = new char[2];
|
||||||
|
tampArr[0] = Digit[(myByte >>> 4) & 0X0F];
|
||||||
|
tampArr[1] = Digit[myByte & 0X0F];
|
||||||
|
String str = new String(tampArr);
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -108,6 +108,7 @@ public class ShiroConfig {
|
||||||
filterChainDefinitionMap.put("/sys/dict/getDictItems/**", "anon");//获取字典数据
|
filterChainDefinitionMap.put("/sys/dict/getDictItems/**", "anon");//获取字典数据
|
||||||
filterChainDefinitionMap.put("/sys/sysDepart/queryInstitutionsList", "anon");//授权接口排除
|
filterChainDefinitionMap.put("/sys/sysDepart/queryInstitutionsList", "anon");//授权接口排除
|
||||||
filterChainDefinitionMap.put("/h5Api/nuBizAdvisoryInfo/**", "anon"); //授权接口排除
|
filterChainDefinitionMap.put("/h5Api/nuBizAdvisoryInfo/**", "anon"); //授权接口排除
|
||||||
|
filterChainDefinitionMap.put("/weixin/**", "anon"); //授权接口排除
|
||||||
|
|
||||||
|
|
||||||
filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码
|
filterChainDefinitionMap.put("/sys/getLoginQrcode/**", "anon"); //登录二维码
|
||||||
|
|
|
@ -703,6 +703,7 @@ public class SysDepartController {
|
||||||
map.put("id",depart.getId());
|
map.put("id",depart.getId());
|
||||||
map.put("departName",depart.getDepartName());
|
map.put("departName",depart.getDepartName());
|
||||||
map.put("serverUrl",depart.getServerUrl());
|
map.put("serverUrl",depart.getServerUrl());
|
||||||
|
map.put("picUrl",depart.getPicUrl());
|
||||||
result.add(map);
|
result.add(map);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
@ -724,4 +725,5 @@ public class SysDepartController {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,6 +116,8 @@ public class SysDepart implements Serializable {
|
||||||
|
|
||||||
/**各机构服务器后台接口地址*/
|
/**各机构服务器后台接口地址*/
|
||||||
private String serverUrl;
|
private String serverUrl;
|
||||||
|
/**各机构服务器后台接口地址*/
|
||||||
|
private String picUrl;
|
||||||
|
|
||||||
//update-begin---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增字段负责人ids和旧的负责人ids
|
//update-begin---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增字段负责人ids和旧的负责人ids
|
||||||
/**部门负责人的ids*/
|
/**部门负责人的ids*/
|
||||||
|
|
|
@ -87,6 +87,8 @@ public class SysDepartTreeModel implements Serializable{
|
||||||
|
|
||||||
private Date updateTime;
|
private Date updateTime;
|
||||||
|
|
||||||
|
private String picUrl;
|
||||||
|
|
||||||
//update-begin---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增字段部门负责人ids
|
//update-begin---author:wangshuai ---date:20200308 for:[JTC-119]在部门管理菜单下设置部门负责人,新增字段部门负责人ids
|
||||||
/**部门负责人ids*/
|
/**部门负责人ids*/
|
||||||
private String directorUserIds;
|
private String directorUserIds;
|
||||||
|
@ -130,6 +132,7 @@ public class SysDepartTreeModel implements Serializable{
|
||||||
this.updateBy = sysDepart.getUpdateBy();
|
this.updateBy = sysDepart.getUpdateBy();
|
||||||
this.updateTime = sysDepart.getUpdateTime();
|
this.updateTime = sysDepart.getUpdateTime();
|
||||||
this.directorUserIds = sysDepart.getDirectorUserIds();
|
this.directorUserIds = sysDepart.getDirectorUserIds();
|
||||||
|
this.picUrl = sysDepart.getPicUrl();
|
||||||
if(0 == sysDepart.getIzLeaf()){
|
if(0 == sysDepart.getIzLeaf()){
|
||||||
this.isLeaf = false;
|
this.isLeaf = false;
|
||||||
}else{
|
}else{
|
||||||
|
@ -408,6 +411,14 @@ public class SysDepartTreeModel implements Serializable{
|
||||||
this.directorUserIds = directorUserIds;
|
this.directorUserIds = directorUserIds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getPicUrl() {
|
||||||
|
return picUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPicUrl(String picUrl) {
|
||||||
|
this.picUrl = picUrl;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重写equals方法
|
* 重写equals方法
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -361,3 +361,9 @@ justauth:
|
||||||
type: default
|
type: default
|
||||||
prefix: 'demo::'
|
prefix: 'demo::'
|
||||||
timeout: 1h
|
timeout: 1h
|
||||||
|
|
||||||
|
# 微信
|
||||||
|
wechat:
|
||||||
|
appId: wx8fc3e4305d2fbf0b
|
||||||
|
appSecret: 3bf3dd4ec72f591432db6b28c2c044e5
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
server:
|
server:
|
||||||
port: 8082
|
port: 8080
|
||||||
tomcat:
|
tomcat:
|
||||||
max-swallow-size: -1
|
max-swallow-size: -1
|
||||||
error:
|
error:
|
||||||
|
@ -7,7 +7,7 @@ server:
|
||||||
include-stacktrace: ALWAYS
|
include-stacktrace: ALWAYS
|
||||||
include-message: ALWAYS
|
include-message: ALWAYS
|
||||||
servlet:
|
servlet:
|
||||||
context-path: /nursing-unit-nacos
|
context-path: /nursing-unit
|
||||||
compression:
|
compression:
|
||||||
enabled: true
|
enabled: true
|
||||||
min-response-size: 1024
|
min-response-size: 1024
|
||||||
|
@ -360,3 +360,8 @@ justauth:
|
||||||
type: default
|
type: default
|
||||||
prefix: 'demo::'
|
prefix: 'demo::'
|
||||||
timeout: 1h
|
timeout: 1h
|
||||||
|
|
||||||
|
# 微信
|
||||||
|
wechat:
|
||||||
|
appId: wx8fc3e4305d2fbf0b
|
||||||
|
appSecret: 3bf3dd4ec72f591432db6b28c2c044e5
|
4
pom.xml
4
pom.xml
|
@ -454,7 +454,7 @@
|
||||||
<id>dev</id>
|
<id>dev</id>
|
||||||
<activation>
|
<activation>
|
||||||
<!--默认激活配置-->
|
<!--默认激活配置-->
|
||||||
<activeByDefault>true</activeByDefault>
|
<activeByDefault>false</activeByDefault>
|
||||||
</activation>
|
</activation>
|
||||||
<properties>
|
<properties>
|
||||||
<!--当前环境-->
|
<!--当前环境-->
|
||||||
|
@ -466,7 +466,7 @@
|
||||||
<id>uat</id>
|
<id>uat</id>
|
||||||
<activation>
|
<activation>
|
||||||
<!--默认激活配置-->
|
<!--默认激活配置-->
|
||||||
<activeByDefault>false</activeByDefault>
|
<activeByDefault>true</activeByDefault>
|
||||||
</activation>
|
</activation>
|
||||||
<properties>
|
<properties>
|
||||||
<!--当前环境-->
|
<!--当前环境-->
|
||||||
|
|
Loading…
Reference in New Issue