Преглед изворни кода

Merge branches 'dev' and 'master' of ssh://10.10.100.21/source/smartschool-platform into dev

FANGLH пре 7 година
родитељ
комит
027075ef7f
20 измењених фајлова са 1315 додато и 1181 уклоњено
  1. 4 4
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/controller/WxNotifyController.java
  2. 2 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/WxNotifyService.java
  3. 28 6
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxNotifyServiceImpl.java
  4. 404 395
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaApproveServiceImpl.java
  5. 156 148
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaLeaveServiceImpl.java
  6. 196 183
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxTaskNotifyServiceImpl.java
  7. 405 387
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxVoteServiceImpl.java
  8. 5 0
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/mapper/WxNotifyrecordsMapper.java
  9. 3 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/oaBean/Director.java
  10. 3 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/oaBean/GeneralManager.java
  11. 3 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/oaBean/Leader.java
  12. 17 13
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/oaBean/Manager.java
  13. 1 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/support/RemindTask.java
  14. 8 0
      applications/school/school-server/src/main/resources/mapper/WxNotifyrecordsMapper.xml
  15. 12 7
      applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/service/impl/WxPushServiceImpl.java
  16. 4 5
      frontend/wechat-web/src/modules/accountBind/AccountBind.jsx
  17. 12 7
      frontend/wechat-web/src/modules/home/HomePage.jsx
  18. 1 0
      frontend/wechat-web/src/modules/user/UserInfo.js
  19. 38 20
      frontend/wechat-web/src/utils/common.js
  20. 13 0
      frontend/wechat-web/src/utils/fetchRequest.js

+ 4 - 4
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/controller/WxNotifyController.java

@@ -105,9 +105,9 @@ public class WxNotifyController {
 	 * @return
 	 */
 	@PostMapping("/getNotifyDetails")
-	public ResultBean getNotifyDetails(@Param("notifyId")Long notifyId){
+	public ResultBean getNotifyDetails(@Param("notifyId")Long notifyId,@Param("stuId") Long stuId){
 		try {
-			NotifyDO stu = notifyService.getNotifyDetails(notifyId);
+			NotifyDO stu = notifyService.getNotifyDetails(stuId,notifyId);
 			return new ResultBean(stu);
 		}catch (Exception e){
 			return new ResultBean(e);
@@ -120,7 +120,7 @@ public class WxNotifyController {
 	 * @param teacherId
 	 * @return
 	 */
-	/*@PostMapping("/getNotifyDetailsByTeacher")
+	@PostMapping("/getNotifyDetailsByTeacher")
 	public ResultBean getNotifyDetailsByTeacher(@Param("notifyId")Long notifyId, @Param("teacherId")Long teacherId){
 		try {
 			NotifyDO teacher = notifyService.getNotifyDetailsByTeacher(notifyId, teacherId);
@@ -128,7 +128,7 @@ public class WxNotifyController {
 		}catch (Exception e){
 			return new ResultBean(e);
 		}
-	}*/
+	}
 
 	/**
 	 * 删除创建的通知

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

@@ -55,7 +55,7 @@ public interface WxNotifyService {
 	 * @param
 	 * @return
 	 */
-	public NotifyDO getNotifyDetails(Long notifyId);
+	public NotifyDO getNotifyDetails(@Param("stuId") Long stuId,@Param("notifyId") Long notifyId) throws Exception;
 
 	/**
 	 * 教师端获取通知详情
@@ -63,7 +63,7 @@ public interface WxNotifyService {
 	 * @param teacherId
 	 * @return
 	 */
-	public NotifyDO getNotifyDetailsByTeacher(@Param("notifyId") Long notifyId, @Param("teacherId") Long teacherId);
+	public NotifyDO getNotifyDetailsByTeacher(@Param("notifyId") Long notifyId, @Param("teacherId") Long teacherId) throws Exception;
 
 	/**
 	 * 删除创建的通知

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

@@ -94,7 +94,7 @@ public class WxNotifyServiceImpl implements WxNotifyService {
 					notifyrecordsMapper.save(notifyrecordsDO);
 					TeacherDO teacherDO = teacherMapper.get(l);
 					SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
-					wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(), "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "您好,您有一条通知", schoolDO.getSchoolName(),teacherMapper.get(notifyCreator).getTeacherName(),format.format(new Date()),notifyDetails, "点击查看详情", "");
+					wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(), "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "您好,您有一条通知", schoolDO.getSchoolName(),teacherMapper.get(notifyCreator).getTeacherName(),format.format(new Date()),notifyDetails, "点击查看详情", "https://school-wechat.ubtob.com/notifyDetail/"+notifyDO.getNotifyId());
 				}
 			}
 			List<Long> stuIds = JSON.parseArray(notifyStu, Long.class);
@@ -111,7 +111,7 @@ public class WxNotifyServiceImpl implements WxNotifyService {
 						for (ParentsStuDO ps:parentsStuDOS) {
 							ParentsDO parentsDO = wxParentsMapper.get(ps.getParentId());
 							SchoolDO schoolDO = wxSchoolMapper.get(parentsDO.getSchoolId());
-							this.wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),parentsDO.getOpenid(), "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "您好,您有一条通知", schoolDO.getSchoolName(),teacherMapper.get(notifyCreator).getTeacherName(),format.format(new Date()),notifyDetails, "点击查看详情", "");
+							wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),parentsDO.getOpenid(), "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "您好,您有一条通知", schoolDO.getSchoolName(),teacherMapper.get(notifyCreator).getTeacherName(),format.format(new Date()),notifyDetails, "点击查看详情", "https://school-wechat.ubtob.com/notifyDetail/"+notifyDO.getNotifyId());
 						}
 					}
 				}
@@ -178,9 +178,20 @@ public class WxNotifyServiceImpl implements WxNotifyService {
 	 * @param
 	 * @return
 	 */
-	public NotifyDO getNotifyDetails(Long notifyId){
+	public NotifyDO getNotifyDetails(Long stuId,Long notifyId) throws Exception {
 		NotifyDO notifyDO = notifyMapper.get(notifyId);
-		return getNotifyDetail(0L,0L,notifyDO);
+		NotifyrecordsDO byStu = notifyrecordsMapper.getByStu(stuId, notifyId);
+		if (ObjectUtils.isNotEmpty(byStu)){
+			byStu.setIsRead(2);
+			int update = notifyrecordsMapper.update(byStu);
+			if (update>0){
+				return getNotifyDetail(stuId,0L,notifyDO);
+			}else {
+				throw new Exception("系统内部错误,请联系管理员");
+			}
+		}else {
+			throw new Exception("通知已被删除,请刷新");
+		}
 	}
 
 	/**
@@ -189,9 +200,20 @@ public class WxNotifyServiceImpl implements WxNotifyService {
 	 * @param teacherId
 	 * @return
 	 */
-	public NotifyDO getNotifyDetailsByTeacher(Long notifyId, Long teacherId){
+	public NotifyDO getNotifyDetailsByTeacher(Long notifyId, Long teacherId) throws Exception {
 		NotifyDO notifyDO = notifyMapper.get(notifyId);
-		return getNotifyDetail(0L,teacherId,notifyDO);
+		NotifyrecordsDO byTeacher = notifyrecordsMapper.getByTeacher(notifyId, teacherId);
+		if (ObjectUtils.isNotEmpty(byTeacher)){
+			byTeacher.setIsRead(2);
+			int update = notifyrecordsMapper.update(byTeacher);
+			if (update>0){
+				return getNotifyDetail(0L,teacherId,notifyDO);
+			}else {
+				throw new Exception("系统内部错误,请联系管理员");
+			}
+		}else {
+			throw new Exception("通知已被删除,请刷新");
+		}
 
 	}
 

+ 404 - 395
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaApproveServiceImpl.java

@@ -25,399 +25,408 @@ import java.util.*;
 
 @Service
 public class WxOaApproveServiceImpl implements WxOaApproveService {
-	@Autowired
-	private WxOaApproveMapper oaApproveMapper;
-
-	@Autowired
-	private WxOaArticlesMapper oaArticlesMapper;
-
-	@Autowired
-	private WxTeacherMapper teacherMapper;
-
-	@Autowired
-	private WxPushApi wxPushApi;
-
-	@Autowired
-	private WxSchoolMapper wxSchoolMapper;
-
-	public int oaCreate(String oaString){
-		JSONObject parse = JSONObject.parseObject(oaString);
-		OaApproveDO oaApprove = new OaApproveDO();
-		String approveTitle = parse.getString("approveTitle");
-		oaApprove.setApproveTitle(approveTitle);
-		String approveDetails = parse.getString("approveDetails");
-		oaApprove.setApproveDetails(approveDetails);
-		oaApprove.setApproveFiles(parse.getString("approveFiles"));
-		/** 类型 1、出差  2、用品 3、外出  4、请假*/
-		Integer type = parse.getInteger("approveType");
-		oaApprove.setApproveType(type);
-		oaApprove.setAppType(parse.getInteger("appType"));
-		oaApprove.setApproveStatus(1);
-		oaApprove.setCreatDate(new Date());
-		Long proposer = parse.getLong("proposer");
-		oaApprove.setProposer(proposer);
-		oaApprove.setSchoolId(teacherMapper.get(proposer).getSchoolId());
-		Long approver = parse.getLong("approver");
-		oaApprove.setApprover(approver);
-		oaApprove.setStartDate(DateFormatUtil.string2Date(parse.getString("startDate")));
-		oaApprove.setEndDate(DateFormatUtil.string2Date(parse.getString("endDate")));
-		oaApprove.setAddress(parse.getString("address"));
-		int i = oaApproveMapper.save(oaApprove);
-		if (i>0){
-			SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-			TeacherDO teacherDO = teacherMapper.get(approver);
-			TeacherDO teacher = teacherMapper.get(proposer);
-			SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
-			if (type!= null && 2==type) {
-				String articles1 = parse.getString("oaArticlesDOS");
-				List<OaArticlesDO> oaArticlesDOS = JSONObject.parseArray(articles1, OaArticlesDO.class);
-				if (ObjectUtils.isNotEmpty(oaArticlesDOS)) {
-					for (OaArticlesDO articles : oaArticlesDOS) {
-						articles.setApproveId(oaApprove.getApproveId());
-						oaArticlesMapper.save(articles);
-					}
-				}
-				wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"ohqfldHKfEmZPrLthLYt3h5SEjqd0AY7UFdngTDLTFY","您有一个待审批事项",approveTitle,teacher.getTeacherName(),format.format(new Date()),approveDetails,"点击查看详情","");
-			}else {
-				wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"ohqfldHKfEmZPrLthLYt3h5SEjqd0AY7UFdngTDLTFY","您有一个待审批事项",approveTitle,teacher.getTeacherName(),format.format(new Date()),approveDetails,"点击查看详情","");
-			}
-			return i;
-		}else {
-			return 0;
-		}
-	}
-
-
-	/**
-	 * oa单列表
-	 * @param teacherId
-	 */
-	public Map<String, Object> oaList(Long teacherId, Integer pageIndex, Integer pageSize){
-		Integer pageStart = (pageIndex-1) * pageSize;
-		Map<String, Object> map = new HashMap<>();
-		List<OaApproveDO> proposes = oaApproveMapper.selectOaApproveListByProposer(teacherId, pageStart, pageSize);
-		if (ObjectUtils.isNotEmpty(proposes)){
-			for (int i = 0; i <proposes.size() ; i++) {
-				OaApproveDO oaApprove = proposes.get(i);
-				Long proposer = oaApprove.getProposer();
-				if (proposer>0){
-					TeacherDO teacherDO = teacherMapper.get(proposer);
-					if (ObjectUtils.isNotEmpty(teacherDO)){
-						oaApprove.setProposerName(teacherDO.getTeacherName());
-						oaApprove.setProposerPhoto(teacherDO.getTeacherPhoto());
-					}
-
-				}
-				Long approver = oaApprove.getApprover();
-				if (approver>0){
-					TeacherDO teacherDO = teacherMapper.get(approver);
-					if (ObjectUtils.isNotEmpty(teacherDO)){
-						oaApprove.setApproverName(teacherDO.getTeacherName());
-						oaApprove.setApproverPhoto(teacherDO.getTeacherPhoto());
-					}
-				}
-				List<OaArticlesDO> articles = oaArticlesMapper.selectListByApproveId(oaApprove.getApproveId());
-				oaApprove.setOaArticlesDOS(articles);
-			}
-		}
-		map.put("proposes",proposes);
-		List<OaApproveDO> approves = oaApproveMapper.selectOaApproveListByApprover(teacherId, pageStart, pageSize);
-		if (ObjectUtils.isNotEmpty(approves)){
-			for (int i = 0; i <approves.size() ; i++) {
-				OaApproveDO oaApprove = approves.get(i);
-				Long proposer = oaApprove.getProposer();
-				if (proposer>0){
-					TeacherDO teacherDO = teacherMapper.get(proposer);
-					if (ObjectUtils.isNotEmpty(teacherDO)){
-						oaApprove.setProposerName(teacherDO.getTeacherName());
-						oaApprove.setProposerPhoto(teacherDO.getTeacherPhoto());
-					}
-
-				}
-				Long approver = oaApprove.getApprover();
-				if (approver>0){
-					TeacherDO teacherDO = teacherMapper.get(approver);
-					if (ObjectUtils.isNotEmpty(teacherDO)){
-						oaApprove.setApproverName(teacherDO.getTeacherName());
-						oaApprove.setApproverPhoto(teacherDO.getTeacherPhoto());
-					}
-				}
-				List<OaArticlesDO> articles = oaArticlesMapper.selectListByApproveId(oaApprove.getApproveId());
-				oaApprove.setOaArticlesDOS(articles);
-			}
-		}
-		map.put("approves",approves);
-		return map;
-	}
-
-	/**
-	 * 审批
-	 * @param teacherId
-	 * @param approveId
-	 * @param status
-	 * @param approveOpinion
-	 * @return
-	 * @throws Exception
-	 */
-	public String approve(Long teacherId,Long approveId, Integer status, String approveOpinion) throws Exception {
-		OaApproveDO oaApproveDO = oaApproveMapper.get(approveId);
-		if (ObjectUtils.isNotEmpty(oaApproveDO)){
-			Long approver = oaApproveDO.getApprover();
-			if (ObjectUtils.isNotEmpty(approver)){
-				if (approver.compareTo(teacherId)==0){
-					Leader a = new Manager(teacherMapper.get(teacherId).getTeacherName());
-					String s = a.handleRequest(teacherMapper,oaApproveMapper, oaApproveDO, status, approveOpinion);
-					return s;
-				}else {
-					throw new Exception("这个单据您没有资格审批,请联系管理员");
-				}
-			}else {
-				throw new Exception("这个单据您没有资格审批,请联系管理员");
-			}
-		}else {
-			throw new Exception("请查看单据是否存在");
-		}
-
-	}
-
-	/**
-	 * 详情
-	 * @param approveId
-	 * @return
-	 * @throws Exception
-	 */
-	public Map<String, Object> oaDetails(Long approveId) throws Exception {
-		OaApproveDO oaApprove = oaApproveMapper.get(approveId);
-		if (ObjectUtils.isNotEmpty(oaApprove)){
-			Map<String, Object> maps = new HashMap<>();
-			maps.put("oaApprove",oaApprove);
-			if (1==oaApprove.getApproveType()){
-				//出差
-				Long proposer = oaApprove.getProposer();
-				if (proposer>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","申请人");
-					map.put("value",teacherMapper.get(proposer).getTeacherName());
-					maps.put("proposer",map);
-				}
-				List<Map<String, Object>> map2 = new ArrayList<>();
-				String approveName = oaApprove.getApproverName();
-				if (ObjectUtils.isNotEmpty(approveName)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","申请流程");
-					map.put("value",approveName);
-					map2.add(map);
-				}
-				Date startDate = oaApprove.getStartDate();
-				if (ObjectUtils.isNotEmpty(startDate)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","开始时间");
-					map.put("value",oaApprove.getStartDate());
-					map2.add(map);
-				}
-
-				Date endDate = oaApprove.getEndDate();
-				if (ObjectUtils.isNotEmpty(endDate)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","结束时间");
-					map.put("value",endDate);
-					map2.add(map);
-				}
-				String address = oaApprove.getAddress();
-				if (ObjectUtils.isNotEmpty(address)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","地址");
-					map.put("value",address);
-					map2.add(map);
-				}
-
-				String approveDetails = oaApprove.getApproveDetails();
-				if (ObjectUtils.isNotEmpty(approveDetails)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","出差事由");
-					map.put("value",approveDetails);
-					map2.add(map);
-				}
-
-				Long approver = oaApprove.getApprover();
-				List<Map<String, Object>> map3 = new ArrayList<>();
-				if (approver>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","审批人");
-					map.put("value",teacherMapper.get(approver).getTeacherName());
-					map3.add(map);
-				}
-				String approveOpinion = oaApprove.getApproveOpinion();
-				if (approver>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","审批意见");
-					map.put("value",approveOpinion);
-					map3.add(map);
-				}
-				maps.put("approve",map3);
-
-				Map<String, Object> map = new HashMap<>();
-				String approveFiles = oaApprove.getApproveFiles();
-				if (ObjectUtils.isNotEmpty(approveFiles)){
-					map.put("key","附件");
-					map.put("value", JSON.parseArray(approveFiles));
-				}
-				maps.put("approveFiles",map);
-				maps.put("basic",map2);
-			}else if (2==oaApprove.getApproveType()){
-				//用品
-				Long proposer = oaApprove.getProposer();
-				if (proposer>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","申请人");
-					map.put("value",teacherMapper.get(proposer).getTeacherName());
-					maps.put("proposer",map);
-				}
-
-				List<Map<String, Object>> map2 = new ArrayList<>();
-				String approveName = oaApprove.getApproverName();
-				if (ObjectUtils.isNotEmpty(approveName)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","物品用途");
-					map.put("value",approveName);
-					map2.add(map);
-				}
-
-				String approveDetails = oaApprove.getApproveDetails();
-				if (ObjectUtils.isNotEmpty(approveDetails)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","领取说明");
-					map.put("value",approveDetails);
-					map2.add(map);
-				}
-
-				List<OaArticlesDO> articles = oaArticlesMapper.selectListByApproveId(oaApprove.getApproveId());
-				if (ObjectUtils.isNotEmpty(articles)){
-					Map<String, Object> map = new HashMap<>();
-					List<Object> maps1 = new ArrayList<>();
-					for (int i = 0; i <articles.size() ; i++) {
-						List<Map<String, Object>> maps2 = new ArrayList<>();
-						OaArticlesDO articles1 = articles.get(i);
-						String artName = articles1.getArtName();
-						if (ObjectUtils.isNotEmpty(artName)){
-							Map<String, Object> hashMap = new HashMap<>();
-							hashMap.put("key","物品名称");
-							hashMap.put("value",artName);
-							maps2.add(hashMap);
-						}
-						Integer artCount = articles1.getArtCount();
-						if (ObjectUtils.isNotEmpty(artCount)){
-							Map<String, Object> hashMap = new HashMap<>();
-							hashMap.put("key","物品数量");
-							hashMap.put("value",artCount);
-							maps2.add(hashMap);
-						}
-						maps1.add(maps2);
-
-					}
-					map.put("key","物品明细");
-					map.put("value",maps1);
-					map2.add(map);
-				}
-
-				List<Map<String, Object>> map3 = new ArrayList<>();
-				Long approver = oaApprove.getApprover();
-				if (approver>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","接收人");
-					map.put("value",teacherMapper.get(approver).getTeacherName());
-					map3.add(map);
-				}
-				String approveOpinion = oaApprove.getApproveOpinion();
-				if (approver>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","审批意见");
-					map.put("value",approveOpinion);
-					map3.add(map);
-				}
-				maps.put("approve",map3);
-
-				Map<String, Object> map = new HashMap<>();
-				String approveFiles = oaApprove.getApproveFiles();
-				if (ObjectUtils.isNotEmpty(approveFiles)){
-					map.put("key","附件");
-					map.put("value",JSON.parseArray(approveFiles));
-				}
-				maps.put("approveFiles",map);
-				maps.put("basic",map2);
-			}else if (4==oaApprove.getApproveType()){
-				//请假
-				Long proposer = oaApprove.getProposer();
-				if (proposer>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","申请人");
-					map.put("value",teacherMapper.get(proposer).getTeacherName());
-					maps.put("proposer",map);
-				}
-				List<Map<String, Object>> map2 = new ArrayList<>();
-				String approveName = oaApprove.getApproverName();
-				if (ObjectUtils.isNotEmpty(approveName)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","请假类型");
-					map.put("value",approveName);
-					map2.add(map);
-				}
-				Date startDate = oaApprove.getStartDate();
-				if (ObjectUtils.isNotEmpty(startDate)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","开始时间");
-					map.put("value",oaApprove.getStartDate());
-					map2.add(map);
-				}
-
-				Date endDate = oaApprove.getEndDate();
-				if (ObjectUtils.isNotEmpty(endDate)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","结束时间");
-					map.put("value",endDate);
-					map2.add(map);
-				}
-
-				String approveDetails = oaApprove.getApproveDetails();
-				if (ObjectUtils.isNotEmpty(approveDetails)){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","请假事由");
-					map.put("value",approveDetails);
-					map2.add(map);
-				}
-
-				Long approver = oaApprove.getApprover();
-				List<Map<String, Object>> map3 = new ArrayList<>();
-				if (approver>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","审批人");
-					map.put("value",teacherMapper.get(approver).getTeacherName());
-					map3.add(map);
-				}
-				String approveOpinion = oaApprove.getApproveOpinion();
-				if (approver>0){
-					Map<String, Object> map = new HashMap<>();
-					map.put("key","审批意见");
-					map.put("value",approveOpinion);
-					map3.add(map);
-				}
-				maps.put("approve",map3);
-
-				Map<String, Object> map = new HashMap<>();
-				String approveFiles = oaApprove.getApproveFiles();
-				if (ObjectUtils.isNotEmpty(approveFiles)){
-					map.put("key","附件");
-					map.put("value",JSON.parseArray(approveFiles));
-				}
-				maps.put("approveFiles",map);
-				maps.put("basic",map2);
-			}else {
-
-			}
-			return maps;
-		}else {
-			throw new Exception("单据异常,请联系管理员");
-		}
-	}
-	
+    @Autowired
+    private WxOaApproveMapper oaApproveMapper;
+
+    @Autowired
+    private WxOaArticlesMapper oaArticlesMapper;
+
+    @Autowired
+    private WxTeacherMapper teacherMapper;
+
+    @Autowired
+    private WxPushApi wxPushApi;
+
+    @Autowired
+    private WxSchoolMapper wxSchoolMapper;
+
+    public int oaCreate(String oaString) {
+        JSONObject parse = JSONObject.parseObject(oaString);
+        OaApproveDO oaApprove = new OaApproveDO();
+        String approveTitle = parse.getString("approveTitle");
+        oaApprove.setApproveTitle(approveTitle);
+        String approveDetails = parse.getString("approveDetails");
+        oaApprove.setApproveDetails(approveDetails);
+        oaApprove.setApproveFiles(parse.getString("approveFiles"));
+        /** 类型 1、出差  2、用品 3、外出  4、请假*/
+        Integer type = parse.getInteger("approveType");
+        oaApprove.setApproveType(type);
+        oaApprove.setAppType(parse.getInteger("appType"));
+        oaApprove.setApproveStatus(1);
+        oaApprove.setCreatDate(new Date());
+        Long proposer = parse.getLong("proposer");
+        oaApprove.setProposer(proposer);
+        oaApprove.setSchoolId(teacherMapper.get(proposer).getSchoolId());
+        Long approver = parse.getLong("approver");
+        oaApprove.setApprover(approver);
+        oaApprove.setStartDate(DateFormatUtil.string2Date(parse.getString("startDate")));
+        oaApprove.setEndDate(DateFormatUtil.string2Date(parse.getString("endDate")));
+        oaApprove.setAddress(parse.getString("address"));
+        int i = oaApproveMapper.save(oaApprove);
+        if (i > 0) {
+            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+            TeacherDO teacherDO = teacherMapper.get(approver);
+            TeacherDO teacher = teacherMapper.get(proposer);
+            SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
+            if (type != null && 2 == type) {
+                String articles1 = parse.getString("oaArticlesDOS");
+                List<OaArticlesDO> oaArticlesDOS = JSONObject.parseArray(articles1, OaArticlesDO.class);
+                if (ObjectUtils.isNotEmpty(oaArticlesDOS)) {
+                    for (OaArticlesDO articles : oaArticlesDOS) {
+                        articles.setApproveId(oaApprove.getApproveId());
+                        oaArticlesMapper.save(articles);
+                    }
+                }
+                wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), teacherDO.getOpenid(),
+						"ohqfldHKfEmZPrLthLYt3h5SEjqd0AY7UFdngTDLTFY", "您有一个待审批事项", approveTitle,
+						teacher.getTeacherName(), format.format(new Date()), approveDetails, "点击查看详情",
+                        "https://school-wechat.ubtob.com/approvel-detail/false/" +oaApprove.getApproveId());
+            } else {
+                wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), teacherDO.getOpenid(),
+						"ohqfldHKfEmZPrLthLYt3h5SEjqd0AY7UFdngTDLTFY", "您有一个待审批事项", approveTitle,
+						teacher.getTeacherName(), format.format(new Date()), approveDetails, "点击查看详情",
+                        "https://school-wechat.ubtob.com/approvel-detail/false/" +oaApprove.getApproveId());
+            }
+            return i;
+        } else {
+            return 0;
+        }
+    }
+
+
+    /**
+     * oa单列表
+     *
+     * @param teacherId
+     */
+    public Map<String, Object> oaList(Long teacherId, Integer pageIndex, Integer pageSize) {
+        Integer pageStart = (pageIndex - 1) * pageSize;
+        Map<String, Object> map = new HashMap<>();
+        List<OaApproveDO> proposes = oaApproveMapper.selectOaApproveListByProposer(teacherId, pageStart, pageSize);
+        if (ObjectUtils.isNotEmpty(proposes)) {
+            for (int i = 0; i < proposes.size(); i++) {
+                OaApproveDO oaApprove = proposes.get(i);
+                Long proposer = oaApprove.getProposer();
+                if (proposer > 0) {
+                    TeacherDO teacherDO = teacherMapper.get(proposer);
+                    if (ObjectUtils.isNotEmpty(teacherDO)) {
+                        oaApprove.setProposerName(teacherDO.getTeacherName());
+                        oaApprove.setProposerPhoto(teacherDO.getTeacherPhoto());
+                    }
+
+                }
+                Long approver = oaApprove.getApprover();
+                if (approver > 0) {
+                    TeacherDO teacherDO = teacherMapper.get(approver);
+                    if (ObjectUtils.isNotEmpty(teacherDO)) {
+                        oaApprove.setApproverName(teacherDO.getTeacherName());
+                        oaApprove.setApproverPhoto(teacherDO.getTeacherPhoto());
+                    }
+                }
+                List<OaArticlesDO> articles = oaArticlesMapper.selectListByApproveId(oaApprove.getApproveId());
+                oaApprove.setOaArticlesDOS(articles);
+            }
+        }
+        map.put("proposes", proposes);
+        List<OaApproveDO> approves = oaApproveMapper.selectOaApproveListByApprover(teacherId, pageStart, pageSize);
+        if (ObjectUtils.isNotEmpty(approves)) {
+            for (int i = 0; i < approves.size(); i++) {
+                OaApproveDO oaApprove = approves.get(i);
+                Long proposer = oaApprove.getProposer();
+                if (proposer > 0) {
+                    TeacherDO teacherDO = teacherMapper.get(proposer);
+                    if (ObjectUtils.isNotEmpty(teacherDO)) {
+                        oaApprove.setProposerName(teacherDO.getTeacherName());
+                        oaApprove.setProposerPhoto(teacherDO.getTeacherPhoto());
+                    }
+
+                }
+                Long approver = oaApprove.getApprover();
+                if (approver > 0) {
+                    TeacherDO teacherDO = teacherMapper.get(approver);
+                    if (ObjectUtils.isNotEmpty(teacherDO)) {
+                        oaApprove.setApproverName(teacherDO.getTeacherName());
+                        oaApprove.setApproverPhoto(teacherDO.getTeacherPhoto());
+                    }
+                }
+                List<OaArticlesDO> articles = oaArticlesMapper.selectListByApproveId(oaApprove.getApproveId());
+                oaApprove.setOaArticlesDOS(articles);
+            }
+        }
+        map.put("approves", approves);
+        return map;
+    }
+
+    /**
+     * 审批
+     *
+     * @param teacherId
+     * @param approveId
+     * @param status
+     * @param approveOpinion
+     * @return
+     * @throws Exception
+     */
+    public String approve(Long teacherId, Long approveId, Integer status, String approveOpinion) throws Exception {
+        OaApproveDO oaApproveDO = oaApproveMapper.get(approveId);
+        if (ObjectUtils.isNotEmpty(oaApproveDO)) {
+            Long approver = oaApproveDO.getApprover();
+            if (ObjectUtils.isNotEmpty(approver)) {
+                if (approver.compareTo(teacherId) == 0) {
+                    Leader a = new Manager(teacherMapper.get(teacherId).getTeacherName());
+                    String s = a.handleRequest(wxSchoolMapper,wxPushApi,teacherMapper, oaApproveMapper, oaApproveDO, status, approveOpinion);
+                    return s;
+                } else {
+                    throw new Exception("这个单据您没有资格审批,请联系管理员");
+                }
+            } else {
+                throw new Exception("这个单据您没有资格审批,请联系管理员");
+            }
+        } else {
+            throw new Exception("请查看单据是否存在");
+        }
+
+    }
+
+    /**
+     * 详情
+     *
+     * @param approveId
+     * @return
+     * @throws Exception
+     */
+    public Map<String, Object> oaDetails(Long approveId) throws Exception {
+        OaApproveDO oaApprove = oaApproveMapper.get(approveId);
+        if (ObjectUtils.isNotEmpty(oaApprove)) {
+            Map<String, Object> maps = new HashMap<>();
+            maps.put("oaApprove", oaApprove);
+            if (1 == oaApprove.getApproveType()) {
+                //出差
+                Long proposer = oaApprove.getProposer();
+                if (proposer > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "申请人");
+                    map.put("value", teacherMapper.get(proposer).getTeacherName());
+                    maps.put("proposer", map);
+                }
+                List<Map<String, Object>> map2 = new ArrayList<>();
+                String approveName = oaApprove.getApproverName();
+                if (ObjectUtils.isNotEmpty(approveName)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "申请流程");
+                    map.put("value", approveName);
+                    map2.add(map);
+                }
+                Date startDate = oaApprove.getStartDate();
+                if (ObjectUtils.isNotEmpty(startDate)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "开始时间");
+                    map.put("value", oaApprove.getStartDate());
+                    map2.add(map);
+                }
+
+                Date endDate = oaApprove.getEndDate();
+                if (ObjectUtils.isNotEmpty(endDate)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "结束时间");
+                    map.put("value", endDate);
+                    map2.add(map);
+                }
+                String address = oaApprove.getAddress();
+                if (ObjectUtils.isNotEmpty(address)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "地址");
+                    map.put("value", address);
+                    map2.add(map);
+                }
+
+                String approveDetails = oaApprove.getApproveDetails();
+                if (ObjectUtils.isNotEmpty(approveDetails)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "出差事由");
+                    map.put("value", approveDetails);
+                    map2.add(map);
+                }
+
+                Long approver = oaApprove.getApprover();
+                List<Map<String, Object>> map3 = new ArrayList<>();
+                if (approver > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "审批人");
+                    map.put("value", teacherMapper.get(approver).getTeacherName());
+                    map3.add(map);
+                }
+                String approveOpinion = oaApprove.getApproveOpinion();
+                if (approver > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "审批意见");
+                    map.put("value", approveOpinion);
+                    map3.add(map);
+                }
+                maps.put("approve", map3);
+
+                Map<String, Object> map = new HashMap<>();
+                String approveFiles = oaApprove.getApproveFiles();
+                if (ObjectUtils.isNotEmpty(approveFiles)) {
+                    map.put("key", "附件");
+                    map.put("value", JSON.parseArray(approveFiles));
+                }
+                maps.put("approveFiles", map);
+                maps.put("basic", map2);
+            } else if (2 == oaApprove.getApproveType()) {
+                //用品
+                Long proposer = oaApprove.getProposer();
+                if (proposer > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "申请人");
+                    map.put("value", teacherMapper.get(proposer).getTeacherName());
+                    maps.put("proposer", map);
+                }
+
+                List<Map<String, Object>> map2 = new ArrayList<>();
+                String approveName = oaApprove.getApproverName();
+                if (ObjectUtils.isNotEmpty(approveName)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "物品用途");
+                    map.put("value", approveName);
+                    map2.add(map);
+                }
+
+                String approveDetails = oaApprove.getApproveDetails();
+                if (ObjectUtils.isNotEmpty(approveDetails)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "领取说明");
+                    map.put("value", approveDetails);
+                    map2.add(map);
+                }
+
+                List<OaArticlesDO> articles = oaArticlesMapper.selectListByApproveId(oaApprove.getApproveId());
+                if (ObjectUtils.isNotEmpty(articles)) {
+                    Map<String, Object> map = new HashMap<>();
+                    List<Object> maps1 = new ArrayList<>();
+                    for (int i = 0; i < articles.size(); i++) {
+                        List<Map<String, Object>> maps2 = new ArrayList<>();
+                        OaArticlesDO articles1 = articles.get(i);
+                        String artName = articles1.getArtName();
+                        if (ObjectUtils.isNotEmpty(artName)) {
+                            Map<String, Object> hashMap = new HashMap<>();
+                            hashMap.put("key", "物品名称");
+                            hashMap.put("value", artName);
+                            maps2.add(hashMap);
+                        }
+                        Integer artCount = articles1.getArtCount();
+                        if (ObjectUtils.isNotEmpty(artCount)) {
+                            Map<String, Object> hashMap = new HashMap<>();
+                            hashMap.put("key", "物品数量");
+                            hashMap.put("value", artCount);
+                            maps2.add(hashMap);
+                        }
+                        maps1.add(maps2);
+
+                    }
+                    map.put("key", "物品明细");
+                    map.put("value", maps1);
+                    map2.add(map);
+                }
+
+                List<Map<String, Object>> map3 = new ArrayList<>();
+                Long approver = oaApprove.getApprover();
+                if (approver > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "接收人");
+                    map.put("value", teacherMapper.get(approver).getTeacherName());
+                    map3.add(map);
+                }
+                String approveOpinion = oaApprove.getApproveOpinion();
+                if (approver > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "审批意见");
+                    map.put("value", approveOpinion);
+                    map3.add(map);
+                }
+                maps.put("approve", map3);
+
+                Map<String, Object> map = new HashMap<>();
+                String approveFiles = oaApprove.getApproveFiles();
+                if (ObjectUtils.isNotEmpty(approveFiles)) {
+                    map.put("key", "附件");
+                    map.put("value", JSON.parseArray(approveFiles));
+                }
+                maps.put("approveFiles", map);
+                maps.put("basic", map2);
+            } else if (4 == oaApprove.getApproveType()) {
+                //请假
+                Long proposer = oaApprove.getProposer();
+                if (proposer > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "申请人");
+                    map.put("value", teacherMapper.get(proposer).getTeacherName());
+                    maps.put("proposer", map);
+                }
+                List<Map<String, Object>> map2 = new ArrayList<>();
+                String approveName = oaApprove.getApproverName();
+                if (ObjectUtils.isNotEmpty(approveName)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "请假类型");
+                    map.put("value", approveName);
+                    map2.add(map);
+                }
+                Date startDate = oaApprove.getStartDate();
+                if (ObjectUtils.isNotEmpty(startDate)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "开始时间");
+                    map.put("value", oaApprove.getStartDate());
+                    map2.add(map);
+                }
+
+                Date endDate = oaApprove.getEndDate();
+                if (ObjectUtils.isNotEmpty(endDate)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "结束时间");
+                    map.put("value", endDate);
+                    map2.add(map);
+                }
+
+                String approveDetails = oaApprove.getApproveDetails();
+                if (ObjectUtils.isNotEmpty(approveDetails)) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "请假事由");
+                    map.put("value", approveDetails);
+                    map2.add(map);
+                }
+
+                Long approver = oaApprove.getApprover();
+                List<Map<String, Object>> map3 = new ArrayList<>();
+                if (approver > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "审批人");
+                    map.put("value", teacherMapper.get(approver).getTeacherName());
+                    map3.add(map);
+                }
+                String approveOpinion = oaApprove.getApproveOpinion();
+                if (approver > 0) {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("key", "审批意见");
+                    map.put("value", approveOpinion);
+                    map3.add(map);
+                }
+                maps.put("approve", map3);
+
+                Map<String, Object> map = new HashMap<>();
+                String approveFiles = oaApprove.getApproveFiles();
+                if (ObjectUtils.isNotEmpty(approveFiles)) {
+                    map.put("key", "附件");
+                    map.put("value", JSON.parseArray(approveFiles));
+                }
+                maps.put("approveFiles", map);
+                maps.put("basic", map2);
+            } else {
+
+            }
+            return maps;
+        } else {
+            throw new Exception("单据异常,请联系管理员");
+        }
+    }
+
 }

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

@@ -20,163 +20,171 @@ import java.util.Map;
 
 @Service
 public class WxOaLeaveServiceImpl implements WxOaLeaveService {
-	@Autowired
-	private WxOaLeaveMapper oaLeaveMapper;
+    @Autowired
+    private WxOaLeaveMapper oaLeaveMapper;
 
-	@Autowired
-	private WxTeacherMapper teacherMapper;
+    @Autowired
+    private WxTeacherMapper teacherMapper;
 
-	@Autowired
-	private WxStudentMapper studentMapper;
+    @Autowired
+    private WxStudentMapper studentMapper;
 
-	@Autowired
-	private WxOaLeaveReplyMapper oaLeaveReplyMapper;
+    @Autowired
+    private WxOaLeaveReplyMapper oaLeaveReplyMapper;
 
-	@Autowired
-	private WxPushApi wxPushApi;
+    @Autowired
+    private WxPushApi wxPushApi;
 
-	@Autowired
-	private WxSchoolMapper wxSchoolMapper;
+    @Autowired
+    private WxSchoolMapper wxSchoolMapper;
 
-	/**
-	 * 请假条提交
-	 */
-	public String leaveCreate(String leaveString) throws Exception {
-		/** 请假类型  1事假   2病假   3丧家   4陪产假 */
-		JSONObject json = JSONObject.parseObject(leaveString);
-		OaLeaveDO leave = new OaLeaveDO();
-		leave.setLvTitle(json.getString("lvTitle"));
-		leave.setLvDetails(json.getString("lvDetails"));
-		leave.setLvType(json.getInteger("lvType"));
-		leave.setApplyDate(new Date());
-		Long lvProposer = json.getLong("lvProposer");
-		leave.setSchoolId(studentMapper.get(lvProposer).getSchoolId());
-		leave.setEndDate(DateFormatUtil.string2Date(json.getString("endDate")));
-		leave.setStartDate(DateFormatUtil.string2Date(json.getString("startDate")));
-		leave.setLvStatus(1);
-		leave.setLvRemarks(json.getString("lvRemarks"));
-		String lvFiles = json.getString("lvFiles");
-		leave.setLvFiles(lvFiles);
-		String lvNotifier = json.getString("lvNotifier");
-		leave.setLvNotifier(lvNotifier);
-		if (ObjectUtils.isNotEmpty(lvProposer)){
-			leave.setLvProposer(lvProposer);
-			int i = oaLeaveMapper.save(leave);
-			if (i>0){
-				List<Long> longs = JSON.parseArray(lvNotifier, Long.class);
-				for (Long teacherId:longs) {
-					TeacherDO teacherDO = teacherMapper.get(teacherId);
-					SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
-					wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(), "QC8H4hQd1Fh0wqaaE3mbAxvoBC6y-XkHctIe8Kx6gcA", "您好,您有一个来自家长的请假申请",studentMapper.get(lvProposer).getStuName(), json.getString("startDate")+"-"+json.getString("endDate"), leave.getLvDetails(),"-", "点击查看详情", "");
-				}
-				return "申请成功";
-			}else {
-				throw new Exception("申请失败");
-			}
-		}else {
-			throw new Exception("请指定请假人");
-		}
-	}
+    /**
+     * 请假条提交
+     */
+    public String leaveCreate(String leaveString) throws Exception {
+        /** 请假类型  1事假   2病假   3丧家   4陪产假 */
+        JSONObject json = JSONObject.parseObject(leaveString);
+        OaLeaveDO leave = new OaLeaveDO();
+        leave.setLvTitle(json.getString("lvTitle"));
+        leave.setLvDetails(json.getString("lvDetails"));
+        leave.setLvType(json.getInteger("lvType"));
+        leave.setApplyDate(new Date());
+        Long lvProposer = json.getLong("lvProposer");
+        leave.setSchoolId(studentMapper.get(lvProposer).getSchoolId());
+        leave.setEndDate(DateFormatUtil.string2Date(json.getString("endDate")));
+        leave.setStartDate(DateFormatUtil.string2Date(json.getString("startDate")));
+        leave.setLvStatus(1);
+        leave.setLvRemarks(json.getString("lvRemarks"));
+        String lvFiles = json.getString("lvFiles");
+        leave.setLvFiles(lvFiles);
+        String lvNotifier = json.getString("lvNotifier");
+        leave.setLvNotifier(lvNotifier);
+        if (ObjectUtils.isNotEmpty(lvProposer)) {
+            leave.setLvProposer(lvProposer);
+            int i = oaLeaveMapper.save(leave);
+            if (i > 0) {
+                List<Long> longs = JSON.parseArray(lvNotifier, Long.class);
+                for (Long teacherId : longs) {
+                    TeacherDO teacherDO = teacherMapper.get(teacherId);
+                    SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
+                    wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), teacherDO.getOpenid(),
+							"QC8H4hQd1Fh0wqaaE3mbAxvoBC6y-XkHctIe8Kx6gcA", "您好,您有一个来自家长的请假申请",
+							studentMapper.get(lvProposer).getStuName(),
+							json.getString("startDate") + "-" + json.getString("endDate"), leave.getLvDetails(), "-",
+							"点击查看详情", "https://school-wechat.ubtob.com/leavedetail/teacher/" + leave.getLvId());
+                }
+                return "申请成功";
+            } else {
+                throw new Exception("申请失败");
+            }
+        } else {
+            throw new Exception("请指定请假人");
+        }
+    }
 
-	/**
-	 * 家长端请假条详情列表
-	 * @param stuId
-	 * @param pageIndex
-	 * @param pageSize
-	 * @return
-	 * @throws Exception
-	 */
-	public List<OaLeaveDO> leaveListByStu(Long stuId, Integer pageIndex, Integer pageSize) throws Exception {
-		Integer pageStart = (pageIndex - 1) * pageSize;
-		List<OaLeaveDO> oaLeaveDOS = oaLeaveMapper.selectLeaveListByStu(stuId, pageStart, pageSize);
-		List<OaLeaveDO> leaveDOS = new ArrayList<>();
-		if (ObjectUtils.isNotEmpty(oaLeaveDOS)){
-			for (int i = 0; i <oaLeaveDOS.size() ; i++) {
-				OaLeaveDO leave = oaLeaveDOS.get(i);
-				OaLeaveDO oaLeaveDetail = getOaLeaveDetail(leave);
-				leaveDOS.add(oaLeaveDetail);
-			}
-			return leaveDOS;
-		}else {
-			throw new Exception("暂无数据");
-		}
-	}
+    /**
+     * 家长端请假条详情列表
+     *
+     * @param stuId
+     * @param pageIndex
+     * @param pageSize
+     * @return
+     * @throws Exception
+     */
+    public List<OaLeaveDO> leaveListByStu(Long stuId, Integer pageIndex, Integer pageSize) throws Exception {
+        Integer pageStart = (pageIndex - 1) * pageSize;
+        List<OaLeaveDO> oaLeaveDOS = oaLeaveMapper.selectLeaveListByStu(stuId, pageStart, pageSize);
+        List<OaLeaveDO> leaveDOS = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(oaLeaveDOS)) {
+            for (int i = 0; i < oaLeaveDOS.size(); i++) {
+                OaLeaveDO leave = oaLeaveDOS.get(i);
+                OaLeaveDO oaLeaveDetail = getOaLeaveDetail(leave);
+                leaveDOS.add(oaLeaveDetail);
+            }
+            return leaveDOS;
+        } else {
+            throw new Exception("暂无数据");
+        }
+    }
 
-	/**
-	 * 教师端请假条详情列表
-	 * @param teacherId
-	 * @param pageIndex
-	 * @param pageSize
-	 * @return
-	 */
-	public List<OaLeaveDO> leaveListByTeacher(Long teacherId, Integer pageIndex, Integer pageSize) throws Exception {
-		Integer pageStart = (pageIndex - 1) * pageSize;
-		List<OaLeaveDO> oaLeaveDOS = oaLeaveMapper.selectLeaveListByTeacher("%" + teacherId + "%", pageStart, pageSize);
-		List<OaLeaveDO> leaveDOS = new ArrayList<>();
-		if (ObjectUtils.isNotEmpty(oaLeaveDOS)){
-			for (int i = 0; i <oaLeaveDOS.size() ; i++) {
-				OaLeaveDO leave = oaLeaveDOS.get(i);
-				OaLeaveDO oaLeaveDetail = getOaLeaveDetail(leave);
-				leaveDOS.add(oaLeaveDetail);
-			}
-			return leaveDOS;
-		}else {
-			throw new Exception("暂无数据");
-		}
-	}
+    /**
+     * 教师端请假条详情列表
+     *
+     * @param teacherId
+     * @param pageIndex
+     * @param pageSize
+     * @return
+     */
+    public List<OaLeaveDO> leaveListByTeacher(Long teacherId, Integer pageIndex, Integer pageSize) throws Exception {
+        Integer pageStart = (pageIndex - 1) * pageSize;
+        List<OaLeaveDO> oaLeaveDOS = oaLeaveMapper.selectLeaveListByTeacher("%" + teacherId + "%", pageStart, pageSize);
+        List<OaLeaveDO> leaveDOS = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(oaLeaveDOS)) {
+            for (int i = 0; i < oaLeaveDOS.size(); i++) {
+                OaLeaveDO leave = oaLeaveDOS.get(i);
+                OaLeaveDO oaLeaveDetail = getOaLeaveDetail(leave);
+                leaveDOS.add(oaLeaveDetail);
+            }
+            return leaveDOS;
+        } else {
+            throw new Exception("暂无数据");
+        }
+    }
 
-	/**
-	 * 请假详情
-	 * @param lvId
-	 * @return
-	 */
-	public OaLeaveDO lvDetail(Long lvId) throws Exception {
-		OaLeaveDO oaLeaveDO = oaLeaveMapper.get(lvId);
-		if (ObjectUtils.isNotEmpty(oaLeaveDO)){
-			return getOaLeaveDetail(oaLeaveDO);
-		}else {
-			throw new Exception("暂无数据");
-		}
-	}
+    /**
+     * 请假详情
+     *
+     * @param lvId
+     * @return
+     */
+    public OaLeaveDO lvDetail(Long lvId) throws Exception {
+        OaLeaveDO oaLeaveDO = oaLeaveMapper.get(lvId);
+        if (ObjectUtils.isNotEmpty(oaLeaveDO)) {
+            return getOaLeaveDetail(oaLeaveDO);
+        } else {
+            throw new Exception("暂无数据");
+        }
+    }
 
-	/**
-	 * 回复
-	 * @param leaveReplyString
-	 * @return
-	 */
-	public int lvReply(String leaveReplyString){
-		JSONObject json = JSONObject.parseObject(leaveReplyString);
-		OaLeaveReplyDO oaLeaveReplyDO = new OaLeaveReplyDO();
-		oaLeaveReplyDO.setReplyTitle(json.getString("replyTitle"));
-		oaLeaveReplyDO.setReplyContent(json.getString("replyContent"));
-		oaLeaveReplyDO.setReplyDate(new Date());
-		oaLeaveReplyDO.setTeacherId(json.getLong("teacherId"));
-		oaLeaveReplyDO.setLvId(json.getLong("lvId"));
-		return oaLeaveReplyMapper.save(oaLeaveReplyDO);
-	}
+    /**
+     * 回复
+     *
+     * @param leaveReplyString
+     * @return
+     */
+    public int lvReply(String leaveReplyString) {
+        JSONObject json = JSONObject.parseObject(leaveReplyString);
+        OaLeaveReplyDO oaLeaveReplyDO = new OaLeaveReplyDO();
+        oaLeaveReplyDO.setReplyTitle(json.getString("replyTitle"));
+        oaLeaveReplyDO.setReplyContent(json.getString("replyContent"));
+        oaLeaveReplyDO.setReplyDate(new Date());
+        oaLeaveReplyDO.setTeacherId(json.getLong("teacherId"));
+        oaLeaveReplyDO.setLvId(json.getLong("lvId"));
+        return oaLeaveReplyMapper.save(oaLeaveReplyDO);
+    }
 
-	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());
-				}
-			}
-		}
-		oaLeaveDO.setOaLeaveReplyDOS(leaveMessages);
-		return oaLeaveDO;
-	}
+    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());
+                }
+            }
+        }
+        oaLeaveDO.setOaLeaveReplyDOS(leaveMessages);
+        return oaLeaveDO;
+    }
 }

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

@@ -21,187 +21,200 @@ import java.util.Map;
 
 @Service
 public class WxTaskNotifyServiceImpl implements WxTaskNotifyService {
-	@Autowired
-	private WxTaskNotifyMapper taskNotifyMapper;
-
-	@Autowired
-	private WxTeacherMapper teacherMapper;
-
-	@Autowired
-	private WxTaskReplyMapper taskReplyMapper;
-
-	@Autowired
-	private WxParentsMapper parentsMapper;
-
-	@Autowired
-	private WxStudentMapper studentMapper;
-
-	@Autowired
-	private WxPushApi wxPushApi;
-
-	@Autowired
-	private WxSchoolMapper wxSchoolMapper;
-
-	@Autowired
-	private WxParentsStuMapper wxParentsStuMapper;
-
-	@Autowired
-	private WxSubjectMapper wxSubjectMapper;
-
-	/**
-	 * 发布作业
-	 * @param taskString
-	 * @return
-	 */
-	public String createTask(String taskString) throws Exception {
-		JSONObject json = JSONObject.parseObject(taskString);
-		TaskNotifyDO taskNotifyDO = new TaskNotifyDO();
-		String taskTitle = json.getString("taskTitle");
-		taskNotifyDO.setTaskTitle(taskTitle);
-		String taskContext = json.getString("taskContext");
-		taskNotifyDO.setTaskContext(taskContext);
-		Long taskCreator = json.getLong("taskCreator");
-		taskNotifyDO.setTaskCreator(taskCreator);
-		Long schoolId = teacherMapper.get(taskCreator).getSchoolId();
-		taskNotifyDO.setSchoolId(schoolId);
-		Long subjectId = json.getLong("subjectId");
-		taskNotifyDO.setSubjectId(subjectId);
-		taskNotifyDO.setTaskFiles(json.getString("taskFiles"));
-		taskNotifyDO.setTaskStatus(json.getInteger("taskStatus"));
-		taskNotifyDO.setCreateDate(new Date());
-		Date startDate = DateFormatUtil.string2Date(json.getString("startDate"));
-		taskNotifyDO.setStartDate(startDate);
-		Date endDate = DateFormatUtil.string2Date(json.getString("endDate"));
-		taskNotifyDO.setEndDate(endDate);
-		String taskNotifier = json.getString("taskNotifier");
-		taskNotifyDO.setTaskNotifier(taskNotifier);
-		int save = taskNotifyMapper.save(taskNotifyDO);
-		if (save>0){
-			if (ObjectUtils.isNotEmpty(taskNotifier)){
-				SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-				SchoolDO schoolDO = wxSchoolMapper.get(schoolId);
-				List<Long> longs = JSON.parseArray(taskNotifier, Long.class);
-				for (Long stuId:longs) {
-					List<ParentsStuDO> parentsStuDOS = wxParentsStuMapper.listByStuId(stuId);
-					if (parentsStuDOS.size()>0){
-						for (ParentsStuDO ps:parentsStuDOS) {
-							ParentsDO parentsDO = parentsMapper.get(ps.getParentId());
-							wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),parentsDO.getOpenid(), "WwKtiHd4lso9axuavfLdpHIVbzTiopOTyh_uCsL3ZI8",taskTitle,wxSubjectMapper.get(subjectId).getSubjectName(),format.format(new Date()), taskContext,"-", "点击查看详情", "");
-						}
-						}
-					}
-
-			}
-			return "作业发布成功";
-		}else {
-			throw new Exception("作业发布失败");
-		}
-	}
-
-	/**
-	 * 教师端获取作业列表
-	 * @param teacherId
-	 * @param taskStatus
-	 * @param pageIndex
-	 * @param pageSize
-	 */
-	public List<Map<String, Object>> listTaskTeacher(Long teacherId, Integer taskStatus, Integer pageIndex, Integer pageSize) throws Exception {
-		Integer pageStart = (pageIndex-1)*pageSize;
-		List<TaskNotifyDO> taskNotifyDOS = taskNotifyMapper.selectListByTeacher(teacherId, taskStatus, pageStart, pageSize);
-		if (ObjectUtils.isNotEmpty(taskNotifyDOS)){
-			List<Map<String, Object>> maps = new ArrayList<>();
-			for (TaskNotifyDO tn:taskNotifyDOS) {
-				Map<String, Object> map = taskDetail(tn);
-				maps.add(map);
-			}
-			return maps;
-		}else {
-			throw new Exception("暂无数据");
-		}
-	}
-
-	/**
-	 * 家长端获取作业列表
-	 * @param stuId
-	 * @param taskStatus
-	 * @param pageIndex
-	 * @param pageSize
-	 */
-	public List<Map<String, Object>> listTaskStu(Long stuId, Integer taskStatus, Integer pageIndex, Integer pageSize) throws Exception {
-		Integer pageStart = (pageIndex-1)*pageSize;
-		List<TaskNotifyDO> taskNotifyDOS = taskNotifyMapper.selectListByStu("%" + stuId + "%", taskStatus, pageStart, pageSize);
-		if (ObjectUtils.isNotEmpty(taskNotifyDOS)){
-			List<Map<String, Object>> maps = new ArrayList<>();
-			for (TaskNotifyDO tn:taskNotifyDOS) {
-				List<TaskReplyDO> taskReplyDOS = taskReplyMapper.listByTaskStu(tn.getTaskId(),stuId);
-				if (taskReplyDOS.size()>0){
-					tn.setTaskStatus(2);
-				}
-
-				Map<String, Object> map = taskDetail(tn);
-				maps.add(map);
-			}
-			return maps;
-		}else {
-			throw new Exception("暂无数据");
-		}
-	}
-
-	/**
-	 *家长端获取作业详情
-	 * @param taskId
-	 */
-	public Map<String, Object> taskDetail(Long taskId){
-		TaskNotifyDO taskNotifyDO = taskNotifyMapper.get(taskId);
-		return taskDetail(taskNotifyDO);
-
-	}
-
-	/**
-	 * 教师端获取作业详情
-	 * @param taskId
-	 * @param teacherId
-	 */
-	public Map<String, Object> taskDetailTeacher(Long taskId, Long teacherId) throws Exception {
-		TaskNotifyDO taskNotifyDO = taskNotifyMapper.get(taskId);
-		if (taskNotifyDO.getTaskCreator().compareTo(teacherId)==0){
-			return taskDetail(taskNotifyDO);
-		}else {
-			throw new Exception("您没有权限查看");
-		}
-	}
-
-	/**
-	 * 作业回复
-	 * @param taskRepayString
-	 * @return
-	 * @throws Exception
-	 */
-	public int taskReply(String taskRepayString){
-		TaskReplyDO taskReplyDO = JSONObject.parseObject(taskRepayString, TaskReplyDO.class);
-		taskReplyDO.setReplyDate(new Date());
-		return taskReplyMapper.save(taskReplyDO);
-	}
-
-	private Map<String, Object> taskDetail(TaskNotifyDO taskNotifyDO){
-		Map<String, Object> map1 = JavaBeanUtil.object2Map(taskNotifyDO);
-		TeacherDO teacherDO = teacherMapper.get(taskNotifyDO.getTaskCreator());
-		map1.put("teacherName",teacherDO.getTeacherName());
-		map1.put("teacherPhoto",teacherDO.getTeacherPhoto());
-		List<TaskReplyDO> taskReplyDOS = taskReplyMapper.listByTaskId(taskNotifyDO.getTaskId());
-		List<Map<String, Object>> maps = new ArrayList<>();
-		if (ObjectUtils.isNotEmpty(taskReplyDOS)){
-			for (TaskReplyDO tr:taskReplyDOS) {
-				Map<String, Object> map = JavaBeanUtil.object2Map(tr);
-				ParentsDO parentsDO = parentsMapper.get(tr.getParentId());
-				map.put("parentsName",parentsDO.getParentsName());
-				map.put("parentsPhoto",parentsDO.getParentsPhoto());
-				StudentDO studentDO = studentMapper.get(tr.getStuId());
-				map.put("stuName",studentDO.getStuName());
-				maps.add(map);
-			}
-		}
-		map1.put("taskReplyDOs",maps);
-		return map1;
-	}
+    @Autowired
+    private WxTaskNotifyMapper taskNotifyMapper;
+
+    @Autowired
+    private WxTeacherMapper teacherMapper;
+
+    @Autowired
+    private WxTaskReplyMapper taskReplyMapper;
+
+    @Autowired
+    private WxParentsMapper parentsMapper;
+
+    @Autowired
+    private WxStudentMapper studentMapper;
+
+    @Autowired
+    private WxPushApi wxPushApi;
+
+    @Autowired
+    private WxSchoolMapper wxSchoolMapper;
+
+    @Autowired
+    private WxParentsStuMapper wxParentsStuMapper;
+
+    @Autowired
+    private WxSubjectMapper wxSubjectMapper;
+
+    /**
+     * 发布作业
+     *
+     * @param taskString
+     * @return
+     */
+    public String createTask(String taskString) throws Exception {
+        JSONObject json = JSONObject.parseObject(taskString);
+        TaskNotifyDO taskNotifyDO = new TaskNotifyDO();
+        String taskTitle = json.getString("taskTitle");
+        taskNotifyDO.setTaskTitle(taskTitle);
+        String taskContext = json.getString("taskContext");
+        taskNotifyDO.setTaskContext(taskContext);
+        Long taskCreator = json.getLong("taskCreator");
+        taskNotifyDO.setTaskCreator(taskCreator);
+        Long schoolId = teacherMapper.get(taskCreator).getSchoolId();
+        taskNotifyDO.setSchoolId(schoolId);
+        Long subjectId = json.getLong("subjectId");
+        taskNotifyDO.setSubjectId(subjectId);
+        taskNotifyDO.setTaskFiles(json.getString("taskFiles"));
+        taskNotifyDO.setTaskStatus(json.getInteger("taskStatus"));
+        taskNotifyDO.setCreateDate(new Date());
+        Date startDate = DateFormatUtil.string2Date(json.getString("startDate"));
+        taskNotifyDO.setStartDate(startDate);
+        Date endDate = DateFormatUtil.string2Date(json.getString("endDate"));
+        taskNotifyDO.setEndDate(endDate);
+        String taskNotifier = json.getString("taskNotifier");
+        taskNotifyDO.setTaskNotifier(taskNotifier);
+        int save = taskNotifyMapper.save(taskNotifyDO);
+        if (save > 0) {
+            if (ObjectUtils.isNotEmpty(taskNotifier)) {
+                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+                SchoolDO schoolDO = wxSchoolMapper.get(schoolId);
+                List<Long> longs = JSON.parseArray(taskNotifier, Long.class);
+                for (Long stuId : longs) {
+                    List<ParentsStuDO> parentsStuDOS = wxParentsStuMapper.listByStuId(stuId);
+                    if (parentsStuDOS.size() > 0) {
+                        for (ParentsStuDO ps : parentsStuDOS) {
+                            ParentsDO parentsDO = parentsMapper.get(ps.getParentId());
+                            wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(),
+                                    parentsDO.getOpenid(), "WwKtiHd4lso9axuavfLdpHIVbzTiopOTyh_uCsL3ZI8", taskTitle,
+                                    wxSubjectMapper.get(subjectId).getSubjectName(), format.format(new Date()),
+                                    taskContext, "-", "点击查看详情", "https://school-wechat.ubtob" +
+                                            ".com/assignmentDetail/parent/" + taskNotifyDO.getTaskId());
+                        }
+                    }
+                }
+
+            }
+            return "作业发布成功";
+        } else {
+            throw new Exception("作业发布失败");
+        }
+    }
+
+    /**
+     * 教师端获取作业列表
+     *
+     * @param teacherId
+     * @param taskStatus
+     * @param pageIndex
+     * @param pageSize
+     */
+    public List<Map<String, Object>> listTaskTeacher(Long teacherId, Integer taskStatus, Integer pageIndex,
+                                                     Integer pageSize) throws Exception {
+        Integer pageStart = (pageIndex - 1) * pageSize;
+        List<TaskNotifyDO> taskNotifyDOS = taskNotifyMapper.selectListByTeacher(teacherId, taskStatus, pageStart,
+                pageSize);
+        if (ObjectUtils.isNotEmpty(taskNotifyDOS)) {
+            List<Map<String, Object>> maps = new ArrayList<>();
+            for (TaskNotifyDO tn : taskNotifyDOS) {
+                Map<String, Object> map = taskDetail(tn);
+                maps.add(map);
+            }
+            return maps;
+        } else {
+            throw new Exception("暂无数据");
+        }
+    }
+
+    /**
+     * 家长端获取作业列表
+     *
+     * @param stuId
+     * @param taskStatus
+     * @param pageIndex
+     * @param pageSize
+     */
+    public List<Map<String, Object>> listTaskStu(Long stuId, Integer taskStatus, Integer pageIndex, Integer pageSize) throws Exception {
+        Integer pageStart = (pageIndex - 1) * pageSize;
+        List<TaskNotifyDO> taskNotifyDOS = taskNotifyMapper.selectListByStu("%" + stuId + "%", taskStatus, pageStart,
+                pageSize);
+        if (ObjectUtils.isNotEmpty(taskNotifyDOS)) {
+            List<Map<String, Object>> maps = new ArrayList<>();
+            for (TaskNotifyDO tn : taskNotifyDOS) {
+                List<TaskReplyDO> taskReplyDOS = taskReplyMapper.listByTaskStu(tn.getTaskId(), stuId);
+                if (taskReplyDOS.size() > 0) {
+                    tn.setTaskStatus(2);
+                }
+
+                Map<String, Object> map = taskDetail(tn);
+                maps.add(map);
+            }
+            return maps;
+        } else {
+            throw new Exception("暂无数据");
+        }
+    }
+
+    /**
+     * 家长端获取作业详情
+     *
+     * @param taskId
+     */
+    public Map<String, Object> taskDetail(Long taskId) {
+        TaskNotifyDO taskNotifyDO = taskNotifyMapper.get(taskId);
+        return taskDetail(taskNotifyDO);
+
+    }
+
+    /**
+     * 教师端获取作业详情
+     *
+     * @param taskId
+     * @param teacherId
+     */
+    public Map<String, Object> taskDetailTeacher(Long taskId, Long teacherId) throws Exception {
+        TaskNotifyDO taskNotifyDO = taskNotifyMapper.get(taskId);
+        if (taskNotifyDO.getTaskCreator().compareTo(teacherId) == 0) {
+            return taskDetail(taskNotifyDO);
+        } else {
+            throw new Exception("您没有权限查看");
+        }
+    }
+
+    /**
+     * 作业回复
+     *
+     * @param taskRepayString
+     * @return
+     * @throws Exception
+     */
+    public int taskReply(String taskRepayString) {
+        TaskReplyDO taskReplyDO = JSONObject.parseObject(taskRepayString, TaskReplyDO.class);
+        taskReplyDO.setReplyDate(new Date());
+        return taskReplyMapper.save(taskReplyDO);
+    }
+
+    private Map<String, Object> taskDetail(TaskNotifyDO taskNotifyDO) {
+        Map<String, Object> map1 = JavaBeanUtil.object2Map(taskNotifyDO);
+        TeacherDO teacherDO = teacherMapper.get(taskNotifyDO.getTaskCreator());
+        map1.put("teacherName", teacherDO.getTeacherName());
+        map1.put("teacherPhoto", teacherDO.getTeacherPhoto());
+        List<TaskReplyDO> taskReplyDOS = taskReplyMapper.listByTaskId(taskNotifyDO.getTaskId());
+        List<Map<String, Object>> maps = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(taskReplyDOS)) {
+            for (TaskReplyDO tr : taskReplyDOS) {
+                Map<String, Object> map = JavaBeanUtil.object2Map(tr);
+                ParentsDO parentsDO = parentsMapper.get(tr.getParentId());
+                map.put("parentsName", parentsDO.getParentsName());
+                map.put("parentsPhoto", parentsDO.getParentsPhoto());
+                StudentDO studentDO = studentMapper.get(tr.getStuId());
+                map.put("stuName", studentDO.getStuName());
+                maps.add(map);
+            }
+        }
+        map1.put("taskReplyDOs", maps);
+        return map1;
+    }
 }

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

@@ -19,391 +19,409 @@ import java.util.*;
 
 @Service
 public class WxVoteServiceImpl implements WxVoteService {
-	@Autowired
-	private WxVoteMapper voteMapper;
-
-	@Autowired
-	private WxVoteElectMapper voteElectMapper;
-
-	@Autowired
-	private WxVoteOptionsMapper voteOptionsMapper;
-
-	@Autowired
-	private WxVoteTopicMapper voteTopicMapper;
-
-	@Autowired
-	private WxTeacherMapper teacherMapper;
-
-	@Autowired
-	private WxPushApi wxPushApi;
-
-	@Autowired
-	private WxSchoolMapper wxSchoolMapper;
-
-	@Autowired
-	private WxParentsStuMapper wxParentsStuMapper;
-
-	@Autowired
-	private WxParentsMapper wxParentsMapper;
-
-
-	/** 创建投票单 */
-	public String voteCreate(String voteString) throws Exception {
-		JSONObject votes = JSON.parseObject(voteString);
-		VoteDO vote = new VoteDO();
-		vote.setCreatDate(new Date());
-		Long creator = votes.getLong("creator");
-		vote.setCreator(creator);
-		vote.setSchoolId(teacherMapper.get(creator).getSchoolId());
-		vote.setVoteFile(votes.getString("voteFile"));
-		vote.setVoteName(votes.getString("voteName"));
-		vote.setVoteType(votes.getInteger("voteType"));
-		vote.setVoteStatus(votes.getInteger("voteStatus"));
-		String stuIds = votes.getString("stuIds");
-		vote.setStuIds(stuIds);
-		vote.setVoteRemarks(votes.getString("voteRemarks"));
-		String voteEndDate = votes.getString("voteEndDate");
-		String teacherIds = votes.getString("teacherIds");
-		vote.setTeacherIds(teacherIds);
-		if (ObjectUtils.isNotEmpty(voteEndDate)){
-			vote.setVoteEndDate(DateFormatUtil.string2Date(voteEndDate));
-		}
-		int i = voteMapper.save(vote);
-		if (i>0){
-			String topics = votes.getString("voteTopicDOS");
-			List<VoteTopicDO> topicList = JSONObject.parseArray(topics, VoteTopicDO.class);
-			for (int j = 0; j < topicList.size(); j++) {
-				VoteTopicDO topic = topicList.get(j);
-				topic.setVoteId(vote.getVoteId());
-				topic.setCreateDate(new Date());
-				int m = voteTopicMapper.save(topic);
-				if (m>0){
-					List<VoteOptionsDO> opts = topic.getVoteOptionsDOS();
-					for (int k = 0; k < opts.size(); k++) {
-						VoteOptionsDO option = opts.get(k);
-						option.setTopicId(topic.getTopicId());
-						voteOptionsMapper.save(option);
-					}
-				}else {
-					throw new Exception("创建失败");
-				}
-			}
-			if (ObjectUtils.isNotEmpty(voteEndDate)){
-				Timer timer = new Timer();
-				timer.schedule(new RemindTaskVote(voteMapper,vote.getVoteId()),DateFormatUtil.string2Date(voteEndDate));
-			}
-			List<Long> teacherId = JSON.parseArray(teacherIds, Long.class);
-			if (ObjectUtils.isNotEmpty(teacherId)){
-				List<Long> list = removeDuplicate(teacherId);
-				for (Long ll:list) {
-					TeacherDO teacherDO = teacherMapper.get(ll);
-					SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
-					SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w","有一个投票单需要您的支持",schoolDO.getSchoolName(),teacherMapper.get(creator).getTeacherName(),format.format(new Date()),vote.getVoteName(),"点击查看详情","");
-				}
-			}
-			List<Long> stuId = JSON.parseArray(stuIds, Long.class);
-			List<Long> list1 = removeDuplicate(stuId);
-			//new ArrayList<Long>();
-			for (Long l:list1) {
-				List<ParentsStuDO> parentsStuDOS = wxParentsStuMapper.listByStuId(l);
-				if (parentsStuDOS.size() > 0) {
-					for (ParentsStuDO ps : parentsStuDOS) {
-						ParentsDO parentsDO = wxParentsMapper.get(ps.getParentId());
-						SchoolDO schoolDO = wxSchoolMapper.get(parentsDO.getSchoolId());
-						SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-						wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), parentsDO.getOpenid(), "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "有一个投票单需要您的支持", schoolDO.getSchoolName(), teacherMapper.get(creator).getTeacherName(), format.format(new Date()), vote.getVoteName(), "点击查看详情", "");
-					}
-				}
-			}
-			return "创建成功";
-		}else {
-			throw new Exception("创建失败");
-		}
-	}
-	/**
-	 *  家长投票单列表
-	 * @param stuId
-	 * @param pageIndex
-	 * @param pageSize
-	 * @param voteType
-	 * @return
-	 */
-	@Override
-	public List<VoteDO> voteListStu(Long stuId, Integer pageIndex, Integer pageSize, Integer voteType) throws Exception {
-		Integer pageStart = (pageIndex-1)*pageSize;
-		List<Long> voteIds = new ArrayList<>();
-		List<Long> longs = voteMapper.selectStuIds("%"+stuId+"%");
-		voteIds.addAll(longs);
-		List<VoteDO> votes = voteMapper.selectVoteListByVoteIds(voteIds,pageStart,pageSize,voteType);
-		if (ObjectUtils.isNotEmpty(votes)){
-			List<VoteDO> votes1 = new ArrayList<>();
-			for (int i = 0; i <votes.size(); i++) {
-				VoteDO vote = votes.get(i);
-				VoteDO vote1 = getVote(vote);
-				List<VoteElectDO> elects = voteElectMapper.selectElectByStuId(stuId, vote1.getVoteId());
-				if (ObjectUtils.isNotEmpty(elects)){
-					vote1.setVoteStatus(3);
-				}
-				votes1.add(vote1);
-			}
-			return votes1;
-		}else {
-			throw new Exception("暂时没有投票单");
-		}
-	}
-
-
-	/**
-	 * 教师投票单列表
-	 * @param teacherId
-	 * @param pageIndex
-	 * @param pageSize
-	 * @param voteType
-	 * @return
-	 */
-	@Override
-	public Map<String, Object> voteListForTeacher(Long teacherId, Integer pageIndex, Integer pageSize, Integer voteType) throws Exception {
-		Integer pageStart = (pageIndex-1)*pageSize;
-		Map<String, Object> map = new HashMap<>();
-		List<Long> longs = voteMapper.selectByCreator(teacherId);
-		List<VoteDO> votes1 = new ArrayList<>();
-		if (ObjectUtils.isNotEmpty(longs)){
-			List<Long> voteIds = new ArrayList<>();
-			for (Long lo:longs) {
-				voteIds.add(lo);
-			}
-			List<VoteDO> votes = voteMapper.selectVoteListByVoteIds(voteIds, pageStart, pageSize, voteType);
-			if (ObjectUtils.isNotEmpty(votes)) {
-				for (int i = 0; i < votes.size(); i++) {
-					VoteDO vote = votes.get(i);
-					VoteDO vote1 = getVote(vote);
-					List<VoteElectDO> elects = voteElectMapper.selectElectByTeacherId(teacherId, vote1.getVoteId());
-					if (ObjectUtils.isNotEmpty(elects)){
-						vote1.setVoteStatus(3);
-					}
-					votes1.add(vote1);
-				}
-			}
-
-		}
-		map.put("create",votes1);
-		List<Long> longs1 = voteMapper.selectTeacherIds("%"+teacherId+"%");
-		List<VoteDO> votes2 = new ArrayList<>();
-		if (ObjectUtils.isNotEmpty(longs1)){
-			List<Long> voteIds = new ArrayList<>();
-			for (Long lo:longs1) {
-				voteIds.add(lo);
-			}
-			List<VoteDO> votes = voteMapper.selectVoteListByVoteIds(voteIds,pageStart,pageSize,voteType);
-			if (ObjectUtils.isNotEmpty(votes)){
-				for (int i = 0; i <votes.size(); i++) {
-					VoteDO vote = votes.get(i);
-					VoteDO vote1 = getVote(vote);
-					List<VoteElectDO> elects = voteElectMapper.selectElectByTeacherId(teacherId, vote1.getVoteId());
-					if (ObjectUtils.isNotEmpty(elects)){
-						vote1.setVoteStatus(3);
-					}
-					votes2.add(vote1);
-				}
-			}
-		}
-		map.put("notify",votes2);
-
-		return map;
-	}
-
-
-	/**
-	 * 教师端投票
-	 * @param optionIds
-	 * @param voteId
-	 * @param teacherId
-	 * @return
-	 * @throws Exception
-	 */
-	@Transactional
-	public String voteActionTeacher(String optionIds, Long voteId, Long teacherId) throws Exception {
-		List<Long> longs = JSON.parseArray(optionIds, Long.class);
-		for (int i = 0; i < longs.size(); i++) {
-			Long optionId = longs.get(i);
-			VoteOptionsDO options = voteOptionsMapper.get(optionId);
-			if (ObjectUtils.isNotEmpty(options)) {
-				VoteElectDO elect = new VoteElectDO();
-				elect.setTeacherId(teacherId);
-				elect.setVoteId(voteId);
-				elect.setTopicId(options.getTopicId());
-				elect.setOptionId(optionId);
-				voteElectMapper.save(elect);
-			} else {
-				throw new Exception("选项不存在,请查证");
-			}
-		}
-		return "感谢您的支持";
-	}
-
-
-	/**
-	 * 家长端投票
-	 * @param optionIds
-	 * @param voteId
-	 * @param parentId
-	 * @return
-	 * @throws Exception
-	 */
-	@Transactional
-	public String voteActionParent(String optionIds, Long voteId, Long parentId,Long stuId) throws Exception {
-		List<Long> longs = JSON.parseArray(optionIds, Long.class);
-		for (int i = 0; i < longs.size(); i++) {
-			Long optionId = longs.get(i);
-			VoteOptionsDO options = voteOptionsMapper.get(optionId);
-			if (ObjectUtils.isNotEmpty(options)) {
-				VoteElectDO elect = new VoteElectDO();
-				elect.setParentId(parentId);
-				elect.setVoteId(voteId);
-				elect.setTopicId(options.getTopicId());
-				elect.setOptionId(optionId);
-				elect.setStuId(stuId);
-				voteElectMapper.save(elect);
-			} else {
-				throw new Exception("选项不存在,请查证");
-			}
-		}
-		return "感谢您的支持";
-	}
-
-	/**
-	 * 家长端投票单详情
-	 * @param voteId
-	 * @return
-	 */
-	public VoteDO voteDetailStu(Long stuId, Long voteId) throws Exception {
-		List<VoteElectDO> elects = voteElectMapper.selectElectByStuId(stuId, voteId);
-		VoteDO vote = voteMapper.get(voteId);
-		VoteDO vote1 = getVote(vote);
-		if (ObjectUtils.isNotEmpty(elects)){
-			vote1.setVoteStatus(3);
-		}
-		return vote1;
-	}
-
-
-	/**
-	 * 教师端投票单详情
-	 * @param voteId
-	 * @return
-	 */
-	public VoteDO voteDetailTeacher(Long teacherId, Long voteId) throws Exception {
-		List<VoteElectDO> elects = voteElectMapper.selectElectByTeacherId(teacherId, voteId);
-		VoteDO vote = voteMapper.get(voteId);
-		VoteDO vote1 = getVote(vote);
-		if (ObjectUtils.isNotEmpty(elects)){
-			vote1.setVoteStatus(3);
-		}
-		return vote1;
-	}
-
-	/**
-	 * 删除投票单
-	 * @param teacherId
-	 * @param voteId
-	 */
-	public int deleteVote(Long teacherId, Long voteId) throws Exception {
-		VoteDO voteDO = voteMapper.get(voteId);
-		if (ObjectUtils.isNotEmpty(voteDO)){
-			if (voteDO.getCreator().compareTo(teacherId)==0){
-				List<VoteElectDO> voteElectDOS = voteElectMapper.selectElectByVoteId(voteId);
-				for (VoteElectDO ve:voteElectDOS) {
-					voteTopicMapper.remove(ve.getTopicId());
-					voteOptionsMapper.remove(ve.getOptionId());
-					voteElectMapper.remove(ve.getElectId());
-				}
-				return voteMapper.remove(voteId);
-			}else {
-				throw new Exception("您没有删除该单据的权限");
-			}
-		}else {
-			throw new Exception("单据不存在,请联系管理员");
-		}
-	}
-
-
-
-	private VoteDO getVote(VoteDO vote) throws Exception {
-		if (ObjectUtils.isNotEmpty(vote)){
-			String voteFile = vote.getVoteFile();
-			if (ObjectUtils.isNotEmpty(voteFile)){
-				List<String> strings = JSON.parseArray(voteFile, String.class);
-				vote.setEnclosure(strings);
-			}
-			TeacherDO teacherDO = teacherMapper.get(vote.getCreator());
-			if (ObjectUtils.isNotEmpty(teacherDO)){
-				vote.setTeacherName(teacherDO.getTeacherName());
-				vote.setTeacherPhoto(teacherDO.getTeacherPhoto());
-			}
-			List<VoteTopicDO> topics = voteTopicMapper.selectTopicListByVoteId(vote.getVoteId());
-			if (ObjectUtils.isNotEmpty(topics)){
-				for (int j = 0; j <topics.size() ; j++) {
-					VoteTopicDO topic = topics.get(j);
-					String topicFiles = topic.getTopicFiles();
-					if (ObjectUtils.isNotEmpty(topicFiles)){
-						List<String> strings = JSON.parseArray(topicFiles, String.class);
-						topic.setEnclosure(strings);
-					}
-					Integer topicCount = voteElectMapper.countByTopicId(topic.getTopicId());
-					double v=0.0;
-					if (topicCount>0){
-						v = Double.parseDouble(topicCount.toString());
-					}
-					List<VoteOptionsDO> options = voteOptionsMapper.selectOptionsListByTopicId(topic.getTopicId());
-					if (ObjectUtils.isNotEmpty(options)){
-						List<VoteOptionsDO> optionsList = new ArrayList<>();
-						for (int k = 0; k <options.size() ; k++) {
-							VoteOptionsDO option = options.get(k);
-							String optionFiles = option.getOptionFiles();
-							if (ObjectUtils.isNotEmpty(optionFiles)){
-								List<String> strings = JSON.parseArray(optionFiles, String.class);
-								option.setEnclosure(strings);
-							}
-							Integer count = voteElectMapper.countByOptionId(option.getOptionId());
-							double v1=0.0;
-							if (count>0) {
-								v1 = Double.parseDouble(count.toString());
-							}
-							option.setCount(count);
-							if (topicCount>0) {
-								option.setPercent((v1 * 100) / v);
-							}else {
-								option.setPercent(0.00);
-							}
-							optionsList.add(option);
-
-						}
-						topic.setVoteOptionsDOS(optionsList);
-					}else {
-						throw new Exception("投票单没有完成");
-					}
-				}
-				vote.setVoteTopicDOS(topics);
-			}else {
-				throw new Exception("投票单没有完成");
-			}
-			return vote;
-		}else {
-			throw new Exception("投票单不存在");
-		}
-
-	}
-
-	private static List removeDuplicate(List list){
-		List listTemp = new ArrayList();
-		for(int i=0;i<list.size();i++){
-			if(!listTemp.contains(list.get(i))){
-				listTemp.add(list.get(i));
-			}
-		}
-		return listTemp;
-	}
-
-	
+    @Autowired
+    private WxVoteMapper voteMapper;
+
+    @Autowired
+    private WxVoteElectMapper voteElectMapper;
+
+    @Autowired
+    private WxVoteOptionsMapper voteOptionsMapper;
+
+    @Autowired
+    private WxVoteTopicMapper voteTopicMapper;
+
+    @Autowired
+    private WxTeacherMapper teacherMapper;
+
+    @Autowired
+    private WxPushApi wxPushApi;
+
+    @Autowired
+    private WxSchoolMapper wxSchoolMapper;
+
+    @Autowired
+    private WxParentsStuMapper wxParentsStuMapper;
+
+    @Autowired
+    private WxParentsMapper wxParentsMapper;
+
+
+    /**
+     * 创建投票单
+     */
+    public String voteCreate(String voteString) throws Exception {
+        JSONObject votes = JSON.parseObject(voteString);
+        VoteDO vote = new VoteDO();
+        vote.setCreatDate(new Date());
+        Long creator = votes.getLong("creator");
+        vote.setCreator(creator);
+        vote.setSchoolId(teacherMapper.get(creator).getSchoolId());
+        vote.setVoteFile(votes.getString("voteFile"));
+        vote.setVoteName(votes.getString("voteName"));
+        vote.setVoteType(votes.getInteger("voteType"));
+        vote.setVoteStatus(votes.getInteger("voteStatus"));
+        String stuIds = votes.getString("stuIds");
+        vote.setStuIds(stuIds);
+        vote.setVoteRemarks(votes.getString("voteRemarks"));
+        String voteEndDate = votes.getString("voteEndDate");
+        String teacherIds = votes.getString("teacherIds");
+        vote.setTeacherIds(teacherIds);
+        if (ObjectUtils.isNotEmpty(voteEndDate)) {
+            vote.setVoteEndDate(DateFormatUtil.string2Date(voteEndDate));
+        }
+        int i = voteMapper.save(vote);
+        if (i > 0) {
+            String topics = votes.getString("voteTopicDOS");
+            List<VoteTopicDO> topicList = JSONObject.parseArray(topics, VoteTopicDO.class);
+            for (int j = 0; j < topicList.size(); j++) {
+                VoteTopicDO topic = topicList.get(j);
+                topic.setVoteId(vote.getVoteId());
+                topic.setCreateDate(new Date());
+                int m = voteTopicMapper.save(topic);
+                if (m > 0) {
+                    List<VoteOptionsDO> opts = topic.getVoteOptionsDOS();
+                    for (int k = 0; k < opts.size(); k++) {
+                        VoteOptionsDO option = opts.get(k);
+                        option.setTopicId(topic.getTopicId());
+                        voteOptionsMapper.save(option);
+                    }
+                } else {
+                    throw new Exception("创建失败");
+                }
+            }
+            if (ObjectUtils.isNotEmpty(voteEndDate)) {
+                Timer timer = new Timer();
+                timer.schedule(new RemindTaskVote(voteMapper, vote.getVoteId()),
+                        DateFormatUtil.string2Date(voteEndDate));
+            }
+            List<Long> teacherId = JSON.parseArray(teacherIds, Long.class);
+            if (ObjectUtils.isNotEmpty(teacherId)) {
+                List<Long> list = removeDuplicate(teacherId);
+                for (Long ll : list) {
+                    TeacherDO teacherDO = teacherMapper.get(ll);
+                    SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
+                    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                    wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), teacherDO.getOpenid(),
+                            "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "有一个投票单需要您的支持", schoolDO.getSchoolName(),
+                            teacherMapper.get(creator).getTeacherName(), format.format(new Date()), vote.getVoteName()
+                            , "点击查看详情", "https://school-wechat.ubtob.com/voteDetail/" + vote.getVoteId());
+                }
+            }
+            List<Long> stuId = JSON.parseArray(stuIds, Long.class);
+            List<Long> list1 = removeDuplicate(stuId);
+            //new ArrayList<Long>();
+            for (Long l : list1) {
+                List<ParentsStuDO> parentsStuDOS = wxParentsStuMapper.listByStuId(l);
+                if (parentsStuDOS.size() > 0) {
+                    for (ParentsStuDO ps : parentsStuDOS) {
+                        ParentsDO parentsDO = wxParentsMapper.get(ps.getParentId());
+                        SchoolDO schoolDO = wxSchoolMapper.get(parentsDO.getSchoolId());
+                        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+                        wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), parentsDO.getOpenid()
+                                , "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "有一个投票单需要您的支持",
+                                schoolDO.getSchoolName(), teacherMapper.get(creator).getTeacherName(),
+                                format.format(new Date()), vote.getVoteName(), "点击查看详情",
+                                "https://school-wechat.ubtob.com/voteDetail/" + vote.getVoteId());
+                    }
+                }
+            }
+            return "创建成功";
+        } else {
+            throw new Exception("创建失败");
+        }
+    }
+
+    /**
+     * 家长投票单列表
+     *
+     * @param stuId
+     * @param pageIndex
+     * @param pageSize
+     * @param voteType
+     * @return
+     */
+    @Override
+    public List<VoteDO> voteListStu(Long stuId, Integer pageIndex, Integer pageSize, Integer voteType) throws Exception {
+        Integer pageStart = (pageIndex - 1) * pageSize;
+        List<Long> voteIds = new ArrayList<>();
+        List<Long> longs = voteMapper.selectStuIds("%" + stuId + "%");
+        voteIds.addAll(longs);
+        List<VoteDO> votes = voteMapper.selectVoteListByVoteIds(voteIds, pageStart, pageSize, voteType);
+        if (ObjectUtils.isNotEmpty(votes)) {
+            List<VoteDO> votes1 = new ArrayList<>();
+            for (int i = 0; i < votes.size(); i++) {
+                VoteDO vote = votes.get(i);
+                VoteDO vote1 = getVote(vote);
+                List<VoteElectDO> elects = voteElectMapper.selectElectByStuId(stuId, vote1.getVoteId());
+                if (ObjectUtils.isNotEmpty(elects)) {
+                    vote1.setVoteStatus(3);
+                }
+                votes1.add(vote1);
+            }
+            return votes1;
+        } else {
+            throw new Exception("暂时没有投票单");
+        }
+    }
+
+
+    /**
+     * 教师投票单列表
+     *
+     * @param teacherId
+     * @param pageIndex
+     * @param pageSize
+     * @param voteType
+     * @return
+     */
+    @Override
+    public Map<String, Object> voteListForTeacher(Long teacherId, Integer pageIndex, Integer pageSize,
+                                                  Integer voteType) throws Exception {
+        Integer pageStart = (pageIndex - 1) * pageSize;
+        Map<String, Object> map = new HashMap<>();
+        List<Long> longs = voteMapper.selectByCreator(teacherId);
+        List<VoteDO> votes1 = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(longs)) {
+            List<Long> voteIds = new ArrayList<>();
+            for (Long lo : longs) {
+                voteIds.add(lo);
+            }
+            List<VoteDO> votes = voteMapper.selectVoteListByVoteIds(voteIds, pageStart, pageSize, voteType);
+            if (ObjectUtils.isNotEmpty(votes)) {
+                for (int i = 0; i < votes.size(); i++) {
+                    VoteDO vote = votes.get(i);
+                    VoteDO vote1 = getVote(vote);
+                    List<VoteElectDO> elects = voteElectMapper.selectElectByTeacherId(teacherId, vote1.getVoteId());
+                    if (ObjectUtils.isNotEmpty(elects)) {
+                        vote1.setVoteStatus(3);
+                    }
+                    votes1.add(vote1);
+                }
+            }
+
+        }
+        map.put("create", votes1);
+        List<Long> longs1 = voteMapper.selectTeacherIds("%" + teacherId + "%");
+        List<VoteDO> votes2 = new ArrayList<>();
+        if (ObjectUtils.isNotEmpty(longs1)) {
+            List<Long> voteIds = new ArrayList<>();
+            for (Long lo : longs1) {
+                voteIds.add(lo);
+            }
+            List<VoteDO> votes = voteMapper.selectVoteListByVoteIds(voteIds, pageStart, pageSize, voteType);
+            if (ObjectUtils.isNotEmpty(votes)) {
+                for (int i = 0; i < votes.size(); i++) {
+                    VoteDO vote = votes.get(i);
+                    VoteDO vote1 = getVote(vote);
+                    List<VoteElectDO> elects = voteElectMapper.selectElectByTeacherId(teacherId, vote1.getVoteId());
+                    if (ObjectUtils.isNotEmpty(elects)) {
+                        vote1.setVoteStatus(3);
+                    }
+                    votes2.add(vote1);
+                }
+            }
+        }
+        map.put("notify", votes2);
+
+        return map;
+    }
+
+
+    /**
+     * 教师端投票
+     *
+     * @param optionIds
+     * @param voteId
+     * @param teacherId
+     * @return
+     * @throws Exception
+     */
+    @Transactional
+    public String voteActionTeacher(String optionIds, Long voteId, Long teacherId) throws Exception {
+        List<Long> longs = JSON.parseArray(optionIds, Long.class);
+        for (int i = 0; i < longs.size(); i++) {
+            Long optionId = longs.get(i);
+            VoteOptionsDO options = voteOptionsMapper.get(optionId);
+            if (ObjectUtils.isNotEmpty(options)) {
+                VoteElectDO elect = new VoteElectDO();
+                elect.setTeacherId(teacherId);
+                elect.setVoteId(voteId);
+                elect.setTopicId(options.getTopicId());
+                elect.setOptionId(optionId);
+                voteElectMapper.save(elect);
+            } else {
+                throw new Exception("选项不存在,请查证");
+            }
+        }
+        return "感谢您的支持";
+    }
+
+
+    /**
+     * 家长端投票
+     *
+     * @param optionIds
+     * @param voteId
+     * @param parentId
+     * @return
+     * @throws Exception
+     */
+    @Transactional
+    public String voteActionParent(String optionIds, Long voteId, Long parentId, Long stuId) throws Exception {
+        List<Long> longs = JSON.parseArray(optionIds, Long.class);
+        for (int i = 0; i < longs.size(); i++) {
+            Long optionId = longs.get(i);
+            VoteOptionsDO options = voteOptionsMapper.get(optionId);
+            if (ObjectUtils.isNotEmpty(options)) {
+                VoteElectDO elect = new VoteElectDO();
+                elect.setParentId(parentId);
+                elect.setVoteId(voteId);
+                elect.setTopicId(options.getTopicId());
+                elect.setOptionId(optionId);
+                elect.setStuId(stuId);
+                voteElectMapper.save(elect);
+            } else {
+                throw new Exception("选项不存在,请查证");
+            }
+        }
+        return "感谢您的支持";
+    }
+
+    /**
+     * 家长端投票单详情
+     *
+     * @param voteId
+     * @return
+     */
+    public VoteDO voteDetailStu(Long stuId, Long voteId) throws Exception {
+        List<VoteElectDO> elects = voteElectMapper.selectElectByStuId(stuId, voteId);
+        VoteDO vote = voteMapper.get(voteId);
+        VoteDO vote1 = getVote(vote);
+        if (ObjectUtils.isNotEmpty(elects)) {
+            vote1.setVoteStatus(3);
+        }
+        return vote1;
+    }
+
+
+    /**
+     * 教师端投票单详情
+     *
+     * @param voteId
+     * @return
+     */
+    public VoteDO voteDetailTeacher(Long teacherId, Long voteId) throws Exception {
+        List<VoteElectDO> elects = voteElectMapper.selectElectByTeacherId(teacherId, voteId);
+        VoteDO vote = voteMapper.get(voteId);
+        VoteDO vote1 = getVote(vote);
+        if (ObjectUtils.isNotEmpty(elects)) {
+            vote1.setVoteStatus(3);
+        }
+        return vote1;
+    }
+
+    /**
+     * 删除投票单
+     *
+     * @param teacherId
+     * @param voteId
+     */
+    public int deleteVote(Long teacherId, Long voteId) throws Exception {
+        VoteDO voteDO = voteMapper.get(voteId);
+        if (ObjectUtils.isNotEmpty(voteDO)) {
+            if (voteDO.getCreator().compareTo(teacherId) == 0) {
+                List<VoteElectDO> voteElectDOS = voteElectMapper.selectElectByVoteId(voteId);
+                for (VoteElectDO ve : voteElectDOS) {
+                    voteTopicMapper.remove(ve.getTopicId());
+                    voteOptionsMapper.remove(ve.getOptionId());
+                    voteElectMapper.remove(ve.getElectId());
+                }
+                return voteMapper.remove(voteId);
+            } else {
+                throw new Exception("您没有删除该单据的权限");
+            }
+        } else {
+            throw new Exception("单据不存在,请联系管理员");
+        }
+    }
+
+
+    private VoteDO getVote(VoteDO vote) throws Exception {
+        if (ObjectUtils.isNotEmpty(vote)) {
+            String voteFile = vote.getVoteFile();
+            if (ObjectUtils.isNotEmpty(voteFile)) {
+                List<String> strings = JSON.parseArray(voteFile, String.class);
+                vote.setEnclosure(strings);
+            }
+            TeacherDO teacherDO = teacherMapper.get(vote.getCreator());
+            if (ObjectUtils.isNotEmpty(teacherDO)) {
+                vote.setTeacherName(teacherDO.getTeacherName());
+                vote.setTeacherPhoto(teacherDO.getTeacherPhoto());
+            }
+            List<VoteTopicDO> topics = voteTopicMapper.selectTopicListByVoteId(vote.getVoteId());
+            if (ObjectUtils.isNotEmpty(topics)) {
+                for (int j = 0; j < topics.size(); j++) {
+                    VoteTopicDO topic = topics.get(j);
+                    String topicFiles = topic.getTopicFiles();
+                    if (ObjectUtils.isNotEmpty(topicFiles)) {
+                        List<String> strings = JSON.parseArray(topicFiles, String.class);
+                        topic.setEnclosure(strings);
+                    }
+                    Integer topicCount = voteElectMapper.countByTopicId(topic.getTopicId());
+                    double v = 0.0;
+                    if (topicCount > 0) {
+                        v = Double.parseDouble(topicCount.toString());
+                    }
+                    List<VoteOptionsDO> options = voteOptionsMapper.selectOptionsListByTopicId(topic.getTopicId());
+                    if (ObjectUtils.isNotEmpty(options)) {
+                        List<VoteOptionsDO> optionsList = new ArrayList<>();
+                        for (int k = 0; k < options.size(); k++) {
+                            VoteOptionsDO option = options.get(k);
+                            String optionFiles = option.getOptionFiles();
+                            if (ObjectUtils.isNotEmpty(optionFiles)) {
+                                List<String> strings = JSON.parseArray(optionFiles, String.class);
+                                option.setEnclosure(strings);
+                            }
+                            Integer count = voteElectMapper.countByOptionId(option.getOptionId());
+                            double v1 = 0.0;
+                            if (count > 0) {
+                                v1 = Double.parseDouble(count.toString());
+                            }
+                            option.setCount(count);
+                            if (topicCount > 0) {
+                                option.setPercent((v1 * 100) / v);
+                            } else {
+                                option.setPercent(0.00);
+                            }
+                            optionsList.add(option);
+
+                        }
+                        topic.setVoteOptionsDOS(optionsList);
+                    } else {
+                        throw new Exception("投票单没有完成");
+                    }
+                }
+                vote.setVoteTopicDOS(topics);
+            } else {
+                throw new Exception("投票单没有完成");
+            }
+            return vote;
+        } else {
+            throw new Exception("投票单不存在");
+        }
+
+    }
+
+    private static List removeDuplicate(List list) {
+        List listTemp = new ArrayList();
+        for (int i = 0; i < list.size(); i++) {
+            if (!listTemp.contains(list.get(i))) {
+                listTemp.add(list.get(i));
+            }
+        }
+        return listTemp;
+    }
+
+
 }

+ 5 - 0
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/mapper/WxNotifyrecordsMapper.java

@@ -2,6 +2,7 @@ package com.usoftchina.smartschool.school.wxschool.mapper;
 
 import com.usoftchina.smartschool.school.po.NotifyrecordsDO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -28,4 +29,8 @@ public interface WxNotifyrecordsMapper {
 	int remove(Long re_id);
 	
 	int batchRemove(Long[] reIds);
+
+	NotifyrecordsDO getByStu(@Param("stuId") Long stuId, @Param("notifyId") Long notifyId);
+
+	NotifyrecordsDO getByTeacher(@Param("notifyId") Long notifyId, @Param("teacherId") Long teacherId);
 }

+ 3 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/oaBean/Director.java

@@ -2,8 +2,10 @@ package com.usoftchina.smartschool.school.wxschool.oaBean;
 
 
 import com.usoftchina.smartschool.school.wxschool.mapper.WxOaApproveMapper;
+import com.usoftchina.smartschool.school.wxschool.mapper.WxSchoolMapper;
 import com.usoftchina.smartschool.school.wxschool.mapper.WxTeacherMapper;
 import com.usoftchina.smartschool.school.po.OaApproveDO;
+import com.usoftchina.smartschool.wechat.api.WxPushApi;
 
 /**
  * 主任
@@ -17,7 +19,7 @@ public class Director extends Leader {
     }
 
     @Override
-   public String handleRequest(WxTeacherMapper teacherMapper, WxOaApproveMapper oaApproveMapper, OaApproveDO oaApprove, Integer status, String approveOpinion) throws Exception {
+   public String handleRequest(WxSchoolMapper wxSchoolMapper, WxPushApi wxPushApi, WxTeacherMapper teacherMapper, WxOaApproveMapper oaApproveMapper, OaApproveDO oaApprove, Integer status, String approveOpinion) throws Exception {
         return null;
     }
 }

+ 3 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/oaBean/GeneralManager.java

@@ -2,8 +2,10 @@ package com.usoftchina.smartschool.school.wxschool.oaBean;
 
 
 import com.usoftchina.smartschool.school.wxschool.mapper.WxOaApproveMapper;
+import com.usoftchina.smartschool.school.wxschool.mapper.WxSchoolMapper;
 import com.usoftchina.smartschool.school.wxschool.mapper.WxTeacherMapper;
 import com.usoftchina.smartschool.school.po.OaApproveDO;
+import com.usoftchina.smartschool.wechat.api.WxPushApi;
 
 /**
  * 总经理 10-30天
@@ -17,7 +19,7 @@ public class GeneralManager extends Leader {
     }
 
     @Override
-    public String handleRequest(WxTeacherMapper teacherMapper, WxOaApproveMapper oaApproveMapper, OaApproveDO oaApprove, Integer status, String approveOpinion) throws Exception {
+    public String handleRequest(WxSchoolMapper wxSchoolMapper, WxPushApi wxPushApi, WxTeacherMapper teacherMapper, WxOaApproveMapper oaApproveMapper, OaApproveDO oaApprove, Integer status, String approveOpinion) throws Exception {
         return null;
     }
 }

+ 3 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/oaBean/Leader.java

@@ -2,8 +2,10 @@ package com.usoftchina.smartschool.school.wxschool.oaBean;
 
 
 import com.usoftchina.smartschool.school.wxschool.mapper.WxOaApproveMapper;
+import com.usoftchina.smartschool.school.wxschool.mapper.WxSchoolMapper;
 import com.usoftchina.smartschool.school.wxschool.mapper.WxTeacherMapper;
 import com.usoftchina.smartschool.school.po.OaApproveDO;
+import com.usoftchina.smartschool.wechat.api.WxPushApi;
 
 /**
  * 抽象类
@@ -27,5 +29,5 @@ public abstract class Leader {
     }
 
     //处理请求核心业务方法
-   public abstract String handleRequest(WxTeacherMapper teacherMapper, WxOaApproveMapper oaApproveMapper, OaApproveDO oaApprove, Integer status, String approveOpinion) throws Exception;
+   public abstract String handleRequest(WxSchoolMapper wxSchoolMapper,WxPushApi wxPushApi, WxTeacherMapper teacherMapper, WxOaApproveMapper oaApproveMapper, OaApproveDO oaApprove, Integer status, String approveOpinion) throws Exception;
 }

+ 17 - 13
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/oaBean/Manager.java

@@ -2,10 +2,13 @@ package com.usoftchina.smartschool.school.wxschool.oaBean;
 
 
 
+import com.usoftchina.smartschool.school.po.SchoolDO;
 import com.usoftchina.smartschool.school.wxschool.mapper.WxOaApproveMapper;
+import com.usoftchina.smartschool.school.wxschool.mapper.WxSchoolMapper;
 import com.usoftchina.smartschool.school.wxschool.mapper.WxTeacherMapper;
 import com.usoftchina.smartschool.school.po.OaApproveDO;
 import com.usoftchina.smartschool.school.po.TeacherDO;
+import com.usoftchina.smartschool.wechat.api.WxPushApi;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
@@ -17,25 +20,26 @@ public class Manager extends Leader {
     }
 
     @Override
-    public String handleRequest(WxTeacherMapper teacherMapper, WxOaApproveMapper oaApproveMapper, OaApproveDO oaApprove, Integer status, String approveOpinion) throws Exception {
+    public String handleRequest(WxSchoolMapper wxSchoolMapper,WxPushApi wxPushApi, WxTeacherMapper teacherMapper, WxOaApproveMapper oaApproveMapper, OaApproveDO oaApprove, Integer status, String approveOpinion) throws Exception {
         if (status==1){
             oaApprove.setApproveDate(new Date());
             oaApprove.setApproveStatus(2);
             oaApprove.setApproveOpinion(approveOpinion);
             int i = oaApproveMapper.update(oaApprove);
             TeacherDO teacherDO = teacherMapper.get(oaApprove.getProposer());
+            SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
             Integer approveType = oaApprove.getApproveType();
             SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
             if (i>0){
-                /*if (1==approveType){
-                    userService.wxPush(user.getUserOpenid(),"TCxxHDaVJWWxKEhJEcpyOoOl4nB75WL9_87-52gmHUg","您好,审批已通过",user.getUserName(),"出差",format.format(new Date()),userMapper.selectUserById(oaApprove.getApprover()).getUserName(),"点击查看详情","https://www.akuiguoshu.com/smart-school/");
+                if (1==approveType){
+                    wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"TCxxHDaVJWWxKEhJEcpyOoOl4nB75WL9_87-52gmHUg","您好,审批已通过",teacherDO.getTeacherName(),"出差",format.format(new Date()),teacherMapper.get(oaApprove.getApprover()).getTeacherName(),"点击查看详情","https://school-wechat.ubtob.com/approvel-detail/true/"+oaApprove.getApproveId());
                 }else if (2==approveType){
-                    userService.wxPush(user.getUserOpenid(),"TCxxHDaVJWWxKEhJEcpyOoOl4nB75WL9_87-52gmHUg","您好,审批已通过",user.getUserName(),"用品申请",format.format(new Date()),userMapper.selectUserById(oaApprove.getApprover()).getUserName(),"点击查看详情","https://www.akuiguoshu.com/smart-school/");
+                    wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"TCxxHDaVJWWxKEhJEcpyOoOl4nB75WL9_87-52gmHUg","您好,审批已通过",teacherDO.getTeacherName(),"用品申请",format.format(new Date()),teacherMapper.get(oaApprove.getApprover()).getTeacherName(),"点击查看详情","https://school-wechat.ubtob.com/approvel-detail/true/"+oaApprove.getApproveId());
                 }else if (4==approveType){
-                    userService.wxPush(user.getUserOpenid(),"TCxxHDaVJWWxKEhJEcpyOoOl4nB75WL9_87-52gmHUg","您好,审批已通过",user.getUserName(),"请假",format.format(new Date()),userMapper.selectUserById(oaApprove.getApprover()).getUserName(),"点击查看详情","https://www.akuiguoshu.com/smart-school/");
+                    wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"TCxxHDaVJWWxKEhJEcpyOoOl4nB75WL9_87-52gmHUg","您好,审批已通过",teacherDO.getTeacherName(),"请假",format.format(new Date()),teacherMapper.get(oaApprove.getApprover()).getTeacherName(),"点击查看详情","https://school-wechat.ubtob.com/approvel-detail/true/"+oaApprove.getApproveId());
                 }else {
 
-                }*/
+                }
                 return "审批通过,审批意见:" + approveOpinion;
             }else {
                 throw new Exception("审批异常,请联系管理员");
@@ -45,20 +49,20 @@ public class Manager extends Leader {
             oaApprove.setApproveStatus(3);
             oaApprove.setApproveOpinion(approveOpinion);
             int i = oaApproveMapper.update(oaApprove);
-            teacherMapper.get(oaApprove.getProposer());
+            TeacherDO teacherDO = teacherMapper.get(oaApprove.getProposer());
+            SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
             Integer approveType = oaApprove.getApproveType();
             SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
             if (i>0){
-                /*if (1==approveType){
-                    userService.wxPush(user.getUserOpenid(),"Rs8AcmuluVWDd4uC9L08PDStVNYXJmZrsSCk9xiKxrI","抱歉,您的审批未通过","出差",userMapper.selectUserById(oaApprove.getApprover()).getUserName(),format.format(new Date()),"","点击查看详情","https://www.akuiguoshu.com/smart-school/");
+                if (1==approveType){
+                    wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"Rs8AcmuluVWDd4uC9L08PDStVNYXJmZrsSCk9xiKxrI","抱歉,您的审批未通过","出差",teacherMapper.get(oaApprove.getApprover()).getTeacherName(),format.format(new Date()),"","点击查看详情","https://school-wechat.ubtob.com/approvel-detail/true/"+oaApprove.getApproveId());
                 }else if(2==approveType){
-                    userService.wxPush(user.getUserOpenid(),"Rs8AcmuluVWDd4uC9L08PDStVNYXJmZrsSCk9xiKxrI","抱歉,您的审批未通过","用品申请",userMapper.selectUserById(oaApprove.getApprover()).getUserName(),format.format(new Date()),"","点击查看详情","https://www.akuiguoshu.com/smart-school/");
+                    wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"Rs8AcmuluVWDd4uC9L08PDStVNYXJmZrsSCk9xiKxrI","抱歉,您的审批未通过","用品申请",teacherMapper.get(oaApprove.getApprover()).getTeacherName(),format.format(new Date()),"","点击查看详情","https://school-wechat.ubtob.com/approvel-detail/true/"+oaApprove.getApproveId());
                 }else if (4==approveType){
-                    userService.wxPush(user.getUserOpenid(),"Rs8AcmuluVWDd4uC9L08PDStVNYXJmZrsSCk9xiKxrI","抱歉,您的审批未通过","请假",userMapper.selectUserById(oaApprove.getApprover()).getUserName(),format.format(new Date()),"","点击查看详情","https://www.akuiguoshu.com/smart-school/");
+                    wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"Rs8AcmuluVWDd4uC9L08PDStVNYXJmZrsSCk9xiKxrI","抱歉,您的审批未通过","请假",teacherMapper.get(oaApprove.getApprover()).getTeacherName(),format.format(new Date()),"","点击查看详情","https://school-wechat.ubtob.com/approvel-detail/true/"+oaApprove.getApproveId());
                 }else {
 
-                }*/
-
+                }
                 return "审批拒绝,审批意见:" + approveOpinion;
             }else {
                 throw new Exception("审批异常,请联系管理员");

+ 1 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/support/RemindTask.java

@@ -56,7 +56,7 @@ public class RemindTask extends TimerTask {
         List<Long> list = removeDuplicate(longs);
         for (Long teacherId:list) {
             SchoolDO schoolDO = wxSchoolMapper.get(meetingDO.getSchoolId());
-            wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherMapper.get(teacherId).getOpenid(), "_hX_lGEG1W1bJmW37VBaPYQoLrRrUAlNCSScezZQQWk","您好,您有一条新的会议通知", meetingDO.getMeetingName(),simpleDateFormat.format(meetingDO.getStartDate()),meetingDO.getMeetingAddress(),"-", "点击查看详情", "");
+            wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherMapper.get(teacherId).getOpenid(), "_hX_lGEG1W1bJmW37VBaPYQoLrRrUAlNCSScezZQQWk","您好,您有一条新的会议通知", meetingDO.getMeetingName(),simpleDateFormat.format(meetingDO.getStartDate()),meetingDO.getMeetingAddress(),"-", "点击查看详情", "https://school-wechat.ubtob.com/meet-detail/"+meetingDO.getMeetingId());
         }
         }else {
 

+ 8 - 0
applications/school/school-server/src/main/resources/mapper/WxNotifyrecordsMapper.xml

@@ -88,4 +88,12 @@
 		</foreach>
 	</delete>
 
+	<select id="getByStu" resultType="com.usoftchina.smartschool.school.po.NotifyrecordsDO">
+		<include refid="NotifyrecordsVo"/> where notify_id = #{notifyId} and stu_id = #{stuId}
+	</select>
+
+	<select id="getByTeacher" resultType="com.usoftchina.smartschool.school.po.NotifyrecordsDO">
+		<include refid="NotifyrecordsVo"/> where notify_id = #{notifyId} and teacher_id = #{teacherId}
+	</select>
+
 </mapper>

+ 12 - 7
applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/service/impl/WxPushServiceImpl.java

@@ -33,12 +33,12 @@ public class WxPushServiceImpl implements WxPushService{
                         + "\"keyword4\":{\"value\":\""+keyword4+"\",\"color\":\"#173177\"},"
                         + "\"remark\":{\"value\":\""+remark+"\",\"color\":\"#173177\"}}}";
                 String access_token=  getWxAcessToken(appId,secret);
-                String token= JSON.parseObject(access_token).getString("access_token");
-                HttpRequest hRequest=  HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token)
+                //String token= JSON.parseObject(access_token).getString("access_token");
+                HttpRequest hRequest=  HttpRequest.post("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+access_token)
                         .header("Content-Type", "application/json")
                         .send(json.getBytes());
                 String result= hRequest.body();
-                //System.err.println("WxPushResult======="+result);
+                System.err.println("WxPushResult======="+result);
 
 			/*if(JSON.parseObject(result).getInteger("errcode")==0&&JSON.parseObject(result).getString("errmsg").equals("ok")){
 				return "推送成功!";
@@ -57,9 +57,14 @@ public class WxPushServiceImpl implements WxPushService{
             params.put("appid", appId);
             params.put("secret", secret);
             params.put("grant_type", "client_credential");
-            HttpRequest httpRequest= HttpRequest.get("https://api.weixin.qq.com/cgi-bin/token",params,false);
-            String content=httpRequest.body();
-           // System.err.println("WxPushToken======"+content);
-            return content;
+            //HttpRequest httpRequest= HttpRequest.get("https://api.weixin.qq.com/cgi-bin/token",params,false);
+           // String content=httpRequest.body();
+           //System.err.println("WxPushToken======"+content);
+            HttpRequest response= HttpRequest.get("https://api.weixin.qq.com/sns/oauth2/access_token", params, true);
+            String result=response.body();
+            System.err.println("WxPushResult======"+result);
+            String token= JSON.parseObject(result).getString("access_token");
+            System.err.println("WxPushToken====="+token);
+            return token;
         }
 }

+ 4 - 5
frontend/wechat-web/src/modules/accountBind/AccountBind.jsx

@@ -40,12 +40,11 @@ class AccountBind extends Component {
             phone: '',
             code: '',
             obtainText: '获取验证码',
-            userHead: 'http://d.hiphotos.baidu.com/zhidao/wh%3D450%2C600/sign=1be47219c1fdfc03e52debbce10faba2/b8389b504fc2d562562d540ae51190ef76c66c34.jpg'
         }
     }
 
     render() {
-        const {account, phone, code, obtainText, userHead} = this.state
+        const {account, phone, code, obtainText} = this.state
 
         const idClear = account ?
             <Icon type="close-circle" onClick={this.accountEmpty} style={{color: 'white'}}/>
@@ -65,9 +64,9 @@ class AccountBind extends Component {
         return (
             <div className='bindParent' style={{height: this.bodyHeight + 'px'}}>
                 <div className='bindHeadLayout'>
-                    {isObjEmpty(userHead) ?
+                    {isObjEmpty(this.props.userInfo.userAvatar) ?
                         <Avatar icon='user' size={65}/> :
-                        <Avatar src={userHead} size={65}/>}
+                        <Avatar src={this.props.userInfo.userAvatar} size={65}/>}
                 </div>
                 {/*<Input placeholder={mType == 'parents' ? '学号' : '工号'}
                        prefix={idIcon} suffix={idClear}
@@ -191,7 +190,7 @@ class AccountBind extends Component {
 
     bindEvent = () => {
         Toast.loading('信息绑定中...')
-        const {phone, code, userHead} = this.state
+        const {phone, code} = this.state
         if (isObjEmpty(phone, code)) {
             Toast.fail('请完善所有输入项!')
             return

+ 12 - 7
frontend/wechat-web/src/modules/home/HomePage.jsx

@@ -44,6 +44,7 @@ class HomePage extends Component {
         clearClassData()()
 
         document.title = "智慧校园";
+        // document.domain = ''
 
         this.mySwiper = new Swiper('.home-swiper-container', {
             autoplay: {
@@ -269,7 +270,7 @@ class HomePage extends Component {
                         setTimeout(() => {
                             Toast.success('切换成功!', 1)
                             switchCurrentUser(1)()
-                        }, 500)
+                        }, 400)
                     }
                 }
             },
@@ -280,7 +281,7 @@ class HomePage extends Component {
                         setTimeout(() => {
                             Toast.success('切换成功!', 1)
                             switchCurrentUser(2)()
-                        }, 500)
+                        }, 400)
                     }
                 }
             },
@@ -400,7 +401,6 @@ class HomePage extends Component {
     }
 
     onStuSwitch = (stuIndex) => {
-
         if (this.state.studentIndex !== stuIndex) {
             Toast.loading('学生切换中...', 0)
             setTimeout(() => {
@@ -409,11 +409,16 @@ class HomePage extends Component {
                     studentIndex: stuIndex
                 })
                 switchUser({
-                    stuName: this.props.userInfo.students[stuIndex].stuName,
-                    stuId: this.props.userInfo.students[stuIndex].stuId,
-                    student: this.props.userInfo.students[stuIndex]
+                    parent: {
+                        ...this.props.userInfo.parent,
+                        student: this.props.userInfo.parent.students[stuIndex]
+                    },
+                    user: {
+                        ...this.props.userInfo.user,
+                        student: this.props.userInfo.parent.students[stuIndex]
+                    }
                 })()
-            }, 500)
+            }, 400)
         }
 
     }

+ 1 - 0
frontend/wechat-web/src/modules/user/UserInfo.js

@@ -248,6 +248,7 @@ class UserInfo extends Component {
 
             switchUser({
                 parent: {
+                    ...this.props.userInfo.parent,
                     student: {
                         ...this.props.userInfo.parent.student,
                         stuPhoto: userPhoto

+ 38 - 20
frontend/wechat-web/src/utils/common.js

@@ -192,6 +192,26 @@ export function getParenthesesStr(text) {
     return result
 }
 
+/**
+ * 是否以某一字符串开头
+ * @param s
+ * @returns {boolean}
+ */
+String.prototype.startWith = function (s) {
+    if (s == null || s == "" || this.length == 0 || s.length > this.length)
+        return false;
+    if (this.substr(0, s.length) == s)
+        return true;
+    else
+        return false;
+    return true;
+}
+
+/**
+ * 是否以某一字符串结尾
+ * @param s
+ * @returns {boolean}
+ */
 String.prototype.endWith = function (s) {
     if (s == null || s == "" || this.length == 0 || s.length > this.length)
         return false;
@@ -202,7 +222,10 @@ String.prototype.endWith = function (s) {
     return true;
 }
 
-
+/**
+ * 是否存在于参数字符串列表中
+ * @returns {boolean}
+ */
 String.prototype.isStrEquals = function () {
     let args = arguments
     if (isObjNull(args) || args.length == 0) {
@@ -221,6 +244,20 @@ String.prototype.isStrEquals = function () {
     }
 }
 
+/**
+ * 字符串全局替换
+ * @param reg
+ * @param s
+ * @returns {string}
+ */
+String.prototype.replaceAll = function (reg, s) {
+    if (isObjEmpty(this)) {
+        return ''
+    }
+    return this.replace(new RegExp(reg, 'gm'), s)
+}
+
+
 //yyyy-MM-dd hh:mm:ss
 Date.prototype.format = function (fmt) {
     let o = {
@@ -241,25 +278,6 @@ Date.prototype.format = function (fmt) {
 }
 
 
-String.prototype.startWith = function (s) {
-    if (s == null || s == "" || this.length == 0 || s.length > this.length)
-        return false;
-    if (this.substr(0, s.length) == s)
-        return true;
-    else
-        return false;
-    return true;
-}
-
-
-String.prototype.replaceAll = function (reg, s) {
-    if (isObjEmpty(this)) {
-        return ''
-    }
-    return this.replace(new RegExp(reg, 'gm'), s)
-}
-
-
 /**
  * Map转json
  * @param m

+ 13 - 0
frontend/wechat-web/src/utils/fetchRequest.js

@@ -1,6 +1,10 @@
 import {getStrValue, isObjNull} from "./common";
 
 export function fetchPost(url, params, header) {
+    if (window.navigator.onLine == false) {
+        return Promise.reject('网络连接失败,请检查网络连接')
+    }
+
     if (isObjNull(header)) {
         header = {}
     }
@@ -33,6 +37,10 @@ export function fetchPost(url, params, header) {
 }
 
 export function fetchGet(url, params, header) {
+    if (window.navigator.onLine == false) {
+        return Promise.reject('网络连接失败,请检查网络连接')
+    }
+
     if (isObjNull(header)) {
         header = {}
     }
@@ -67,6 +75,11 @@ export function fetchGet(url, params, header) {
     return fetchResult(request)
 }
 
+/**
+ * 处理网络请求结果
+ * @param request
+ * @returns {*}
+ */
 function fetchResult(request) {
     try {
         return request.then(response => {