Bläddra i källkod

Merge branch 'dev' of ssh://10.10.100.21/source/smartschool-platform into dev

guq 6 år sedan
förälder
incheckning
633708bb0e
65 ändrade filer med 906 tillägg och 392 borttagningar
  1. 0 1
      applications/device/device-sdk-dahua/pom.xml
  2. 4 0
      applications/device/device-server/pom.xml
  3. 8 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/StudentServiceImpl.java
  4. 8 3
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/TeacherServiceImpl.java
  5. 7 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/TaskNotifyDO.java
  6. 117 39
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxClazzServiceImpl.java
  7. 40 29
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxMeetingServiceImpl.java
  8. 40 33
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxNotifyServiceImpl.java
  9. 30 19
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaLeaveServiceImpl.java
  10. 28 18
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxTaskNotifyServiceImpl.java
  11. 262 107
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxUserServiceImpl.java
  12. 7 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxVoteServiceImpl.java
  13. 12 3
      applications/school/school-server/src/main/resources/mapper/SysStudentMapper.xml
  14. 2 2
      applications/school/school-server/src/main/resources/mapper/WxMeetingMapper.xml
  15. 25 5
      applications/school/school-server/src/main/resources/mapper/WxTaskNotifyMapper.xml
  16. 1 1
      base-servers/account/account-api/src/main/java/com/usoftchina/smartschool/account/api/AccountApi.java
  17. 1 1
      base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/controller/AccountController.java
  18. 7 6
      frontend/pc-web/app/view/Interaction/homework/List.js
  19. 4 2
      frontend/pc-web/app/view/Interaction/mailbox/List.js
  20. 7 6
      frontend/pc-web/app/view/Interaction/notice/List.js
  21. 5 0
      frontend/pc-web/app/view/Interaction/score/List.js
  22. 90 16
      frontend/pc-web/app/view/Interaction/timetable/Detail.js
  23. 2 0
      frontend/pc-web/app/view/Interaction/timetable/List.js
  24. 2 10
      frontend/pc-web/app/view/basic/subject/List.js
  25. 13 5
      frontend/pc-web/app/view/core/form/field/DetailGridField.js
  26. 27 23
      frontend/pc-web/app/view/core/form/field/TrashField.js
  27. 1 1
      frontend/pc-web/app/view/main/Main.js
  28. 37 0
      frontend/pc-web/overrides/form/field/ComboBox.js
  29. 5 2
      frontend/wechat-web/src/components/PhonesItem.jsx
  30. 2 2
      frontend/wechat-web/src/index.css
  31. 2 1
      frontend/wechat-web/src/modules/hiPages/access-notice/AccessNotice.css
  32. 3 1
      frontend/wechat-web/src/modules/hiPages/approvel-detail/ApprovelDetail.css
  33. 74 42
      frontend/wechat-web/src/modules/home/HomePage.jsx
  34. 2 1
      frontend/wechat-web/src/modules/homework/AssignmentDetailPage.css
  35. 1 1
      frontend/wechat-web/src/modules/phonesBook/PhonesSelect.jsx
  36. 23 8
      frontend/wechat-web/src/style/css/home-page.css
  37. 1 1
      frontend/wechat-web/src/style/css/phones.css
  38. BIN
      frontend/wechat-web/src/style/imgs/BG1.png
  39. BIN
      frontend/wechat-web/src/style/imgs/BG2.png
  40. BIN
      frontend/wechat-web/src/style/imgs/BG4.png
  41. BIN
      frontend/wechat-web/src/style/imgs/ic_business_trip_apply.png
  42. BIN
      frontend/wechat-web/src/style/imgs/ic_campus_card.png
  43. BIN
      frontend/wechat-web/src/style/imgs/ic_class_album.png
  44. BIN
      frontend/wechat-web/src/style/imgs/ic_entry_exit.png
  45. BIN
      frontend/wechat-web/src/style/imgs/ic_homework_release.png
  46. BIN
      frontend/wechat-web/src/style/imgs/ic_leave_apply.png
  47. BIN
      frontend/wechat-web/src/style/imgs/ic_mail_list.png
  48. BIN
      frontend/wechat-web/src/style/imgs/ic_meeting_manage.png
  49. BIN
      frontend/wechat-web/src/style/imgs/ic_my_approval.png
  50. BIN
      frontend/wechat-web/src/style/imgs/ic_notice_announce.png
  51. BIN
      frontend/wechat-web/src/style/imgs/ic_payment_notice.png
  52. BIN
      frontend/wechat-web/src/style/imgs/ic_principal_mailbox.png
  53. BIN
      frontend/wechat-web/src/style/imgs/ic_score_notice.png
  54. BIN
      frontend/wechat-web/src/style/imgs/ic_score_query.png
  55. BIN
      frontend/wechat-web/src/style/imgs/ic_student_leave.png
  56. BIN
      frontend/wechat-web/src/style/imgs/ic_supply_apply.png
  57. BIN
      frontend/wechat-web/src/style/imgs/ic_timetable_query.png
  58. BIN
      frontend/wechat-web/src/style/imgs/ic_vote_helper.png
  59. BIN
      frontend/wechat-web/src/style/imgs/ic_wonder_moment.png
  60. BIN
      frontend/wechat-web/src/style/imgs/icon_home_change.png
  61. BIN
      frontend/wechat-web/src/style/imgs/leave_img.png
  62. BIN
      frontend/wechat-web/src/style/imgs/phone_icon.png
  63. BIN
      frontend/wechat-web/src/style/imgs/res_img.png
  64. BIN
      frontend/wechat-web/src/style/imgs/trip_img.png
  65. 6 0
      pom.xml

+ 0 - 1
applications/device/device-sdk-dahua/pom.xml

@@ -16,7 +16,6 @@
         <dependency>
             <groupId>net.java.dev.jna</groupId>
             <artifactId>jna</artifactId>
-            <version>5.2.0</version>
         </dependency>
         <dependency>
             <groupId>com.usoftchina.smartschool</groupId>

+ 4 - 0
applications/device/device-server/pom.xml

@@ -12,6 +12,10 @@
     <artifactId>device-server</artifactId>
 
     <dependencies>
+        <dependency>
+            <groupId>net.java.dev.jna</groupId>
+            <artifactId>jna</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.usoftchina.smartschool</groupId>
             <artifactId>device-sdk-dahua</artifactId>

+ 8 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/StudentServiceImpl.java

@@ -118,6 +118,7 @@ public class StudentServiceImpl implements StudentService{
         //插入从表
         if (insertDetails.size() > 0) {
             Long pr_id = null;
+            List<SysParents> parentsList = new ArrayList<SysParents>();
             for (SysParents item : insertDetails) {
                 item.setSchool_id(schoolid);
                 sysStudentMapper.insertparent(item);
@@ -129,9 +130,15 @@ public class StudentServiceImpl implements StudentService{
                     accountRegDTO.setUser_phone(item.getPa_phone());
                     accountRegDTO.setUser_pass("111111");
                     accountRegDTO.setRoleId(sysStudentMapper.selectRoleId());
-                    accountApi.register(accountRegDTO);
+                    Long userId = accountApi.register(accountRegDTO).getData();
+                    //构造家长更新对象
+                    SysParents parent = new SysParents();
+                    parent.setParent_id(item.getParent_id());
+                    parent.setUser_id(userId);
+                    parentsList.add(parent);
                 }
             }
+            sysStudentMapper.updateParents(parentsList);
         }
         //更新从表
         if (updateDetails.size() > 0) {

+ 8 - 3
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/TeacherServiceImpl.java

@@ -83,8 +83,13 @@ public class TeacherServiceImpl implements TeacherService{
                 throw new BizException(BizExceptionCode.REPEAT_TEACHER_NUMBER);
             }
             sysTeacherMapper.insertSelective(formdata);
+            //新增账户,并更新教师表UserId字段
             if (!StringUtils.isEmpty(formdata.getTeacher_phone())) {
-                createAccount(formdata);
+                Long userId = createAccount(formdata);
+                SysTeacher sysTeacher = new SysTeacher();
+                sysTeacher.setTeacher_id(formdata.getTeacher_id());
+                sysTeacher.setUser_id(userId);
+                sysTeacherMapper.updateByPrimaryKeySelective(sysTeacher);
             }
         } else {
             //更新教师
@@ -100,13 +105,13 @@ public class TeacherServiceImpl implements TeacherService{
     /**
      * 新建账户信息
      */
-    private void createAccount(SysTeacher sysTeacher) {
+    private Long createAccount(SysTeacher sysTeacher) {
         AccountRegDTO accountRegDTO = new AccountRegDTO();
         accountRegDTO.setUser_phone(sysTeacher.getTeacher_phone());
         accountRegDTO.setUser_pass("111111");
         Long roleId = sysTeacherMapper.selectRoleId();
         accountRegDTO.setRoleId(roleId);
-        accountApi.register(accountRegDTO);
+        return accountApi.register(accountRegDTO).getData();
     }
 
     @Override

+ 7 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/po/TaskNotifyDO.java

@@ -41,6 +41,13 @@ public class TaskNotifyDO implements Serializable {
 	private Long schoolId;
 	//通知人
 	private String taskNotifier;
+	//班级
+	private String classzName;
+	//年级
+	private String gradeName;
+	//创建人姓名
+	private String creator;
 
+	private Date publishDate;
 
 }

+ 117 - 39
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxClazzServiceImpl.java

@@ -56,15 +56,32 @@ public class WxClazzServiceImpl implements WxClazzService {
 	 * @throws Exception
 	 */
 	public List<ClazzDO> selectClazzByStu(Long stuId) throws Exception {
-		ClazzDO clazzDO = clazzMapper.get(studentMapper.get(stuId).getClazzId());
-		List<ClazzDO> clazzDOS = new ArrayList<>();
-		if (ObjectUtils.isNotEmpty(clazzDO)){
-			clazzDO.setGradeName(gradeMapper.get(clazzDO.getGradeId()).getGradeName());
-			clazzDOS.add(clazzDO);
-			return clazzDOS;
-		} else {
-			throw new Exception("暂无数据");
+		StudentDO studentDO = studentMapper.get(stuId);
+		if (ObjectUtils.isNotEmpty(studentDO)){
+			Long clazzId = studentDO.getClazzId();
+			if (ObjectUtils.isNotEmpty(clazzId)){
+				ClazzDO clazzDO = clazzMapper.get(clazzId);
+				List<ClazzDO> clazzDOS = new ArrayList<>();
+				if (ObjectUtils.isNotEmpty(clazzDO)){
+					Long gradeId = clazzDO.getGradeId();
+					if (ObjectUtils.isNotEmpty(gradeId)){
+						GradeDO gradeDO = gradeMapper.get(gradeId);
+						if (ObjectUtils.isNotEmpty(gradeDO)){
+							clazzDO.setGradeName(gradeDO.getGradeName());
+						}
+					}
+					clazzDOS.add(clazzDO);
+					return clazzDOS;
+				} else {
+					throw new Exception("该学生所在班级不存在,请联系管理员");
+				}
+			}else {
+				throw new Exception("学生还未分班,请联系管理员");
+			}
+		}else {
+			throw new Exception("学生不存在,请联系管理员");
 		}
+
 	}
 
 	/**
@@ -77,27 +94,43 @@ public class WxClazzServiceImpl implements WxClazzService {
 	public List<ClazzDO> selectParentPhoneByTeacher(Long teacherId, String selectKey,Integer pageIndex,Integer pageSize) throws Exception {
 		Integer pageStart = (pageIndex - 1) * pageSize;
 		List<ClazzDO> clazzDOS = selectClazz(teacherId);
-		for (ClazzDO cz:clazzDOS) {
-			Map<String, Object> map = new HashMap<>();
-			map.put("clazzId",cz.getClazzId());
-			map.put("stuName","%"+selectKey+"%");
-			map.put("offset",pageStart);
-			map.put("limit",pageSize);
-			List<StudentDO> studentDOS = studentMapper.list(map);
-			if (ObjectUtils.isNotEmpty(studentDOS)){
-				for (StudentDO st:studentDOS) {
-					List<ParentsStuDO> parentsStuDOS = parentsStuMapper.listByStuId(st.getStuId());
-					if (ObjectUtils.isNotEmpty(parentsStuDOS)){
-						List<ParentsDO> parentsDOS = new ArrayList<>();
-						for (ParentsStuDO ps:parentsStuDOS) {
-							ParentsDO parentsDO = parentsMapper.get(ps.getParentId());
-							parentsDO.setUserPhone(userMapper.get(parentsDO.getUserId()).getUserPhone());
-							parentsDOS.add(parentsDO);
+		if (ObjectUtils.isNotEmpty(clazzDOS)){
+			for (ClazzDO cz:clazzDOS) {
+				Map<String, Object> map = new HashMap<>();
+				map.put("clazzId",cz.getClazzId());
+				map.put("stuName","%"+selectKey+"%");
+				map.put("offset",pageStart);
+				map.put("limit",pageSize);
+				List<StudentDO> studentDOS = studentMapper.list(map);
+				if (ObjectUtils.isNotEmpty(studentDOS)){
+					for (StudentDO st:studentDOS) {
+						Long stuId = st.getStuId();
+						if (ObjectUtils.isNotEmpty(stuId)){
+							List<ParentsStuDO> parentsStuDOS = parentsStuMapper.listByStuId(stuId);
+							if (ObjectUtils.isNotEmpty(parentsStuDOS)){
+								List<ParentsDO> parentsDOS = new ArrayList<>();
+								for (ParentsStuDO ps:parentsStuDOS) {
+									Long parentId = ps.getParentId();
+									if (ObjectUtils.isNotEmpty(parentId)){
+										ParentsDO parentsDO = parentsMapper.get(parentId);
+										if (ObjectUtils.isNotEmpty(parentsDO)){
+											Long userId = parentsDO.getUserId();
+											if (ObjectUtils.isNotEmpty(userId)){
+												UserDO userDO = userMapper.get(userId);
+												if (ObjectUtils.isNotEmpty(userDO)){
+													parentsDO.setUserPhone(userDO.getUserPhone());
+													parentsDOS.add(parentsDO);
+												}
+											}
+										}
+									}
+								}
+								st.setParentsDOS(parentsDOS);
+							}
 						}
-						st.setParentsDOS(parentsDOS);
 					}
+					cz.setStudentDOS(studentDOS);
 				}
-				cz.setStudentDOS(studentDOS);
 			}
 		}
 		return removeDuplicate(clazzDOS);
@@ -112,15 +145,27 @@ public class WxClazzServiceImpl implements WxClazzService {
 		Integer pageStart = (pageIndex - 1) * pageSize;
 		StudentDO studentDO = studentMapper.get(stuId);
 		if (ObjectUtils.isNotEmpty(studentDO)){
-			List<TeacherDO> byClazzId = teacherMapper.getByClazzId(studentDO.getClazzId(), "%" + selectKey + "%",pageStart,pageSize);
+			Long clazzId = studentDO.getClazzId();
+			if (ObjectUtils.isNotEmpty(clazzId)){
+				List<TeacherDO> byClazzId = teacherMapper.getByClazzId(clazzId, "%" + selectKey + "%",pageStart,pageSize);
 				if (ObjectUtils.isNotEmpty(byClazzId)){
 					for (TeacherDO tc:byClazzId) {
-						tc.setUserPhone(userMapper.get(tc.getUserId()).getUserPhone());
+						Long userId = tc.getUserId();
+						if (ObjectUtils.isNotEmpty(userId)){
+							UserDO userDO = userMapper.get(userId);
+							if (ObjectUtils.isNotEmpty(userDO)){
+								tc.setUserPhone(userDO.getUserPhone());
+							}
+						}
+
 					}
 					return byClazzId;
 				}else {
 					throw new Exception("暂无教师");
 				}
+			}else {
+				throw new Exception("暂未分配班级,请联系管理员");
+			}
 		}else {
 			throw new Exception("暂无数据");
 		}
@@ -143,11 +188,21 @@ public class WxClazzServiceImpl implements WxClazzService {
 		if (ObjectUtils.isNotEmpty(studentDOS)){
 			for (StudentDO st:studentDOS) {
 				List<ParentsDO> parentsDOS = new ArrayList<>();
-				List<ParentsDO> byStuId = parentsMapper.getByStuId(st.getStuId());
-				if (ObjectUtils.isNotEmpty(byStuId)){
-					for (ParentsDO pt:byStuId) {
-						pt.setUserPhone(userMapper.get(pt.getUserId()).getUserPhone());
-						parentsDOS.add(pt);
+				Long stuId = st.getStuId();
+				if (ObjectUtils.isNotEmpty(stuId)){
+					List<ParentsDO> byStuId = parentsMapper.getByStuId(stuId);
+					if (ObjectUtils.isNotEmpty(byStuId)){
+						for (ParentsDO pt:byStuId) {
+							Long userId = pt.getUserId();
+							if (ObjectUtils.isNotEmpty(userId)){
+								UserDO userDO = userMapper.get(userId);
+								if (ObjectUtils.isNotEmpty(userDO)){
+									pt.setUserPhone(userDO.getUserPhone());
+									parentsDOS.add(pt);
+								}
+							}
+
+						}
 					}
 				}
 				st.setParentsDOS(parentsDOS);
@@ -167,11 +222,23 @@ public class WxClazzServiceImpl implements WxClazzService {
 	public List<TeacherDO> getAllTeacherBySchool(Long teacherId, String selectKey,Integer pageSize,Integer pageIndex){
 		TeacherDO teacherDO = teacherMapper.get(teacherId);
 		Integer pageStart = (pageIndex - 1) * pageSize;
-		List<TeacherDO> teacherDOS = teacherMapper.getAll(teacherDO.getSchoolId(),"%"+selectKey+"%",pageStart,pageSize);
-		for (TeacherDO tc:teacherDOS) {
-			tc.setUserPhone(userMapper.get(tc.getUserId()).getUserPhone());
+		List<TeacherDO> teacherDOS = null;
+		if (ObjectUtils.isNotEmpty(teacherDO)){
+			teacherDOS = teacherMapper.getAll(teacherDO.getSchoolId(),"%"+selectKey+"%",pageStart,pageSize);
+			if (ObjectUtils.isNotEmpty(teacherDOS)){
+				for (TeacherDO tc:teacherDOS) {
+					Long userId = tc.getUserId();
+					if (ObjectUtils.isNotEmpty(userId)){
+						UserDO userDO = userMapper.get(userId);
+						if (ObjectUtils.isNotEmpty(userDO)){
+							tc.setUserPhone(userDO.getUserPhone());
+						}
+					}
+				}
+			}
 		}
 		return teacherDOS;
+
 	}
 
 	private List<ClazzDO> selectClazz(Long teacherId) throws Exception {
@@ -179,9 +246,20 @@ public class WxClazzServiceImpl implements WxClazzService {
 		List<ClazzDO> clazzDOS = new ArrayList<>();
 		if (ObjectUtils.isNotEmpty(teacherClazzDOS)) {
 			for (TeacherClazzDO tc : teacherClazzDOS) {
-				ClazzDO clazzDO = clazzMapper.get(tc.getClazzId());
-				clazzDO.setGradeName(gradeMapper.get(clazzDO.getGradeId()).getGradeName());
-				clazzDOS.add(clazzDO);
+				Long clazzId = tc.getClazzId();
+				if (ObjectUtils.isNotEmpty(clazzId)){
+					ClazzDO clazzDO = clazzMapper.get(clazzId);
+					if (ObjectUtils.isNotEmpty(clazzDO)){
+						Long gradeId = clazzDO.getGradeId();
+						if (ObjectUtils.isNotEmpty(gradeId)){
+							GradeDO gradeDO = gradeMapper.get(gradeId);
+							if (ObjectUtils.isNotEmpty(gradeDO)){
+								clazzDO.setGradeName(gradeDO.getGradeName());
+							}
+						}
+						clazzDOS.add(clazzDO);
+					}
+				}
 			}
 			return removeDuplicate(clazzDOS);
 		} else {

+ 40 - 29
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxMeetingServiceImpl.java

@@ -135,9 +135,11 @@ public class WxMeetingServiceImpl implements WxMeetingService {
 
 		List<MeetingDO> meetings = meetingMapper.selectMeetingListByLike("%" + teacherId + "%", meetingStatus, pageStart, pageSize);
 		List<MeetingDO> notifyList = new ArrayList<>();
-		for (MeetingDO mt:meetings) {
-			MeetingDO meetingDO = getMeetingDetail(teacherId, mt);
-			notifyList.add(meetingDO);
+		if (ObjectUtils.isNotEmpty(meetings)){
+			for (MeetingDO mt:meetings) {
+				MeetingDO meetingDO = getMeetingDetail(teacherId, mt);
+				notifyList.add(meetingDO);
+			}
 		}
 		hashMap.put("notify",notifyList);
 		return hashMap;
@@ -222,35 +224,44 @@ public class WxMeetingServiceImpl implements WxMeetingService {
 		}
 	}
 	private MeetingDO getMeetingDetail(Long teacherId, MeetingDO meetingDO){
-		TeacherDO teacherDO = teacherMapper.get(meetingDO.getMeetingCreator());
-		String meetingFiles = meetingDO.getMeetingFiles();
-		if (ObjectUtils.isNotEmpty(meetingFiles)) {
-			List<String> strings = JSON.parseArray(meetingFiles, String.class);
-			meetingDO.setEnclosure(strings);
+		if (ObjectUtils.isNotEmpty(meetingDO)){
+			TeacherDO teacherDO = teacherMapper.get(meetingDO.getMeetingCreator());
+			if (ObjectUtils.isNotEmpty(teacherDO)){
+				String meetingFiles = meetingDO.getMeetingFiles();
+				if (ObjectUtils.isNotEmpty(meetingFiles)) {
+					List<String> strings = JSON.parseArray(meetingFiles, String.class);
+					meetingDO.setEnclosure(strings);
 
-		}
-		meetingDO.setTeacherName(teacherDO.getTeacherName());
-		meetingDO.setTeacherPhoto(teacherDO.getTeacherPhoto());
-		HashMap<String, Object> map = new HashMap<>();
-		map.put("meetingId",meetingDO.getMeetingId());
-		List<MeetingRecordsDO> list = meetingRecordsMapper.list(map);
-		List<MeetingRecordsDO> signs = new ArrayList<>();
-		List<MeetingRecordsDO> unSigns = new ArrayList<>();
-		for (MeetingRecordsDO mr:list) {
-			TeacherDO teacher = teacherMapper.get(mr.getTeacherId());
-			mr.setTeacherName(teacher.getTeacherName());
-			mr.setTeacherPhoto(teacher.getTeacherPhoto());
-			if (teacherId.compareTo(mr.getTeacherId())==0){
-				meetingDO.setMeetingSign(mr.getIsRead());
-			}
-			if (mr.getIsRead()==3){
-				signs.add(mr);
-			}else {
-				unSigns.add(mr);
+				}
+				meetingDO.setTeacherName(teacherDO.getTeacherName());
+				meetingDO.setTeacherPhoto(teacherDO.getTeacherPhoto());
+				HashMap<String, Object> map = new HashMap<>();
+				map.put("meetingId",meetingDO.getMeetingId());
+				List<MeetingRecordsDO> list = meetingRecordsMapper.list(map);
+				List<MeetingRecordsDO> signs = new ArrayList<>();
+				List<MeetingRecordsDO> unSigns = new ArrayList<>();
+				for (MeetingRecordsDO mr:list) {
+					Long teacherId1 = mr.getTeacherId();
+					if (ObjectUtils.isNotEmpty(teacherId1)){
+						TeacherDO teacher = teacherMapper.get(teacherId1);
+						if (ObjectUtils.isNotEmpty(teacher)){
+							mr.setTeacherName(teacher.getTeacherName());
+							mr.setTeacherPhoto(teacher.getTeacherPhoto());
+							if (teacherId.compareTo(teacherId1)==0){
+								meetingDO.setMeetingSign(mr.getIsRead());
+							}
+						}
+					}
+					if (mr.getIsRead()==3){
+						signs.add(mr);
+					}else {
+						unSigns.add(mr);
+					}
+				}
+				meetingDO.setSign(signs);
+				meetingDO.setUnSign(unSigns);
 			}
 		}
-		meetingDO.setSign(signs);
-		meetingDO.setUnSign(unSigns);
 		return meetingDO;
 	}
 

+ 40 - 33
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxNotifyServiceImpl.java

@@ -271,43 +271,50 @@ public class WxNotifyServiceImpl implements WxNotifyService {
 
 	private NotifyDO getNotifyDetail(Long stuId, Long teacherId, NotifyDO notifyDO){
 		TeacherDO teacherDO = teacherMapper.get(notifyDO.getNotifyCreator());
-		notifyDO.setTeacherName(teacherDO.getTeacherName());
-		notifyDO.setTeacherPhoto(teacherDO.getTeacherPhoto());
-		String notifyFiles = notifyDO.getNotifyFiles();
-		if (ObjectUtils.isNotEmpty(notifyFiles)) {
-			List<String> strings = JSON.parseArray(notifyFiles, String.class);
-			notifyDO.setEnclosure(strings);
-		}
-		HashMap<String, Object> map = new HashMap<>();
-		map.put("notifyId",notifyDO.getNotifyId());
-		List<NotifyrecordsDO> notifyrecords = notifyrecordsMapper.list(map);
-		List<NotifyrecordsDO> read = new ArrayList<>();
-		List<NotifyrecordsDO> unRead = new ArrayList<>();
-		for (NotifyrecordsDO nr:notifyrecords) {
-			if (ObjectUtils.isNotEmpty(nr.getTeacherId())){
-				TeacherDO teacher = teacherMapper.get(nr.getTeacherId());
-				nr.setTeacherName(teacher.getTeacherName());
-				nr.setTeacherPhoto(teacher.getTeacherPhoto());
-				if (teacherId.compareTo(nr.getTeacherId())==0){
-					notifyDO.setIsRead(nr.getIsRead());
-				}
+		if (ObjectUtils.isNotEmpty(teacherDO)){
+			notifyDO.setTeacherName(teacherDO.getTeacherName());
+			notifyDO.setTeacherPhoto(teacherDO.getTeacherPhoto());
+			String notifyFiles = notifyDO.getNotifyFiles();
+			if (ObjectUtils.isNotEmpty(notifyFiles)) {
+				List<String> strings = JSON.parseArray(notifyFiles, String.class);
+				notifyDO.setEnclosure(strings);
 			}
-			if (ObjectUtils.isNotEmpty(nr.getStuId())){
-				StudentDO studentDO = studentMapper.get(nr.getStuId());
-				nr.setStuName(studentDO.getStuName());
-				nr.setStuPhoto(studentDO.getStuPhoto());
-				if (stuId.compareTo(nr.getStuId())==0){
-					notifyDO.setIsRead(nr.getIsRead());
+			HashMap<String, Object> map = new HashMap<>();
+			map.put("notifyId",notifyDO.getNotifyId());
+			List<NotifyrecordsDO> notifyrecords = notifyrecordsMapper.list(map);
+			List<NotifyrecordsDO> read = new ArrayList<>();
+			List<NotifyrecordsDO> unRead = new ArrayList<>();
+			for (NotifyrecordsDO nr:notifyrecords) {
+				if (ObjectUtils.isNotEmpty(nr.getTeacherId())){
+					TeacherDO teacher = teacherMapper.get(nr.getTeacherId());
+					if (ObjectUtils.isNotEmpty(teacher)){
+						nr.setTeacherName(teacher.getTeacherName());
+						nr.setTeacherPhoto(teacher.getTeacherPhoto());
+						if (teacherId.compareTo(nr.getTeacherId())==0){
+							notifyDO.setIsRead(nr.getIsRead());
+						}
+					}
+				}
+				if (ObjectUtils.isNotEmpty(nr.getStuId())){
+					StudentDO studentDO = studentMapper.get(nr.getStuId());
+					if (ObjectUtils.isNotEmpty(studentDO)){
+						nr.setStuName(studentDO.getStuName());
+						nr.setStuPhoto(studentDO.getStuPhoto());
+						if (stuId.compareTo(nr.getStuId())==0){
+							notifyDO.setIsRead(nr.getIsRead());
+						}
+					}
+				}
+				if (nr.getIsRead()==1){
+					unRead.add(nr);
+				}else {
+					read.add(nr);
 				}
 			}
-			if (nr.getIsRead()==1){
-				unRead.add(nr);
-			}else {
-				read.add(nr);
-			}
+			notifyDO.setUnRead(unRead);
+			notifyDO.setRead(read);
+
 		}
-		notifyDO.setUnRead(unRead);
-		notifyDO.setRead(read);
 		return notifyDO;
 	}
 

+ 30 - 19
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaLeaveServiceImpl.java

@@ -57,7 +57,14 @@ public class WxOaLeaveServiceImpl implements WxOaLeaveService {
         leave.setLvType(json.getInteger("lvType"));
         leave.setApplyDate(new Date());
         Long lvProposer = json.getLong("lvProposer");
-        leave.setSchoolId(studentMapper.get(lvProposer).getSchoolId());
+        if (ObjectUtils.isNotEmpty(lvProposer)){
+            leave.setLvProposer(lvProposer);
+            StudentDO studentDO = studentMapper.get(lvProposer);
+            if (ObjectUtils.isNotEmpty(studentDO)){
+                leave.setSchoolId(studentDO.getSchoolId());
+            }
+        }
+
         String endDate = json.getString("endDate");
         if (ObjectUtils.isNotEmpty(endDate)){
             leave.setEndDate(DateFormatUtil.string2Date(endDate));
@@ -191,27 +198,31 @@ public class WxOaLeaveServiceImpl implements WxOaLeaveService {
     }
 
     private OaLeaveDO getOaLeaveDetail(OaLeaveDO oaLeaveDO) {
-        String lvFiles = oaLeaveDO.getLvFiles();
-        if (ObjectUtils.isNotEmpty(lvFiles)) {
-            List<String> strings = JSON.parseArray(lvFiles, String.class);
-            oaLeaveDO.setEnclosure(strings);
-        }
-        StudentDO studentDO = studentMapper.get(oaLeaveDO.getLvProposer());
-        if (ObjectUtils.isNotEmpty(studentDO)) {
-            oaLeaveDO.setProposerName(studentDO.getStuName());
-        }
-        List<OaLeaveReplyDO> leaveMessages = oaLeaveReplyMapper.selectLeaveMessageListByLvId(oaLeaveDO.getLvId());
-        if (ObjectUtils.isNotEmpty(leaveMessages)) {
-            for (int j = 0; j < leaveMessages.size(); j++) {
-                OaLeaveReplyDO leaveMessage = leaveMessages.get(j);
-                TeacherDO teacherDO = teacherMapper.get(leaveMessage.getTeacherId());
-                if (ObjectUtils.isNotEmpty(teacherDO)) {
-                    leaveMessage.setTeacherName(teacherDO.getTeacherName());
-                    leaveMessage.setTeacherPhoto(teacherDO.getTeacherPhoto());
+        if (ObjectUtils.isNotEmpty(oaLeaveDO)){
+            String lvFiles = oaLeaveDO.getLvFiles();
+            if (ObjectUtils.isNotEmpty(lvFiles)) {
+                List<String> strings = JSON.parseArray(lvFiles, String.class);
+                oaLeaveDO.setEnclosure(strings);
+            }
+            StudentDO studentDO = studentMapper.get(oaLeaveDO.getLvProposer());
+            if (ObjectUtils.isNotEmpty(studentDO)) {
+                oaLeaveDO.setProposerName(studentDO.getStuName());
+            }
+            List<OaLeaveReplyDO> leaveMessages = oaLeaveReplyMapper.selectLeaveMessageListByLvId(oaLeaveDO.getLvId());
+            if (ObjectUtils.isNotEmpty(leaveMessages)) {
+                for (int j = 0; j < leaveMessages.size(); j++) {
+                    OaLeaveReplyDO leaveMessage = leaveMessages.get(j);
+                    TeacherDO teacherDO = teacherMapper.get(leaveMessage.getTeacherId());
+                    if (ObjectUtils.isNotEmpty(teacherDO)) {
+                        leaveMessage.setTeacherName(teacherDO.getTeacherName());
+                        leaveMessage.setTeacherPhoto(teacherDO.getTeacherPhoto());
+                    }
                 }
             }
+            oaLeaveDO.setOaLeaveReplyDOS(leaveMessages);
+
         }
-        oaLeaveDO.setOaLeaveReplyDOS(leaveMessages);
         return oaLeaveDO;
     }
+
 }

+ 28 - 18
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxTaskNotifyServiceImpl.java

@@ -65,6 +65,12 @@ public class WxTaskNotifyServiceImpl implements WxTaskNotifyService {
         String taskContext = json.getString("taskContext");
         taskNotifyDO.setTaskContext(taskContext);
         Long taskCreator = json.getLong("taskCreator");
+        if (ObjectUtils.isNotEmpty(taskCreator)){
+            TeacherDO teacherDO = teacherMapper.get(taskCreator);
+            if (ObjectUtils.isNotEmpty(teacherDO)){
+                taskNotifyDO.setCreator(teacherDO.getTeacherName());
+            }
+        }
         taskNotifyDO.setTaskCreator(taskCreator);
         Long schoolId = teacherMapper.get(taskCreator).getSchoolId();
         taskNotifyDO.setSchoolId(schoolId);
@@ -72,7 +78,9 @@ public class WxTaskNotifyServiceImpl implements WxTaskNotifyService {
         taskNotifyDO.setSubjectId(subjectId);
         taskNotifyDO.setTaskFiles(json.getString("taskFiles"));
         taskNotifyDO.setTaskStatus(json.getInteger("taskStatus"));
-        taskNotifyDO.setCreateDate(new Date());
+        Date date = new Date();
+        taskNotifyDO.setCreateDate(date);
+        taskNotifyDO.setPublishDate(date);
         Date startDate = DateFormatUtil.string2Date(json.getString("startDate"));
         taskNotifyDO.setStartDate(startDate);
         Date endDate = DateFormatUtil.string2Date(json.getString("endDate"));
@@ -90,27 +98,29 @@ public class WxTaskNotifyServiceImpl implements WxTaskNotifyService {
                         List<ParentsStuDO> parentsStuDOS = wxParentsStuMapper.listByStuId(stuId);
                         if (parentsStuDOS.size() > 0) {
                             for (ParentsStuDO ps : parentsStuDOS) {
-                                ParentsDO parentsDO = parentsMapper.get(ps.getParentId());
-                                String subjectName = wxSubjectMapper.get(subjectId).getSubjectName();
-                                if (ObjectUtils.isNotEmpty(schoolDO)){
-                                    String schoolAppid = schoolDO.getSchoolAppid();
-                                    if (ObjectUtils.isNotEmpty(schoolAppid)){
-                                        TemplateDO templateDO = wxTemplateMapper.getByAppid(schoolAppid);
-                                        if (ObjectUtils.isNotEmpty(templateDO)){
-                                            String temTask = templateDO.getTemTask();
-                                            try {
-                                                wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(),
-                                                        parentsDO.getOpenid(), temTask, taskTitle,
-                                                        subjectName, format.format(new Date()),
-                                                        taskContext, "-", "点击查看详情", "https://school-wechat.ubtob" +
-                                                                ".com/assignmentDetail/parent/" + taskNotifyDO.getTaskId());
-                                            }catch (Exception e){
-                                                e.printStackTrace();
+                                Long parentId = ps.getParentId();
+                                if (ObjectUtils.isNotEmpty(parentId)){
+                                    ParentsDO parentsDO = parentsMapper.get(parentId);
+                                    String subjectName = wxSubjectMapper.get(subjectId).getSubjectName();
+                                    if (ObjectUtils.isNotEmpty(schoolDO)){
+                                        String schoolAppid = schoolDO.getSchoolAppid();
+                                        if (ObjectUtils.isNotEmpty(schoolAppid)){
+                                            TemplateDO templateDO = wxTemplateMapper.getByAppid(schoolAppid);
+                                            if (ObjectUtils.isNotEmpty(templateDO)){
+                                                String temTask = templateDO.getTemTask();
+                                                try {
+                                                    wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(),
+                                                            parentsDO.getOpenid(), temTask, taskTitle,
+                                                            subjectName, format.format(new Date()),
+                                                            taskContext, "-", "点击查看详情", "https://school-wechat.ubtob" +
+                                                                    ".com/assignmentDetail/parent/" + taskNotifyDO.getTaskId()+"?stuId="+stuId+"&parentId="+parentId);
+                                                }catch (Exception e){
+                                                    e.printStackTrace();
+                                                }
                                             }
                                         }
                                     }
                                 }
-
                             }
                         }
                     }

+ 262 - 107
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxUserServiceImpl.java

@@ -2,8 +2,8 @@ package com.usoftchina.smartschool.school.wxschool.basic.service.impl;
 
 import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
 import com.usoftchina.smartschool.school.po.*;
-import com.usoftchina.smartschool.school.wxschool.config.CodeConfig;
 import com.usoftchina.smartschool.school.wxschool.basic.service.WxUserService;
+import com.usoftchina.smartschool.school.wxschool.config.CodeConfig;
 import com.usoftchina.smartschool.school.wxschool.mapper.*;
 import com.usoftchina.smartschool.school.wxschool.support.CodeTask;
 import com.usoftchina.smartschool.school.wxschool.utils.*;
@@ -98,7 +98,15 @@ public class WxUserServiceImpl implements WxUserService {
 						tc.setOpenid(openid);
 						tc.setTeacherPhoto(headimgurl);
 						teacherMapper.update(tc);
-						tc.setSchoolName(schoolMapper.get(tc.getSchoolId()).getSchoolName());
+
+						Long schoolId = tc.getSchoolId();
+						if (ObjectUtils.isNotEmpty(schoolId)){
+							SchoolDO schoolDO = schoolMapper.get(schoolId);
+							if (ObjectUtils.isNotEmpty(schoolDO)){
+								tc.setSchoolName(schoolDO.getSchoolName());
+							}
+						}
+
 					}
 					map.put("teacherDOS",teacherDOS);
 				}
@@ -107,7 +115,13 @@ public class WxUserServiceImpl implements WxUserService {
 						pt.setOpenid(openid);
 						pt.setParentsPhoto(headimgurl);
 						parentsMapper.update(pt);
-						pt.setSchoolName(schoolMapper.get(pt.getSchoolId()).getSchoolName());
+						Long schoolId = pt.getSchoolId();
+						if (ObjectUtils.isNotEmpty(schoolId)){
+							SchoolDO schoolDO = schoolMapper.get(schoolId);
+							if (ObjectUtils.isNotEmpty(schoolDO)){
+								pt.setSchoolName(schoolDO.getSchoolName());
+							}
+						}
 					}
 					map.put("parentsDOS",parentsDOS);
 				}
@@ -132,7 +146,14 @@ public class WxUserServiceImpl implements WxUserService {
 		List<TeacherDO> teacherDOS = teacherMapper.list(map);
 		if (ObjectUtils.isNotEmpty(teacherDOS)){
 			for (TeacherDO teacher:teacherDOS) {
-				teacher.setUserPhone(userMapper.get(teacher.getUserId()).getUserPhone());
+				Long userId = teacher.getUserId();
+				if (ObjectUtils.isNotEmpty(userId)){
+					UserDO userDO = userMapper.get(userId);
+					if (ObjectUtils.isNotEmpty(userDO)){
+						teacher.setUserPhone(userDO.getUserPhone());
+					}
+				}
+
 			}
 			return teacherDOS;
 		}else {
@@ -147,26 +168,51 @@ public class WxUserServiceImpl implements WxUserService {
 	 */
 	public Map<String, Object> getTeacherByStuId(Long stuId) throws Exception {
 		StudentDO studentDO = studentMapper.get(stuId);
-		ClazzDO clazzDO = clazzMapper.get(studentDO.getClazzId());
-		Map<String, Object> clazzMap = JavaBeanUtil.object2Map(clazzDO);
-		clazzMap.put("gradeName",gradeMapper.get(clazzDO.getGradeId()).getGradeName());
-		Map<String, Object> map = new HashMap<>();
-		map.put("clazzId",studentDO.getClazzId());
-		List<TeacherClazzDO> teacherClazzDOS = teacherClazzMapper.list(map);
-		List<TeacherDO> teacherDOS = new ArrayList<>();
-		if (ObjectUtils.isNotEmpty(teacherClazzDOS)){
-			for (TeacherClazzDO tc:teacherClazzDOS) {
-				Long teacherId = tc.getTeacherId();
-				TeacherDO teacherDO = teacherMapper.get(teacherId);
-				teacherDO.setUserPhone(userMapper.get(teacherDO.getUserId()).getUserPhone());
-				teacherDOS.add(teacherDO);
+		if (ObjectUtils.isNotEmpty(studentDO)){
+			Long clazzId = studentDO.getClazzId();
+			if (ObjectUtils.isNotEmpty(clazzId)){
+				ClazzDO clazzDO = clazzMapper.get(clazzId);
+				if (ObjectUtils.isNotEmpty(clazzDO)){
+					Map<String, Object> clazzMap = JavaBeanUtil.object2Map(clazzDO);
+					Long gradeId = clazzDO.getGradeId();
+					if (ObjectUtils.isNotEmpty(gradeId)){
+						GradeDO gradeDO = gradeMapper.get(gradeId);
+						if (ObjectUtils.isNotEmpty(gradeDO)){
+							clazzMap.put("gradeName",gradeDO.getGradeName());
+						}
+					}
+					Map<String, Object> map = new HashMap<>();
+					map.put("clazzId",studentDO.getClazzId());
+					List<TeacherClazzDO> teacherClazzDOS = teacherClazzMapper.list(map);
+					List<TeacherDO> teacherDOS = new ArrayList<>();
+					if (ObjectUtils.isNotEmpty(teacherClazzDOS)){
+						for (TeacherClazzDO tc:teacherClazzDOS) {
+							Long teacherId = tc.getTeacherId();
+							if (ObjectUtils.isNotEmpty(teacherId)){
+								TeacherDO teacherDO = teacherMapper.get(teacherId);
+								if (ObjectUtils.isNotEmpty(teacherDO)){
+									Long userId = teacherDO.getUserId();
+									if (ObjectUtils.isNotEmpty(userId)){
+										UserDO userDO = userMapper.get(userId);
+										if (ObjectUtils.isNotEmpty(userDO)){
+											teacherDO.setUserPhone(userDO.getUserPhone());
+										}
+									}
+								}
+								teacherDOS.add(teacherDO);
+							}
+						}
+						clazzMap.put("teacherDOS",removeDuplicate(teacherDOS));
+						return clazzMap;
+					}else {
+						throw new Exception("暂无数据");
+					}
+				}
 			}
-			clazzMap.put("teacherDOS",removeDuplicate(teacherDOS));
-			return clazzMap;
 		}else {
-			throw new Exception("暂无数据");
+			throw new Exception("学生不存在,请联系管理员");
 		}
-
+		return null;
 	}
 
 	/**
@@ -181,28 +227,56 @@ public class WxUserServiceImpl implements WxUserService {
 		if (ObjectUtils.isNotEmpty(teacherClazzDOS)){
 			for (TeacherClazzDO tc:teacherClazzDOS) {
 				ClazzDO clazzDO = clazzMapper.get(tc.getClazzId());
-				Map<String, Object> clazzMap = JavaBeanUtil.object2Map(clazzDO);
-				clazzMap.put("gradeName",gradeMapper.get(clazzDO.getGradeId()).getGradeName());
-				List<ParentsDO> parentsDOS = new ArrayList<>();
-				Map<String, Object> map = new HashMap<>();
-				map.put("clazzId",clazzDO.getClazzId());
-				List<StudentDO> studentDOS = studentMapper.list(map);
-				for (StudentDO st:studentDOS) {
-					Map<String, Object> map1 = new HashMap<>();
-					map1.put("stuId",st.getStuId());
-					List<ParentsStuDO> parentsStuDOS = parentsStuMapper.list(map1);
-					List<ParentsDO> parents= new ArrayList<>();
-					for (ParentsStuDO ps:parentsStuDOS) {
-						ParentsDO parentsDO = parentsMapper.get(ps.getParentId());
-						parentsDO.setUserPhone(userMapper.get(parentsDO.getUserId()).getUserPhone());
-						parents.add(parentsDO);
-						parentsDOS.add(parentsDO);
+				if (ObjectUtils.isNotEmpty(clazzDO)){
+					Map<String, Object> clazzMap = JavaBeanUtil.object2Map(clazzDO);
+					Long gradeId = clazzDO.getGradeId();
+					if (ObjectUtils.isNotEmpty(gradeId)){
+						GradeDO gradeDO = gradeMapper.get(gradeId);
+						if (ObjectUtils.isNotEmpty(gradeDO)){
+							clazzMap.put("gradeName",gradeDO.getGradeName());
+						}
+					}
+					List<ParentsDO> parentsDOS = new ArrayList<>();
+					Map<String, Object> map = new HashMap<>();
+					map.put("clazzId",clazzDO.getClazzId());
+					List<StudentDO> studentDOS = studentMapper.list(map);
+					if (ObjectUtils.isNotEmpty(studentDOS)){
+						for (StudentDO st:studentDOS) {
+							Map<String, Object> map1 = new HashMap<>();
+							map1.put("stuId",st.getStuId());
+							List<ParentsStuDO> parentsStuDOS = parentsStuMapper.list(map1);
+							List<ParentsDO> parents= new ArrayList<>();
+							if (ObjectUtils.isNotEmpty(parentsStuDOS)){
+								for (ParentsStuDO ps:parentsStuDOS) {
+									Long parentId = ps.getParentId();
+									if (ObjectUtils.isNotEmpty(parentId)){
+										ParentsDO parentsDO = parentsMapper.get(parentId);
+										if (ObjectUtils.isNotEmpty(parentsDO)){
+											Long userId = parentsDO.getUserId();
+											if (ObjectUtils.isNotEmpty(userId)){
+												UserDO userDO = userMapper.get(userId);
+												if (ObjectUtils.isNotEmpty(userDO)){
+													parentsDO.setUserPhone(userDO.getUserPhone());
+												}
+											}
+
+											parents.add(parentsDO);
+											parentsDOS.add(parentsDO);
+										}
+									}
+
+
+								}
+								st.setParentsDOS(parents);
+							}
+						}
+						clazzMap.put("studentDOS",studentDOS);
+						clazzMap.put("parentsDOS",removeDuplicate(parentsDOS));
+						maps.add(clazzMap);
 					}
-					st.setParentsDOS(parents);
+
 				}
-				clazzMap.put("studentDOS",studentDOS);
-				clazzMap.put("parentsDOS",removeDuplicate(parentsDOS));
-				maps.add(clazzMap);
+
 			}
 			return maps;
 		}else {
@@ -219,28 +293,40 @@ public class WxUserServiceImpl implements WxUserService {
 		List<Map<String, Object>> maps = new ArrayList<>();
 		if (ObjectUtils.isNotEmpty(teacherClazzDOS)){
 			for (TeacherClazzDO tc:teacherClazzDOS) {
-				ClazzDO clazzDO = clazzMapper.get(tc.getClazzId());
-				if (ObjectUtils.isNotEmpty(clazzDO)){
-					Map<String, Object> clazzMap = JavaBeanUtil.object2Map(clazzDO);
-					GradeDO gradeDO = gradeMapper.get(clazzDO.getGradeId());
-					if (ObjectUtils.isNotEmpty(gradeDO)){
-						clazzMap.put("gradeName",gradeDO.getGradeName());
-						Map<String, Object> map = new HashMap<>();
-						map.put("clazzId",clazzDO.getClazzId());
-						List<StudentDO> studentDOS = studentMapper.list(map);
-						List<TeacherClazzDO> list = teacherClazzMapper.list(map);
-						if (ObjectUtils.isNotEmpty(studentDOS)){
-							List<TeacherDO> teacherDOS = new ArrayList<>();
-							for (TeacherClazzDO teacherClazzDO:list) {
-								TeacherDO teacherDO = teacherMapper.get(teacherClazzDO.getTeacherId());
-								teacherDO.setUserPhone(userMapper.get(teacherDO.getUserId()).getUserPhone());
-								teacherDOS.add(teacherDO);
+				Long clazzId = tc.getClazzId();
+				if (ObjectUtils.isNotEmpty(clazzId)){
+					ClazzDO clazzDO = clazzMapper.get(clazzId);
+					if (ObjectUtils.isNotEmpty(clazzDO)){
+						Map<String, Object> clazzMap = JavaBeanUtil.object2Map(clazzDO);
+						Long gradeId = clazzDO.getGradeId();
+						if (ObjectUtils.isNotEmpty(gradeId)){
+							GradeDO gradeDO = gradeMapper.get(gradeId);
+							if (ObjectUtils.isNotEmpty(gradeDO)){
+								clazzMap.put("gradeName",gradeDO.getGradeName());
+								Map<String, Object> map = new HashMap<>();
+								map.put("clazzId",clazzDO.getClazzId());
+								List<StudentDO> studentDOS = studentMapper.list(map);
+								List<TeacherClazzDO> list = teacherClazzMapper.list(map);
+								if (ObjectUtils.isNotEmpty(studentDOS)){
+									List<TeacherDO> teacherDOS = new ArrayList<>();
+									for (TeacherClazzDO teacherClazzDO:list) {
+										Long teacherId1 = teacherClazzDO.getTeacherId();
+										if (ObjectUtils.isNotEmpty(teacherId1)){
+											TeacherDO teacherDO = teacherMapper.get(teacherId1);
+											Long userId = teacherDO.getUserId();
+											if (ObjectUtils.isNotEmpty(userId)){
+												UserDO userDO = userMapper.get(userId);
+												teacherDO.setUserPhone(userDO.getUserPhone());
+											}
+											teacherDOS.add(teacherDO);
+										}
+									}
+									clazzMap.put("studentDOS",removeDuplicate(studentDOS));
+									clazzMap.put("teacherDOS",removeDuplicate(teacherDOS));
+									maps.add(clazzMap);
+								}
 							}
-							clazzMap.put("studentDOS",removeDuplicate(studentDOS));
-							clazzMap.put("teacherDOS",removeDuplicate(teacherDOS));
-							maps.add(clazzMap);
 						}
-
 					}
 				}
 
@@ -263,7 +349,14 @@ public class WxUserServiceImpl implements WxUserService {
 			for (TeacherDO tc:teacherDOS) {
 				tc.setTeacherPhoto(headimgurl);
 				teacherMapper.update(tc);
-				tc.setSchoolName(schoolMapper.get(tc.getSchoolId()).getSchoolName());
+				Long schoolId = tc.getSchoolId();
+				if (ObjectUtils.isNotEmpty(schoolId)){
+					SchoolDO schoolDO = schoolMapper.get(schoolId);
+					if (ObjectUtils.isNotEmpty(schoolDO)){
+						tc.setSchoolName(schoolDO.getSchoolName());
+					}
+				}
+
 
 			}
 		}
@@ -272,7 +365,13 @@ public class WxUserServiceImpl implements WxUserService {
 			for (ParentsDO pt:parentsDOS) {
 				pt.setParentsPhoto(headimgurl);
 				parentsMapper.update(pt);
-				pt.setSchoolName(schoolMapper.get(pt.getSchoolId()).getSchoolName());
+				Long schoolId = pt.getSchoolId();
+				if (ObjectUtils.isNotEmpty(schoolId)){
+					SchoolDO schoolDO = schoolMapper.get(schoolId);
+					if (ObjectUtils.isNotEmpty(schoolDO)){
+						pt.setSchoolName(schoolDO.getSchoolName());
+					}
+				}
 			}
 		}
 		map.put("teacherDOS",teacherDOS);
@@ -290,24 +389,51 @@ public class WxUserServiceImpl implements WxUserService {
 		ParentsDO parentsDO = parentsMapper.getBySchoolAndOpenid(schoolId, openid);
 		if (ObjectUtils.isNotEmpty(teacherDO)) {
 			Map<String, Object> teacherMap = JavaBeanUtil.object2Map(teacherDO);
-			teacherMap.put("schoolName", schoolMapper.get(teacherDO.getSchoolId()).getSchoolName());
-			teacherMap.put("userPhone", userMapper.get(teacherDO.getUserId()).getUserPhone());
+			Long schoolId1 = teacherDO.getSchoolId();
+			if (ObjectUtils.isNotEmpty(schoolId1)){
+				SchoolDO schoolDO = schoolMapper.get(schoolId1);
+				if (ObjectUtils.isNotEmpty(schoolDO)){
+					teacherMap.put("schoolName", schoolDO.getSchoolName());
+				}
+			}
+			Long userId = teacherDO.getUserId();
+			if (ObjectUtils.isNotEmpty(userId)){
+				UserDO userDO = userMapper.get(userId);
+				if (ObjectUtils.isNotEmpty(userDO)){
+					teacherMap.put("userPhone", userDO.getUserPhone());
+				}
+			}
 			List<TeacherClazzDO> teacherClazzDOS = teacherClazzMapper.listByTeacherId(teacherDO.getTeacherId());
 			if (ObjectUtils.isNotEmpty(teacherClazzDOS)) {
 				List<ClazzAlbumDO> picAlbum = new ArrayList<>();
 				List<ClazzAlbumDO> videoAlbum = new ArrayList<>();
 				for (TeacherClazzDO tz : teacherClazzDOS) {
-					if (gradeMapper.get(clazzMapper.get(tz.getClazzId()).getGradeId()).getSchoolId().compareTo(schoolId) == 0) {
-						List<ClazzAlbumDO> listByClazzId = clazzAlbumMapper.getListByClazzId(tz.getClazzId());
-						if (ObjectUtils.isNotEmpty(listByClazzId)) {
-							for (ClazzAlbumDO album : listByClazzId) {
-								List<ClazzPictureDO> clazzPictureDOS = clazzPictureMapper.listByAlbumId(album.getAlbumId());
-								if (ObjectUtils.isNotEmpty(clazzPictureDOS)) {
-									if (album.getAlbumType() == 1) {
-										album.setAlbumUrl(clazzPictureDOS.get(0).getPicUrl());
-										picAlbum.add(album);
-									} else {
-										videoAlbum.add(album);
+					Long clazzId = tz.getClazzId();
+					if (ObjectUtils.isNotEmpty(clazzId)){
+						ClazzDO clazzDO = clazzMapper.get(clazzId);
+						if (ObjectUtils.isNotEmpty(clazzDO)){
+							Long gradeId = clazzDO.getGradeId();
+							if (ObjectUtils.isNotEmpty(gradeId)){
+								GradeDO gradeDO = gradeMapper.get(gradeId);
+								if (ObjectUtils.isNotEmpty(gradeDO)){
+									Long schoolId2 = gradeDO.getSchoolId();
+									if (ObjectUtils.isNotEmpty(schoolId2)){
+										if (schoolId2.compareTo(schoolId) == 0) {
+											List<ClazzAlbumDO> listByClazzId = clazzAlbumMapper.getListByClazzId(clazzId);
+											if (ObjectUtils.isNotEmpty(listByClazzId)) {
+												for (ClazzAlbumDO album : listByClazzId) {
+													List<ClazzPictureDO> clazzPictureDOS = clazzPictureMapper.listByAlbumId(album.getAlbumId());
+													if (ObjectUtils.isNotEmpty(clazzPictureDOS)) {
+														if (album.getAlbumType() == 1) {
+															album.setAlbumUrl(clazzPictureDOS.get(0).getPicUrl());
+															picAlbum.add(album);
+														} else {
+															videoAlbum.add(album);
+														}
+													}
+												}
+											}
+										}
 									}
 								}
 							}
@@ -323,34 +449,58 @@ public class WxUserServiceImpl implements WxUserService {
 			Map<String, Object> parentsMap = JavaBeanUtil.object2Map(parentsDO);
 			Map<String, Object> objectHashMap = new HashMap<>();
 			objectHashMap.put("parentId", parentsDO.getParentId());
-			parentsMap.put("schoolName", schoolMapper.get(parentsDO.getSchoolId()).getSchoolName());
-			parentsMap.put("userPhone", userMapper.get(parentsDO.getUserId()).getUserPhone());
+			Long schoolId1 = parentsDO.getSchoolId();
+			if (ObjectUtils.isNotEmpty(schoolId1)){
+				SchoolDO schoolDO = schoolMapper.get(schoolId1);
+				if (ObjectUtils.isNotEmpty(schoolDO)){
+					parentsMap.put("schoolName", schoolDO.getSchoolName());
+				}
+			}
+			Long userId = parentsDO.getUserId();
+			if (ObjectUtils.isNotEmpty(userId)){
+				UserDO userDO = userMapper.get(userId);
+				if (ObjectUtils.isNotEmpty(userDO)){
+					parentsMap.put("userPhone", userDO.getUserPhone());
+				}
+			}
 			List<ParentsStuDO> list = parentsStuMapper.list(objectHashMap);
 			if (ObjectUtils.isNotEmpty(list)) {
 				List students = new ArrayList<Map<String,Object>>();
 				for (ParentsStuDO ps : list) {
-					StudentDO studentDO = studentMapper.get(ps.getStuId());
-					if (studentDO.getSchoolId().compareTo(schoolId) == 0) {
-						Map<String, Object> studentMap = JavaBeanUtil.object2Map(studentDO);
-						List<ClazzAlbumDO> picAlbum = new ArrayList<>();
-						List<ClazzAlbumDO> videoAlbum = new ArrayList<>();
-						List<ClazzAlbumDO> listByClazzId = clazzAlbumMapper.getListByClazzId(studentDO.getClazzId());
-						if (ObjectUtils.isNotEmpty(listByClazzId)) {
-							for (ClazzAlbumDO album : listByClazzId) {
-								List<ClazzPictureDO> clazzPictureDOS = clazzPictureMapper.listByAlbumId(album.getAlbumId());
-								if (ObjectUtils.isNotEmpty(clazzPictureDOS)) {
-									if (album.getAlbumType() == 1) {
-										album.setAlbumUrl(clazzPictureDOS.get(0).getPicUrl());
-										picAlbum.add(album);
-									} else {
-										videoAlbum.add(album);
+					Long stuId = ps.getStuId();
+					if (ObjectUtils.isNotEmpty(stuId)){
+						StudentDO studentDO = studentMapper.get(stuId);
+						if (ObjectUtils.isNotEmpty(studentDO)){
+							Long schoolId2 = studentDO.getSchoolId();
+							if (ObjectUtils.isNotEmpty(schoolId2)){
+								if (schoolId2.compareTo(schoolId) == 0) {
+									Map<String, Object> studentMap = JavaBeanUtil.object2Map(studentDO);
+									List<ClazzAlbumDO> picAlbum = new ArrayList<>();
+									List<ClazzAlbumDO> videoAlbum = new ArrayList<>();
+									Long clazzId = studentDO.getClazzId();
+									if (ObjectUtils.isNotEmpty(clazzId)){
+										List<ClazzAlbumDO> listByClazzId = clazzAlbumMapper.getListByClazzId(clazzId);
+										if (ObjectUtils.isNotEmpty(listByClazzId)) {
+											for (ClazzAlbumDO album : listByClazzId) {
+												List<ClazzPictureDO> clazzPictureDOS = clazzPictureMapper.listByAlbumId(album.getAlbumId());
+												if (ObjectUtils.isNotEmpty(clazzPictureDOS)) {
+													if (album.getAlbumType() == 1) {
+														album.setAlbumUrl(clazzPictureDOS.get(0).getPicUrl());
+														picAlbum.add(album);
+													} else {
+														videoAlbum.add(album);
+													}
+												}
+											}
+										}
 									}
+									studentMap.put("picAlbum", picAlbum);
+									studentMap.put("videoAlbum", videoAlbum);
+									students.add(studentMap);
 								}
 							}
+
 						}
-						studentMap.put("picAlbum", picAlbum);
-						studentMap.put("videoAlbum", videoAlbum);
-						students.add(studentMap);
 					}
 				}
 				parentsMap.put("studentDOs",students);
@@ -370,18 +520,23 @@ public class WxUserServiceImpl implements WxUserService {
 		TeacherDO teacherDO = teacherMapper.getBySchoolAndOpenid(schoolId, openid);
 		ParentsDO parentsDO = parentsMapper.getBySchoolAndOpenid(schoolId, openid);
 		if (ObjectUtils.isNotEmpty(teacherDO)){
-			UserDO userDO = userMapper.get(teacherDO.getUserId());
-			if (ObjectUtils.isNotEmpty(userDO)){
-				String vcode = SendMsgUtil.createRandomVcode(CodeConfig.getCodeNumber());
-				userDO.setUserCode(vcode);
-				int update = userMapper.update(userDO);
-				if (update>0){
-					SendSmsResponse sendSmsResponse = SendCode.sendSms(userPhone, vcode);
-					Timer timer = new Timer();
-					timer.schedule(new CodeTask(userMapper,userDO.getUserId()), DateFormatUtil.long2Date(new Date().getTime()+5*60*1000));
-					return sendSmsResponse;
+			Long userId = teacherDO.getUserId();
+			if (ObjectUtils.isNotEmpty(userId)){
+				UserDO userDO = userMapper.get(userId);
+				if (ObjectUtils.isNotEmpty(userDO)){
+					String vcode = SendMsgUtil.createRandomVcode(CodeConfig.getCodeNumber());
+					userDO.setUserCode(vcode);
+					int update = userMapper.update(userDO);
+					if (update>0){
+						SendSmsResponse sendSmsResponse = SendCode.sendSms(userPhone, vcode);
+						Timer timer = new Timer();
+						timer.schedule(new CodeTask(userMapper,userDO.getUserId()), DateFormatUtil.long2Date(new Date().getTime()+5*60*1000));
+						return sendSmsResponse;
+					}else {
+						throw  new Exception("系统错误,请联系管理员");
+					}
 				}else {
-					throw  new Exception("系统错误,请联系管理员");
+					throw  new Exception("该用户不存在,请联系管理员");
 				}
 			}else {
 				throw  new Exception("该用户不存在,请联系管理员");

+ 7 - 2
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxVoteServiceImpl.java

@@ -64,8 +64,13 @@ public class WxVoteServiceImpl implements WxVoteService {
         VoteDO vote = new VoteDO();
         vote.setCreatDate(new Date());
         Long creator = votes.getLong("creator");
-        vote.setCreator(creator);
-        vote.setSchoolId(teacherMapper.get(creator).getSchoolId());
+        if (ObjectUtils.isNotEmpty(creator)){
+            vote.setCreator(creator);
+            TeacherDO teacherDO = teacherMapper.get(creator);
+            if (ObjectUtils.isNotEmpty(teacherDO)){
+                vote.setSchoolId(teacherDO.getSchoolId());
+            }
+        }
         vote.setVoteFile(votes.getString("voteFile"));
         vote.setVoteName(votes.getString("voteName"));
         vote.setVoteType(votes.getInteger("voteType"));

+ 12 - 3
applications/school/school-server/src/main/resources/mapper/SysStudentMapper.xml

@@ -397,9 +397,18 @@
 
   <update id="updateParents" parameterType="com.usoftchina.smartschool.school.po.SysParents" >
     <foreach collection="list" item="item" index="index" open="" close="" separator=";">
-      update sys_parents <set>
-      parents_name = #{item.parents_name,jdbcType=VARCHAR},pa_phone = #{item.pa_phone,jdbcType=VARCHAR}
-    </set>
+      update sys_parents
+      <set>
+        <if test="item.parents_name != null">
+          parents_name = #{item.parents_name,jdbcType=VARCHAR},
+        </if>
+        <if test="item.pa_phone != null">
+          pa_phone = #{item.pa_phone,jdbcType=VARCHAR},
+        </if>
+        <if test="item.user_id != null">
+          user_id = #{item.user_id,jdbcType=VARCHAR}
+        </if>
+      </set>
       where parent_id = #{item.parent_id,jdbcType=BIGINT}
     </foreach>
   </update>

+ 2 - 2
applications/school/school-server/src/main/resources/mapper/WxMeetingMapper.xml

@@ -131,8 +131,8 @@
 	<select id="selectMeetingListByCreator" resultType="com.usoftchina.smartschool.school.po.MeetingDO">
 		<include refid="MeetingVo"/>
 		<where>
-			<if test="meetingStatus != null">`meeting_status` = #{meetingStatus}and </if>
 			meeting_creator = #{meetingCreator}
+			<if test="meetingStatus != null and meetingStatus != ''"> and meeting_status = #{meetingStatus} </if>
 		</where>
 		order by meeting_id desc
 		limit #{pageStart},#{pageSize}
@@ -141,8 +141,8 @@
 	<select id="selectMeetingListByLike" resultType="com.usoftchina.smartschool.school.po.MeetingDO">
 		<include refid="MeetingVo"/>
 		<where>
-			<if test="meetingStatus != null">`meeting_status` = #{meetingStatus}and </if>
 			meeting_notifier like #{meetingNotifier}
+			<if test="meetingStatus != null and meetingStatus != ''"> and meeting_status = #{meetingStatus} </if>
 		</where>
 		order by meeting_id desc
 		limit #{pageStart},#{pageSize}

+ 25 - 5
applications/school/school-server/src/main/resources/mapper/WxTaskNotifyMapper.xml

@@ -4,7 +4,7 @@
 <mapper namespace="com.usoftchina.smartschool.school.wxschool.mapper.WxTaskNotifyMapper">
 
     <sql id="TaskNotifyVo">
-    select `task_id`,`subject_id`,`task_title`,`task_context`,`task_files`,`task_status`,`create_date`,`start_date`,`end_date`,`task_creator`,`school_id`,`task_notifier` from task_notify
+    select `task_id`,`subject_id`,`task_title`,`task_context`,`task_files`,`task_status`,`create_date`,`start_date`,`end_date`,`task_creator`,`school_id`,`task_notifier`,`classz_name`,`grade_name`,`creator`,`publish_date` from task_notify
     </sql>
 
 	<select id="get" resultType="com.usoftchina.smartschool.school.po.TaskNotifyDO">
@@ -26,6 +26,10 @@
 		  		  <if test="taskCreator != null and taskCreator != ''"> and task_creator = #{taskCreator} </if>
 			<if test="schoolId != null and schoolId != ''"> and school_id = #{schoolId} </if>
 			<if test="taskNotifier != null and taskNotifier != ''"> and task_notifier = #{taskNotifier} </if>
+			<if test="classzName != null and classzName != ''"> and classz_name = #{classzName} </if>
+			<if test="gradeName != null and gradeName != ''"> and grade_name = #{gradeName} </if>
+			<if test="creator != null and creator != ''"> and creator = #{creator} </if>
+			<if test="publishDate != null and publishDate != ''"> and publish_date = #{publishDate} </if>
 		  		</where>
         <choose>
             <when test="sort != null and sort.trim() != ''">
@@ -55,6 +59,10 @@
 		  		  <if test="taskCreator != null and taskCreator != ''"> and task_creator = #{taskCreator} </if>
 			 <if test="schoolId != null and schoolId != ''"> and school_id = #{schoolId} </if>
 			 <if test="taskNotifier != null and taskNotifier != ''"> and task_notifier = #{taskNotifier} </if>
+			 <if test="classzName != null and classzName != ''"> and classz_name = #{classzName} </if>
+			 <if test="gradeName != null and gradeName != ''"> and grade_name = #{gradeName} </if>
+			 <if test="creator != null and creator != ''"> and creator = #{creator} </if>
+			 <if test="publishDate != null and publishDate != ''"> and publish_date = #{publishDate} </if>
 		  		</where>
 	</select>
 	 
@@ -71,7 +79,11 @@
 			`end_date`, 
 			`task_creator`,
 			`school_id`,
-			`task_notifier`
+			`task_notifier`,
+			`classz_name`,
+			`grade_name`,
+			`creator`,
+			`publish_date`
 		)
 		values
 		(
@@ -85,7 +97,11 @@
 			#{endDate}, 
 			#{taskCreator},
 			#{schoolId},
-			#{taskNotifier}
+			#{taskNotifier},
+			#{classzName},
+			#{gradeName},
+			#{creator},
+			#{publishDate}
 		)
 	</insert>
 	 
@@ -101,8 +117,12 @@
 			<if test="startDate != null">`start_date` = #{startDate}, </if>
 			<if test="endDate != null">`end_date` = #{endDate}, </if>
 			<if test="taskCreator != null">`task_creator` = #{taskCreator},</if>
-			<if test="schoolId != null and schoolId != ''"> `school_id` = #{schoolId}, </if>
-			<if test="taskNotifier != null and taskNotifier != ''"> `task_notifier` = #{taskNotifier} </if>
+			<if test="schoolId != null"> `school_id` = #{schoolId}, </if>
+			<if test="taskNotifier != null"> `task_notifier` = #{taskNotifier}, </if>
+			<if test="classzName != null "> `classz_name` = #{classzName}, </if>
+			<if test="gradeName != null "> `grade_name` = #{gradeName}, </if>
+			<if test="creator != null"> `creator` = #{creator}, </if>
+			<if test="publishDate != null"> `publish_date` = #{publishDate} </if>
 		</set>
 		where task_id = #{taskId}
 	</update>

+ 1 - 1
base-servers/account/account-api/src/main/java/com/usoftchina/smartschool/account/api/AccountApi.java

@@ -25,6 +25,6 @@ public interface AccountApi {
     Result<String> getUsername(@RequestParam(value = "schoolId") Long schoolId, @RequestParam(value = "userId") Long userId);
 
     @GetMapping("/account/register")
-    Result<String> register(@RequestBody AccountRegDTO accountRegDTO);
+    Result<Long> register(@RequestBody AccountRegDTO accountRegDTO);
 
 }

+ 1 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/controller/AccountController.java

@@ -43,7 +43,7 @@ public class AccountController {
         //绑定角色
         accountService.bindRole(account.getId(), accountRegDTO.getRoleId());
 
-        return Result.success();
+        return Result.success(account.getId());
     }
 
     /**

+ 7 - 6
frontend/pc-web/app/view/Interaction/homework/List.js

@@ -62,7 +62,8 @@ Ext.define('school.view.interaction.homework.List', {
                 fieldLabel: '发布状态',
                 displayField: 'name',
                 valueField: 'value',
-                editable: true,
+                editable: false,
+                clearable: true,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name', 'value'],
                     data: [
@@ -72,11 +73,11 @@ Ext.define('school.view.interaction.homework.List', {
                 }),
                 minChars: 0,
                 queryMode: 'local'
-            // }, {
-            //     xtype: 'condatefield',
-            //     name: 'publish_date',
-            //     fieldLabel: '发布时间',
-            //     columnWidth: 0.5
+            }, {
+                xtype: 'condatefield',
+                name: 'publish_date',
+                fieldLabel: '发布时间',
+                columnWidth: 0.5
             }],
 
             gridConfig: {

+ 4 - 2
frontend/pc-web/app/view/Interaction/mailbox/List.js

@@ -58,7 +58,8 @@ Ext.define('school.view.interaction.mailbox.List', {
                 name: 'mb_reply',
                 displayField: 'name',
                 valueField: 'value',
-                editable: true,
+                editable: false,
+                clearable: true,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name', 'value'],
                     data: [['已回复', 3], ['未回复', 0]]
@@ -74,7 +75,8 @@ Ext.define('school.view.interaction.mailbox.List', {
                 name: 'mb_ignore',
                 displayField: 'name',
                 valueField: 'value',
-                editable: true,
+                editable: false,
+                clearable: true,
                 value: '0',
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name', 'value'],

+ 7 - 6
frontend/pc-web/app/view/Interaction/notice/List.js

@@ -29,18 +29,19 @@ Ext.define('school.view.interaction.notice.List', {
                 fieldLabel: '发布状态',
                 displayField: 'name',
                 valueField: 'value',
-                editable: true,
+                editable: false,
+                clearable: true,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['name', 'value'],
                     data: [['已发布', 1], ['未发布', 2]]
                 }),
                 minChars: 0,
                 queryMode: 'local'
-            // }, {
-            //     xtype: 'condatefield',
-            //     name: 'publish_date',
-            //     fieldLabel: '发布时间',
-            //     columnWidth: 0.5
+            }, {
+                xtype: 'condatefield',
+                name: 'publish_date',
+                fieldLabel: '发布时间',
+                columnWidth: 0.5
             }],
         
             gridConfig: {

+ 5 - 0
frontend/pc-web/app/view/Interaction/score/List.js

@@ -55,6 +55,11 @@ Ext.define('school.view.interaction.score.List', {
                 getCondition: function (value) {
                     return ' (sd_stu like\'%' + value + '%\') ';
                 }
+            }, {
+                xtype: 'condatefield',
+                name: 'si_examdate',
+                fieldLabel: '考试时间',
+                columnWidth: 0.5
             }],
 
             gridConfig: {

+ 90 - 16
frontend/pc-web/app/view/Interaction/timetable/Detail.js

@@ -17,7 +17,10 @@ Ext.define('school.view.interaction.timetable.Detail', {
 
     START_TIME: Ext.Date.parse('08:00', 'H:i'), // 开始上课时间
     END_TIME: Ext.Date.parse('22:00', 'H:i'), // 结束上课时间
-    MIN_WHILE: 10, // 一节课最小时间(分钟)
+    MIN_MIN_WHILE: 5, // 最小一节课时间(分钟)
+    CLASS_TIME: 30, // 一节课时间(分钟)
+    MIN_BREAK_TIME: 5, // 最小课间休息时间(分钟)
+    BREAK_TIME: 5, // 课间休息时间(分钟)
 
 
     initComponent: function () {
@@ -164,8 +167,9 @@ Ext.define('school.view.interaction.timetable.Detail', {
                 deleteDetailUrl: '/api/school/curriculum/deleteDetail',
                 allowEmpty: true,
                 showCount: false,
-                emptyRows: 10,
+                emptyRows: 8,
                 rowViewModel: {},
+                minHeight: 350,
                 columns: [{
                     text: 'id',
                     dataIndex: 'id',
@@ -186,7 +190,6 @@ Ext.define('school.view.interaction.timetable.Detail', {
                         },
                         items: [{
                             xtype: 'button',
-                            text: '0:00',
                             bind: {
                                 text: '{record._timeText1}',
                             },
@@ -197,7 +200,21 @@ Ext.define('school.view.interaction.timetable.Detail', {
                                 padding: 0
                             },
                             handler: function(btn) {
-                                me.currentRecord = btn.ownerCt.$widgetRecord;
+                                let record = btn.ownerCt.$widgetRecord;
+                                let store = record.store;
+                                let idx = record.get('lessons') - 2;
+                                let preRecord, preDate;
+
+                                if(idx > -1) {
+                                    preRecord = store.getAt(idx);
+                                    preDate = preRecord.get('_time2');
+
+                                    if(!!preDate && Ext.Date.format(preDate, 'H:i') != '00:00' && Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME) <= Ext.Date.parse(Ext.Date.format(preDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
+                                        record.set('startTime', Ext.Date.format(Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME), 'H:i:s'));
+                                    }
+                                }
+                                
+                                me.currentRecord = record;
                             },
                             menu: {
                                 xtype: 'menu',
@@ -207,18 +224,45 @@ Ext.define('school.view.interaction.timetable.Detail', {
                                     maxHeight: 300,
                                     increment: 5,
                                     format: 'H:i',
-                                    minValue: Ext.Date.parse('08:00', 'H:i'),
-                                    maxValue: Ext.Date.parse('22:00', 'H:i'),
+                                    minValue: me.START_TIME,
+                                    maxValue: me.END_TIME,
                                     listeners: {
                                         select: function(model, record, index, eOpts) {
                                             me.onSelectPeriod0(this, this.up(), record);
                                         },
                                     }
-                                }]
+                                }],
+                                listeners: {
+                                    beforeshow: function(th, eOpts) {
+                                        let record = th.ownerCmp.ownerCt.$widgetRecord
+                                        let picker = th.down('timepicker');
+                                        let store = th.ownerCmp.ownerCt.$widgetRecord.store;
+                                        let idx = record.get('lessons') - 2;
+                                        let preRecord, preDate, minValue;
+                                        
+                                        me.currentRecord = record;
+
+                                        if(idx > -1) {
+                                            preRecord = store.getAt(idx);
+                                            preDate = preRecord.get('_time2');
+                                            if(Ext.Date.format(preDate, 'H:i') == '00:00') {
+                                                school.util.BaseUtil.showErrorToast('请先完成上一课时设置');
+                                                return false;
+                                            }
+                                            if(Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME) >= Ext.Date.parse(Ext.Date.format(preDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
+                                                school.util.BaseUtil.showErrorToast('可用课程时间不足(08:00~22:00)');
+                                            }
+                                            minValue = Ext.Date.add(preDate, Ext.Date.MINUTE, me.MIN_BREAK_TIME);
+                                        }else {
+                                            minValue = Ext.Date.parse('08:00', 'H:i');
+                                        }
+
+                                        picker.setMinValue(minValue)
+                                    },
+                                }
                             },
                         }, {
                             xtype: 'button',
-                            text: '0:00',
                             bind: {
                                 text: '{record._timeText2}',
                             },
@@ -228,16 +272,26 @@ Ext.define('school.view.interaction.timetable.Detail', {
                                 width: '74px',
                                 padding: 0
                             },
+                            handler: function(btn) {
+                                let record = btn.ownerCt.$widgetRecord;
+                                let startDate = record.get('_time1');
+                                
+                                if(Ext.Date.format(startDate, 'H:i') != '00:00' && Ext.Date.add(startDate, Ext.Date.MINUTE, me.CLASS_TIME) <= Ext.Date.parse(Ext.Date.format(startDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
+                                    record.set('endTime', Ext.Date.format(Ext.Date.add(startDate, Ext.Date.MINUTE, me.CLASS_TIME), 'H:i:s'));
+                                }
+
+                                me.currentRecord = record;
+                            },
                             menu: {
                                 xtype: 'menu',
                                 plain: true,
                                 items: [{
                                     xtype: 'timepicker',
                                     maxHeight: 300,
-                                    increment: 10,
+                                    increment: 5,
                                     format: 'H:i',
-                                    minValue: Ext.Date.parse('08:00', 'H:i'),
-                                    maxValue: Ext.Date.parse('22:00', 'H:i'),
+                                    minValue: me.START_TIME,
+                                    maxValue: me.END_TIME,
                                     listeners: {
                                         select: function(model, record, index, eOpts) {
                                             me.onSelectPeriod1(this, this.up(), record);
@@ -246,10 +300,18 @@ Ext.define('school.view.interaction.timetable.Detail', {
                                 }],
                                 listeners: {
                                     beforeshow: function(th, eOpts) {
-                                        me.currentRecord = th.ownerCmp.ownerCt.$widgetRecord;
+                                        let record = th.ownerCmp.ownerCt.$widgetRecord;
                                         let picker = th.down('timepicker');
-                                        let startDate = me.currentRecord.get('_time1') || Ext.Date.parse('08:00', 'H:i');
-                                        let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_WHILE);
+
+                                        if(Ext.Date.format(record.get('_time1'), 'H:i') == '00:00') {
+                                            school.util.BaseUtil.showErrorToast('请先设置开始时间');
+                                            return false;
+                                        }
+
+                                        let startDate = record.get('_time1') || Ext.Date.parse('08:00', 'H:i');
+                                        let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_MIN_WHILE);
+                                        me.currentRecord = record;
+
                                         picker.setMinValue(minValue)
                                     },
                                 }
@@ -294,15 +356,27 @@ Ext.define('school.view.interaction.timetable.Detail', {
 
     onSelectPeriod0: function(picker, menu, record) {
         let me = this;
-        me.currentRecord.set('startTime', Ext.Date.format(record.get('date'), 'H:i:s'));
+        let cRecord = me.currentRecord;
+        let store = cRecord.store,
+        preIdx = cRecord.get('lessons') - 2, preRecord;
+
+        cRecord.set('startTime', Ext.Date.format(record.get('date'), 'H:i:s'));
         menu.setVisible(false);
+
+        if(preIdx > -1) {
+            preRecord = store.getAt(preIdx);
+            if(!!preRecord) {
+                let breakTime = Math.abs(Ext.Date.diff(cRecord.get('_time1'), preRecord.get('_time2'), Ext.Date.MINUTE));
+                me.BREAK_TIME = breakTime;
+            }
+        }
     },
 
     onSelectPeriod1: function(picker, menu, record) {
         let me = this;
         me.currentRecord.set('endTime', Ext.Date.format(record.get('date'), 'H:i:s'));
         menu.setVisible(false);
-        let classTime = Math.abs(Ext.Date.diff(me.currentRecord.get('_time1'), record.get('date'), Ext.Date.MINUTE));
+        let classTime = Math.abs(Ext.Date.diff(me.currentRecord.get('_time1'), me.currentRecord.get('_time2'), Ext.Date.MINUTE));
         me.CLASS_TIME = classTime;
     },
 

+ 2 - 0
frontend/pc-web/app/view/Interaction/timetable/List.js

@@ -89,6 +89,8 @@ Ext.define('school.view.interaction.timetable.List', {
                 queryModel: 'local',
                 displayField: 'value',
                 valueField: 'value',
+                editable: false,
+                clearable: true,
                 store: Ext.create('Ext.data.ArrayStore', {
                     fields: ['value'],
                     data: [['第一学期'], ['第二学期']]

+ 2 - 10
frontend/pc-web/app/view/basic/subject/List.js

@@ -59,18 +59,10 @@ Ext.define('school.view.basic.subject.List', {
                     align: 'center',
                     items: [{
                         tooltip: '编辑',
-                        iconCls: 'x-fa fa-pencil fa-fw',
-                        scope:this,
-                        listeners: {
-                            click: function() {
-                                debugger;
-                            }
-                        }
+                        iconCls: 'x-fa fa-pencil fa-fw'
                     },{
-                        text:'删除',
                         iconCls:'x-fa fa-trash-o fa-fw',
-                        tooltip: '删除',
-                        scope:this
+                        tooltip: '删除'
                     }],
                     listeners: {
                         click: 'onActionClick'

+ 13 - 5
frontend/pc-web/app/view/core/form/field/DetailGridField.js

@@ -38,8 +38,8 @@ Ext.define('school.view.core.form.field.DetailGridField', {
 
         addRows = function(id) {
             var grid = Ext.getCmp(id);
-            if(grid.editable && !grid.readOnly) {
-                grid.addDetail(0);
+            if(grid.editable && !grid.readOnly && grid.fireEvent('beforeAddRow', grid, 0, null, null) != false) {
+                grid.addDetail(0, null, null);
             }
         };
 
@@ -119,7 +119,9 @@ Ext.define('school.view.core.form.field.DetailGridField', {
                     if(target.classList.contains('fa-minus')) {
                         me.deleteDetail(detno);
                     }else if(target.classList.contains('fa-plus')) {
-                        me.addDetail(detno);
+                        if(me.fireEvent('beforeAddRow', me, detno, null, record) != false) {
+                            me.addDetail(detno, null, record);
+                        }
                     }
                 },
                 scope: me
@@ -227,7 +229,12 @@ Ext.define('school.view.core.form.field.DetailGridField', {
         store.insert(store.indexOf(selectedRecord) + 1, datas);
     },
 
-    addDetail: function(v, d) {
+    /**
+     * v: 上一条记录的detno值
+     * d: 可设置的新增初始值
+     * r: 上一条记录的record
+     */
+    addDetail: function(v, d, lr) {
         var me = this;
         if(!me.editable || me.readOnly) {
             return;
@@ -248,7 +255,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
 
         var data = d || Ext.clone(me.defaultRecord);
         data[detnoColumn] = v + 1;
-        var r = store.insert(store.indexOf(selectedRecord) + 1, data);
+        var r = store.insert(store.indexOf(selectedRecord) + 1, data)[0];
 
         store.each(function(s) {
             var itemFields = s.fields,
@@ -270,6 +277,7 @@ Ext.define('school.view.core.form.field.DetailGridField', {
             }
         });
 
+        me.fireEvent('afterAddRow', me, r, lr);
         me.fireEvent('validChange');
         return r;
     },

+ 27 - 23
frontend/pc-web/app/view/core/form/field/TrashField.js

@@ -3,16 +3,39 @@
  * 附件删除、下载、显示
  */
 Ext.define('school.view.core.form.field.TrashField', {
-	extend : 'Ext.form.field.Trigger',
+	extend : 'Ext.form.field.Text',
 	alias : 'widget.trashfield',
-	trigger1Cls: 'x-form-download-trigger',
-    trigger2Cls: 'x-form-trash-trigger',
     style:'margin:5px 0 0 0',
 	fieldStyle: 'background:#C6E2FF;color:#D9D9D9;',
     autoShow: true,
 	initComponent : function() {
 		this.callParent(arguments);
 	},
+	triggers: {
+		foo: {
+			cls: 'x-form-download-trigger',
+			handler: function(e){
+				this.download();
+			},
+		},
+		bar: {
+			cls: 'x-form-trash-trigger',
+			handler: function(){
+				var me = this;
+				school.util.BaseUtil.warnMsg('确定删除' + me.value, function(btn){
+					if(btn == 'yes'){
+						var v = me.ownerCt.value.replace(me._id+';','')
+						
+						me.ownerCt.setValue(v);
+						// if(v == '') {
+						// 	me.ownerCt.dirty = false;
+						// }
+						me.ownerCt.remove(me)
+					}
+				});
+			},
+		}
+	},
 	listeners : {
 		afterrender : function() {
 			var me = this, c = Ext.Function.bind(me.onTrigger1Click, me);
@@ -32,26 +55,7 @@ Ext.define('school.view.core.form.field.TrashField', {
 			}, 200);*/
 		}
 	},
-	onTrigger1Click: function(e){
-        this.download();
-	},
-	onTrigger2Click: function(){
-		var me = this;
-		school.util.BaseUtil.warnMsg('确定删除' + me.value, function(btn){
-			if(btn == 'yes'){
-                var v = me.ownerCt.value.replace(me._id+';','')
-                me.ownerCt.setValue(v);
-                me.ownerCt.remove(me)
-				// var v = me.ownerCt.down('hidden').value.replace(me.filepath + ';', '');
-				// me.updateAttachField(v, '删除附件', function(){
-				// 	me.ownerCt.down('hidden').setValue(v);
-				// 	me.ownerCt.filesize -= me.filesize;
-				// 	me.ownerCt.setTitle('<img src="' + basePath + 'resource/images/icon/clip.png" width=20 height=20/>附件' + 
-				// 			'(总大小:' + Ext.util.Format.fileSize(me.ownerCt.filesize) + ")");
-				// });
-			}
-		});
-	},
+	
 	download : function() {
         var me = this;
         var serverOptions = Ext.manifest.server;

+ 1 - 1
frontend/pc-web/app/view/main/Main.js

@@ -57,7 +57,7 @@ Ext.define('school.view.main.Main', {
                     name:'realname',
                     cls:'sa-nav-button sa-nav-realname',
                     bind: {
-                        html: '{account.realname}'
+                        html: '{account.username}'
                     }
                 },
                 {

+ 37 - 0
frontend/pc-web/overrides/form/field/ComboBox.js

@@ -0,0 +1,37 @@
+Ext.define("school.override.form.field.ComboBox", {
+    override: "Ext.form.field.ComboBox",
+    
+    clearable: false,
+
+    config: {
+        triggers: {
+            clear: {
+                weight: -1,
+                cls: 'fa-times',
+                hidden: true,
+                onFieldFocus: function() {
+                    if(this.field.clearable) {
+                        this.setHidden(false);
+                    }
+                },
+                onFieldBlur: function() {
+                    if(this.field.clearable) {
+                        this.setHidden(true);
+                    }
+                },
+                handler: function() {
+                    if(this.clearable) {
+                        this.setValue(null)
+                        this.triggers.clear.setHidden(true)
+                    }
+                }
+            },
+            picker: {
+                handler: 'onTriggerClick',
+                scope: 'this',
+                focusOnMousedown: true
+            }
+        }
+    },
+
+});

+ 5 - 2
frontend/wechat-web/src/components/PhonesItem.jsx

@@ -9,6 +9,7 @@ import {Icon, Avatar} from 'antd'
 import 'css/phones.css'
 import {isObjEmpty} from "../utils/common";
 import {Modal} from 'antd-mobile'
+import phone_img from '../style/imgs/phone_icon.png';
 
 const {alert} = Modal
 
@@ -43,11 +44,13 @@ export default class PhonesItem extends Component {
                             phonesBean.phone.length <= 1 ?
                                 <a href={'tel:' + phonesBean.phone[0]} style={{display: 'flex', alignItems: 'center'}}>
                                     <div className='phones-item-phone'>{phonesBean.phone[0]}</div>
-                                    <Icon type="phone" theme="filled"/>
+                                    <span style={{widths:10,background:'#FFFFFF',color:'#FFFFFF'}}>22</span>
+                                    <img style={{height:14,height:14,marginLeft:10}} src={phone_img} alt=""/>
                                 </a> :
                                 <div style={{display: 'flex', alignItems: 'center'}} onClick={this.onPhoneSelect}>
                                     <div className='phones-item-phone'>{phonesBean.phone[0]}</div>
-                                    <Icon type="phone" theme="filled"/>
+                                    <span style={{widths:10,background:'#FFFFFF',color:'#FFFFFF'}}>22</span>
+                                    <img style={{height:14,height:14,marginLeft:10}} src={phone_img} alt=""/>
                                 </div>)}
                     </div>
 

+ 2 - 2
frontend/wechat-web/src/index.css

@@ -301,8 +301,8 @@ span.ant-select-selection.ant-select-selection--multiple {
     height: 100%;
     background: white;
     font-family: PingFangSC-Regular;
-    font-size: 14px;
-    color: #ACACAC;
+    font-size: 15px;
+    color:#8C8C8C;
     display: flex;
     align-items: center;
     padding-left: 16px;

+ 2 - 1
frontend/wechat-web/src/modules/hiPages/access-notice/AccessNotice.css

@@ -15,7 +15,8 @@
     border-radius: 10px;
 }
 .an_contain{
-    font-family: PingFangSC-Regular;letter-spacing: 2.5px; background: #6A879F;height: 100vh;opacity: 0.6;
+    font-family: PingFangSC-Regular;letter-spacing: 2.5px; background-image: url("../../../style/imgs/BG1.png");
+    background-size: 100% 100%;height: 100vh;
 }
 .item_in_out{
     width: 36px;height: 36px;border-radius: 50%;font-size: 12px;color: #FFF;text-align: center;

+ 3 - 1
frontend/wechat-web/src/modules/hiPages/approvel-detail/ApprovelDetail.css

@@ -1,6 +1,8 @@
 .comhline_sty {background-color:#F2F2F2;width:100%;height:10px}
 .comhline_sty1{background-color:#F2F2F2;width:100%;height:1px;}
-.headerDiv{display: flex;flex-direction: row;height: 75px;width: 100%;  background: #CAE8DA;opacity: 0.7;}
+.headerDiv{display: flex;flex-direction: row;height: 75px;width: 100%;
+    background-image: url("../../../style/imgs/BG4.png");
+    background-size: 100% 100%;opacity: 0.7;}
 .headerImg{height: 45px;width: 45px;border-radius: 25px;margin: 10px 20px;  }
 .timeList_sty{height: auto;display: flex;flex-direction: row;}
 .out_in{height: 45px;width: 45px;padding-top: 0px;border: none;}

+ 74 - 42
frontend/wechat-web/src/modules/home/HomePage.jsx

@@ -23,6 +23,7 @@ import icon_home_change from "../../style/imgs/icon_home_change.png";
 
 const operation = Modal.operation;
 
+
 class HomePage extends Component {
 
     constructor() {
@@ -121,13 +122,14 @@ class HomePage extends Component {
         return (
             <div className='home-page-root'>
                 <div className='home-top-layout-root'>
-                    {this.userInfoLayout()}
                     <div className='home-student-layout-root'>
                         {studentList}
                     </div>
-                    <div className='home-top-menu-root'>
-                        {this.getTopMenus()}
-                    </div>
+                    {this.userInfoLayout()}
+                    <div className="white_san_jiao"></div>
+                </div>
+                <div className='home-top-menu-root'>
+                    {this.getTopMenus()}
                 </div>
                 {/*功能菜单*/}
                 {userInfo.userRole == 1 ? this.getParentMenu() : this.getTeacherMenu()}
@@ -265,25 +267,25 @@ class HomePage extends Component {
         operation([
             {
                 text: '家长', onPress: () => {
-                    if (this.props.userInfo.userRole === 2) {
-                        Toast.loading('身份切换中...', 0)
-                        setTimeout(() => {
-                            Toast.success('切换成功!', 1)
-                            switchCurrentUser(1)()
-                        }, 400)
-                    }
+                if (this.props.userInfo.userRole === 2) {
+                    Toast.loading('身份切换中...', 0)
+                    setTimeout(() => {
+                        Toast.success('切换成功!', 1)
+                        switchCurrentUser(1)()
+                    }, 400)
                 }
+            }
             },
             {
                 text: '教师', onPress: () => {
-                    if (this.props.userInfo.userRole === 1) {
-                        Toast.loading('身份切换中...', 0)
-                        setTimeout(() => {
-                            Toast.success('切换成功!', 1)
-                            switchCurrentUser(2)()
-                        }, 400)
-                    }
+                if (this.props.userInfo.userRole === 1) {
+                    Toast.loading('身份切换中...', 0)
+                    setTimeout(() => {
+                        Toast.success('切换成功!', 1)
+                        switchCurrentUser(2)()
+                    }, 400)
                 }
+            }
             },
         ])
     }
@@ -302,24 +304,31 @@ class HomePage extends Component {
                 userName = userInfo.teacher.teacherName
             }
         }
+
         return (
             <div>
-                <div className='home-top-school-text'>{schoolName}</div>
-                <div className='home-top-msg-root'>
-                    {isObjEmpty(userInfo.userAvatar) ?
-                        <Avatar size={50} icon='user'/> :
-                        <img
-                            src={userInfo.userAvatar}
-                            width={50} height={50} className="img-circle"
-                            style={{border: '3px solid #ffffff'}}/>
-                    }
-                    <span
-                        className='home-top-msg-text'>尊敬的{userName + (userInfo.userRole === 1 ? '家长' : '老师')}</span>
-                    {(userInfo.teacher && userInfo.parent) ?
-                        <img style={{marginLeft: "5px"}} src={icon_home_change} width={16}
-                             height={16} onClick={this.onIdentitySwitch}/> : ''}
-
+                <div className='home-top-school-text'> {(userInfo.teacher && userInfo.parent) ?
+                    <img style={{marginLeft: "5px"}} src={icon_home_change} width={16}
+                         height={16} onClick={this.onIdentitySwitch}/> : ''}
                 </div>
+                {
+                    userInfo.userRole === 1 ?
+                        <div className='home-student-layout-root' style={{display:'flex',flexDirection:'column'}}>
+                            <div  className='home-top-msg-text'>{userName +' | ' + schoolName}</div>
+                        </div>
+                        :
+                        <div className='home-top-msg-root' style={{paddingBottom:10}}>
+                            {isObjEmpty(userInfo.userAvatar) ?
+                                <Avatar size={42} icon='user'/> :
+                                <img
+                                    src={userInfo.userAvatar}
+                                    width={42} height={42} className="img-circle"
+                                    style={{border: '3px solid #ffffff'}}/>
+                            }
+                            <span
+                                className='home-top-msg-text'>{userName +' | ' + schoolName}</span>
+                        </div>
+                }
             </div>
         )
     }
@@ -401,6 +410,26 @@ class HomePage extends Component {
     }
 
     onStuSwitch = (stuIndex) => {
+        console.log("onStuSwitch",stuIndex)
+
+       /* if(stuIndex == 0){
+            return
+        }else {
+            const studentList =  this.props.userInfo.parent.students
+            var centerStu = studentList[stuIndex]
+            switchUser({
+                parent:{
+                    ...this.props.userInfo.parent,
+                    students:studentList,
+                    student:centerStu
+                },
+                user:{
+                    ...this.props.userInfo.parent,
+                    students:studentList,
+                    student:centerStu
+                }
+            })()
+        }*/
         if (this.state.studentIndex !== stuIndex) {
             Toast.loading('学生切换中...', 0)
             setTimeout(() => {
@@ -478,7 +507,7 @@ class MenuGroup extends Component {
     render() {
         return (
             <div className='home-group-item-layout'>
-                <img className='home-group-item-icon' src={this.props.groupIcon}/>
+                {/*<img className='home-group-item-icon' src={this.props.groupIcon}/>*/}
                 <span className='home-group-item-text'>{this.props.groupText}</span>
             </div>
         )
@@ -513,15 +542,18 @@ class StuItem extends Component {
         return (
             <div onClick={this.onStuSwitch} className='home-top-stu-layout'>
                 {this.props.stuObj.stuPhoto ?
-                    <img className={this.props.isSelect ? 'border-radius-50-blue' : 'border-radius-50'}
+                    <img className={this.props.isSelect ? 'student_select_img' : 'student_noselect_img'}
                          src={_baseURL + this.props.stuObj.stuPhoto}
-                         width={25} height={25}/> :
-                    <Avatar className={this.props.isSelect ? 'border-radius-50-blue' : 'border-radius-50'}
-                            size={23} icon='user'/>}
-
-                <span
-                    className={this.props.isSelect ? "margin_left_5 color_blue text_bold"
-                        : 'margin_left_5'}>{this.props.stuObj.stuName}</span>
+                    /> :
+                    this.props.isSelect ?
+                        <Avatar className={this.props.isSelect ? 'border-radius-50-blue' : 'border-radius-50'}
+                                size={42} icon='user'/> :
+                        <Avatar className={this.props.isSelect ? 'border-radius-50-blue' : 'border-radius-50'}
+                                size={30} icon='user'/>
+                }
+                {/*<span*/}
+                    {/*className={this.props.isSelect ? "margin_left_5 color_blue text_bold"*/}
+                        {/*: 'margin_left_5'}>{this.props.stuObj.stuName}</span>*/}
             </div>
         );
     }

+ 2 - 1
frontend/wechat-web/src/modules/homework/AssignmentDetailPage.css

@@ -12,8 +12,9 @@
 }
 
 .homework-detail-top-layout {
-    background: #E7EDF6;
     padding: 12px 18px;
+    background-image: url("../../style/imgs/BG4.png");
+    background-size: 100% 100%;
 }
 
 .homework-detail-top-name {

+ 1 - 1
frontend/wechat-web/src/modules/phonesBook/PhonesSelect.jsx

@@ -114,7 +114,7 @@ class PhonesSelect extends Component {
             <div className='phone-select-root'>
                 <div className='gray-line'></div>
                 <div className='identity-select'>
-                    <div className={selectIndex == 0 ?
+                    <div style={{fontSize:15}} className={selectIndex == 0 ?
                         'identity-item-select' : 'identity-item-normal'}
                          onClick={this.onTeacherClick}>老师
                     </div>

+ 23 - 8
frontend/wechat-web/src/style/css/home-page.css

@@ -18,9 +18,10 @@
 .home-group-item-text {
     font-family: PingFangSC-Regular;
     font-size: 15px;
-    color: #888888;
+    color: #000000;
     letter-spacing: 2px;
     padding-left: 6px;
+    font-weight: bold;
 }
 
 .home-func-item-root {
@@ -48,10 +49,18 @@
     letter-spacing: 1.6px;
     padding-top: 6px;
 }
-
+.white_san_jiao{
+    width:0;
+    height:0;
+    border-width:0 10px 10px;
+    border-style:solid;
+    border-color:transparent transparent #ffffff;/*透明 透明  灰*/
+    margin: 5px 35px;
+}
 .home-top-layout-root {
     position: relative;
-    background-image: linear-gradient(-180deg, #91CBE6 0%, #FFFFFF 100%, #1686FB 100%);
+    background-image: url("../../style/imgs/BG2.png");
+    background-size: 100% 100%;
 }
 
 .home-top-msg-root {
@@ -64,8 +73,8 @@
 
 .home-top-msg-text {
     font-family: PingFangSC-Regular;
-    font-size: 15px;
-    color: #000000;
+    font-size: 14px;
+    color: #ffffff;
     letter-spacing: 2px;
     padding-left: 6px;
 }
@@ -92,8 +101,8 @@
 
 .home-top-menu-text {
     font-family: PingFangSC-Regular;
-    font-size: 14px;
-    color: #333333;
+    font-size: 13px;
+    color: #666666;
     letter-spacing: 1.87px;
     padding-left: 4px;
 }
@@ -106,7 +115,7 @@
 }
 
 .home-top-school-text {
-    background: rgba(256, 256, 256, 0.4);
+
     border-radius: 2px;
     font-family: PingFangSC-Regular;
     font-size: 12px;
@@ -164,4 +173,10 @@
     background-size: cover;
     overflow: hidden;
 }
+.student_select_img{
+    width: 42px;height: 42px;border:1px #ffffff solid;border-radius: 30px;
+}
 
+.student_noselect_img{
+    width: 30px;height: 30px;border:1px #ffffff solid;border-radius: 30px;
+}

+ 1 - 1
frontend/wechat-web/src/style/css/phones.css

@@ -63,7 +63,7 @@
 .phones-item-phone {
     width: 100px;
     font-family: PingFangSC-Regular;
-    font-size: 14px;
+    font-size: 15px;
     color: #666666;
     letter-spacing: 1.38px;
     text-align: right;

BIN
frontend/wechat-web/src/style/imgs/BG1.png


BIN
frontend/wechat-web/src/style/imgs/BG2.png


BIN
frontend/wechat-web/src/style/imgs/BG4.png


BIN
frontend/wechat-web/src/style/imgs/ic_business_trip_apply.png


BIN
frontend/wechat-web/src/style/imgs/ic_campus_card.png


BIN
frontend/wechat-web/src/style/imgs/ic_class_album.png


BIN
frontend/wechat-web/src/style/imgs/ic_entry_exit.png


BIN
frontend/wechat-web/src/style/imgs/ic_homework_release.png


BIN
frontend/wechat-web/src/style/imgs/ic_leave_apply.png


BIN
frontend/wechat-web/src/style/imgs/ic_mail_list.png


BIN
frontend/wechat-web/src/style/imgs/ic_meeting_manage.png


BIN
frontend/wechat-web/src/style/imgs/ic_my_approval.png


BIN
frontend/wechat-web/src/style/imgs/ic_notice_announce.png


BIN
frontend/wechat-web/src/style/imgs/ic_payment_notice.png


BIN
frontend/wechat-web/src/style/imgs/ic_principal_mailbox.png


BIN
frontend/wechat-web/src/style/imgs/ic_score_notice.png


BIN
frontend/wechat-web/src/style/imgs/ic_score_query.png


BIN
frontend/wechat-web/src/style/imgs/ic_student_leave.png


BIN
frontend/wechat-web/src/style/imgs/ic_supply_apply.png


BIN
frontend/wechat-web/src/style/imgs/ic_timetable_query.png


BIN
frontend/wechat-web/src/style/imgs/ic_vote_helper.png


BIN
frontend/wechat-web/src/style/imgs/ic_wonder_moment.png


BIN
frontend/wechat-web/src/style/imgs/icon_home_change.png


BIN
frontend/wechat-web/src/style/imgs/leave_img.png


BIN
frontend/wechat-web/src/style/imgs/phone_icon.png


BIN
frontend/wechat-web/src/style/imgs/res_img.png


BIN
frontend/wechat-web/src/style/imgs/trip_img.png


+ 6 - 0
pom.xml

@@ -56,6 +56,7 @@
         <http.request.version>6.0</http.request.version>
         <commons.lang3.version>3.6</commons.lang3.version>
         <json.lib.version>2.4</json.lib.version>
+        <jna.version>5.2.0</jna.version>
     </properties>
 
     <repositories>
@@ -352,6 +353,11 @@
                 <version>${json.lib.version}</version>
                 <classifier>jdk15</classifier>
             </dependency>
+            <dependency>
+                <groupId>net.java.dev.jna</groupId>
+                <artifactId>jna</artifactId>
+                <version>${jna.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>