漏洞修改

This commit is contained in:
lSun 2025-11-14 10:07:41 +08:00
parent 9203c72e47
commit da92d52ab1
21 changed files with 190 additions and 126 deletions

View File

@ -32,7 +32,7 @@ public interface OwnerDao {
/*** 根据id查询信息* */ /*** 根据id查询信息* */
OwnerBean getOwnerById(String id); OwnerBean getOwnerById(String id);
int getOwnerByName(@Param("name") String name,@Param("ownerName") String ownerName,@Param("ownerPhone") String ownerPhone); int getOwnerByName(@Param("name") String name,@Param("ownerName") String ownerName,@Param("ownerPhone") String ownerPhone ,@Param("id") Integer id);
Integer importData(@Param("list") List<OwnerBean> list); Integer importData(@Param("list") List<OwnerBean> list);

View File

@ -37,4 +37,6 @@ public interface ProjectGeneralDao {
List<ProjectGeneralBean> getProList(@Param("params") Map<String, Object> params, @Param("offset") Integer offset, @Param("limit") Integer limit); List<ProjectGeneralBean> getProList(@Param("params") Map<String, Object> params, @Param("offset") Integer offset, @Param("limit") Integer limit);
ProjectGeneralBean getGeneralInfoByName(String name); ProjectGeneralBean getGeneralInfoByName(String name);
int getProjectGeneralCount(ProjectGeneralBean bean);
} }

View File

@ -32,7 +32,7 @@ public class OwnerServiceImpl implements OwnerService {
if (StringUtils.isEmpty(bean.getName())){ if (StringUtils.isEmpty(bean.getName())){
return R.fail(null,"添加失败,缺少业主单位名称"); return R.fail(null,"添加失败,缺少业主单位名称");
}else{ }else{
int dis = dao.getOwnerByName(bean.getName(),bean.getOwnerName(),bean.getOwnerPhone()); int dis = dao.getOwnerByName(bean.getName(),bean.getOwnerName(),bean.getOwnerPhone(),0);
if (dis > 0){ if (dis > 0){
System.out.println("添加失败,已存在重复的业主单位"); System.out.println("添加失败,已存在重复的业主单位");
return R.fail(null,"添加失败,已存在重复的业主单位"); return R.fail(null,"添加失败,已存在重复的业主单位");
@ -49,7 +49,7 @@ public class OwnerServiceImpl implements OwnerService {
if (StringUtils.isEmpty(bean.getName())){ if (StringUtils.isEmpty(bean.getName())){
return R.fail(null,"修改失败,缺少业主单位名称"); return R.fail(null,"修改失败,缺少业主单位名称");
}else{ }else{
int dis = dao.getOwnerByName(bean.getName(),bean.getOwnerName(),bean.getOwnerPhone()); int dis = dao.getOwnerByName(bean.getName(),bean.getOwnerName(),bean.getOwnerPhone(),bean.getId());
if (dis >= 1){ if (dis >= 1){
System.out.println("修改失败,已存在重复的业主单位"); System.out.println("修改失败,已存在重复的业主单位");
return R.fail(null,"修改失败,已存在重复的业主单位"); return R.fail(null,"修改失败,已存在重复的业主单位");
@ -83,7 +83,7 @@ public class OwnerServiceImpl implements OwnerService {
}else if(bean.getOwnerPhone()==null || bean.getOwnerPhone().length()<1){ }else if(bean.getOwnerPhone()==null || bean.getOwnerPhone().length()<1){
return "" + (i+1) + "行联系方式为空,导入失败"; return "" + (i+1) + "行联系方式为空,导入失败";
} }
int dis = dao.getOwnerByName(bean.getName(),bean.getOwnerName(),bean.getOwnerPhone()); int dis = dao.getOwnerByName(bean.getName(),bean.getOwnerName(),bean.getOwnerPhone(),0);
if (dis > 0){ if (dis > 0){
return "" + (i+1) + "行添加失败,已存在重复的业主单位,导入失败"; return "" + (i+1) + "行添加失败,已存在重复的业主单位,导入失败";
} }

View File

@ -91,7 +91,7 @@ public class ProjectFileServiceImpl implements ProjectFileService {
InetAddress inetAddress = InetAddress.getLocalHost(); InetAddress inetAddress = InetAddress.getLocalHost();
// 获取IP地址字符串 // 获取IP地址字符串
String ipAddress = inetAddress.getHostAddress(); String ipAddress = inetAddress.getHostAddress();
String url = "http://" + ipAddress + ":31911/bmw/"; String url = "http://" + ipAddress + ":39100/bmw/";
boolean fileIsActive = isUrlAccessible(url + fileBean.getFilePath()); boolean fileIsActive = isUrlAccessible(url + fileBean.getFilePath());
if(!fileIsActive){ if(!fileIsActive){
return Result.failure("文件不存在"); return Result.failure("文件不存在");

View File

@ -77,9 +77,14 @@ public class ProjectGeneralServiceImpl implements ProjectGeneralService {
* */ * */
@Override @Override
public R updateProjectGeneral(ProjectGeneralBean bean) { public R updateProjectGeneral(ProjectGeneralBean bean) {
int count = dao.getProjectGeneralCount(bean);
if(count > 0){
return R.fail("该总工程已存在");
}else{
int res = dao.updateProjectGeneral(bean); int res = dao.updateProjectGeneral(bean);
return res > 0 ? R.ok(null, "更新成功"):R.fail("更新失败"); return res > 0 ? R.ok(null, "更新成功"):R.fail("更新失败");
} }
}
/** /**
* 根据总工程id获取总工程 * 根据总工程id获取总工程
@ -94,9 +99,15 @@ public class ProjectGeneralServiceImpl implements ProjectGeneralService {
* */ * */
@Override @Override
public R addProjectGeneral(ProjectGeneralBean bean) { public R addProjectGeneral(ProjectGeneralBean bean) {
//先查询是否重复
int count = dao.getProjectGeneralCount(bean);
if(count > 0){
return R.fail("该总工程已存在");
}else{
int res = dao.addProjectGeneral(bean); int res = dao.addProjectGeneral(bean);
return res > 0 ? R.ok(null, "新增成功"):R.fail("新增失败"); return res > 0 ? R.ok(null, "新增成功"):R.fail("新增失败");
} }
}
/** /**
* 删除总工程 * 删除总工程
* */ * */

View File

@ -39,7 +39,7 @@ public class IntegratedQueryController {
@PostMapping("/getProQueryList") @PostMapping("/getProQueryList")
@Log(title = "工程查询-list查询", businessType = BusinessType.SELECT) @Log(title = "工程查询-list查询", businessType = BusinessType.SELECT)
@RequiresPermissions("sys:proQuery:query") // @RequiresPermissions("sys:proQuery:query")
public PageTableResponse getProQueryList(PageTableRequest request) { public PageTableResponse getProQueryList(PageTableRequest request) {
SelfPermissionSettingUtils.getSelfPermission(request); SelfPermissionSettingUtils.getSelfPermission(request);
@ -146,7 +146,7 @@ public class IntegratedQueryController {
@PostMapping("/getSubQueryList") @PostMapping("/getSubQueryList")
@Log(title = "分包查询-list查询", businessType = BusinessType.SELECT) @Log(title = "分包查询-list查询", businessType = BusinessType.SELECT)
@RequiresPermissions("sys:subQuery:query") // @RequiresPermissions("sys:subQuery:query")
public PageTableResponse getSubQueryList(PageTableRequest request) { public PageTableResponse getSubQueryList(PageTableRequest request) {
// if(request.getParams().get("companyId") == null){ // if(request.getParams().get("companyId") == null){
// String orgId = UserUtil.getLoginUser().getOrgId(); // String orgId = UserUtil.getLoginUser().getOrgId();
@ -247,7 +247,7 @@ public class IntegratedQueryController {
@Log(title = "红绿灯详情", businessType = BusinessType.UPDATE) @Log(title = "红绿灯详情", businessType = BusinessType.UPDATE)
@PostMapping("/getLightStatus") @PostMapping("/getLightStatus")
@RequiresPermissions("sys:person:query") // @RequiresPermissions("sys:person:query")
public R getLightStatus(LightStatusBean bean) { public R getLightStatus(LightStatusBean bean) {
LightStatusBean o = service.getLightStatus(bean); LightStatusBean o = service.getLightStatus(bean);
return R.ok(o); return R.ok(o);
@ -256,7 +256,7 @@ public class IntegratedQueryController {
@GetMapping("/exportData") @GetMapping("/exportData")
@ResponseBody @ResponseBody
@Log(title = "导出关注人员", businessType = BusinessType.EXPORT) @Log(title = "导出关注人员", businessType = BusinessType.EXPORT)
@RequiresPermissions("sys:person:export") // @RequiresPermissions("sys:person:export")
public void exportData(String param, HttpServletResponse response){ public void exportData(String param, HttpServletResponse response){
ProjectQueryBean entity = JSON.parseObject(param, ProjectQueryBean.class); ProjectQueryBean entity = JSON.parseObject(param, ProjectQueryBean.class);
service.exportPersonData(entity,response); service.exportPersonData(entity,response);
@ -425,7 +425,7 @@ public class IntegratedQueryController {
@GetMapping("/exportPunchCardWorkerData") @GetMapping("/exportPunchCardWorkerData")
@ResponseBody @ResponseBody
@Log(title = "导出打卡结果统计-人员详情", businessType = BusinessType.EXPORT) @Log(title = "导出打卡结果统计-人员详情", businessType = BusinessType.EXPORT)
@RequiresPermissions("sys:person:export") // @RequiresPermissions("sys:person:export")
public void exportPunchCardWorkerData(String param, HttpServletResponse response){ public void exportPunchCardWorkerData(String param, HttpServletResponse response){
PunchCardBean entity = JSON.parseObject(param, PunchCardBean.class); PunchCardBean entity = JSON.parseObject(param, PunchCardBean.class);
service.exportPunchCardWorkerData(entity,response); service.exportPunchCardWorkerData(entity,response);

View File

@ -107,7 +107,7 @@ public class PersonSettingServiceImpl implements PersonSettingService {
public R importData(MultipartFile file, String teamId, String subId) throws Exception { public R importData(MultipartFile file, String teamId, String subId) throws Exception {
ExcelUtil<TeamPersonBean> util = new ExcelUtil<>(TeamPersonBean.class); ExcelUtil<TeamPersonBean> util = new ExcelUtil<>(TeamPersonBean.class);
//读取文件到list //读取文件到list
List<TeamPersonBean> list = util.importExcelDoubleTitle(file.getInputStream(),0); List<TeamPersonBean> list = util.importExcel(file.getInputStream(),0);
// //
StringBuffer stringBuffer = new StringBuffer(); StringBuffer stringBuffer = new StringBuffer();
list.forEach(i -> { list.forEach(i -> {

View File

@ -96,5 +96,8 @@
and `name` = #{name} and `name` = #{name}
and owner_name = #{ownerName} and owner_name = #{ownerName}
and owner_phone = #{ownerPhone} and owner_phone = #{ownerPhone}
<if test="id != 0 and id != '0'">
and id != #{id}
</if>
</select> </select>
</mapper> </mapper>

View File

@ -67,6 +67,9 @@
<if test="params.proStatus!=null and params.proStatus!='' "> <if test="params.proStatus!=null and params.proStatus!='' ">
and bp.pro_status= #{params.proStatus} and bp.pro_status= #{params.proStatus}
</if> </if>
<if test="params.proGeneralId!=null and params.proGeneralId!='' ">
and bpg.id= #{params.proGeneralId}
</if>
GROUP BY GROUP BY
bp.id bp.id
limit #{offset}, #{limit} limit #{offset}, #{limit}
@ -92,6 +95,9 @@
<if test="params.proStatus!=null and params.proStatus!='' "> <if test="params.proStatus!=null and params.proStatus!='' ">
and bp.pro_status= #{params.proStatus} and bp.pro_status= #{params.proStatus}
</if> </if>
<if test="params.proGeneralId!=null and params.proGeneralId!='' ">
and bpg.id= #{params.proGeneralId}
</if>
GROUP BY GROUP BY
bp.id bp.id
) aa ) aa

View File

@ -111,4 +111,10 @@
<select id="getGeneralInfoByName" resultType="com.bonus.bmw.basic.entity.ProjectGeneralBean"> <select id="getGeneralInfoByName" resultType="com.bonus.bmw.basic.entity.ProjectGeneralBean">
select id as proGeneralId from bm_project_general where name = #{name} select id as proGeneralId from bm_project_general where name = #{name}
</select> </select>
<select id="getProjectGeneralCount" resultType="java.lang.Integer">
select count(1) from bm_project_general where is_active = '1' and name = #{proGeneralName}
<if test=" proGeneralId != null and proGeneralId != ''">
and id != #{proGeneralId}
</if>
</select>
</mapper> </mapper>

View File

@ -143,6 +143,9 @@ $(function () {
function addProject(formData) { function addProject(formData) {
var ownerDept = $("#ownerDept").val(); var ownerDept = $("#ownerDept").val();
var ownerName = $("#ownerName").val(); var ownerName = $("#ownerName").val();
var companyId = $("#companyId").val();
var twoComId = $("#twoComId").val();
if(ownerDept == '-1' || ownerDept == '') { if(ownerDept == '-1' || ownerDept == '') {
layer.msg("业主单位不能为空"); layer.msg("业主单位不能为空");
return; return;
@ -151,6 +154,12 @@ function addProject(formData) {
layer.msg("业主姓名不能为空"); layer.msg("业主姓名不能为空");
return; return;
} }
if (companyId == '' && twoComId == '' ) {
layer.msg('请选择组织/岗位');
return false; // 阻止提交
}
// 加载提示 // 加载提示
addLoadingMsg = top.layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']}); addLoadingMsg = top.layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']});
// form请求地址 // form请求地址
@ -185,6 +194,9 @@ function addProject(formData) {
function updateProject(formData) { function updateProject(formData) {
var ownerDept = $("#ownerDept").val(); var ownerDept = $("#ownerDept").val();
var ownerName = $("#ownerName").val(); var ownerName = $("#ownerName").val();
var companyId = $("#companyId").val();
var twoComId = $("#twoComId").val();
if(ownerDept == '-1' || ownerDept == '') { if(ownerDept == '-1' || ownerDept == '') {
layer.msg("业主单位不能为空"); layer.msg("业主单位不能为空");
return; return;
@ -193,6 +205,12 @@ function updateProject(formData) {
layer.msg("业主姓名不能为空"); layer.msg("业主姓名不能为空");
return; return;
} }
if (companyId == '' && twoComId == '' ) {
layer.msg('请选择组织/岗位');
return false; // 阻止提交
}
// 加载提示 // 加载提示
addLoadingMsg = top.layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']}); addLoadingMsg = top.layer.msg('数据上传中,请稍候...', {icon: 16, scrollbar: false, time: 0, shade: [0.8, '#393D49']});
// form请求地址 // form请求地址

View File

@ -116,7 +116,7 @@ function init() {
"render": function (data, type, row) { "render": function (data, type, row) {
var id = row['id']; var id = row['id'];
var html = ''; var html = '';
html += buttonDownload(id, "sys:basePerson:query", pers); // html += buttonDownload(id, "sys:basePerson:query", pers);
html += buttonDelete(id, "sys:basePerson:update", pers); html += buttonDelete(id, "sys:basePerson:update", pers);
return html; return html;
} }

View File

@ -36,7 +36,7 @@ function init() {
"url": ctxPath + "/projectFile/getList", "url": ctxPath + "/projectFile/getList",
"type": "get", "type": "get",
"data": function (d) { "data": function (d) {
d.orgId = $("#orgId").val(); d.proGeneralId = $("#orgId").val();
d.proId = $("#proId").val(); d.proId = $("#proId").val();
d.proStatus = $("#status").find("option:selected").val(); d.proStatus = $("#status").find("option:selected").val();
}, },

View File

@ -36,12 +36,16 @@ $(function () {
//新增 //新增
function addUser(formData) { function addUser(formData) {
//动态校验pro,sub //动态校验pro,sub
if(requirement == "pro" && $("#proId").val() == ""){ if(requirement == "pro" ){
if($("#proId").val() == ""){
layer.msg("请选择工程"); layer.msg("请选择工程");
return false; return false;
}else if(requirement == "sub" && $("#subId").val() == ""){ }
}else if(requirement == "sub" ){
if($("#subId").val() == ""){
layer.msg("请选择分包商"); layer.msg("请选择分包商");
return false; return false;
}
}else{ }else{
$("#proId").val(""); $("#proId").val("");
$("#subId").val(""); $("#subId").val("");
@ -77,12 +81,16 @@ function addUser(formData) {
//修改 //修改
function updateUser(formData) { function updateUser(formData) {
//动态校验pro,sub //动态校验pro,sub
if(requirement == "pro" && $("#proId").val() == ""){ if(requirement == "pro"){
if($("#proId").val() == ""){
layer.msg("请选择工程"); layer.msg("请选择工程");
return false; return false;
}else if(requirement == "sub" && $("#subId").val() == ""){ }
}else if(requirement == "sub"){
if($("#subId").val() == ""){
layer.msg("请选择分包商"); layer.msg("请选择分包商");
return false; return false;
}
}else{ }else{
$("#proId").val(""); $("#proId").val("");
$("#subId").val(""); $("#subId").val("");

View File

@ -37,7 +37,7 @@ function init() {
}, },
success: function (data) { success: function (data) {
console.log("data:", data) console.log("data:", data)
if (data.code == 200) {
//安规培训 safetyTraining //安规培训 safetyTraining
if (data.data.companyExamFilePath == null || data.data.companyExamFilePath == "") { if (data.data.companyExamFilePath == null || data.data.companyExamFilePath == "") {
$('#safetyTrainTitle').text('!') $('#safetyTrainTitle').text('!')
@ -45,6 +45,7 @@ function init() {
$('#safetyTraining').addClass('noPass2') $('#safetyTraining').addClass('noPass2')
$('#safetyTrainContent').addClass('noPass3') $('#safetyTrainContent').addClass('noPass3')
} }
//保命教育实操培训 practicalTraining //保命教育实操培训 practicalTraining
if (data.data.deptExamFilePath == null || data.data.deptExamFilePath == "") { if (data.data.deptExamFilePath == null || data.data.deptExamFilePath == "") {
$('#practicalTrainTitle').text('!') $('#practicalTrainTitle').text('!')
@ -52,6 +53,7 @@ function init() {
$('#practicalTraining').addClass('noPass2') $('#practicalTraining').addClass('noPass2')
$('#practicalTrainContent').addClass('noPass3') $('#practicalTrainContent').addClass('noPass3')
} }
//保命教育理论培训 theoryTraining //保命教育理论培训 theoryTraining
if (data.data.teamExamFilePath == null || data.data.teamExamFilePath == "") { if (data.data.teamExamFilePath == null || data.data.teamExamFilePath == "") {
$('#theoryTrainTitle').text('!') $('#theoryTrainTitle').text('!')
@ -59,6 +61,7 @@ function init() {
$('#theoryTrain').addClass('noPass2') $('#theoryTrain').addClass('noPass2')
$('#theoryTrainContent').addClass('noPass3') $('#theoryTrainContent').addClass('noPass3')
} }
//安规成绩 safetyScore //安规成绩 safetyScore
if (data.data.companyExamScore == null || data.data.companyExamScore == "" || Number(data.data.companyExamScore) < 80) { if (data.data.companyExamScore == null || data.data.companyExamScore == "" || Number(data.data.companyExamScore) < 80) {
$('#safetyScoreTitle').text('!') $('#safetyScoreTitle').text('!')
@ -120,6 +123,9 @@ function init() {
$('#wageCardRes').text('未完成') $('#wageCardRes').text('未完成')
$('#wageCardRes').addClass('noPass1') $('#wageCardRes').addClass('noPass1')
} }
}else{
layer.msg(data.msg , {icon: 16, scrollbar: false});
}
}, },
error: function (XMLHttpRequest, textStatus, e) { error: function (XMLHttpRequest, textStatus, e) {
layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false}); layer.msg('数据请求发生异常,请稍后重试', {icon: 16, scrollbar: false});

View File

@ -255,9 +255,11 @@ function addPageAllCheck(data) {
//跨页选择保存 //跨页选择保存
function doSave() { function doSave() {
if( checkList.length == 0){
layer.msg("请选择人员");
return false;
}
// layer.msg(JSON.stringify(checkList)); // layer.msg(JSON.stringify(checkList));
let formUrl = ctxPath + "/personSetting"; let formUrl = ctxPath + "/personSetting";
$.ajax({ $.ajax({
type: 'PUT', type: 'PUT',

View File

@ -97,7 +97,7 @@ function init() {
return c; return c;
} }
}, },
{ /*{
"data": "", "data": "",
"defaultContent": "", "defaultContent": "",
"orderable": false, "orderable": false,
@ -115,7 +115,7 @@ function init() {
} }
return html; return html;
}, width: "10%" }, width: "10%"
}, },*/
{"data": "name", "defaultContent": ""}, {"data": "name", "defaultContent": ""},
{"data": "idNumber", "defaultContent": ""}, {"data": "idNumber", "defaultContent": ""},
{"data": "postName", "defaultContent": ""}, {"data": "postName", "defaultContent": ""},

View File

@ -205,7 +205,8 @@ function init() {
var c = meta.settings._iDisplayStart + meta.row + 1; var c = meta.settings._iDisplayStart + meta.row + 1;
return c; return c;
} }
}, { },
/*{
"data": "", "data": "",
"defaultContent": "", "defaultContent": "",
"orderable": false, "orderable": false,
@ -229,7 +230,7 @@ function init() {
} }
return html; return html;
}, width: "10%" }, width: "10%"
}, },*/
{"data": "name", "defaultContent": ""}, {"data": "name", "defaultContent": ""},
{"data": "idNumber", "defaultContent": ""}, {"data": "idNumber", "defaultContent": ""},
{"data": "postName", "defaultContent": ""}, {"data": "postName", "defaultContent": ""},

View File

@ -41,7 +41,7 @@
</tr> </tr>
<tr> <tr>
<th>序号</th> <th>序号</th>
<th>是否固定人员</th> <!-- <th>是否固定人员</th>-->
<th>姓名</th> <th>姓名</th>
<th>身份证</th> <th>身份证</th>
<th>工种</th> <th>工种</th>

View File

@ -29,11 +29,11 @@
<button id="searchBt" class="layui-btn layui-btn-sm"> <button id="searchBt" class="layui-btn layui-btn-sm">
<i class="layui-icon">&#xe615;</i>搜索 <i class="layui-icon">&#xe615;</i>搜索
</button> </button>
<button onclick="btnAddWorker(1)" class="layui-btn layui-btn-sm" style="background-color: orange"> <!-- <button onclick="btnAddWorker(1)" class="layui-btn layui-btn-sm" style="background-color: orange">-->
添加核心人员 <!-- 添加核心人员-->
</button> <!-- </button>-->
<button onclick="btnAddWorker(0)" class="layui-btn layui-btn-sm" style="background-color: #6b6bef"> <button onclick="btnAddWorker(0)" class="layui-btn layui-btn-sm" style="background-color: #6b6bef">
添加普通人员 添加人员
</button> </button>
<button onclick="removeTeam()" class="layui-btn layui-btn-sm" style="background-color: mediumspringgreen"> <button onclick="removeTeam()" class="layui-btn layui-btn-sm" style="background-color: mediumspringgreen">
批量移出班组 批量移出班组
@ -52,7 +52,7 @@
<th width="3%"><input type="checkbox" id="customCheck" class="checkAll"> <th width="3%"><input type="checkbox" id="customCheck" class="checkAll">
<label for="customCheck" class="text-center"></label></th> <label for="customCheck" class="text-center"></label></th>
<th>序号</th> <th>序号</th>
<th>是否固定人员</th> <!-- <th>是否固定人员</th>-->
<th>姓名</th> <th>姓名</th>
<th>身份证</th> <th>身份证</th>
<th>工种</th> <th>工种</th>

View File

@ -5,6 +5,7 @@
4.file的FFmpeg路径修改 4.file的FFmpeg路径修改
5.PersonComprehensiveController 中的 downloads 方法修改一下“获取操作系统类型并确定基础路径” 5.PersonComprehensiveController 中的 downloads 方法修改一下“获取操作系统类型并确定基础路径”
6.各个服务的yml文件修改端口号 6.各个服务的yml文件修改端口号
7.修改 ProjectFileServiceImpl 中checkFileIsActive的上传文件路径
================================================================ ================================================================
正式环境需要修改推送同一平台的的地址 UnifiedPlatformConfig.java - 已取消,其他文件和合并了 正式环境需要修改推送同一平台的的地址 UnifiedPlatformConfig.java - 已取消,其他文件和合并了
正式环境需要查询计划数据地址 PlanDataConfig.java - 已取消 正式环境需要查询计划数据地址 PlanDataConfig.java - 已取消