|
@@ -1,5 +1,10 @@
|
1
|
1
|
package org.dromara.backstage.basics.service.impl;
|
2
|
2
|
|
|
3
|
+import cn.hutool.core.collection.CollectionUtil;
|
|
4
|
+import org.dromara.backstage.basics.domain.PtArea;
|
|
5
|
+import org.dromara.backstage.basics.domain.bo.PtAreaBo;
|
|
6
|
+import org.dromara.backstage.basics.domain.vo.PtAreaVo;
|
|
7
|
+import org.dromara.common.core.exception.ServiceException;
|
3
|
8
|
import org.dromara.common.core.utils.MapstructUtils;
|
4
|
9
|
import org.dromara.common.core.utils.StringUtils;
|
5
|
10
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
|
@@ -31,6 +36,8 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
31
|
36
|
|
32
|
37
|
private final PtCampusMapper baseMapper;
|
33
|
38
|
|
|
39
|
+ private final PtAreaServiceImpl areaService;
|
|
40
|
+
|
34
|
41
|
/**
|
35
|
42
|
* 查询校区信息
|
36
|
43
|
*
|
|
@@ -89,6 +96,22 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
89
|
96
|
boolean flag = baseMapper.insert(add) > 0;
|
90
|
97
|
if (flag) {
|
91
|
98
|
bo.setCampusId(add.getCampusId());
|
|
99
|
+ //校区作为学校的下一级数据,在创建校区时同步要在区域表中增加一条区域数据,区域Id就是校区Id,parent_id对应校区所属的school_id,区域类型固定为校区(见区域类型字典表)
|
|
100
|
+ // 一个租户就是一个学校,一个学校就是一个单位,区域的最大的父节点为学校,只会有一个,默认取一个即可
|
|
101
|
+ PtAreaBo ptArea = new PtAreaBo();
|
|
102
|
+ ptArea.setParentId(0L); // 根节点
|
|
103
|
+ ptArea.setAreaType("01"); //学校
|
|
104
|
+ List<PtAreaVo> ptAreaVos = areaService.queryList(ptArea);
|
|
105
|
+ if(ptAreaVos.size()>0){
|
|
106
|
+ PtAreaBo ptAreaBo = new PtAreaBo();
|
|
107
|
+ ptAreaBo.setAreaId(add.getCampusId());
|
|
108
|
+ ptAreaBo.setAreaName(add.getCampusName());
|
|
109
|
+ ptAreaBo.setAreaCode(ptAreaVos.get(0).getAreaCode()+"-"+add.getCampusCode());
|
|
110
|
+ ptAreaBo.setAncestors(0+","+add.getCampusId());
|
|
111
|
+ ptAreaBo.setAreaType("02");
|
|
112
|
+ areaService.insertByBo(ptAreaBo);
|
|
113
|
+ }
|
|
114
|
+
|
92
|
115
|
}
|
93
|
116
|
return flag;
|
94
|
117
|
}
|
|
@@ -110,7 +133,14 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
110
|
133
|
* 保存前的数据校验
|
111
|
134
|
*/
|
112
|
135
|
private void validEntityBeforeSave(PtCampus entity){
|
113
|
|
- //TODO 做一些数据校验,如唯一约束
|
|
136
|
+ LambdaQueryWrapper<PtCampus> queryWrapper = Wrappers.lambdaQuery();
|
|
137
|
+ queryWrapper.eq(PtCampus::getSchoolId, entity.getSchoolId());
|
|
138
|
+ queryWrapper.eq(PtCampus::getCampusName, entity.getCampusName());
|
|
139
|
+ queryWrapper.ne(entity.getCampusId() !=null, PtCampus::getCampusId, entity.getCampusId());
|
|
140
|
+ if(baseMapper.exists(queryWrapper)){
|
|
141
|
+ throw new ServiceException("校区名称已存在");
|
|
142
|
+ }
|
|
143
|
+
|
114
|
144
|
}
|
115
|
145
|
|
116
|
146
|
/**
|
|
@@ -123,7 +153,13 @@ public class PtCampusServiceImpl implements IPtCampusService {
|
123
|
153
|
@Override
|
124
|
154
|
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
|
125
|
155
|
if(isValid){
|
126
|
|
- //TODO 做一些业务上的校验,判断是否需要校验
|
|
156
|
+ //查询校区下是否有区域数据,有区域数据,不允许删除
|
|
157
|
+ for (Long id : ids) {
|
|
158
|
+ PtAreaVo ptAreaVo = areaService.queryById(id);
|
|
159
|
+ if(ptAreaVo!=null){
|
|
160
|
+ throw new ServiceException("该校区有区域数据,请先删除区域数据后再操作");
|
|
161
|
+ }
|
|
162
|
+ }
|
127
|
163
|
}
|
128
|
164
|
return baseMapper.deleteByIds(ids) > 0;
|
129
|
165
|
}
|