Commit fb09b100 by baochunxin

#G: 问题修复

parent 0c3b67fb
......@@ -13,7 +13,7 @@ spring:
url: jdbc:mysql://1.116.38.25:3986/dd_smart_school?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
username: root
password: qianhe2022
#二中
# #二中
# master:
# url: jdbc:mysql://10.20.100.201:3306/dd_smart_school?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
# username: root
......
......@@ -24,7 +24,8 @@ ruoyi:
server:
# 服务器的HTTP端口,默认为8080
# port: 8137
# port: 8849
#二中
# port: 11325
port: 8848
#学校内网PC端口
# port: 57321
......
......@@ -43,8 +43,8 @@ public class RyTask
}
//家校通讯录人员更新
public void updateLabUser(){
dingJiaXiaoController.updateLabUser();
public void updateLabUser()throws Exception{
dingJiaXiaoController.updateLabUser() ;
}
//钉钉通讯录更新
......
......@@ -151,6 +151,7 @@ public interface SysDeptMapper
* @return 部门信息集合
*/
public List<SysDept> selectGrade(SysDept dept);
public List<SysDept> selectConformDept(Long id);
/**
* 根据学年查询级部
......
......@@ -139,4 +139,5 @@ public interface ISysDeptService
* @return 部门信息集合
*/
public List<SysDept> selectGrade(SysDept dept);
public List<SysDept> selectConformDept(Long userId);
}
......@@ -375,6 +375,10 @@ public class SysDeptServiceImpl implements ISysDeptService
return deptMapper.getDeptdByUserId(userId);
}
public List<SysDept> selectConformDept(Long userId) {
return deptMapper.selectConformDept(userId);
}
/**
* 查询级部
* @param dept 部门信息
......
......@@ -50,7 +50,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectDeptGroupByUserId" parameterType="Long" resultType="Map">
SELECT d.dept_id as deptId,d.dept_name AS deptName,d.parent_id as parentId FROM sys_user u
LEFT JOIN sys_dd_user_dept ud on u.user_id = ud.user_id LEFT JOIN sys_dept d on ud.dept_id = d.dept_id
WHERE u.user_id = #{dept} AND d.del_flag = 0
WHERE u.user_id = #{userId} AND d.del_flag = 0
</select>
......@@ -212,6 +212,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE dept_name like concat('%', "级部", '%') AND parent_id = 100
</select>
<select id = "selectConformDept" parameterType="Long" resultMap="SysDeptResult">
SELECT d.* FROM sys_user u LEFT JOIN sys_user_dept ud on ud.user_id = u.user_id LEFT JOIN sys_dept d on ud.dept_id = d.dept_id WHERE u.user_id = #{id}
</select>
<select id="selectDeptGrade" parameterType="String" resultMap="SysDeptResult">
<include refid="selectDeptVo"/>
WHERE dept_name like concat('%', #{schoolYear}, '%') AND parent_id = 100
......
......@@ -168,8 +168,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</select>
<select id="selectDeptAncetorsByPernId" parameterType="String" resultMap="SysUserResult">
SELECT u. *,d.* FROM sys_user u LEFT JOIN sys_user_dept ud on u.user_id = ud.user_id LEFT JOIN sys_dept d on ud.dept_id = d.dept_id
where d.ancestors like concat('%', #{deptId}, '%') GROUP BY u.user_id
SELECT u.*,d.* FROM sys_user u INNER JOIN sys_user_dept ud on u.user_id = ud.user_id LEFT JOIN sys_dept d on ud.dept_id = d.dept_id where d.ancestors like concat('%', #{deptId}, '%') GROUP BY u.user_id
union all
SELECT u.*,d.* FROM sys_user u INNER JOIN sys_dept d on u.dept_id = d.dept_id AND d.ancestors like concat('%', #{deptId}, '%')
GROUP BY user_id
</select>
......
......@@ -45,20 +45,19 @@ public class TeacherFilesController extends BaseController
return getDataTable(list);
}
@PreAuthorize("@ss.hasPermi('teacherFiles:files:list')")
// @PreAuthorize("@ss.hasPermi('teacherFiles:files:list')")
@GetMapping("/gradeList")
public AjaxResult gradeList(TeacherFiles teacherFiles)
{
AjaxResult ajaxResult = new AjaxResult();
List<Long> gradeIds = teacherFilesService.getGradeId(teacherFiles.getGradeTeacherId());
if(gradeIds==null || gradeIds.size()==0){
// TableDataInfo tableDataInfo = new TableDataInfo();
// tableDataInfo.setCode(500);
// tableDataInfo.setMsg("该用户非级部主任");
ajaxResult.put("code",500);
ajaxResult.put("msg","该用户非级部主任");
return ajaxResult;
}
//查询老师所在级部
teacherFiles.setGradeId(gradeIds.get(0));
startPage();
List<TeacherFiles> list = teacherFilesService.selectTeacherFilesList(teacherFiles);
......@@ -101,7 +100,6 @@ public class TeacherFilesController extends BaseController
@GetMapping("/getTeachList")
public TableDataInfo teachList(TeacherFiles teacherFiles){
startPage();
Map map = new HashMap();
List<TeacherFilesNotice> teacherFilesNotices = teacherFilesService.selctTeacherByUserId(teacherFiles);
return getDataTable(teacherFilesNotices);
}
......@@ -138,7 +136,7 @@ public class TeacherFilesController extends BaseController
@PostMapping
public AjaxResult add(@RequestBody TeacherFiles teacherFiles)
{
teacherFiles.setState("0");
teacherFiles.setState("1");
return toAjax(teacherFilesService.insertTeacherFiles(teacherFiles));
}
......
package yangtz.cs.liu.campus.domain.teacherFiles;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import lombok.Data;
......@@ -13,11 +15,12 @@ import org.apache.commons.lang3.builder.ToStringStyle;
* @date 2023-09-05
*/
@Data
public class TeacherFiles extends BaseEntity
public class TeacherFiles
{
private static final long serialVersionUID = 1L;
/** id */
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/** 通知id */
......@@ -101,7 +104,7 @@ public class TeacherFiles extends BaseEntity
private String classTeacherDetails;
/** 状态 */
@Excel(name = "状态 (1未发布 2已发布 3已填写 4已提交 5已确认 9驳回)" )
@Excel(name = "状态 (初始化为 1 编辑 老师个人提交 4已提交 级部确认过 5已确认 级部驳回 9驳回)" )
private String state;
private Long gradeTeacherId;
......
......@@ -40,7 +40,7 @@ public class TeacherFilesNotice extends BaseEntity
private String noticeName;
/** 状态
* @Excel(name = "状态 (1未发布 2已发布 3已填写 4已提交 5已确认 9驳回)" )
* @Excel(name = "状态 (1未发布 2已发布 7已结束)" )
* */
@Excel(name = "状态")
private String noticeState;
......
package yangtz.cs.liu.campus.mapper.teacherFiles;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import yangtz.cs.liu.campus.domain.schooloffical.SchoolOfficial;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFiles;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFilesVO;
......@@ -12,7 +14,7 @@ import java.util.Map;
* @author ruoyi
* @date 2023-09-06
*/
public interface TeacherFilesMapper
public interface TeacherFilesMapper extends BaseMapper<TeacherFiles>
{
/**
* 查询教师档案
......
package yangtz.cs.liu.campus.mapper.teacherFiles;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFiles;
......@@ -17,7 +18,7 @@ import java.util.Map;
* @author ruoyi
* @date 2023-09-06
*/
public interface TeacherFilesNoticeMapper
public interface TeacherFilesNoticeMapper extends BaseMapper<TeacherFilesNotice>
{
/**
* 查询教师档案通知
......
package yangtz.cs.liu.campus.service.impl.teacherFiles;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.SchoolTeacher;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
......@@ -23,19 +24,18 @@ import yangtz.cs.liu.campus.mapper.schoolgrade.SchoolGradeMapper;
import yangtz.cs.liu.campus.mapper.teacher.SchoolTeacherMapper;
import yangtz.cs.liu.campus.mapper.teacherFiles.TeacherFilesMapper;
import yangtz.cs.liu.campus.mapper.teacherFiles.TeacherFilesNoticeMapper;
import yangtz.cs.liu.campus.service.schoolClass.ISchoolClassMentorService;
import yangtz.cs.liu.campus.service.schoolClass.ISchoolClassService;
import yangtz.cs.liu.campus.service.schoolgrade.ISchoolGradeService;
import yangtz.cs.liu.campus.service.teacherFiles.ITeacherFilesNoticeService;
import yangtz.cs.liu.campus.vo.teacherFiles.SchoolClassByGradeVo;
import yangtz.cs.liu.campus.vo.teacherFiles.SchoolGradeByClassVo;
import yangtz.cs.liu.campus.service.teacherFiles.ITeacherFilesService;
import yangtz.cs.liu.wechat.vo.schoolClass.SchoolClassVo;
import static java.util.Comparator.comparingLong;
import static java.util.stream.Collectors.collectingAndThen;
import static java.util.stream.Collectors.toCollection;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
/**
* 教师档案通知Service业务层处理
*
......@@ -43,7 +43,7 @@ import java.util.stream.Collectors;
* @date 2023-09-06
*/
@Service
public class TeacherFilesNoticeServiceImpl implements ITeacherFilesNoticeService
public class TeacherFilesNoticeServiceImpl extends ServiceImpl<TeacherFilesNoticeMapper,TeacherFilesNotice> implements ITeacherFilesNoticeService
{
@Autowired
private TeacherFilesNoticeMapper teacherFilesNoticeMapper;
......@@ -94,6 +94,8 @@ public class TeacherFilesNoticeServiceImpl implements ITeacherFilesNoticeService
return teacherFilesNoticeMapper.selectTeacherFilesNoticeList(teacherFilesNotice);
}
@Autowired
ITeacherFilesService iTeacherFilesService;
/**
* 新增教师档案通知
......@@ -131,9 +133,11 @@ public class TeacherFilesNoticeServiceImpl implements ITeacherFilesNoticeService
});
userList.addAll(sysUsers);
}
List<SysUser> collect = userList.stream().filter(SysUser -> SysUser.getUserId() != null).collect(Collectors.toList());
//获取所有老师 去重
List<SysUser> trrUserList = userList.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()
-> new TreeSet<>(Comparator.comparing(SysUser :: getUserId))), ArrayList::new));
List<SysUser> trrUserList = collect.stream().collect(collectingAndThen(toCollection(() -> new TreeSet<>(comparingLong(SysUser::getUserId))), ArrayList::new));
List<TeacherFiles> teacherFilesList = new ArrayList<>();
for (SysUser user : trrUserList){
//部门
......@@ -160,7 +164,7 @@ public class TeacherFilesNoticeServiceImpl implements ITeacherFilesNoticeService
teacherFiles.setGradeId(schoolGrade.getId());
teacherFiles.setGradeName(schoolGrade.getGradeName());
teacherFiles.setBzrClassName(teahClassName);
teacherFiles.setState("2");
teacherFiles.setState("1");
teacherFiles = teacherFilesAddXx(teacherFiles); //老师个人信息
//找到老师课程
// TODO 修改最新学年
......@@ -178,93 +182,7 @@ public class TeacherFilesNoticeServiceImpl implements ITeacherFilesNoticeService
teacherFilesList.add(teacherFiles);
}
//导入数据库
teacherFilesList.forEach(date->{
teacherFilesMapper.insertTeacherFiles(date);
});
// //获取级部
// List<SchoolGrade> schoolGrades = schoolGradeMapper.selectNowSchoolGrade();
// for(SchoolGrade schoolGrade:schoolGrades){
// Map<Long,TeacherFiles> teacherFilesMap = new HashMap();
// Long gradeId = schoolGrade.getId();
// String gradeName = schoolGrade.getGradeName();
// //获取班级
// List<SchoolClassByGradeVo> schoolClassByGrade = teacherFilesNoticeMapper.getSchoolClassByGrade(gradeId);
// for(SchoolClassByGradeVo schoolClass:schoolClassByGrade){
// Long classId=schoolClass.getId();
// String classAlias=schoolClass.getClassAlias();
//
// if(schoolClass.getTeacherId()!=null){
// if(teacherFilesMap.get(schoolClass.getTeacherId())==null){
// TeacherFiles teacherFiles = new TeacherFiles();
// teacherFiles.setTeacherId(schoolClass.getTeacherId());
// teacherFiles = teacherFilesAddXx(teacherFiles);
// teacherFiles.setNoticeId(noticeId);
// teacherFiles.setFilesSemester(teacherFilesNotice.getNoticeYear()+"学年"+teacherFilesNotice.getNoticeSemester());
// teacherFiles.setGradeId(gradeId);
// teacherFiles.setGradeName(gradeName);
// teacherFiles.setBzrClassName(classAlias);
// teacherFiles.setState("1");
// teacherFilesMap.put(schoolClass.getTeacherId(),teacherFiles);
// }else{
// TeacherFiles teacherFiles = teacherFilesMap.get(schoolClass.getTeacherId());
// String bzrClassName = teacherFiles.getBzrClassName();
// if(bzrClassName==null){
// teacherFiles.setBzrClassName(classAlias);
// }else{
// teacherFiles.setBzrClassName(teacherFiles.getBzrClassName()+"、"+classAlias);
// }
// teacherFilesMap.put(schoolClass.getTeacherId(),teacherFiles);
// }
//
// }
// //获取班级老师
// List<SchoolGradeByClassVo> schoolGradeByClassVos = teacherFilesNoticeMapper.selectTeacherByClass(classId);
// for(SchoolGradeByClassVo grade:schoolGradeByClassVos){
//
// if(teacherFilesMap.get(grade.getTeacherId())==null){
// //没有记录
// TeacherFiles teacherFiles = new TeacherFiles();
// teacherFiles.setTeacherId(grade.getTeacherId());
// teacherFiles = teacherFilesAddXx(teacherFiles);
// teacherFiles.setNoticeId(noticeId);
// teacherFiles.setFilesSemester(teacherFilesNotice.getNoticeYear()+"学年"+teacherFilesNotice.getNoticeSemester());
// teacherFiles.setGradeId(gradeId);
// teacherFiles.setGradeName(gradeName);
// teacherFiles.setCourseName(grade.getCourseName());
// teacherFiles.setClassName(classAlias);
// teacherFiles.setState("1");
// teacherFilesMap.put(grade.getTeacherId(),teacherFiles);
// }else{
// //有记录
// TeacherFiles teacherFiles = teacherFilesMap.get(schoolClass.getTeacherId());
// if(teacherFiles.getClassName()==null){
// teacherFiles.setClassName(classAlias);
// }else{
// if(!teacherFiles.getClassName().contains(classAlias)){
// teacherFiles.setClassName(teacherFiles.getClassName()+"、"+classAlias);
// }
// }
// if(teacherFiles.getCourseName()==null){
// teacherFiles.setCourseName(grade.getCourseName());
// }else{
// if(!teacherFiles.getCourseName().contains(grade.getCourseName())){
// teacherFiles.setCourseName(teacherFiles.getCourseName()+"、"+grade.getCourseName());
// }
// }
// teacherFilesMap.put(schoolClass.getTeacherId(),teacherFiles);
// }
// }
// }
// teacherFilesMap.forEach((teacherId,teacherFiles)->{
// teacherFilesMapper.insertTeacherFiles(teacherFiles);
// });
// }
iTeacherFilesService.saveBatch(teacherFilesList);
return i;
}
......@@ -325,8 +243,8 @@ public class TeacherFilesNoticeServiceImpl implements ITeacherFilesNoticeService
teacherFilesNotice.setId(id);
teacherFilesNotice.setUpdateTime(DateUtils.getNowDate());
teacherFilesNotice.setNoticeState("1");
int i = teacherFilesMapper.updateTeacherFilesState1(id);
teacherFilesNoticeMapper.updateTeacherFilesNotice(teacherFilesNotice);
// int i = teacherFilesMapper.updateTeacherFilesState1(id);
int i = teacherFilesNoticeMapper.updateTeacherFilesNotice(teacherFilesNotice);
return i;
}
......
package yangtz.cs.liu.campus.service.impl.teacherFiles;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.core.domain.entity.SchoolTeacher;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
......@@ -35,7 +36,7 @@ import java.util.*;
* @date 2023-09-06
*/
@Service
public class TeacherFilesServiceImpl implements ITeacherFilesService
public class TeacherFilesServiceImpl extends ServiceImpl<TeacherFilesMapper, TeacherFiles> implements ITeacherFilesService
{
@Autowired
private TeacherFilesMapper teacherFilesMapper;
......@@ -255,7 +256,7 @@ public class TeacherFilesServiceImpl implements ITeacherFilesService
teacherFiles.setGradeId(byid.getGId());
teacherFiles.setGradeName(byid.getGruoName());
teacherFiles.setBzrClassName(teahClassName);
teacherFiles.setState("2");
teacherFiles.setState("1");
teacherFiles = teacherFilesAddXx(teacherFiles); //老师个人信息
//找到老师课程
// TODO 修改最新学年
......
package yangtz.cs.liu.campus.service.teacherFiles;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFilesNotice;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFilesNoticeTotal;
......@@ -11,7 +12,7 @@ import java.util.List;
* @author ruoyi
* @date 2023-09-06
*/
public interface ITeacherFilesNoticeService
public interface ITeacherFilesNoticeService extends IService<TeacherFilesNotice>
{
/**
* 查询教室档案通知
......
package yangtz.cs.liu.campus.service.teacherFiles;
import com.baomidou.mybatisplus.extension.service.IService;
import yangtz.cs.liu.campus.domain.schooloffical.SchoolOfficial;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFiles;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFilesDeletRecord;
import yangtz.cs.liu.campus.domain.teacherFiles.TeacherFilesNotice;
......@@ -14,7 +16,7 @@ import java.util.Map;
* @author ruoyi
* @date 2023-09-06
*/
public interface ITeacherFilesService
public interface ITeacherFilesService extends IService<TeacherFiles>
{
/**
* 查询教师档案
......
......@@ -6,16 +6,16 @@ package yangtz.cs.liu.dingding.config;
public class Constant {
//测试 事件回调配置
public static final String AES_TOKEN="jGt2S7Kqh475czbgxtr7j1cQsXHWYia";
// public static final String AES_TOKEN="jGt2S7Kqh475czbgxtr7j1cQsXHWYia";
//
// public static final String AES_KEY="hz6q2qTgLGD5SHWLvVddOm9HfvrKgKBcDCCf145egyi";
//
// public static final String OWNER_KEY = "dingclpf8qoxvinhksyh";
public static final String AES_KEY="hz6q2qTgLGD5SHWLvVddOm9HfvrKgKBcDCCf145egyi";
//正式 事件回调配置
public static final String AES_TOKEN="awLoV2xJlrg6xUK3wQIF88HhVuSVS7Tmpb5MKFI1j7DaLKcn";
public static final String OWNER_KEY = "dingclpf8qoxvinhksyh";
public static final String AES_KEY="xGO08pQerwFgBOcabx2eUxLUrAOwa5Q2FJtdylY7ksf";
//正式 事件回调配置
// public static final String AES_TOKEN="awLoV2xJlrg6xUK3wQIF88HhVuSVS7Tmpb5MKFI1j7DaLKcn";
//
// public static final String AES_KEY="xGO08pQerwFgBOcabx2eUxLUrAOwa5Q2FJtdylY7ksf";
//
// public static final String OWNER_KEY = "dingggqchzyvxm9e6e7v";
public static final String OWNER_KEY = "dingggqchzyvxm9e6e7v";
}
......@@ -2,10 +2,12 @@ package yangtz.cs.liu.wechat.controller.timetable;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.service.ISysDeptService;
import com.ruoyi.system.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
......@@ -43,7 +45,8 @@ public class WxSchoolTimeTableController extends BaseController {
@Autowired
private ISchoolTimeDetailService schoolTimeDetailService;
@Autowired
ISysDeptService deptService;
/**
* 获取家长端学生个人课表
*/
......@@ -61,9 +64,38 @@ public class WxSchoolTimeTableController extends BaseController {
@GetMapping("/getTeacherTable/{userId}")
public TableDataInfo getTeacherTable(@PathVariable Long userId) {
Long teacherId = userId;
Boolean flag= false;
//获取当前登录用户
SysUser user = userService.selectUserById(teacherId);
if (user.getEmployeeType().equals(EMPLOYEE)) {
//判断当前所在部门是级部还是科室
//找到当前人所有的部门跟主部门
//1.判断主部门
String[] split = user.getDept().getAncestors().split(",");
if (split.length ==2){
//当前是跟部门判断是不是级部
if (user.getDept().getDeptName().contains("级部")){
flag = true;
}
}else {
//子部门就找主部门
SysDept sysDept = deptService.selectDeptById(Long.valueOf(split[2]));
if (sysDept.getDeptName().contains("级部")){
flag = true;
}
}
//2 多个部门下进行判断
List<SysDept> sysDepts = deptService.selectConformDept(userId);
for (SysDept dept : sysDepts){
String[] split1 = dept.getAncestors().split(",");
if (split1.length >= 3){
SysDept sysDept = deptService.selectDeptById(Long.valueOf(split1[2]));
if (sysDept.getDeptName().contains("级部")){
flag = true;
break;
}
}
}
if (!flag) {
//throw new ServiceException("您的用户类型为职工,无法查询个人课表");
return getDataTable(new ArrayList<>());
}
......
......@@ -205,7 +205,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<update id="updateTeacherFilesState" parameterType="String">
update teacher_files set state = 2 where notice_id = #{noticeId}
update teacher_files set state = 1 where notice_id = #{noticeId}
</update>
<update id="updateTeacherFilesState1" parameterType="String">
......
......@@ -73,6 +73,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<insert id="insertTeacherFilesNotice" parameterType="TeacherFilesNotice">
insert into teacher_files_notice
<trim prefix="(" suffix=")" suffixOverrides=",">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment