Bladeren bron

Merge branch 'dev-api' into dev

tom 5 maanden geleden
bovenliggende
commit
c8c8a7296a

File diff suppressed because it is too large
+ 1699 - 102
pla-sim/01_SQL/03_dev_backup/pla-chem-sim-dev-1.sql


+ 0 - 12
ruoyi-admin/src/main/resources/application-sim.yml

@@ -1,12 +0,0 @@
-# sim自定义相关配置
-sim:
-  #
-  gatewayIp: 192.168.10.10
-  #
-  gatewayPort: 8080
-  #
-  gatewayTimeout: 250
-  #
-  gatewayReachableTimeout: 2000
-  #
-  selfExamDuration: 45

+ 15 - 0
ruoyi-admin/src/main/resources/application.yml

@@ -127,3 +127,18 @@ xss:
   excludes: /system/notice
   # 匹配链接
   urlPatterns: /system/*,/monitor/*,/tool/*
+
+# sim自定义相关配置
+# com.ruoyi.sim.config.SimConfig
+sim-module-config:
+  #
+  routerIp: 123.112.16.165
+  #
+  rs485Ip: 123.112.16.165
+  #
+  rs485Port: 8899
+  #
+  commGlobal: false
+  #
+  selfExamDuration: 45
+

+ 38 - 27
ruoyi-sim/src/main/java/com/ruoyi/sim/config/SimConfig.java

@@ -1,5 +1,6 @@
 package com.ruoyi.sim.config;
 
+import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
 
@@ -7,65 +8,64 @@ import org.springframework.context.annotation.Configuration;
  * 本项目自定义配置类。
  */
 @Configuration
-@ConfigurationProperties(prefix = "sim")
+@ConfigurationProperties(prefix = "sim-module-config")
 public class SimConfig {
 
     /**
-     * 模拟器的 网关ip。
+     * 路由器ip。
      */
-    private String gatewayIp;
+    private String routerIp;
 
     /**
-     * 模拟器的 网关port
+     * 模拟器的 RS485网关ip。
      */
-    private int gatewayPort;
+    private String rs485Ip;
 
     /**
-     * 模拟器通信的 超时时间 ms
+     * 模拟器的 RS485网关port
      */
-    private long gatewayTimeout;
+    private int rs485Port;
 
     /**
-     *
+     * 模拟器通信总开关。
      */
-    private int gatewayReachableTimeout;
+    private boolean commGlobal;
 
     /**
-     * 自主练习时长 minute
+     * 自主练习时长 单位min。
      */
     private int selfExamDuration;
 
-
-    public String getGatewayIp() {
-        return gatewayIp;
+    public String getRouterIp() {
+        return routerIp;
     }
 
-    public void setGatewayIp(String gatewayIp) {
-        this.gatewayIp = gatewayIp;
+    public void setRouterIp(String routerIp) {
+        this.routerIp = routerIp;
     }
 
-    public int getGatewayPort() {
-        return gatewayPort;
+    public String getRs485Ip() {
+        return rs485Ip;
     }
 
-    public void setGatewayPort(int gatewayPort) {
-        this.gatewayPort = gatewayPort;
+    public void setRs485Ip(String rs485Ip) {
+        this.rs485Ip = rs485Ip;
     }
 
-    public long getGatewayTimeout() {
-        return gatewayTimeout;
+    public int getRs485Port() {
+        return rs485Port;
     }
 
-    public void setGatewayTimeout(long gatewayTimeout) {
-        this.gatewayTimeout = gatewayTimeout;
+    public void setRs485Port(int rs485Port) {
+        this.rs485Port = rs485Port;
     }
 
-    public int getGatewayReachableTimeout() {
-        return gatewayReachableTimeout;
+    public boolean isCommGlobal() {
+        return commGlobal;
     }
 
-    public void setGatewayReachableTimeout(int gatewayReachableTimeout) {
-        this.gatewayReachableTimeout = gatewayReachableTimeout;
+    public void setCommGlobal(boolean commGlobal) {
+        this.commGlobal = commGlobal;
     }
 
     public int getSelfExamDuration() {
@@ -75,4 +75,15 @@ public class SimConfig {
     public void setSelfExamDuration(int selfExamDuration) {
         this.selfExamDuration = selfExamDuration;
     }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this)
+                .append("routerIp", routerIp)
+                .append("rs485Ip", rs485Ip)
+                .append("rs485Port", rs485Port)
+                .append("commGlobal", commGlobal)
+                .append("selfExamDuration", selfExamDuration)
+                .toString();
+    }
 }

+ 26 - 28
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/AddOnUserController.java

@@ -1,23 +1,20 @@
 package com.ruoyi.sim.controller;
 
 import java.util.List;
-import javax.servlet.http.HttpServletResponse;
 
+import com.ruoyi.common.core.domain.entity.SysRole;
+import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.sim.service.impl.AddOnUserService;
-import org.springframework.security.access.prepost.PreAuthorize;
+import com.ruoyi.system.service.ISysRoleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.*;
 import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.core.controller.BaseController;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.enums.BusinessType;
 import com.ruoyi.sim.domain.AddOnUser;
-import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.common.core.page.TableDataInfo;
 
 /**
@@ -26,16 +23,18 @@ import com.ruoyi.common.core.page.TableDataInfo;
  * @author tom
  * @date 2024-12-11
  */
-// @RestController
-// @RequestMapping("/sim/add_on_user")
+@RestController
+@RequestMapping("/sim/add-on-user")
+@Api("用户附加Controller")
 public class AddOnUserController extends BaseController {
     @Autowired
     private AddOnUserService addOnUserService;
+    @Autowired
+    private ISysRoleService roleService;
 
     /**
      * 查询用户附加列表
      */
-    @PreAuthorize("@ss.hasPermi('sim:add_on_user:list')")
     @GetMapping("/list")
     public TableDataInfo list(AddOnUser addOnUser) {
         startPage();
@@ -44,21 +43,8 @@ public class AddOnUserController extends BaseController {
     }
 
     /**
-     * 导出用户附加列表
-     */
-    @PreAuthorize("@ss.hasPermi('sim:add_on_user:export')")
-    @Log(title = "用户附加", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(HttpServletResponse response, AddOnUser addOnUser) {
-        List<AddOnUser> list = addOnUserService.selectAddOnUserList(addOnUser);
-        ExcelUtil<AddOnUser> util = new ExcelUtil<AddOnUser>(AddOnUser.class);
-        util.exportExcel(response, list, "用户附加数据");
-    }
-
-    /**
      * 获取用户附加详细信息
      */
-    @PreAuthorize("@ss.hasPermi('sim:add_on_user:query')")
     @GetMapping(value = "/{userId}")
     public AjaxResult getInfo(@PathVariable("userId") Long userId) {
         return success(addOnUserService.selectAddOnUserByUserId(userId));
@@ -67,7 +53,6 @@ public class AddOnUserController extends BaseController {
     /**
      * 新增用户附加
      */
-    @PreAuthorize("@ss.hasPermi('sim:add_on_user:add')")
     @Log(title = "用户附加", businessType = BusinessType.INSERT)
     @PostMapping
     public AjaxResult add(@RequestBody AddOnUser addOnUser) {
@@ -77,7 +62,6 @@ public class AddOnUserController extends BaseController {
     /**
      * 修改用户附加
      */
-    @PreAuthorize("@ss.hasPermi('sim:add_on_user:edit')")
     @Log(title = "用户附加", businessType = BusinessType.UPDATE)
     @PutMapping
     public AjaxResult edit(@RequestBody AddOnUser addOnUser) {
@@ -87,10 +71,24 @@ public class AddOnUserController extends BaseController {
     /**
      * 删除用户附加
      */
-    @PreAuthorize("@ss.hasPermi('sim:add_on_user:remove')")
     @Log(title = "用户附加", businessType = BusinessType.DELETE)
     @DeleteMapping("/{userIds}")
     public AjaxResult remove(@PathVariable Long[] userIds) {
         return toAjax(addOnUserService.deleteAddOnUserByUserIds(userIds));
     }
+
+    /**
+     * 返回当前登录账号角色info。
+     */
+    @GetMapping(value = "/roleInfo/")
+    @ApiOperation("返回当前登录账号角色info")
+    public AjaxResult getRole() {
+        Long userId = SecurityUtils.getUserId();
+        SysRole role = null;
+        List<Long> roleList = roleService.selectRoleListByUserId(userId);
+        if (roleList != null && !roleList.isEmpty()) {
+            role = roleService.selectRoleById(roleList.get(0));
+        }
+        return success(role);
+    }
 }

+ 5 - 14
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/StudentController.java

@@ -35,23 +35,14 @@ public class StudentController extends BaseController {
     @Autowired
     private StudentService studentService;
 
-    /**
-     * copy
-     *
-     * @param user
-     * @return
-     */
-    // @PreAuthorize("@ss.hasPermi('sim:student:list')")
     @GetMapping("/list")
-    @ApiOperation("查询学生列表")
-    public TableDataInfo list() {
-        // startPage();  todo:分页
-        List<Student> list = studentService.selectStudentList();
-        return getDataTable(list);
+    @ApiOperation("[分页]查询学生列表")
+    public TableDataInfo list(SysUser suQ) {
+        return getDataTable(studentService.list(suQ));
     }
 
-    @GetMapping(value = "/letTry/{code}")
-    @ApiOperation("letTry")
+    // @GetMapping(value = "/letTry/{code}")
+    // @ApiOperation("letTry")
     public void letTry(@PathVariable(value = "code") int code) {
         studentService.letTry(code);
     }

+ 3 - 15
ruoyi-sim/src/main/java/com/ruoyi/sim/controller/TeacherController.java

@@ -48,24 +48,12 @@ public class TeacherController extends BaseController {
     @Autowired
     private TeacherService teacherService;
 
-
-    /**
-     * copy
-     *
-     * @param user
-     * @return
-     */
-    // @PreAuthorize("@ss.hasPermi('sim:teacher:list')")
     @GetMapping("/list")
-    @ApiOperation("查询教师列表")
-    public TableDataInfo list() {
-        // startPage();
-        List<SysUser> list = teacherService.selectTeacherList();
-        return getDataTable(list);
+    @ApiOperation("[分页]查询教师列表")
+    public TableDataInfo list(SysUser suQ) {
+        return getDataTable(teacherService.list(suQ));
     }
 
-    // @PreAuthorize("@ss.hasPermi('sim:teacher:query')")
-
     /**
      * 新增教师
      */

+ 3 - 2
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommReceiveService.java

@@ -84,8 +84,9 @@ public class CommReceiveService {
      * @param s
      * @param reF
      * @param f
+     * @param refState RealExamFault.State.LOOP_READ
      */
-    public void setFaultAnswerValue(SimMsg sm, Sim s, RealExamFault reF, Fault f) {
+    public void setFaultAnswerValue(SimMsg sm, Sim s, RealExamFault reF, Fault f, String refState) {
         // check
         if (reF == null) {
             l.info("reF null!");
@@ -99,7 +100,7 @@ public class CommReceiveService {
             return;
         }
         l.info("faultAnswerValue = {}", faultAnswerValue);
-        reF.setRefState(RealExamFault.State.LOOP_READ);
+        reF.setRefState(refState);
         reF.setSimFaultAnswerValue(faultAnswerValue);
         realExamFaultService.updateRealExamFault(reF);
     }

+ 30 - 42
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/CommSendService.java

@@ -7,6 +7,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.slf4j.LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -31,18 +32,6 @@ public class CommSendService {
     interface Const {
 
         /**
-         * 123.112.16.165
-         */
-        String ROUTER_IP = "123.112.16.165";
-        /**
-         * 123.112.16.165
-         */
-        String IP = "123.112.16.165";
-        /**
-         * 8899
-         */
-        int PORT = 8899;
-        /**
          * 报文长度
          */
         int MSG_LENGTH = 20;
@@ -102,7 +91,7 @@ public class CommSendService {
     @Autowired
     private RealExamFaultService realExamFaultService;
     @Autowired
-    private SimConfig sConfig;
+    private SimConfig config;
 
     /**
      *
@@ -133,7 +122,7 @@ public class CommSendService {
                         Fault.TYPE_3.equals(f.getFaultType()) &&
                         Fault.State.ENABLE.equals(f.getFaultState())
                 ) {
-                    readOneFaultResistance(s, ref, f);
+                    readOneFaultResistance(s, ref, f, RealExamFault.State.LOOP_READ);
                 }
             });
         });
@@ -148,42 +137,26 @@ public class CommSendService {
     }
 
     public void readOneExamAtLast(RealExam re) {
+        l.info("readOneExamAtLast");
         List<RealExamFault> listREF = realExamFaultService.listAllType2LoopReadStateByExamId(re.getExamId());
         listREF.forEach(ref -> {
             Sim s = simService.selectSimBySimId(re.getSimId());
             Fault f = faultService.selectFaultByFaultId(ref.getFaultId());
-            readOneFaultResistance(s, ref, f);
+            readOneFaultResistance(s, ref, f, RealExamFault.State.FINISH);
         });
-
-        submit(re.getExamId());
+        // 计算扣分。
+        // 最后都读取到,才算扣分。
         {
-            calculateScoreAsync(re.getExamId());
+            calculateScore(re.getExamId());
         }
     }
 
-    /**
-     * @param examId
-     */
-    @Transactional
-    public void submit(long examId) {
-        l.info("submit");
-        RealExam re1 = realExamService.selectRealExamByExamId(examId);
-        re1.setExamStatus(RealExam.State.SUBMITTED);
-        re1.setEndTime(DateUtils.getNowDate());
-        realExamService.updateRealExam(re1);
-    }
-
     @Async("tp-comm")
     public void readOneExamAtLastAsync(RealExam re) {
+        l.info("readOneExamAtLastAsync");
         readOneExamAtLast(re);
     }
 
-    // todo:
-    // @Async
-    public void calculateScoreAsync(Long realExamId) {
-        calculateScore(realExamId);
-    }
-
     /**
      * 计算减分(不包括超时)。汇总到deduction_total_score字段。
      *
@@ -221,12 +194,12 @@ public class CommSendService {
     public void scheduledConnect() {
         l.info("scheduledConnect");
         try {
-            if (!isReachable(ROUTER_IP)) {
+            if (!isReachable(config.getRouterIp())) {
                 // ping 不通。
                 l.warn("ping not ok");
                 simService.updateAllEnableState(Sim.State.GATEWAY_OFFLINE);
             }
-            if (!isReachable(IP)) {
+            if (!isReachable(config.getRs485Ip())) {
                 // todo:ping 不通。
                 l.warn("ping not ok");
                 simService.updateAllEnableState(Sim.State.GATEWAY_OFFLINE);
@@ -418,7 +391,7 @@ public class CommSendService {
     }
 
 
-    public void readOneFaultResistance(Sim s, RealExamFault reF, Fault f) {
+    public void readOneFaultResistance(Sim s, RealExamFault reF, Fault f, String refState) {
         l.info("readOneFaultResistance");
         try {
             SimMsg sm = new SimMsg();
@@ -426,12 +399,18 @@ public class CommSendService {
             sm.setSendMsg(sendMsg);
             String receiveMsg = send(sendMsg, s);
             sm.setReceiveMsg(receiveMsg);
-            simReceiveService.setFaultAnswerValue(sm, s, reF, f);
+            simReceiveService.setFaultAnswerValue(sm, s, reF, f, refState);
         } catch (IOException e) {
             catchException(e);
         }
     }
 
+    @Async("tp-comm")
+    public void readOneFaultResistanceAsync(Sim s, RealExamFault reF, Fault f, String refState) {
+        l.info("readOneFaultResistanceAsync");
+        readOneFaultResistance(s, reF, f, refState);
+    }
+
     public void test() {
         try {
             {
@@ -533,6 +512,10 @@ public class CommSendService {
      * @return
      */
     public synchronized String send(final String sendMsg, final Sim s) throws IOException {
+        if (!config.isCommGlobal()) {
+            l.warn("isCommGlobal == false [模拟器通信被禁用!]");
+            return "";
+        }
         l.info("********sendMsg == [{}]", sendMsg);
         //
         {
@@ -575,10 +558,15 @@ public class CommSendService {
     }
 
     public void openSocket() throws IOException {
+        l.info(config.toString());
+        if (!config.isCommGlobal()) {
+            l.warn("isCommGlobal == false [模拟器通信被禁用!]");
+            return;
+        }
         if (!isSocketOk()) {
             simService.updateAllEnableState(Sim.State.GATEWAY_OFFLINE);
             l.info("openSocket cachedSocket is null");
-            cachedSocket = new Socket(IP, PORT);
+            cachedSocket = new Socket(config.getRs485Ip(), config.getRs485Port());
             // setSoTimeout todo:????
             // cachedSocket.setSoTimeout(2000);
         } else {
@@ -632,7 +620,7 @@ public class CommSendService {
      */
     public boolean isReachable(String ipV4) throws IOException {
         InetAddress ia = InetAddress.getByName(ipV4);
-        return ia.isReachable(sConfig.getGatewayReachableTimeout());
+        return ia.isReachable(2000);
     }
 
     /**

+ 24 - 1
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/RealExamService.java

@@ -138,7 +138,8 @@ public class RealExamService {
     @Transactional
     public int updateOneState(long examId, final String state) {
         RealExam q = selectRealExamByExamId(examId);
-        if (RealExam.State.SUBMITTED.equals(state)) {
+        // todo:屏蔽
+        if (false && RealExam.State.SUBMITTED.equals(state)) {
             // 关联故障list同步锁死。
             realExamFaultService.listAllType2LoopReadStateByExamId(q.getExamId())
                     .forEach(ref -> {
@@ -213,6 +214,7 @@ public class RealExamService {
             commSendService.clearListFaultByRealExamAsync(re);
         }
         l.info("vo = {}", vo);
+
         return AjaxResult.success(vo);
     }
 
@@ -233,6 +235,12 @@ public class RealExamService {
         String examStatus = v.getRealExam().getExamStatus();
         String simStatus = v.getSim().getSimState();
 
+        // 兜底
+        {
+            if (realExamFaultService.isAllType2StateXiaFa(v.getRealExam().getExamId())) {
+                updateOneState(v.getRealExam().getExamId(), RealExam.State.SIM_PREPARE_OK);
+            }
+        }
         if ((RealExam.State.SIM_PREPARE_OK.equals(examStatus) ||
                 RealExam.State.ANSWERING.equals(examStatus)) &&
                 Sim.State.ONLINE.equals(simStatus)
@@ -274,6 +282,7 @@ public class RealExamService {
         vo.setRemainingMilliseconds(remaining);
         vo.setCompulsiveSubmit(remaining >= RealExam.EXAM_TIMEOUT_LIMIT);
         l.info("studentLoopAnsweringRealExam vo = {}", vo);
+
         return AjaxResult.success(vo);
     }
 
@@ -291,10 +300,24 @@ public class RealExamService {
         RealExam re1 = selectRealExamByExamId(examId);
         commSendService.readOneExamAtLastAsync(re1);
 
+        submit(examId);
+
         return AjaxResult.success(re1);
     }
 
     /**
+     * @param examId
+     */
+    @Transactional
+    public void submit(long examId) {
+        l.info("submit");
+        RealExam re2 = selectRealExamByExamId(examId);
+        re2.setExamStatus(RealExam.State.SUBMITTED);
+        re2.setEndTime(DateUtils.getNowDate());
+        updateRealExam(re2);
+    }
+
+    /**
      * [轮询][学生]结束考试界面。
      *
      * @param examId

+ 24 - 3
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/StudentService.java

@@ -2,14 +2,13 @@ package com.ruoyi.sim.service.impl;
 
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.page.TableDataInfo;
 import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.sim.constant.Consts;
 import com.ruoyi.sim.domain.AddOnDept;
 import com.ruoyi.sim.domain.Major;
 import com.ruoyi.sim.domain.Student;
 import com.ruoyi.system.mapper.*;
-import com.ruoyi.system.service.ISysConfigService;
-import com.ruoyi.system.service.ISysDeptService;
 import com.ruoyi.system.service.ISysUserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,7 +45,7 @@ public class StudentService {
     private ISysUserService sysUserService;
 
     // @DataScope(deptAlias = "d", userAlias = "u")
-    public List<Student> selectStudentList() {
+    public List<Student> selectStudentListOld() {
         SysUser su = new SysUser();
         List<SysUser> list = userMapper.selectUserList(su);
         List<Student> list2 = new ArrayList<>();
@@ -70,6 +69,27 @@ public class StudentService {
         return list2;
     }
 
+    /**
+     * [分页]查询学生列表。
+     *
+     * @param suQ
+     * @return
+     */
+    public List<Student> list(SysUser suQ) {
+        // 分页
+        PageUtils.startPage();
+        suQ.setRoleId(Consts.ROLE_ID_STUDENT);
+        List<SysUser> listSu = sysUserService.selectAllocatedList(suQ);
+        List<Student> listSt = new ArrayList<>(listSu.size());
+        listSu.forEach(su -> {
+            Student st = new Student();
+            su.setPassword("~~~~");
+            BeanUtils.copyProperties(su, st);
+            listSt.add(st);
+        });
+        return listSt;
+    }
+
     public void letTry(int code) {
         List<SysUser> list = null;
         switch (code) {
@@ -98,6 +118,7 @@ public class StudentService {
             }
             break;
             case 6: {
+                // ok
                 PageUtils.startPage();
                 SysUser su = new SysUser();
                 su.setRoleId(Consts.ROLE_ID_STUDENT);

+ 28 - 0
ruoyi-sim/src/main/java/com/ruoyi/sim/service/impl/TeacherService.java

@@ -2,12 +2,17 @@ package com.ruoyi.sim.service.impl;
 
 import com.ruoyi.common.core.domain.entity.SysRole;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.PageUtils;
 import com.ruoyi.sim.constant.Consts;
+import com.ruoyi.sim.domain.Student;
+import com.ruoyi.sim.domain.Teacher;
 import com.ruoyi.system.mapper.*;
 import com.ruoyi.system.service.ISysConfigService;
 import com.ruoyi.system.service.ISysDeptService;
+import com.ruoyi.system.service.ISysUserService;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -43,6 +48,8 @@ public class TeacherService {
 
     @Autowired
     protected Validator validator;
+    @Autowired
+    private ISysUserService sysUserService;
 
     // @DataScope(deptAlias = "d", userAlias = "u")
     public List<SysUser> selectTeacherList() {
@@ -61,4 +68,25 @@ public class TeacherService {
         }
         return list2;
     }
+
+    /**
+     * [分页]查询教师列表。
+     *
+     * @param suQ
+     * @return
+     */
+    public List<Teacher> list(SysUser suQ) {
+        // 分页
+        PageUtils.startPage();
+        suQ.setRoleId(Consts.ROLE_ID_TEACHER);
+        List<SysUser> listSu = sysUserService.selectAllocatedList(suQ);
+        List<Teacher> listSt = new ArrayList<>(listSu.size());
+        listSu.forEach(su -> {
+            Teacher t = new Teacher();
+            su.setPassword("~~~~");
+            BeanUtils.copyProperties(su, t);
+            listSt.add(t);
+        });
+        return listSt;
+    }
 }

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