فهرست منبع

Merge remote-tracking branch 'origin/saas' into saas

zouxuan 3 سال پیش
والد
کامیت
5865eee8e7

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomDao.java

@@ -41,6 +41,8 @@ public interface ImLiveBroadcastRoomDao extends BaseMapper<ImLiveBroadcastRoom>
     IPage<RoomReservationUserVo> queryRoomUser(@Param("page") IPage<RoomReservationUserVo> page,
                                                   @Param("query") RoomReservationUserSearch query);
 
+    List<RoomReservationUserVo> queryRoomUser(@Param("query") RoomReservationUserSearch query);
+
     String querySchoolIds(@Param("organIds") String organIds);
 
     String queryTeamIds(@Param("organIds") String organIds);

+ 21 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RoomReservationUserSearch.java

@@ -20,6 +20,11 @@ public class RoomReservationUserSearch extends QueryInfo {
     @ApiModelProperty("用户编号/用户名/用户手机号")
     private String search;
 
+    @ApiModelProperty("声部id")
+    private Integer subjectId;
+
+    @ApiModelProperty("分部id")
+    private Integer organId;
 
     public String getRoomUid() {
         return roomUid;
@@ -38,4 +43,20 @@ public class RoomReservationUserSearch extends QueryInfo {
     public void setSearch(String search) {
         this.search = search;
     }
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public Integer getOrganId() {
+        return organId;
+    }
+
+    public void setOrganId(Integer organId) {
+        this.organId = organId;
+    }
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/ImLiveBroadcastRoomService.java

@@ -12,6 +12,8 @@ import com.ym.mec.biz.dal.vo.LiveRoomGoodsOrderVo;
 import com.ym.mec.common.entity.ImUserState;
 import com.ym.mec.common.page.PageInfo;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
@@ -96,6 +98,15 @@ public interface ImLiveBroadcastRoomService extends IService<ImLiveBroadcastRoom
      * @return
      */
     PageInfo<RoomReservationUserVo> queryRoomUser(RoomReservationUserSearch query);
+
+    /**
+     * 导出直播间预约用户信息
+     *
+     * @param query
+     * @param response
+     */
+    void exportReservationRoomUser(RoomReservationUserSearch query, HttpServletResponse response) throws IOException;
+
     //查询直播间商品订单列表
     PageInfo<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo);
 }

+ 42 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -31,9 +31,11 @@ import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
+import com.ym.mec.util.excel.POIUtil;
 import com.ym.mec.util.http.HttpUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.redisson.api.RBucket;
 import org.redisson.api.RLock;
 import org.redisson.api.RMap;
@@ -45,6 +47,9 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
 import java.io.Serializable;
 import java.util.*;
 import java.util.concurrent.CompletableFuture;
@@ -1259,11 +1264,47 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
 
     @Override
     public PageInfo<RoomReservationUserVo> queryRoomUser(RoomReservationUserSearch query) {
-        IPage<RoomReservationUserVo> page = new Page<>(query.getPage(), query.getRows());
+        IPage<RoomReservationUserVo> page = PageUtil.getPage(query.getPage(), query.getRows());
         page = baseMapper.queryRoomUser(page, query);
         return PageUtil.pageInfo(page);
     }
 
+    /**
+     * 导出直播间预约用户信息
+     *
+     * @param query
+     * @param response
+     */
+    public void exportReservationRoomUser(RoomReservationUserSearch query, HttpServletResponse response) throws IOException {
+        //训练营详情-查询条件时间设置
+        List<RoomReservationUserVo> list = baseMapper.queryRoomUser(query);
+        OutputStream outputStream = response.getOutputStream();
+        HSSFWorkbook workbook = null;
+        try {
+            String[] header = {"编号", "姓名", "手机号", "分部", "声部"};
+            String[] body = {"userId", "username", "phone", "organName", "subjectName"};
+            workbook = POIUtil.exportExcel(header, body, list);
+            response.setContentType("application/octet-stream");
+            response.setHeader("Content-Disposition", "attachment;filename=replacement-" + DateUtil.getDate(new Date()) + ".xls");
+            response.flushBuffer();
+            outputStream = response.getOutputStream();
+            workbook.write(outputStream);
+            outputStream.flush();
+            workbook.close();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (outputStream != null) {
+                try {
+                    workbook.close();
+                    outputStream.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+    }
+
     @Override
     public PageInfo<LiveRoomGoodsOrderVo> queryLiveRoomGoodsOrderList(LiveRoomGoodsOrderQueryInfo queryInfo) {
         PageInfo<LiveRoomGoodsOrderVo> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());

+ 14 - 6
mec-biz/src/main/resources/config/mybatis/ImLiveBroadcastRoomMapper.xml

@@ -209,12 +209,20 @@
         left join sys_user su on su.id_ = ilrr.user_id_
         left join organization o on o.id_ = su.organ_id_
         left join student s on s.user_id_ = su.id_
-        where ilrr.room_uid_ = #{query.roomUid}
-        <if test="query.search != null and query.search != ''">
-            and (su.id_ like concat('%',#{query.search},'%')
-            or su.phone_ like concat('%',#{query.search},'%')
-            or su.username_ like concat('%',#{query.search},'%'))
-        </if>
+        <where>
+            ilrr.room_uid_ = #{query.roomUid}
+            <if test="query.search != null and query.search != ''">
+                and (su.id_ like concat('%',#{query.search},'%')
+                or su.phone_ like concat('%',#{query.search},'%')
+                or su.username_ like concat('%',#{query.search},'%'))
+            </if>
+            <if test="query.subjectId != null">
+                and find_in_set(#{query.subjectId},s.subject_id_list_)
+            </if>
+            <if test="query.organId != null">
+                and su.organ_id_ = #{query.organId}
+            </if>
+        </where>
     </select>
 
     <select id="querySchoolIds" resultType="string">

+ 20 - 0
mec-web/src/main/java/com/ym/mec/web/controller/ImLiveBroadcastRoomController.java

@@ -18,7 +18,9 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
+import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
+import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.concurrent.CompletableFuture;
@@ -54,12 +56,30 @@ public class ImLiveBroadcastRoomController extends BaseController {
         return succeed(imLiveBroadcastRoomService.queryPage(param));
     }
 
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "模糊查询关键字"),
+            @ApiImplicitParam(name = "subjectId", dataType = "Integer", value = "声部id"),
+            @ApiImplicitParam(name = "organId", dataType = "Integer", value = "分部id"),
+            @ApiImplicitParam(name = "page", dataType = "Integer", value = "页数"),
+            @ApiImplicitParam(name = "rows", dataType = "Integer", value = "每页数量"),
+    })
     @ApiOperation("直播间预约人员信息")
     @PostMapping("/query/roomUser")
     public HttpResponseResult<PageInfo<RoomReservationUserVo>> queryRoomUser(@RequestBody @Valid RoomReservationUserSearch query) {
         return succeed(imLiveBroadcastRoomService.queryRoomUser(query));
     }
 
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "search", dataType = "String", value = "模糊查询关键字"),
+            @ApiImplicitParam(name = "subjectId", dataType = "Integer", value = "声部id"),
+            @ApiImplicitParam(name = "organId", dataType = "Integer", value = "分部id"),
+    })
+    @ApiOperation(value = "导出训练营详情")
+    @PostMapping(value = "/exportReservationRoomUser")
+    public void exportReservationRoomUser(@RequestBody RoomReservationUserSearch query, HttpServletResponse response) throws IOException {
+        imLiveBroadcastRoomService.exportReservationRoomUser(query, response);
+    }
+
     @ApiOperation("查询房间信息并校验房间是否合规")
     @GetMapping("/queryRoom")
     public HttpResponseResult<ImLiveBroadcastRoomVo> queryRoomAndCheck(@ApiParam(value = "房间uid", required = true) String roomUid,