Joburgess 5 years ago
parent
commit
5719955475

+ 6 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentDao.java

@@ -1,6 +1,7 @@
 package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dto.SimpleUserDto;
 import com.ym.mec.biz.dal.dto.Student4operating;
 import com.ym.mec.biz.dal.dto.StudentServeCourseDto;
 import com.ym.mec.biz.dal.dto.StudentServeDto;
@@ -50,6 +51,11 @@ public interface StudentDao extends com.ym.mec.common.dal.BaseDAO<Integer, Stude
      */
     List<Map<Integer,Integer>> getTeacherOperatingStudentsNum(@Param("teacherIds") String teacherIds);
 
+    List<String> getStudentNames(@Param("studentIds") List<Integer> studentIds);
+
+    List<SimpleUserDto> getStudentsWithOrgan(Map<String, Object> params);
+    int countStudentsWithOrgan(Map<String, Object> params);
+
     /**
      * 根据类型批量获取老师转化
      * @param teacherIds

+ 10 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/VipGroup.java

@@ -80,6 +80,8 @@ public class VipGroup {
 
 	@ApiModelProperty(value = "课程类型ID",required = false)
 	private Integer vipGroupCategoryId;
+
+	private String vipGroupCategoryName;
 	
 	@ApiModelProperty(value = "所属分部列表",required = false)
 	private String organIdList;
@@ -144,6 +146,14 @@ public class VipGroup {
 		this.enableDelete = enableDelete;
 	}
 
+	public String getVipGroupCategoryName() {
+		return vipGroupCategoryName;
+	}
+
+	public void setVipGroupCategoryName(String vipGroupCategoryName) {
+		this.vipGroupCategoryName = vipGroupCategoryName;
+	}
+
 	public BigDecimal getCourseUnitPrice() {
 		return courseUnitPrice;
 	}

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentManageService.java

@@ -28,6 +28,9 @@ public interface StudentManageService {
      */
     PageInfo<StudentManageListDto> findStudentsByOrganId(StudentManageQueryInfo queryInfo);
 
+
+    PageInfo<SimpleUserDto> queryStudentsWithTeacher(StudentManageQueryInfo queryInfo);
+
     /**
      * @Author: Joburgess
      * @Date: 2019/9/20

+ 42 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentManageServiceImpl.java

@@ -7,6 +7,7 @@ import com.ym.mec.biz.dal.dto.*;
 import com.ym.mec.biz.dal.entity.Student;
 import com.ym.mec.biz.dal.entity.StudentRegistration;
 import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.Teacher;
 import com.ym.mec.biz.dal.enums.YesOrNoEnum;
 import com.ym.mec.biz.dal.page.*;
 import com.ym.mec.biz.service.StudentManageService;
@@ -18,9 +19,11 @@ import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -162,6 +165,45 @@ public class StudentManageServiceImpl implements StudentManageService {
     }
 
     @Override
+    public PageInfo<SimpleUserDto> queryStudentsWithTeacher(StudentManageQueryInfo queryInfo) {
+        PageInfo<SimpleUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
+        Map<String, Object> params = new HashMap<String, Object>();
+        MapUtil.populateMap(params, queryInfo);
+
+        Teacher teacher = teacherDao.get(queryInfo.getTeacherId());
+        if(Objects.isNull(teacher)){
+            return null;
+        }
+        List<Integer> organIds=new ArrayList<>();
+        if(Objects.nonNull(teacher.getTeacherOrganId())){
+            organIds.add(teacher.getTeacherOrganId());
+        }
+        if(StringUtils.isNotBlank(teacher.getFlowOrganRange())){
+            List<Integer> flowOrganRangeIds = Arrays.stream(teacher.getFlowOrganRange().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
+            organIds.addAll(flowOrganRangeIds);
+        }
+
+        if(CollectionUtils.isEmpty(organIds)){
+            return null;
+        }
+
+        params.put("organIds", organIds);
+
+        List<SimpleUserDto> dataList = null;
+        int count = studentDao.countStudentsWithOrgan(params);
+        if (count > 0) {
+            pageInfo.setTotal(count);
+            params.put("offset", pageInfo.getOffset());
+            dataList = studentDao.getStudentsWithOrgan(params);
+        }
+        if (count == 0) {
+            dataList = new ArrayList<>();
+        }
+        pageInfo.setRows(dataList);
+        return pageInfo;
+    }
+
+    @Override
     public StudentManageListDto findStudentManageBaseInfo(Integer userId) {
         return studentManageDao.findStudentBaseInfoByUserID(userId);
     }

+ 15 - 5
mec-biz/src/main/java/com/ym/mec/biz/service/impl/VipGroupServiceImpl.java

@@ -198,6 +198,10 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
             throw new BizException("请设置教师课酬");
         }
 
+		if(StringUtils.isBlank(vipGroupApplyBaseInfoDto.getStudentIdList())){
+			throw new BizException("请选择学员");
+		}
+
         if(Objects.isNull(vipGroupApplyBaseInfoDto.getOnlineTeacherSalary())){
         	vipGroupApplyBaseInfoDto.setOnlineTeacherSalary(new BigDecimal(0));
 		}
@@ -249,11 +253,20 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 			throw new BizException("请勿重复提交");
 		}
 
+		VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroupApplyBaseInfoDto.getVipGroupCategoryId());
+		if(Objects.isNull(vipGroupCategory)){
+			throw new BizException("课程形式不存在");
+		}
+
+		List<Integer> canBuyStudentIds = Arrays.stream(vipGroupApplyBaseInfoDto.getStudentIdList().split(",")).map(e -> Integer.valueOf(e)).collect(Collectors.toList());
+
+		List<String> studentNames = studentDao.getStudentNames(canBuyStudentIds);
+
 		//生成vip课信息
 		List<String> bySubIds = subjectDao.findBySubIds(vipGroupApplyBaseInfoDto.getSubjectIdList());
 		StringBuffer className=new StringBuffer(StringUtils.join(bySubIds,","));
-		className.append("•");
-		className.append(vipGroupApplyBaseInfoDto.getName());
+		className.append(vipGroupCategory.getName());
+		className.append(StringUtils.join(studentNames, ","));
 		vipGroupApplyBaseInfoDto.setName(className.toString());
 
 		//计算课程相关费用信息
@@ -318,9 +331,6 @@ public class VipGroupServiceImpl extends BaseServiceImpl<Long, VipGroup> impleme
 
 		vipGroupApplyBaseInfoDto.setPaymentExpireDate(DateUtil.getLastSecondWithDay(vipGroupApplyBaseInfoDto.getPaymentExpireDate()));
 
-        //获取vip课类型信息
-        VipGroupCategory vipGroupCategory = vipGroupCategoryDao.get(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId().intValue());
-
         VipGroupDefaultClassesUnitPrice vipGroupDefaultClassesUnitPrice = vipGroupDefaultClassesUnitPriceDao.getByVipGroupCategory(vipGroup.getVipGroupApplyBaseInfo().getVipGroupCategoryId(), vipGroup.getVipGroupApplyBaseInfo().getOrganId());
 
         if(Objects.isNull(vipGroupDefaultClassesUnitPrice)){

+ 48 - 0
mec-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -462,4 +462,52 @@
             LEFT JOIN student stu ON cssp.user_id_ = stu.user_id_
         WHERE stu.service_tag_=1 AND class_date_&gt;=#{monday}
     </select>
+
+    <select id="getStudentNames" resultType="string">
+        SELECT username_ FROM sys_user WHERE id_ IN
+        <foreach collection="studentIds" item="studentId" separator="," open="(" close=")">
+            #{studentId}
+        </foreach>
+    </select>
+    <select id="getStudentsWithOrgan" resultType="com.ym.mec.biz.dal.dto.SimpleUserDto">
+        SELECT
+            su.id_ userId,su.username_ userName, su.avatar_ avatar, su.phone_ phone
+        FROM
+            sys_user su
+        WHERE
+            1=1
+            AND su.del_flag_=0 AND su.lock_flag_=0
+            AND FIND_IN_SET('STUDENT',su.user_type_)
+            <if test="organIds!=null">
+                AND su.organ_id_ IN
+                <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+                    #{organId}
+                </foreach>
+            </if>
+            <if test="search != null">
+                AND (su.username_ LIKE CONCAT('%', #{search}, '%') OR su.phone_ LIKE CONCAT('%', #{search}, '%'))
+            </if>
+        ORDER BY su.id_
+        <include refid="global.limit"/>
+    </select>
+
+    <select id="countStudentsWithOrgan" resultType="int">
+        SELECT
+            COUNT(su.id_)
+        FROM
+            sys_user su
+        WHERE
+            1=1
+            AND su.del_flag_=0 AND su.lock_flag_=0
+            AND FIND_IN_SET('STUDENT',su.user_type_)
+            <if test="organIds!=null">
+                AND su.organ_id_ IN
+                <foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+                    #{organId}
+                </foreach>
+            </if>
+            <if test="search != null">
+                AND (su.username_ LIKE CONCAT('%', #{search}, '%') OR su.phone_ LIKE CONCAT('%', #{search}, '%'))
+            </if>
+    </select>
 </mapper>

+ 4 - 1
mec-biz/src/main/resources/config/mybatis/VipGroupMapper.xml

@@ -42,6 +42,7 @@
         <result column="school_name_" property="schoolName" />
         <result column="subject_name_" property="subjectName" />
         <result column="educational_teacher_id_" property="educationalTeacherId" />
+        <result column="vip_group_category_name_" property="vipGroupCategoryName"/>
     </resultMap>
     
     <resultMap type="com.ym.mec.biz.dal.entity.School" id="School">
@@ -196,11 +197,13 @@
 		SELECT
             vg.*,
             vga.name_ vip_group_activity_name_,
-            su.real_name_ username_
+            su.real_name_ username_,
+            vgc.name_ vip_group_category_name_
         FROM
             vip_group vg
             LEFT JOIN sys_user su ON vg.user_id_=su.id_
             LEFT JOIN vip_group_activity vga ON vg.vip_group_activity_id_=vga.id_
+            LEFT JOIN vip_group_category vgc ON vgc.id_=vg.vip_group_category_id_
         <include refid="vipGroupQueryCondition"/>
         ORDER BY vg.id_ DESC
         <include refid="global.limit"/>

+ 18 - 4
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherVipGroupController.java

@@ -6,16 +6,17 @@ import com.ym.mec.biz.dal.dao.TeacherDao;
 import com.ym.mec.biz.dal.dto.VipGroupApplyDto;
 import com.ym.mec.biz.dal.dto.VipGroupCostCountParamsDto;
 import com.ym.mec.biz.dal.entity.Teacher;
+import com.ym.mec.biz.dal.page.StudentManageQueryInfo;
+import com.ym.mec.biz.service.StudentManageService;
 import com.ym.mec.biz.service.VipGroupService;
 import com.ym.mec.common.controller.BaseController;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Objects;
 
@@ -34,6 +35,8 @@ public class TeacherVipGroupController extends BaseController {
 	private SysUserFeignService sysUserFeignService;
 	@Autowired
 	private TeacherDao teacherDao;
+	@Autowired
+	private StudentManageService studentManageService;
 
 	@ApiOperation("vip课申请")
 	@PostMapping("/vipGroupApply")
@@ -69,4 +72,15 @@ public class TeacherVipGroupController extends BaseController {
 		return succeed(vipGroupService.querySchoolByUserId(user.getId()));
 	}
 
+	@ApiOperation(value = "获取教师所在分部学生列表")
+	@GetMapping("/queryStudentsWithTeacher")
+	public Object queryStudentsWithTeacher(StudentManageQueryInfo queryInfo){
+		SysUser user = sysUserFeignService.queryUserInfo();
+		if (Objects.isNull(user)) {
+			return failed(HttpStatus.FORBIDDEN, "请登录");
+		}
+		queryInfo.setTeacherId(user.getId());
+		return succeed(studentManageService.queryStudentsWithTeacher(queryInfo));
+	}
+
 }

+ 5 - 5
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -489,16 +489,16 @@ public class ExportController extends BaseController {
         List<VipGroup> rows = vipGroupService.findVipGroups(queryInfo).getRows();
         OutputStream outputStream = response.getOutputStream();
         if (rows != null && rows.size() > 0) {
-            rows.forEach(e -> {
+            for (VipGroup e : rows) {
                 e.setSubClassTimes(e.getTotalClassTimes() == null ? 0 : e.getTotalClassTimes() - (e.getCurrentClassTimes() == null ? 0 : e.getCurrentClassTimes()));
-            });
+            }
         }
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"VIP编号", "课程名称", "课程状态", "指导老师", "指导老师", "班级人数", "课程单价",
-                    "活动方案", "当前课次", "总课次", "剩余课次", "月消耗", "上次课时间", "开课时间", "结束时间", "申请时间", "学生姓名"}, new String[]{
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"VIP编号", "课程名称", "课程状态", "指导老师", "教务老师", "班级人数", "课程单价",
+                    "活动方案", "当前课次", "总课次", "剩余课次", "月消耗", "上次课时间", "开课时间", "结束时间", "申请时间", "学生姓名", "课程形式", "备注"}, new String[]{
                     "id", "name", "status.msg", "userName", "educationalTeacherName", "studentNum", "courseUnitPrice",
                     "vipGroupActivityName", "currentClassTimes", "totalClassTimes", "subClassTimes", "monthConsumeRate", "lastOverTime",
-                    "courseStartDate", "coursesExpireDate", "registrationStartTime", "userInfo"}, rows);
+                    "courseStartDate", "coursesExpireDate", "registrationStartTime", "userInfo", "vipGroupCategoryName", "stopReason"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             response.flushBuffer();