MrShi
2025-03-12 69a1b3bf45738f048361ee4ccb6bdc64fce35720
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/MeetingCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,178 @@
package com.doumee.cloud.admin;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.doumee.api.BaseController;
import com.doumee.service.business.third.model.ApiResponse;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.QrCodeUtils;
import com.doumee.dao.admin.request.BusinessOverDTO;
import com.doumee.dao.business.model.Bookings;
import com.doumee.dao.web.request.BookingsRequest;
import com.doumee.dao.web.request.MeetingPageRequest;
import com.doumee.dao.web.response.MeetingDetailResponse;
import com.doumee.dao.web.response.MeetingListResponse;
import com.doumee.dao.web.response.MonthDataResponse;
import com.doumee.service.business.BookingsService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2024/4/29 9:42
 */
@Api(tags = "会议室预定信息表")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/meeting")
public class MeetingCloudController extends BaseController {
    @Autowired
    private BookingsService bookingsService;
    @ApiOperation(value = "当月会议表", notes = "当月会议表")
    @GetMapping("/monthMeeting")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "yearMonth", value = "年月  yyyy-MM", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "queryType", value = "查询类别:1=我参与的;2=我预约的;3管理员查看全部 ", required = true)
    })
    public ApiResponse<List<MonthDataResponse>> monthDay(@RequestParam String yearMonth
            ,@RequestParam(required = false) Integer queryType
            ,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        List<String> dataList = DateUtil.getDayByMonth(yearMonth);
        List<MonthDataResponse> monthDataResponseList = new ArrayList<>();
        List<Bookings> bookings = bookingsService.getMyBookings(user.getId(),yearMonth,queryType);
        for (String str:dataList) {
            MonthDataResponse  monthDataResponse = new MonthDataResponse();
            monthDataResponse.setWeekMsg(DateUtil.getWeek(DateUtil.StringToDate(str,"yyyy-MM-dd")).getChineseName());
            monthDataResponse.setMonthDate(str);
            monthDataResponse.setMeetingNum(bookings.stream()
                    .filter(b-> DateUtil.dateToString(b.getStartTime(),"yyyy-MM-dd").equals(str)).collect(Collectors.toList()).size());
            monthDataResponseList.add(monthDataResponse);
        }
        return  ApiResponse.success("查询成功",monthDataResponseList);
    }
    @ApiOperation("我的会议列表")
    @PostMapping("/myMeetingPage")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse<IPage<MeetingListResponse>> myMeetingPage(@RequestBody PageWrap<MeetingPageRequest> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = this.getLoginUser(token);
        //(LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
        pageWrap.getModel().setUserId(user.getId());
        IPage<MeetingListResponse> page = bookingsService.getMyMeetingPage(pageWrap);
        return ApiResponse.success("查询成功",page);
    }
    @ApiOperation("会议详情")
    @GetMapping("/meetingDetail")
    @ApiImplicitParams({
//            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
    })
    public ApiResponse<MeetingDetailResponse> meetingDetail( @RequestHeader(Constants.HEADER_USER_TOKEN) String token,@RequestParam Integer id) {
        return ApiResponse.success("查询成功", bookingsService.getMeetingDetail(id,getLoginUser(token).getId()));
    }
    @ApiOperation("获取会议开门二维码")
    @GetMapping("/getQrCode")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
    })
    public ApiResponse<String> getQrCode(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        return ApiResponse.success("查询成功", bookingsService.getQrCode(id,user.getId()));
    }
    @ApiOperation("获取会议开门二维码-图片流")
    @GetMapping("/getQrCodeImg")
    @ApiImplicitParams({
//            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public void getQrCodeImg(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token, HttpServletResponse response) throws  Exception {
        LoginUserInfo user = getLoginUser(token);
        response.setHeader("Cache-Control", "no-store, no-cache");
        response.setContentType("image/jpeg");
        String content =bookingsService.getQrCode(id,user.getId());
        QrCodeUtils.encode(content,null, response.getOutputStream(), true);
    }
    @ApiOperation("会议预约")
    @PostMapping("/reservationMeeting")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse<Integer> reservationMeeting(@RequestBody BookingsRequest bookingsRequest,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        bookingsRequest.setCreator(user.getId());
        bookingsRequest.setEditor(user.getId());
        bookingsRequest.setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success("操作成功",bookingsService.reservationMeeting(bookingsRequest));
    }
    @ApiOperation("取消会议预约")
    @PostMapping("/reservationCancel")
    public ApiResponse reservationCancel(@RequestBody BusinessOverDTO businessOverDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        businessOverDTO.setUserId(user.getId());
        bookingsService.reservationCancel(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("提前开始会议")
    @PostMapping("/startEarly")
    public ApiResponse startEarly(@RequestBody BusinessOverDTO businessOverDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        businessOverDTO.setUserId(user.getId());
        businessOverDTO.setStartType(Constants.ZERO);
        bookingsService.startEarly(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("开始会议")
    @PostMapping("/start")
    public ApiResponse start(@RequestBody BusinessOverDTO businessOverDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        businessOverDTO.setUserId(user.getId());
        businessOverDTO.setStartType(Constants.ONE);
        bookingsService.start(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("提前结束会议")
    @PostMapping("/reservationOver")
    public ApiResponse reservationOver(@RequestBody BusinessOverDTO businessOverDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        businessOverDTO.setUserId(user.getId());
        bookingsService.reservationOver(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
}