yonge 3 年之前
父节点
当前提交
21d0119bb1

+ 51 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java

@@ -1,14 +1,29 @@
 package com.yonge.cooleshow.admin.controller;
 
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.http.HttpServletResponse;
+
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
 import com.yonge.cooleshow.biz.dal.service.StudentService;
 import com.yonge.toolset.mybatis.support.PageUtil;
+import com.yonge.toolset.utils.date.DateUtil;
+import com.yonge.toolset.utils.excel.POIUtil;
 import com.yonge.cooleshow.biz.dal.vo.StudentVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
+
 import io.swagger.annotations.*;
+
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -39,4 +54,40 @@ public class StudentController extends BaseController {
         return succeed(PageUtil.pageInfo(pages));
 	}
 
+    @ApiOperation(value = "学生列表导出")
+    @PostMapping("export")
+    @PreAuthorize("@pcs.hasPermissions('student/export')")
+    public void export(HttpServletResponse response, @RequestBody StudentSearch queryInfo) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        List<StudentVo> rows = studentService.selectPage(PageUtil.getPage(queryInfo), queryInfo).getRecords();
+        if (rows.size() < 1) {
+            throw new BizException("没有可导出数据");
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学生编号", "学生姓名", "性别", "出生日期",
+                    "年龄", "专业", "手机号码", "是否是会员", "注册时间"}, new String[]{
+                    "userId", "realName", "gender.msg", "birthdate", "age", "subjectName", "phone",
+                    "isVip.msg", "createTime"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attac:wq" +
+                    "hment;filename=学生列表-" + DateUtil.getDate(new Date()) + ".xls");
+
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
 }

+ 66 - 14
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -1,28 +1,44 @@
 package com.yonge.cooleshow.admin.controller;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
-import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.toolset.base.page.PageInfo;
-import com.yonge.toolset.mybatis.support.PageUtil;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
 
-import io.swagger.annotations.*;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.util.CollectionUtils;
-import org.springframework.web.bind.annotation.*;
-
-import javax.validation.Valid;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+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 com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.req.TeacherSubmitReq;
 import com.yonge.cooleshow.biz.dal.dto.search.TeacherSearch;
+import com.yonge.cooleshow.biz.dal.entity.TeacherStyleVideo;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.service.TeacherService;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
-
-import java.util.List;
-import java.util.stream.Collectors;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.base.exception.BizException;
+import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
+import com.yonge.toolset.utils.date.DateUtil;
+import com.yonge.toolset.utils.excel.POIUtil;
 
 @RestController
 @RequestMapping("/teacher")
@@ -71,4 +87,40 @@ public class TeacherController extends BaseController {
     public HttpResponseResult<Boolean> submit(@Valid @RequestBody TeacherSubmitReq teacherSubmitReq) {
         return teacherService.submit(teacherSubmitReq);
     }
+
+    @ApiOperation(value = "老师列表导出")
+    @PostMapping("export")
+    @PreAuthorize("@pcs.hasPermissions('teacher/export')")
+    public void export(HttpServletResponse response, @RequestBody TeacherSearch queryInfo) throws IOException {
+        queryInfo.setPage(1);
+        queryInfo.setRows(49999);
+        List<TeacherVo> rows = teacherService.selectPage(PageUtil.getPage(queryInfo), queryInfo).getRecords();
+        if (rows.size() < 1) {
+            throw new BizException("没有可导出数据");
+        }
+        OutputStream outputStream = response.getOutputStream();
+        try {
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"老师编号", "昵称", "姓名", "手机号", "老师类型",
+                    "注册时间", "认证时间", "状态", "是否是会员", "徽章"}, new String[]{
+                    "userId", "username", "realName", "phone", "teacherType.equals('ENTRY') ? '达人' : '游客'", "createTime", "entryAuthDate",
+                    "lockFlag.remark", "isVip ? '是' : '否'", "tag"}, rows);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attac:wq" +
+                    "hment;filename=老师列表-" + DateUtil.getDate(new Date()) + ".xls");
+
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
 }

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherSearch.java

@@ -14,6 +14,12 @@ public class TeacherSearch extends QueryInfo{
     private String search;
     @ApiModelProperty(value = "老师类型 TOURIST 游客 ENTRY 认证老师 MUSICIAN 平台音乐人")
     private String teacherType;
+    
+    @ApiModelProperty(value = "徽章(STYLE-个人风采  LIVE-直播  VIDEO-视频课  MUSIC-曲谱)")
+    private String tag;
+    
+    @ApiModelProperty(value = "是否会员(0-否 1-是)")
+    private Integer isVip;
 
     public String getSearch() {
         return search;
@@ -30,4 +36,20 @@ public class TeacherSearch extends QueryInfo{
     public void setTeacherType(String teacherType) {
         this.teacherType = teacherType;
     }
+
+	public String getTag() {
+		return tag;
+	}
+
+	public void setTag(String tag) {
+		this.tag = tag;
+	}
+
+	public Integer getIsVip() {
+		return isVip;
+	}
+
+	public void setIsVip(Integer isVip) {
+		this.isVip = isVip;
+	}
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherVo.java

@@ -60,6 +60,8 @@ public class TeacherVo extends Teacher {
 
     @ApiModelProperty(value = "是否注销 0否 1是")
     private YesOrNoEnum delFlag;
+    
+    private String tag;
 
     public YesOrNoEnum getDelFlag() {
         return delFlag;
@@ -214,4 +216,12 @@ public class TeacherVo extends Teacher {
     public void setUserType(String userType) {
         this.userType = userType;
     }
+
+	public String getTag() {
+		return tag;
+	}
+
+	public void setTag(String tag) {
+		this.tag = tag;
+	}
 }

+ 2 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/StudentMapper.xml

@@ -83,6 +83,7 @@
             TIMESTAMPDIFF(YEAR, u.birthdate_, CURDATE()) as age,
             u.phone_ as phone,
             !isnull(birthdate_) as isReal,
+            u.real_name_ as realName,
             (!isnull(membership_end_time_) and membership_end_time_ > now()) as isVip,
             (
             SELECT GROUP_CONCAT(name_ ORDER by locate(id_,t.subject_id_)) FROM subject WHERE FIND_IN_SET(id_,t.subject_id_)
@@ -94,6 +95,7 @@
                 AND (
                     t.user_id_ LIKE CONCAT('%', #{param.search}, '%') or
                     u.username_ LIKE CONCAT('%', #{param.search}, '%') or
+                    u.real_name_ LIKE CONCAT('%', #{param.search}, '%') or
                     u.phone_ LIKE CONCAT('%', #{param.search}, '%')
                 )
             </if>

+ 14 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherMapper.xml

@@ -68,6 +68,9 @@
             <include refid="baseColumns"/>,
             u.username_ as username,
             u.phone_ as phone,
+            u.real_name_ as realName,
+            (case when t.membership_end_time_ &gt;= now() then 1 else 0 end) isVip,
+            t.tag_ tag,
             u.lock_flag_ as lockFlag,
             u.del_flag_ as delFlag,
             (case when isnull(u.id_card_no_) then 0 else 1 end) as isReal,
@@ -99,6 +102,17 @@
                     </if>
                 )
             </if>
+            <if test="param.isVip != null">
+            	<if test="param.isVip == 0">
+            		and (t.membership_end_time_ is null or t.membership_end_time_ &lt; now())
+            	</if>
+            	<if test="param.isVip == 1">
+            		and t.membership_end_time_ &gt;= now()
+            	</if>
+            </if>
+            <if test="param.tag != null">
+            	and find_in_set(#{param.tag},t.tag_)
+            </if>
         </where>
     </select>