Browse Source

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

guq 6 years ago
parent
commit
fad2e31c8f
49 changed files with 415 additions and 223 deletions
  1. 14 4
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/controller/WxUserController.java
  2. 2 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaApproveServiceImpl.java
  3. 1 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxOaLeaveServiceImpl.java
  4. 6 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxTaskNotifyServiceImpl.java
  5. 1 1
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxUserServiceImpl.java
  6. 2 2
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/basic/service/impl/WxVoteServiceImpl.java
  7. 9 13
      applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/wxschool/support/RemindTask.java
  8. 2 1
      applications/wechat/wechat-api/src/main/java/com/usoftchina/smartschool/wechat/api/WxPushApi.java
  9. 2 5
      applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/controller/WxPushController.java
  10. 5 1
      applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/service/impl/WxPushServiceImpl.java
  11. 1 1
      base-servers/account/account-api/src/main/java/com/usoftchina/smartschool/account/api/AccountApi.java
  12. 9 0
      base-servers/account/account-dto/src/main/java/com/usoftchina/smartschool/account/dto/AccountDTO.java
  13. 1 1
      base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/controller/AccountController.java
  14. 1 1
      base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/service/AccountService.java
  15. 5 2
      base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/service/impl/AccountServiceImpl.java
  16. 1 1
      base-servers/account/account-server/src/main/resources/application.yml
  17. 2 2
      base-servers/account/account-server/src/main/resources/mapper/AccountMapper.xml
  18. 1 1
      base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml
  19. 1 0
      base-servers/auth/auth-server/src/main/java/com/usoftchina/smartschool/auth/controller/AuthController.java
  20. 11 7
      base-servers/gateway-server/src/main/java/com/usoftchina/smartschool/gateway/config/AuthFilter.java
  21. 7 0
      base-servers/gateway-server/src/main/resources/application.yml
  22. 4 4
      frontend/pc-web/app.json
  23. 1 1
      frontend/pc-web/app/model/Score.js
  24. 3 3
      frontend/pc-web/app/model/Session.js
  25. 85 0
      frontend/pc-web/app/view/Interaction/mailbox/MailboxController.js
  26. 40 15
      frontend/pc-web/app/view/Interaction/mailbox/mailbox.js
  27. 1 4
      frontend/pc-web/app/view/auth/ReLoginController.js
  28. 48 15
      frontend/pc-web/app/view/basic/class/ClassDetail.js
  29. 1 1
      frontend/pc-web/app/view/basic/class/ClassInfo.js
  30. 25 5
      frontend/pc-web/app/view/basic/class/ListCard.js
  31. 1 1
      frontend/pc-web/app/view/basic/school/SchoolInfo.js
  32. 1 1
      frontend/pc-web/app/view/basic/staff/StaffDetail.js
  33. 18 9
      frontend/pc-web/app/view/basic/staff/StaffList.js
  34. 1 1
      frontend/pc-web/app/view/basic/student/StudentDetail.js
  35. 2 2
      frontend/pc-web/app/view/basic/student/StudentList.js
  36. 2 3
      frontend/pc-web/app/view/core/form/FormPanelController.js
  37. 3 4
      frontend/pc-web/app/view/main/Main.js
  38. 7 27
      frontend/pc-web/app/view/viewport/ViewportController.js
  39. 2 7
      frontend/pc-web/app/view/viewport/ViewportModel.js
  40. BIN
      frontend/pc-web/packages/font-school/resources/fonts/iconfont.eot
  41. 0 0
      frontend/pc-web/packages/font-school/resources/fonts/iconfont.js
  42. 3 1
      frontend/pc-web/packages/font-school/resources/fonts/iconfont.svg
  43. BIN
      frontend/pc-web/packages/font-school/resources/fonts/iconfont.ttf
  44. BIN
      frontend/pc-web/packages/font-school/resources/fonts/iconfont.woff
  45. BIN
      frontend/pc-web/packages/font-school/resources/fonts/iconfont.woff2
  46. 27 9
      frontend/pc-web/packages/font-school/sass/etc/icons.scss
  47. 2 6
      frontend/pc-web/packages/font-school/sass/src/all.scss
  48. 3 3
      frontend/pc-web/resources/json/navigation.json
  49. 51 53
      frontend/wechat-web/src/modules/home/HomePage.jsx

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

@@ -9,6 +9,8 @@ import com.usoftchina.smartschool.school.wxschool.basic.service.WxUserService;
 import com.usoftchina.smartschool.school.wxschool.utils.ObjectUtils;
 import com.usoftchina.smartschool.school.wxschool.utils.ResultBean;
 import org.apache.ibatis.annotations.Param;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.Assert;
 import org.springframework.web.bind.annotation.GetMapping;
@@ -35,6 +37,8 @@ import static com.usoftchina.smartschool.school.wxschool.utils.ResultBean.ErrorC
 @RestController
 @RequestMapping("/wxSchool/user")
 public class WxUserController {
+//	private static final Logger log = LoggerFactory.getLogger(WxUserController.class);
+
 	@Autowired
 	private WxUserService userService;
 
@@ -124,17 +128,23 @@ public class WxUserController {
 		params.put("grant_type", "authorization_code");
 		HttpRequest response= HttpRequest.get("https://api.weixin.qq.com/sns/oauth2/access_token", params, true);
 		String result=response.body();
-
+        //System.err.println("result======"+result);
 		String openid= JSON.parseObject(result).getString("openid");
+        //System.err.println("openid======="+openid);
 		String token= JSON.parseObject(result).getString("access_token");
+		//System.err.println("token====="+token);
 		HashMap<String, Object> param=new HashMap<>();
 		param.put("openid",openid);
 		param.put("access_token",token);
 		param.put("lang","zh_CN");
-		HttpRequest res= HttpRequest.get("https://api.weixin.qq.com/cgi-bin/user/info", param, true);
+		HttpRequest res= HttpRequest.get("https://api.weixin.qq.com/sns/userinfo", param, true);
+		//HttpRequest res= HttpRequest.get("https://api.weixin.qq.com/cgi-bin/user/info", param, true);
 		String body = res.body();
-		System.err.println(body);
-		return  new ModelAndView("redirect:https://school-wechat.ubtob.com/bindMenu/open/"+openid);
+		//System.err.println("res======"+res);
+		//System.err.println("body======"+body);
+		String headimgurl = JSON.parseObject(body).getString("headimgurl");
+		System.err.println("headimgurl======"+headimgurl);
+		return  new ModelAndView("redirect:https://school-wechat.ubtob.com/bindMenu/open/"+openid+"/headimgurl/"+headimgurl);
 	}
 
 	/**

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

@@ -77,9 +77,9 @@ public class WxOaApproveServiceImpl implements WxOaApproveService {
 						oaArticlesMapper.save(articles);
 					}
 				}
-				this.wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"ohqfldHKfEmZPrLthLYt3h5SEjqd0AY7UFdngTDLTFY","您有一个待审批事项",approveTitle,teacher.getTeacherName(),format.format(new Date()),approveDetails,"点击查看详情","");
+				wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"ohqfldHKfEmZPrLthLYt3h5SEjqd0AY7UFdngTDLTFY","您有一个待审批事项",approveTitle,teacher.getTeacherName(),format.format(new Date()),approveDetails,"点击查看详情","");
 			}else {
-				this.wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"ohqfldHKfEmZPrLthLYt3h5SEjqd0AY7UFdngTDLTFY","您有一个待审批事项",approveTitle,teacher.getTeacherName(),format.format(new Date()),approveDetails,"点击查看详情","");
+				wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"ohqfldHKfEmZPrLthLYt3h5SEjqd0AY7UFdngTDLTFY","您有一个待审批事项",approveTitle,teacher.getTeacherName(),format.format(new Date()),approveDetails,"点击查看详情","");
 			}
 			return i;
 		}else {

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

@@ -67,7 +67,7 @@ public class WxOaLeaveServiceImpl implements WxOaLeaveService {
 				for (Long teacherId:longs) {
 					TeacherDO teacherDO = teacherMapper.get(teacherId);
 					SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
-					this.wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(), "QC8H4hQd1Fh0wqaaE3mbAxvoBC6y-XkHctIe8Kx6gcA", "您好,您有一个来自家长的请假申请",studentMapper.get(lvProposer).getStuName(), json.getString("startDate")+"-"+json.getString("endDate"), leave.getLvDetails(),"-", "点击查看详情", "");
+					wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(), "QC8H4hQd1Fh0wqaaE3mbAxvoBC6y-XkHctIe8Kx6gcA", "您好,您有一个来自家长的请假申请",studentMapper.get(lvProposer).getStuName(), json.getString("startDate")+"-"+json.getString("endDate"), leave.getLvDetails(),"-", "点击查看详情", "");
 				}
 				return "申请成功";
 			}else {

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

@@ -45,6 +45,9 @@ public class WxTaskNotifyServiceImpl implements WxTaskNotifyService {
 	@Autowired
 	private WxParentsStuMapper wxParentsStuMapper;
 
+	@Autowired
+	private WxSubjectMapper wxSubjectMapper;
+
 	/**
 	 * 发布作业
 	 * @param taskString
@@ -61,7 +64,8 @@ public class WxTaskNotifyServiceImpl implements WxTaskNotifyService {
 		taskNotifyDO.setTaskCreator(taskCreator);
 		Long schoolId = teacherMapper.get(taskCreator).getSchoolId();
 		taskNotifyDO.setSchoolId(schoolId);
-		taskNotifyDO.setSubjectId(json.getLong("subjectId"));
+		Long subjectId = json.getLong("subjectId");
+		taskNotifyDO.setSubjectId(subjectId);
 		taskNotifyDO.setTaskFiles(json.getString("taskFiles"));
 		taskNotifyDO.setTaskStatus(json.getInteger("taskStatus"));
 		taskNotifyDO.setCreateDate(new Date());
@@ -82,7 +86,7 @@ public class WxTaskNotifyServiceImpl implements WxTaskNotifyService {
 					if (parentsStuDOS.size()>0){
 						for (ParentsStuDO ps:parentsStuDOS) {
 							ParentsDO parentsDO = parentsMapper.get(ps.getParentId());
-							this.wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),parentsDO.getOpenid(), "WwKtiHd4lso9axuavfLdpHIVbzTiopOTyh_uCsL3ZI8",taskTitle,"-",format.format(new Date()), taskContext,"-", "点击查看详情", "");
+							wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),parentsDO.getOpenid(), "WwKtiHd4lso9axuavfLdpHIVbzTiopOTyh_uCsL3ZI8",taskTitle,wxSubjectMapper.get(subjectId).getSubjectName(),format.format(new Date()), taskContext,"-", "点击查看详情", "");
 						}
 						}
 					}

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

@@ -54,7 +54,7 @@ public class WxUserServiceImpl implements WxUserService {
 	 * @return
 	 */
 	public SendSmsResponse sendCode(String userPhone) throws Exception {
-		System.err.println(userPhone);
+		//System.err.println(userPhone);
 		UserDO user = userMapper.selectUserByPhone(userPhone);
 		if (ObjectUtils.isNotEmpty(user)){
 			String vcode = SendMsgUtil.createRandomVcode(CodeConfig.getCodeNumber());

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

@@ -99,7 +99,7 @@ public class WxVoteServiceImpl implements WxVoteService {
 					TeacherDO teacherDO = teacherMapper.get(ll);
 					SchoolDO schoolDO = wxSchoolMapper.get(teacherDO.getSchoolId());
 					SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-					this.wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherDO.getOpenid(),"h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w","有一个投票单需要您的支持",schoolDO.getSchoolName(),teacherMapper.get(creator).getTeacherName(),format.format(new Date()),vote.getVoteName(),"点击查看详情","");
+					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);
@@ -112,7 +112,7 @@ public class WxVoteServiceImpl implements WxVoteService {
 						ParentsDO parentsDO = wxParentsMapper.get(ps.getParentId());
 						SchoolDO schoolDO = wxSchoolMapper.get(parentsDO.getSchoolId());
 						SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
-						this.wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), parentsDO.getOpenid(), "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "有一个投票单需要您的支持", schoolDO.getSchoolName(), teacherMapper.get(creator).getTeacherName(), format.format(new Date()), vote.getVoteName(), "点击查看详情", "");
+						wxPushApi.wxPush(schoolDO.getSchoolAppid(), schoolDO.getSchoolSecret(), parentsDO.getOpenid(), "h0BkcnTo24b2jsficMeVO0B17GvE-VzlPvF0fVXea4w", "有一个投票单需要您的支持", schoolDO.getSchoolName(), teacherMapper.get(creator).getTeacherName(), format.format(new Date()), vote.getVoteName(), "点击查看详情", "");
 					}
 				}
 			}

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

@@ -45,23 +45,19 @@ public class RemindTask extends TimerTask {
     public void run() {
         if (1==i){
             meetingDO.setMeetingStatus(2);
-            int update = meetingMapper.update(meetingDO);
-            if (update>0){
-                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
-                String meetingNotifier = meetingDO.getMeetingNotifier();
-                List<Long> longs = JSON.parseArray(meetingNotifier, Long.class);
-                List<Long> list = removeDuplicate(longs);
-                for (Long teacherId:list) {
-                    SchoolDO schoolDO = wxSchoolMapper.get(meetingDO.getSchoolId());
-                    this.wxPushApi.wxPush(schoolDO.getSchoolAppid(),schoolDO.getSchoolSecret(),teacherMapper.get(teacherId).getOpenid(), "_hX_lGEG1W1bJmW37VBaPYQoLrRrUAlNCSScezZQQWk","您好,您有一条新的会议通知", meetingDO.getMeetingName(),simpleDateFormat.format(meetingDO.getStartDate()),meetingDO.getMeetingAddress(),"-", "点击查看详情", "");
-                }
-
-            }
+            meetingMapper.update(meetingDO);
         }else if (2==i){
             meetingDO.setMeetingStatus(3);
             meetingMapper.update(meetingDO);
         }else if (3==i){
-
+        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+        String meetingNotifier = meetingDO.getMeetingNotifier();
+        List<Long> longs = JSON.parseArray(meetingNotifier, Long.class);
+        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(),"-", "点击查看详情", "");
+        }
         }else {
 
         }

+ 2 - 1
applications/wechat/wechat-api/src/main/java/com/usoftchina/smartschool/wechat/api/WxPushApi.java

@@ -2,13 +2,14 @@ package com.usoftchina.smartschool.wechat.api;
 
 
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 
 @FeignClient(name = "wechat-server")
 public interface WxPushApi {
 
-    @PostMapping("/wxpush")
+    @GetMapping("/wxpush")
     public String wxPush(@RequestParam("appId")String appId, @RequestParam("secret") String secret, @RequestParam("openid") String openid, @RequestParam("templateId")String templateId,
                          @RequestParam("title")String title, @RequestParam("keyword1")String keyword1, @RequestParam("keyword2")String keyword2, @RequestParam("keyword3")String keyword3,
                          @RequestParam("keyword4")String keyword4, @RequestParam("remark")String remark, @RequestParam("url")String url);

+ 2 - 5
applications/wechat/wechat-server/src/main/java/com/usoftchina/smartschool/wechat/controller/WxPushController.java

@@ -3,10 +3,7 @@ package com.usoftchina.smartschool.wechat.controller;
 import com.usoftchina.smartschool.wechat.service.WxPushService;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * @author: guq
@@ -18,7 +15,7 @@ public class WxPushController {
     @Autowired
     private WxPushService wxPushService;
 
-    @PostMapping("/wxpush")
+    @GetMapping("/wxpush")
     public String wxPush(String appId, String secret, String openid, String templateId, String title, String keyword1, String keyword2, String keyword3, String keyword4, String remark, String url){
         return wxPushService.wxPush(appId, secret,openid, templateId, title, keyword1, keyword2, keyword3, keyword4, remark, url);
     };

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

@@ -4,12 +4,15 @@ import com.alibaba.fastjson.JSON;
 import com.github.kevinsawicki.http.HttpRequest;
 import com.usoftchina.smartschool.wechat.service.WxPushService;
 import com.usoftchina.smartschool.wechat.wxUtils.ObjectUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
 import java.util.HashMap;
 
 @Service
 public class WxPushServiceImpl implements WxPushService{
+
     /**
      * 推送消息
      * @param
@@ -35,7 +38,7 @@ public class WxPushServiceImpl implements WxPushService{
                         .header("Content-Type", "application/json")
                         .send(json.getBytes());
                 String result= hRequest.body();
-                //System.err.println(result);
+                //System.err.println("WxPushResult======="+result);
 
 			/*if(JSON.parseObject(result).getInteger("errcode")==0&&JSON.parseObject(result).getString("errmsg").equals("ok")){
 				return "推送成功!";
@@ -56,6 +59,7 @@ public class WxPushServiceImpl implements WxPushService{
             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;
         }
 }

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

@@ -16,6 +16,6 @@ public interface AccountApi {
     @GetMapping(value = "/account/read", params = "mobile")
     Result<AccountDTO> findByMobile(@RequestParam("mobile") String mobile);
 
-    @GetMapping(value = "/pwd/check")
+    @GetMapping(value = "/account/pwd/check")
     Result<AccountDTO> checkPwd(@RequestParam(value = "username") String username, @RequestParam(value = "password") String password);
 }

+ 9 - 0
base-servers/account/account-dto/src/main/java/com/usoftchina/smartschool/account/dto/AccountDTO.java

@@ -15,6 +15,7 @@ public class AccountDTO implements Serializable {
     private String user_code;
     private String salt;
     private List<RoleDTO> roleMaps;
+    private Long school_id;
 
     public Long getId() {
         return id;
@@ -55,4 +56,12 @@ public class AccountDTO implements Serializable {
     public void setRoleMaps(List<RoleDTO> roleMaps) {
         this.roleMaps = roleMaps;
     }
+
+    public Long getSchool_id() {
+        return school_id;
+    }
+
+    public void setSchool_id(Long school_id) {
+        this.school_id = school_id;
+    }
 }

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

@@ -36,7 +36,7 @@ public class AccountController {
             return Result.error(ExceptionCode.USER_NAME_EXIST);
         }
         Account account = BeanMapper.map(accountRegDTO, Account.class);
-        account.setSalt(accountDTO.getUser_phone());
+        account.setSalt(accountRegDTO.getUser_phone());
         account.setUser_pass(accountService.getEncryptedPassword(accountRegDTO.getUser_pass(), account.getSalt()));
         //保存账户
         accountService.save(account);

+ 1 - 1
base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/service/AccountService.java

@@ -9,7 +9,7 @@ public interface AccountService {
      * 注册
      * @return
      */
-    AccountDTO save(Account account);
+    boolean save(Account account);
 
     /**
      * 通过手机号查找用户

+ 5 - 2
base-servers/account/account-server/src/main/java/com/usoftchina/smartschool/account/service/impl/AccountServiceImpl.java

@@ -26,13 +26,16 @@ public class AccountServiceImpl implements AccountService {
     private AccountRoleMapper accountRoleMapper;
 
     @Override
-    public AccountDTO save(Account account) {
-        return null;
+    public boolean save(Account account) {
+        return accountMapper.insertSelective(account) > 0;
     }
 
     @Override
     public AccountDTO findByMobile(String mobile) {
         Account account = accountMapper.selectByMobile(mobile);
+        if (account == null){
+            return null;
+        }
         AccountDTO accountDTO = BeanMapper.map(account, AccountDTO.class);
         List<RoleDTO> roleDTOList = accountRoleMapper.selectByAccountId(account.getId());
         accountDTO.setRoleMaps(roleDTOList);

+ 1 - 1
base-servers/account/account-server/src/main/resources/application.yml

@@ -7,7 +7,7 @@ spring:
       password: select111***
   datasource:
     driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://10.10.100.166:3306/school?characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
+    url: jdbc:mysql://10.10.100.166:3306/smart_campus?characterEncoding=utf-8&useSSL=false&allowMultiQueries=true
     username: root
     password: select111***
     hikari:

+ 2 - 2
base-servers/account/account-server/src/main/resources/mapper/AccountMapper.xml

@@ -4,8 +4,8 @@
   <select id="selectByPrimaryKey" resultType="com.usoftchina.smartschool.account.po.Account">
     SELECT * FROM SYS_USER WHERE USER_ID = #{id}
   </select>
-  <select id="selectByMobile" resultType="com.usoftchina.smartschool.account.dto.AccountDTO">
-    select users.user_id id, users.user_phone, users.user_code
+  <select id="selectByMobile" resultType="com.usoftchina.smartschool.account.po.Account">
+    select users.user_id id, users.user_pass, users.user_phone, users.user_code, salt
     from sys_user users
     where user_phone = #{mobile};
   </select>

+ 1 - 1
base-servers/account/account-server/src/main/resources/mapper/AccountRoleMapper.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 <mapper namespace="com.usoftchina.smartschool.account.mapper.AccountRoleMapper">
-  <select id="selectByAccountId" parameterType="int" resultType="com.usoftchina.smartschool.account.dto.RoleDTO">
+  <select id="selectByAccountId" parameterType="java.lang.Long" resultType="com.usoftchina.smartschool.account.dto.RoleDTO">
     select sys_role.role_id,sys_role.role_name,sys_role.role_sign,sys_role.create_date,sys_role.role_remarks,sys_teacher.school_id
     from sys_user_role
     left join sys_teacher on sys_teacher.user_id = sys_user_role.user_id

+ 1 - 0
base-servers/auth/auth-server/src/main/java/com/usoftchina/smartschool/auth/controller/AuthController.java

@@ -48,6 +48,7 @@ public class AuthController {
         if (result.isSuccess()){
             AccountDTO accountDTO = result.getData();
             Long school_id = accountDTO.getRoleMaps().stream().filter(roleDTO -> "教师".equals(roleDTO.getRole_name())).findFirst().get().getSchool_id();
+            accountDTO.setSchool_id(school_id);
             JwtInfo jwtInfo = new JwtInfo("school", school_id, accountDTO.getId(), accountDTO.getUser_phone());
             JwtToken jwtToken = JwtHelper.generateToken(jwtInfo, privateKeyPath, expire);
             TokenDTO tokenDTO = BeanMapper.map(jwtToken, TokenDTO.class);

+ 11 - 7
base-servers/gateway-server/src/main/java/com/usoftchina/smartschool/gateway/config/AuthFilter.java

@@ -7,6 +7,7 @@ import com.usoftchina.smartschool.auth.jwt.JwtInfo;
 import com.usoftchina.smartschool.context.BaseContextHolder;
 import com.usoftchina.smartschool.exception.BizException;
 import com.usoftchina.smartschool.exception.ExceptionCode;
+import com.usoftchina.smartschool.utils.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -38,9 +39,10 @@ public class AuthFilter implements GlobalFilter, Ordered {
     @Override
     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
         try {
-                // 鉴别身份信息
-             /*   String token = getAuthToken(exchange.getRequest());
-                JwtInfo jwt = null;
+            // 鉴别身份信息
+            String token = getAuthToken(exchange.getRequest());
+            JwtInfo jwt = null;
+            if (token != null) {
                 try {
                     jwt = JwtHelper.getInfoFromToken(token, authConfig.getPublicKey());
                 } catch (BizException e) {
@@ -49,11 +51,13 @@ public class AuthFilter implements GlobalFilter, Ordered {
                 BaseContextHolder.setAppId(jwt.getAppId());
                 BaseContextHolder.setUserId(jwt.getUserId());
                 BaseContextHolder.setUserName(jwt.getUserName());
+                BaseContextHolder.setSchoolId(jwt.getSchool_id());
                 BaseContextHolder.setToken(token);
                 AccountDTO accountDTO = accountApi.findByMobile(jwt.getUserName()).getData();
                 if (null == accountDTO) {
                     throw new BizException(ExceptionCode.USER_NOT_EXIST);
-                }*/
+                }
+            }
             return chain.filter(exchange);
         } finally {
             BaseContextHolder.remove();
@@ -62,10 +66,10 @@ public class AuthFilter implements GlobalFilter, Ordered {
 
     private String getAuthToken(ServerHttpRequest request) {
         List<String> headers = request.getHeaders().get(authConfig.getAuthHeader());
-        if (headers.isEmpty()) {
-            throw new BizException(ExceptionCode.JWT_ILLEGAL_ARGUMENT);
+        if (!CollectionUtils.isEmpty(headers)) {
+            return headers.get(0).trim();
         }
-        return headers.get(0).trim();
+        return null;
     }
 
     @Override

+ 7 - 0
base-servers/gateway-server/src/main/resources/application.yml

@@ -68,6 +68,12 @@ spring:
         - Path=/api/file/**
         filters:
         - RewritePath=/api/file/(?<segment>.*), /$\{segment}
+      - id: AUTH-SERVER
+        uri: lb://AUTH-SERVER
+        predicates:
+        - Path=/api/auth/**
+        filters:
+        - RewritePath=/api/auth/(?<segment>.*), /$\{segment}
   redis:
     host: 10.10.100.166
     port: 6379
@@ -140,3 +146,4 @@ auth:
   expire: 18000
   ignores:
     - /api/auth/authorize
+    - /api/account/account/register

+ 4 - 4
frontend/pc-web/app.json

@@ -298,8 +298,8 @@
             "type": "yui"
         },
         "server": {
-            "basePath": "https://school-api.ubtob.com/api/school",
-            "urlPattern": "^\/"
+            "basePath": "https://school-api.ubtob.com",
+            "urlPattern": "^\/api\/"
         }
     },
 
@@ -321,8 +321,8 @@
             "delay": 250
         },
         "server": {
-            "basePath": "https://school-api.ubtob.com/api/school",
-            "urlPattern": "^\/"
+            "basePath": "https://school-api.ubtob.com",
+            "urlPattern": "^\/api\/"
         }
     },
 

+ 1 - 1
frontend/pc-web/app/model/Score.js

@@ -1,5 +1,5 @@
 /**
- * 年级
+ * 成绩
  */
 Ext.define('school.model.Score', {
     extend: 'school.model.Base',

+ 3 - 3
frontend/pc-web/app/model/Session.js

@@ -13,7 +13,8 @@ Ext.define('school.model.Session', {
         login: function(username, password) {
             return new Ext.Promise(function (resolve, reject) {
 				Ext.Ajax.request({
-                    url: '/api/oper_auth/authorize',
+                    // url: 'http://10.1.80.23:9520/api/auth/authorize',
+                    url: '/api/auth/authorize',
                     params: {
                         username: username,
                         password: password
@@ -23,8 +24,7 @@ Ext.define('school.model.Session', {
                         var res = Ext.decode(response.responseText);
                         if (res.success) {
                             var session = school.model.Session.loadData(res.data.token), 
-                                account = res.data.account, companyId = res.data.companyId;
-                            account.companyId = companyId;
+                                account = res.data.account;
                             session.set('account', account);
                             // 服务端与本地存在时间差
                             session.set('span', session.get('timestamp') - new Date().getTime());

+ 85 - 0
frontend/pc-web/app/view/Interaction/mailbox/MailboxController.js

@@ -0,0 +1,85 @@
+Ext.define('school.view.Interaction.mailbox.MailboxController', {
+    extend: 'Ext.app.ViewController',
+    alias: 'controller.interaction-mailbox-mailbox',
+    // 回复
+    ReplyClick: function () {
+        Ext.MessageBox.show({
+            title: '回复处理',
+            msg: '回复对象:'+rec.data.code,
+            width:500,
+            height:600,
+            buttons: Ext.MessageBox.OKCANCEL,
+            multiline: true,
+            scope: this,
+            fn: this.showResultText,//处理输入的文字
+        });
+    },
+    // 导出
+    exportClick: function () {
+        Ext.Msg.alert('导出', '我是导出');
+    },
+    //删除
+    deleteClick: function (o) {
+        let gird = o.ownerCt.ownerCt;
+        let data = gird.getSelectionModel().getSelection();
+        if(data.length == 0){
+            Ext.Msg.alert("提示","您最少要选择一条数据");
+        }else{
+            //1.先得到ID的数据(name)
+            let st = gird.getStore();
+            let ids = [];
+            Ext.Array.each(data,function(record){
+                ids.push(record.get('name'));
+            })
+            Ext.MessageBox.confirm('删除邮件','你确定要删除吗?',function(btn){
+                if (btn == 'yes') {
+                    //2.后台操作(delet)
+                    // Ext.Ajax.request({
+                    //     url:'/extjs/extjs!deleteData.action',
+                    //     params:{ids:ids.join(",")},
+                    //     method:'POST',
+                    //     timeout:2000,
+                    //     success:function(response,opts){
+                    //         Ext.Array.each(data,function(record){
+                    //             st.remove(record);
+                    //         })
+                    //     }
+                    // })
+                    //3.前端操作DOM进行删除(ExtJs)
+                    Ext.Array.each(data,function(record){
+                        st.remove(record);
+                    })
+                }
+            });
+        }
+    },
+    // 批量回复
+    batchClick: function (o) {
+        let gird = o.ownerCt.ownerCt;
+        let items = gird.getStore().data.items;//所有的内容
+        let batch = [];
+        for (let i = 0; i < items.length; i++) {
+            if (items[i].data.Handle) {
+                batch.push(items[i].data.code)
+                Ext.MessageBox.show({
+                    title: '回复处理',
+                    msg: '回复对象:'+batch.join(','),
+                    width:500,
+                    height:600,
+                    buttons: Ext.MessageBox.OKCANCEL,
+                    multiline: true,
+                    scope: this,
+                    fn: this.showResultText,//回调函数
+                });
+            }
+        }
+    },
+    // 回调函数
+    showResultText: function (btn,text) {
+        if (btn == 'ok') {
+            alert('点击的按钮是:'+btn+'内容是:'+text);
+        } else {
+            return
+        }
+    },
+});

+ 40 - 15
frontend/pc-web/app/view/Interaction/mailbox/mailbox.js

@@ -1,11 +1,13 @@
 /**
  * 校长信箱
  */
-Ext.define('school.view.interaction.mailbox.mailbox', {
-    // extend: 'school.view.core.base.BasePanel',
+Ext.define('school.view.interaction.mailbox.Mailbox', {
     extend: 'Ext.grid.Panel',
     xtype: 'interaction-mailbox-mailbox',
     // dataUrl: '/api/interact/timetable/list',
+
+    controller: 'interaction-mailbox-mailbox',
+
     //字段属性
     _title: '校长信箱',
     _idField: 'id',
@@ -28,9 +30,9 @@ Ext.define('school.view.interaction.mailbox.mailbox', {
             store: Ext.create('Ext.data.Store', {
                 fields:['code', 'content', 'Enclosure', 'time', 'name', 'Handle'],
                 data:[
-                    {code:"U001", content:"孩子作业太少了,回家每天玩王者荣耀,希望学校老师布置作业多一点,让我孩子忙起来", Enclosure:'无', time:"01/10/2004 16:00", name:'张三', Handle:'true'},
-                    {code:"U001", content:"学校课本费收入明细未公开,希望课本费明细能够向我们家长公开", Enclosure:'有', time:"01/10/2004 16:00", name:'张三', Handle:'false'},
-                    {code:"U001", content:"觉得十分激烈的交锋了", Enclosure:'无', time:"01/10/2004 16:00", name:'张三', Handle:'true'},
+                    {code:"U001", content:"孩子作业太少了,回家每天玩王者荣耀,希望学校老师布置作业多一点,让我孩子忙起来", Enclosure:'无', time:"01/10/2004 16:00", name:'张三', Handle:true},
+                    {code:"U002", content:"学校课本费收入明细未公开,希望课本费明细能够向我们家长公开", Enclosure:'有', time:"01/10/2004 16:00", name:'张三', Handle:false},
+                    {code:"U003", content:"觉得十分激烈的交锋了", Enclosure:'无', time:"01/10/2004 16:00", name:'张三', Handle:true},
                 ]
             }),
             columns : [
@@ -43,42 +45,65 @@ Ext.define('school.view.interaction.mailbox.mailbox', {
                     renderer: function(val,meta,rec) {
                         // 为元素生成唯一id
                         var id = Ext.id();
-                        if (rec.data.Handle == 'false') {
+                        if (!rec.data.Handle) {
                             return Ext.String.format('<div>已回复</div>');
-                        } else if(rec.data.Handle == 'true'){
+                        } else {
                             Ext.defer(function() {
                                 Ext.widget('button', {
                                     renderTo: id,
                                     text: '回复',
-                                    handler: function() {//点击回复事件
+                                    // handler: 'ReplyClick'//点击回复事件
+                                    handler: function () {//点击回复事件
                                         Ext.MessageBox.show({
                                             title: '回复处理',
                                             msg: '回复对象:'+rec.data.code,
                                             width:500,
                                             height:600,
-                                            bbar: Ext.MessageBox.OKCANCEL,
+                                            buttons: Ext.MessageBox.OKCANCEL,
                                             multiline: true,
                                             scope: this,
-                                            fn: this.showResultText,
+                                            fn: function (btn,text) {//回调函数
+                                                if (btn == 'ok') {
+                                                    alert('点击的按钮是:'+btn+'内容是:'+text);
+                                                } else {
+                                                    return
+                                                }
+                                            },
                                         });
-                                    }
+                                    } 
                                 });
                             }, 50);
                             return Ext.String.format('<div id="{0}"></div>', id);
                         }
                     }
-                }
+                },
             ],
+            listeners: {// 每一行添加点击事件
+                'rowclick': function(grid, rowIndex, e) {
+                    let data = rowIndex.data//获取点击行的数据
+                    // console.log(data);
+                },
+            },
             tbar: ['->',{
                 xtype: 'button',
-                text: '导出'
+                text: '导出',
+                handler: 'exportClick'
             }, {
                 xtype: 'button',
-                text: '删除'
+                text: '删除',
+                handler: 'deleteClick'
             }, {
                 xtype: 'button',
-                text: '批量回复'
+                text: '批量回复',
+                handler: 'batchClick'
             }],
+            multiSelect:true,//运行多选,默认是单选
+            dockedItems :[{//分页组件
+				xtype:'pagingtoolbar',//分页组件 
+				store:Ext.data.StoreManager.lookup('s_user'),//分页组件也需要获取到数据
+				dock:'bottom',//定位到底部
+				displayInfo:true//是否展示信息
+			}],
         });
         this.callParent();
     },

+ 1 - 4
frontend/pc-web/app/view/auth/ReLoginController.js

@@ -25,7 +25,6 @@ Ext.define('school.view.auth.ReLoginController', {
         var me = this,
             view = me.getView(),
             viewModel = me.getViewModel(),
-            companyId = school.util.BaseUtil.getCurrentUser().companyId,
             form = me.lookup('reloginform'),
             values = form.getValues();
 
@@ -35,13 +34,11 @@ Ext.define('school.view.auth.ReLoginController', {
 
         view.mask('请稍等...');
 
-        school.model.Session.login(values.username, values.password, companyId)
+        school.model.Session.login(values.username, values.password)
         .then(function (session) {
             view.isMasked() && view.unmask();
             viewModel.set('session', session);
 
-            session.get('account').companyId = companyId;
-            
             me.successReLogin();
             me.fireEvent('login', session);
             return session;

+ 48 - 15
frontend/pc-web/app/view/basic/class/ClassDetail.js

@@ -11,7 +11,7 @@ Ext.define('school.view.basic.class.ClassDetail', {
     _auditmanField: 'pu_auditman',
     _auditdateField: 'pu_auditdate',
     _relationColumn: 'pd_puid',
-    _readUrl: '/api/purchase/purchase/read',
+    _readUrl: '/api/school/class/read',
     _saveUrl: '/api/purchase/purchase/save',
     _auditUrl: '/api/purchase/purchase/audit',
     _unAuditUrl: '/api/purchase/purchase/unAudit',
@@ -22,12 +22,12 @@ Ext.define('school.view.basic.class.ClassDetail', {
         Ext.apply(this, {
             defaultItems: [{
                 xtype: 'hidden',
-                name: 'currentDetail.id',
+                name: 'clazz_id',
                 fieldLabel: 'id',
                 group: '班级信息',
             }, {
                 xtype: "textfield",
-                name: "currentDetail.name",
+                name: "clazz_name",
                 fieldLabel: "班级名称",
                 columnWidth: 0.5,
                 group: '班级信息',
@@ -43,24 +43,24 @@ Ext.define('school.view.basic.class.ClassDetail', {
                 group: '班级信息',
             }, {
                 xtype: "textfield",
-                name: "address",
+                name: "clazz_adress",
                 fieldLabel: "班级地址",
                 columnWidth: 1,
                 group: '班级信息',
             }, {
                 xtype: "textfield",
-                name: 'status',
+                name: 'clazz_status',
                 fieldLabel: "状态",
                 columnWidth: 0.5,
                 group: '班级信息',
             }, {
                 xtype: "textfield",
-                name: 'remark',
+                name: 'clazz_remarks',
                 fieldLabel: '备注',
                 columnWidth: 0.5,
                 group: '班级信息',
             }, {
-                name: "detailGridField",
+                name: "detail0",
                 xtype: "detailGridField",
                 detnoColumn: 'sd_detno',
                 storeModel: 'school.model.basic.Student',
@@ -70,28 +70,61 @@ Ext.define('school.view.basic.class.ClassDetail', {
                 group: '学生信息',
                 columns: [{
                     text: 'id',
-                    dataIndex: 'student_id',
+                    dataIndex: 'stu_id',
                     hidden: true
                 }, {
-                    text: '号',
-                    dataIndex: 'student_number'
+                    text: '号',
+                    dataIndex: 'stu_number'
                 }, {
                     text: '姓名',
-                    dataIndex: 'student_name'
+                    dataIndex: 'stu_name'
                 }, {
                     text: '性别',
-                    dataIndex: 'student_gender'
+                    dataIndex: 'stu_sex'
                 }, {
                     text: '出生日期',
-                    dataIndex: 'student_birth',
+                    dataIndex: 'stu_birthday',
                     xtype: 'datecolumn',
                     format: 'Y-m-d'
                 }, {
                     text: '年龄',
-                    dataIndex: 'student_age'
+                    dataIndex: 'stu_age'
                 }, {
                     text: '家庭住址',
-                    dataIndex: 'student_address'
+                    dataIndex: 'stu_address'
+                }, {
+                    text: '入学时间',
+                    dataIndex: 'stu_enroll_date',
+                    xtype: 'datecolumn',
+                    format: 'Y-m-d'
+                }, {
+                    text: '毕业时间',
+                    dataIndex: 'stu_graduate_date',
+                    xtype: 'datecolumn',
+                    format: 'Y-m-d'
+                }, {
+                    text: '备注',
+                    dataIndex: 'stu_remarks'
+                }]
+            }, {
+                name: "detail1",
+                xtype: "detailGridField",
+                detnoColumn: 'sd_detno',
+                storeModel: 'school.model.basic.Student',
+                deleteDetailUrl: '/api/sale/sale/deleteDetail',
+                allowEmpty: true,
+                showCount: false,
+                group: '任课教师信息',
+                columns: [{
+                    text: 'id',
+                    dataIndex: 'teacher_id',
+                    hidden: true
+                }, {
+                    text: '姓名',
+                    dataIndex: 'teacher'
+                }, {
+                    text: '学科',
+                    dataIndex: 'subject'
                 }]
             }]
         });

+ 1 - 1
frontend/pc-web/app/view/basic/class/ClassInfo.js

@@ -50,7 +50,7 @@ Ext.define('school.view.basic.class.ClassInfo', {
             xtype: 'actioncolumn',
             width: 30,
             items: [{
-                iconCls: 'action-icon x-hidden x-ss ss-deleta',
+                iconCls: 'action-icon x-hidden x-ss ss-delete',
                 tooltip: '删除',
                 handler: 'onTreeDeleteClick'
             }]

+ 25 - 5
frontend/pc-web/app/view/basic/class/ListCard.js

@@ -54,11 +54,31 @@ Ext.define('school.view.basic.class.ListCard', {
             currentlist.removeAll();
             listCard.setVisible(false);
             classDetail.setVisible(true);
-            viewModel.set('currentDetail', {
-                id: node.data.id,
-                name: node.data.text,
-                grade: node.parentNode.data.text,
-            })
+            classDetail.setLoading(true);
+            school.util.BaseUtil.request({
+                url: '/api/school/class/read/' + node.data._id
+            }).then(function(res) {
+                classDetail.setLoading(false);
+                if(res.success) {
+                    let d = res.data;
+                    let o = {
+                        main: d.main
+                    };
+                    if(d.hasOwnProperty('items')) {
+                        o.detail0 = d.items;
+                    }else {
+                        let idx = 1;
+                        while(d.hasOwnProperty('items' + idx)) {
+                            o['detail' + (idx - 1)] = d['items' + idx];
+                            idx++;
+                        }
+                    }
+                    classDetail.initFormData(o);
+                    classDetail.fireEvent('load', classDetail, o);
+                }
+            }).catch(function(e) {
+                school.util.BaseUtil.showErrorToast('请求数据失败: ' + e.message);
+            });
         }else {
             node.expand();
             listCard.setVisible(true);

+ 1 - 1
frontend/pc-web/app/view/basic/school/SchoolInfo.js

@@ -10,7 +10,7 @@ Ext.define('school.view.basic.school.SchoolInfo', {
     // viewModel: 'purchase-purchase-formpanel',
 
     // readUrl: 'http://10.1.80.35:9560/school/read',
-    readUrl: '/school/read',
+    readUrl: '/api/school/school/read',
 
     layout: 'column',
     autoScroll: true,

+ 1 - 1
frontend/pc-web/app/view/basic/staff/StaffDetail.js

@@ -14,7 +14,7 @@ Ext.define('school.view.basic.staff.StaffDetail', {
     _auditmanField: null,
     _auditdateField: null,
     // _readUrl: 'http://10.1.80.35:8560/api/sale/saledown/read',
-    _readUrl: '/api/sale/saledown/read',
+    _readUrl: '/api/school/teacher/read',
     // _saveUrl: 'http://10.1.80.35:8560/api/sale/saledown/update',
     _saveUrl: '/api/sale/saledown/update',
     // _toSaleUrl: 'http://10.1.80.35:8560/api/sale/saledown/toSale',

+ 18 - 9
frontend/pc-web/app/view/basic/staff/StaffList.js

@@ -5,7 +5,7 @@ Ext.define('school.view.basic.staff.StaffList', {
     extend: 'school.view.core.base.BasePanel',
     xtype: 'basic-staff-stafflist',
 
-    dataUrl: '/api/basic/staff/list',
+    dataUrl: '/api/school/teacher/list',
     initComponent: function() {
         var me = this;
         Ext.apply(this, {
@@ -68,8 +68,12 @@ Ext.define('school.view.basic.staff.StaffList', {
                     text: '新增'
                 }],
                 columns : [{
+                    text: 'ID',
+                    dataIndex: 'teacher_id',
+                    hidden: true
+                }, {
                     text: '工号',
-                    dataIndex: 'code',
+                    dataIndex: 'teacher_number',
                     width: 150
                 }, {
                     text: '绑定手机号',
@@ -77,23 +81,28 @@ Ext.define('school.view.basic.staff.StaffList', {
                     width: 120
                 }, {
                     text: '姓名',
-                    dataIndex: 'name',
+                    dataIndex: 'teacher_name',
                     width: 120
                 }, {
-                    text: '职位',
-                    dataIndex: 'job',
-                    width: 120
+                    text: '性别',
+                    dataIndex: 'teacher_sex',
+                    renderer: function(v, m, r) {
+                        return v == 1 ? '男' : (v == 0 ? '女' : '未知');
+                    }
+                }, {
+                    text: '工龄',
+                    dataIndex: 'teacher_working_age'
                 }, {
                     text: '是否开通',
                     dataIndex: 'open'
                 }, {
                     text: '状态',
-                    dataIndex: 'status'
+                    dataIndex: 'teacher_status'
                 }],
                 listeners: {
                     itemclick: function(view, record, item, index, e, eOpts) {
-                        school.util.BaseUtil.openTab('basic-staff-staffdetail', '教职工信息', 'basic-staff-staffdetail'+record.get('id'), {
-                            initId: record.get('id')
+                        school.util.BaseUtil.openTab('basic-staff-staffdetail', '教职工信息', 'basic-staff-staffdetail'+record.get('teacher_id'), {
+                            initId: record.get('teacher_id')
                         }); 
                     }
                 }

+ 1 - 1
frontend/pc-web/app/view/basic/student/StudentDetail.js

@@ -14,7 +14,7 @@ Ext.define('school.view.basic.student.StudentDetail', {
     _auditmanField: null,
     _auditdateField: null,
     // _readUrl: 'http://10.1.80.35:8560/api/sale/saledown/read',
-    _readUrl: 'http://10.1.80.35:9560/student/read',
+    _readUrl: '/api/school/student/read',
     // _saveUrl: 'http://10.1.80.35:8560/api/sale/saledown/update',
     _saveUrl: '/api/sale/saledown/update',
     // _toSaleUrl: 'http://10.1.80.35:8560/api/sale/saledown/toSale',

+ 2 - 2
frontend/pc-web/app/view/basic/student/StudentList.js

@@ -5,7 +5,7 @@ Ext.define('school.view.basic.student.StudentList', {
     extend: 'school.view.core.base.BasePanel',
     xtype: 'basic-student-studentlist',
 
-    dataUrl: 'http://10.1.80.35:9560/student/list',
+    dataUrl: '/api/school/student/list',
     initComponent: function() {
         var me = this;
         Ext.apply(this, {
@@ -84,7 +84,7 @@ Ext.define('school.view.basic.student.StudentList', {
                     width: 150
                 }, {
                     text: '学生姓名',
-                    dataIndex: 'stu_number',
+                    dataIndex: 'stu_name',
                     width: 120
                 }, {
                     text: '性别',

+ 2 - 3
frontend/pc-web/app/view/core/form/FormPanelController.js

@@ -458,9 +458,8 @@ Ext.define('school.view.core.form.FormPanelController', {
                 reportName = data.reportName,
                 title = data.title,
                 userName = data.userName,
-                whereCondition = data.whereCondition,
-                companyId = school.util.BaseUtil.getCurrentUser().companyId;
-                var url = printurl + '?' + 'reportName=' + reportName + '&' + 'companyId=' + companyId + '&whereCondition=' + whereCondition + (userName ? '&userName=' + userName : "");
+                whereCondition = data.whereCondition;
+                var url = printurl + '?' + 'reportName=' + reportName + '&whereCondition=' + whereCondition + (userName ? '&userName=' + userName : "");
     
                 window.open(url);
             }).catch(function(res) {

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

@@ -47,10 +47,9 @@ Ext.define('school.view.main.Main', {
                     reference: 'mainprofile',
                     cls:'x-main-master',
                     ui: 'header',
-                    text: '金色阳光希望小学'
-                    // bind: {
-                    //     text: '{company.name}'
-                    // }
+                    bind: {
+                        text: '{schoolName || "学校"}'
+                    }
                 },
                 '->',
                 {

+ 7 - 27
frontend/pc-web/app/view/viewport/ViewportController.js

@@ -38,11 +38,17 @@ Ext.define('school.view.viewport.ViewportController', {
     },
 
     showAuth: function() {
+        this.showMain();return;
+        var me = this;
+        this.showView('login');
+    },
+
+    showMain: function() {
         var me = this;
         //读取学校
         school.util.BaseUtil.request({
             // url:'http://10.1.80.35:9560/school/read/1'
-            url:'/school/read/1'
+            url:'/api/school/school/read/1'
         })
         .then(function(res) {
             if(res.success) {
@@ -62,32 +68,6 @@ Ext.define('school.view.viewport.ViewportController', {
         .catch(function(e) {
             console.error(e);
         });
-        this.showView('main');
-    },
-
-    showMain: function() {
-        var me = this;
-        //读取学校
-        school.util.BaseUtil.request({
-            // url:'http://10.1.80.35:9560/school/read/1'
-            url:'/api/school/read/1'
-        })
-        .then(function(res) {
-            if(res.success) {
-                debugger
-                // var list = res.data.list;
-                // if(list.length>0){
-                //     var d = {};
-                //     Ext.each(list, function(item, index){
-                //         d[item.code] = item.data;
-                //     });
-                //     me.getViewModel().setData(d)
-                // }
-            }
-        })
-        .catch(function(e) {
-            console.error(e);
-        });
         me.showView('main');
     },
 

+ 2 - 7
frontend/pc-web/app/view/viewport/ViewportModel.js

@@ -7,12 +7,6 @@ Ext.define('school.view.viewport.ViewportModel', {
     },
 
     formulas: {
-        company: function (get) {
-            var account = get('account');
-            return account && account.companies.find(function (c) {
-                return c.id == account.companyId;
-            });
-        },
         avatarUrl: function (get) {
             var account = get('account');
             return (account && account.avatarUrl) || 'resources/images/default/user-icon.png'
@@ -41,7 +35,7 @@ Ext.define('school.view.viewport.ViewportModel', {
             proxy: {
                 type: 'ajax',
                 // url: 'http://10.1.80.35:9520/grade/read/1',
-                url: '/grade/read/1',
+                url: '/api/school/grade/read/1',
                 reader: {
                     transform: {
                         fn: function(data) {
@@ -50,6 +44,7 @@ Ext.define('school.view.viewport.ViewportModel', {
                                 s.id = 'school-' + s.id;
                                 let classes = s.children;
                                 classes.map(function(c) {
+                                    c._id = c.id;
                                     c.id = 'class-' + c.id;
                                     return c;
                                 });

BIN
frontend/pc-web/packages/font-school/resources/fonts/iconfont.eot


File diff suppressed because it is too large
+ 0 - 0
frontend/pc-web/packages/font-school/resources/fonts/iconfont.js


File diff suppressed because it is too large
+ 3 - 1
frontend/pc-web/packages/font-school/resources/fonts/iconfont.svg


BIN
frontend/pc-web/packages/font-school/resources/fonts/iconfont.ttf


BIN
frontend/pc-web/packages/font-school/resources/fonts/iconfont.woff


BIN
frontend/pc-web/packages/font-school/resources/fonts/iconfont.woff2


+ 27 - 9
frontend/pc-web/packages/font-school/sass/etc/icons.scss

@@ -1,10 +1,28 @@
+.font-school {
+  font-family: "font-school" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.ss-nav-interaction:before {
+  content: "\e905";
+}
+
+.ss-nav-setting:before {
+  content: "\e904";
+}
+
+.ss-nav-info:before {
+  content: "\e903";
+}
+
+.ss-delete:before {
+  content: "\e902";
+}
+
+.ss-add:before {
+  content: "\e901";
+}
 
-.ss-deleta:before {
-    content: "\e902";
-  }
-  
-  .ss-add:before {
-    content: "\e901";
-  }
-  
-  

File diff suppressed because it is too large
+ 2 - 6
frontend/pc-web/packages/font-school/sass/src/all.scss


+ 3 - 3
frontend/pc-web/resources/json/navigation.json

@@ -1,6 +1,6 @@
 [{
     "text": "基础资料",
-    "iconCls": "x-sa sa-accountCenter",
+    "iconCls": "x-ss ss-nav-info",
     "items": [{
         "id": "basic-school-schoolinfo",
         "text": "学校信息",
@@ -20,7 +20,7 @@
     }]
 }, {
     "text": "系统设置",
-    "iconCls": "x-sa sa-setting",
+    "iconCls": "x-ss ss-nav-setting",
     "items": [{
         "id": "setting-access-roleaccess",
         "text": "角色授权",
@@ -36,7 +36,7 @@
     }]
 }, {
     "text": "家校互动",
-    "iconCls": "x-sa sa-setting",
+    "iconCls": "x-ss ss-nav-interaction",
     "items": [{
         "id": "interaction-notice-schoolnotice", 
         "text": "学校通知",

+ 51 - 53
frontend/wechat-web/src/modules/home/HomePage.jsx

@@ -90,38 +90,22 @@ class HomePage extends Component {
         const {userInfo} = this.props
         let {studentIndex} = this.state
 
-        const teacherMenu = this.getTeacherMenu()
-        const parentMenu = this.getParentMenu()
-        const videoLayout = this.getVideoLayout()
-        const topMenus = this.getTopMenus()
-
         const studentList = []
-
         if (!isObjEmpty(userInfo.parent) && !isObjEmpty(userInfo.parent.students) && userInfo.userRole === 1) {
             userInfo.parent.students.forEach((item, index) => {
                 studentList.push(<StuItem isSelect={studentIndex === index} stuObj={item}
                                           stuIndex={index} onStuSwitch={this.onStuSwitch}/>)
             })
         }
-        const albumItems = []
 
-        let schoolName = '', userAvatar = '', userName = '', albums = ''
+        const albumItems = []
+        let albums = ''
         if (userInfo.userRole === 1) {
-            if (userInfo.parent) {
-                schoolName = userInfo.parent.schoolName
-                userAvatar = userInfo.parent.parentsPhoto
-                userName = userInfo.parent.parentsName
-
-                if (!isObjEmpty(userInfo.parent.student)) {
-                    albums = userInfo.parent.student.picAlbum
-                }
+            if (!isObjEmpty(userInfo.parent, userInfo.parent.student)) {
+                albums = userInfo.parent.student.picAlbum
             }
         } else if (userInfo.userRole === 2) {
             if (userInfo.teacher) {
-                schoolName = userInfo.teacher.schoolName
-                userAvatar = userInfo.teacher.teacherPhoto
-                userName = userInfo.teacher.teacherName
-
                 albums = userInfo.teacher.albums
             }
         }
@@ -137,31 +121,16 @@ class HomePage extends Component {
         return (
             <div className='home-page-root'>
                 <div className='home-top-layout-root'>
-                    <div className='home-top-school-text'>{schoolName}</div>
-                    <div className='home-top-msg-root'>
-                        {isObjEmpty(userAvatar) ?
-                            <Avatar size={50} icon='user'/> :
-                            <img
-                                src={userAvatar}
-                                width={50} height={50} className="img-circle"
-                                style={{border: '3px solid #ffffff'}}/>
-                        }
-                        <span
-                            className='home-top-msg-text'>尊敬的{userName + (userInfo.userRole === 1 ? '家长' : '老师')}</span>
-                        {(userInfo.teacher && userInfo.parent) ?
-                            <img style={{marginLeft: "5px"}} src={icon_home_change} width={16}
-                                 height={16} onClick={this.onIdentitySwitch}/> : ''}
-
-                    </div>
+                    {this.userInfoLayout()}
                     <div className='home-student-layout-root'>
                         {studentList}
                     </div>
                     <div className='home-top-menu-root'>
-                        {topMenus}
+                        {this.getTopMenus()}
                     </div>
                 </div>
                 {/*功能菜单*/}
-                {userInfo.userRole == 1 ? parentMenu : teacherMenu}
+                {userInfo.userRole == 1 ? this.getParentMenu() : this.getTeacherMenu()}
                 {/*班级相册*/}
                 {<div className={isObjEmpty(albumItems) ? 'displayNone' : ''}>
                     <div className='gray-line'></div>
@@ -172,11 +141,9 @@ class HomePage extends Component {
                         </div>
                     </div>
                 </div>}
-
+                {/*{this.getAlbumLayout()}*/}
                 {/*精彩瞬间*/}
-                {/*{videoLayout}*/}
-
-
+                {/*{this.getVideoLayout()}*/}
                 {/*底线标识*/}
                 {this.getBottomLayout()}
             </div>
@@ -269,10 +236,7 @@ class HomePage extends Component {
                 } else if (!isObjEmpty(response.data.parents)) {
                     userRole = 1
                 }
-
-                /*switchUser({
-                    userRole: userRole,
-                })()*/
+                //切换当前user信息
                 switchCurrentUser(userRole)()
 
                 if (!isObjEmpty(userInfo.parent, userInfo.parent.students)) {
@@ -306,7 +270,6 @@ class HomePage extends Component {
                         setTimeout(() => {
                             Toast.success('切换成功!', 1)
                             switchCurrentUser(1)()
-                            // switchUser({userRole: 1})()
                         }, 500)
                     }
                 }
@@ -318,7 +281,6 @@ class HomePage extends Component {
                         setTimeout(() => {
                             Toast.success('切换成功!', 1)
                             switchCurrentUser(2)()
-                            // switchUser({userRole: 2})();
                         }, 500)
                     }
                 }
@@ -326,6 +288,44 @@ class HomePage extends Component {
         ])
     }
 
+    userInfoLayout = () => {
+        const {userInfo} = this.props
+        let schoolName = '', userAvatar = '', userName = '', albums = ''
+        if (userInfo.userRole === 1) {
+            if (userInfo.parent) {
+                schoolName = userInfo.parent.schoolName
+                userAvatar = userInfo.parent.parentsPhoto
+                userName = userInfo.parent.parentsName
+            }
+        } else if (userInfo.userRole === 2) {
+            if (userInfo.teacher) {
+                schoolName = userInfo.teacher.schoolName
+                userAvatar = userInfo.teacher.teacherPhoto
+                userName = userInfo.teacher.teacherName
+            }
+        }
+        return (
+            <div>
+                <div className='home-top-school-text'>{schoolName}</div>
+                <div className='home-top-msg-root'>
+                    {isObjEmpty(userAvatar) ?
+                        <Avatar size={50} icon='user'/> :
+                        <img
+                            src={userAvatar}
+                            width={50} height={50} className="img-circle"
+                            style={{border: '3px solid #ffffff'}}/>
+                    }
+                    <span
+                        className='home-top-msg-text'>尊敬的{userName + (userInfo.userRole === 1 ? '家长' : '老师')}</span>
+                    {(userInfo.teacher && userInfo.parent) ?
+                        <img style={{marginLeft: "5px"}} src={icon_home_change} width={16}
+                             height={16} onClick={this.onIdentitySwitch}/> : ''}
+
+                </div>
+            </div>
+        )
+    }
+
     getBottomLayout = () => {
         return (
             <div className='common-flex-row-x-y-center' style={{padding: 28}}>
@@ -362,11 +362,9 @@ class HomePage extends Component {
             return <div>
                 <div className='gray-line'></div>
                 <MenuGroup groupIcon={require('imgs/ic_group_album.png')} groupText='班级相册'/>
-                <div className='home-albums-layout'>
-                    <div className="home-swiper-container">
-                        <div className="swiper-wrapper">
-                            {albumItems}
-                        </div>
+                <div className="home-swiper-container">
+                    <div className="swiper-wrapper">
+                        {albumItems}
                     </div>
                 </div>
             </div>

Some files were not shown because too many files changed in this diff