青羊经侦大队-数据平台
baizonghao
2023-05-22 aa8836a65e97e297340fff3a42615f0a36f314e7
src/main/java/com/example/jz/controller/GroupController.java
@@ -1,88 +1,154 @@
package com.example.jz.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.api.ApiController;
import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.jz.modle.R;
import com.example.jz.modle.entity.Announcement;
import com.example.jz.modle.entity.Group;
import com.example.jz.modle.entity.GroupUser;
import com.example.jz.modle.vo.GroupMessageVo;
import com.example.jz.modle.vo.GroupUserVo;
import com.example.jz.service.GroupService;
import com.example.jz.service.GroupUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.io.Serializable;
import java.util.List;
/**
 * 群表
(Group)表控制层
 * (Group)表控制层
 *
 * @author makejava
 * @since 2022-07-11 16:35:57
 */
@RestController
@RequestMapping("group")
@Api(tags = "群组接口")
public class GroupController extends ApiController {
    /**
     * 服务对象
     */
    @Resource
    private GroupService groupService;
    @Autowired
    public void setGroupService(GroupService groupService) {
        this.groupService = groupService;
    }
    @Autowired
    GroupUserService groupUserService;
    /**
     * 分页查询所有数据
     * 根据群组id获取当前群组所有的消息 修改
     *
     * @param page 分页对象
     * @param group 查询实体
     * @return 所有数据
     * @param id 群组id
     * @return 当前群组所有的消息
     */
    @GetMapping
    public R selectAll(Page<Group> page, Group group) {
        return success(this.groupService.page(page, new QueryWrapper<>(group)));
    @GetMapping("getAllMessage")
    @ApiOperation(value = "获取当前群组所有的消息")
    @ApiImplicitParam(name = "id", value = "群组id", required = true, dataType = "Integer")
    public R<List<GroupMessageVo>> getAllMessage(@RequestParam("id") Integer id) {
        return R.ok(groupService.getAllMessage(id));
    }
//    @GetMapping("deleteGroupMessage")
//    @ApiOperation(value = "删除群消息")
//    @ApiImplicitParam(name = "messageId", value = "消息id", required = true, dataType = "Integer")
//    public R deleteMessage(@RequestParam("messageId") Integer messageId){
//        boolean flag = groupService.removeById(messageId);
//        return flag ? R.ok(true, "删除成功") : R.failed("删除成功");
//    }
    @GetMapping("getGroupMessage")
    @ApiOperation(value = "获取当前群组消息通过成员或者内容")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "report", value = "群组id", required = true, dataType = "Integer"),
            @ApiImplicitParam(name = "context", value = "群组id", required = true, dataType = "String")
    })
    public R<List<GroupMessageVo>> get(@RequestParam(value = "report", required = false) String reporter, @RequestParam(value = "context", required = false) String context, Integer groupId) {
        return R.ok(groupService.getByCondition(reporter, context, groupId));
    }
    @PutMapping("banSpeech")
    @ApiOperation(value = "禁言")
    @ApiImplicitParam(name = "id", value = "群组id", required = true, dataType = "Integer")
    public R setBanSpeech(@RequestParam("id") Integer id, @RequestParam("groupId") Integer groupId) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech", 1).eq("user_id", id).eq("group_id", groupId)));
    }
    @PutMapping("allowSpeech")
    @ApiOperation(value = "允许发言")
    @ApiImplicitParam(name = "id", value = "群组id", required = true, dataType = "Integer")
    public R setAllowSpeech(@RequestParam("id") Integer id, @RequestParam("groupId") Integer groupId) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech", 0).eq("user_id", id).eq("group_id", groupId)));
    }
    @PutMapping("banSpeechAll")
    @ApiOperation(value = "全部禁言")
    public R setBanSpeechAll(@RequestParam("id") Integer id) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech", 1).eq("group_id", id)));
    }
    @PutMapping("banSpeechRemark")
    @ApiOperation(value = "全部允许发言")
    public R setBanSpeechRemark(@RequestParam("id") Integer id) {
        return R.ok(groupUserService.update(new UpdateWrapper<GroupUser>().set("ban_speech", 0).eq("group_id", id)));
    }
    /**
     * 通过主键查询单条数据
     * 根据群组id获取当前群组所有公告
     *
     * @param id 主键
     * @return 单条数据
     * @param id 群组id
     * @return 当前群组所有的消息
     */
    @GetMapping("{id}")
    public R selectOne(@PathVariable Serializable id) {
        return success(this.groupService.getById(id));
    @GetMapping("getAllNotice")
    @ApiOperation(value = "获取当前群组所有的公告")
    @ApiImplicitParam(name = "id", value = "群组id", required = true, dataType = "Integer")
    public R<List<Announcement>> getAllNotice(@RequestParam("id") Integer id) {
        return R.ok(groupService.getAllNotice(id));
    }
    /**
     * 新增数据
     * 发送信息
     *
     * @param group 实体对象
     * @return 新增结果
     * @param id   群组id
     * @param text 消息内容
     * @return 发送结果
     */
    @PostMapping
    public R insert(@RequestBody Group group) {
        return success(this.groupService.save(group));
    @GetMapping("sendMessage")
    @ApiOperation(value = "发送信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "text", value = "消息文本", required = true, dataType = "String"),
            @ApiImplicitParam(name = "id", value = "群组id", required = true, dataType = "Integer")
    })
    public R<Boolean> sendMessage(@RequestParam("id") Integer id, @RequestParam("text") String text) {
        if (StringUtils.isBlank(text)) {
            return R.failed("文本为空");
        }
        return R.ok(groupService.sendMessage(id, text));
    }
    /**
     * 修改数据
     * 获取群组所有人员列表 修改
     *
     * @param group 实体对象
     * @return 修改结果
     * @param id 群组id
     * @return 群组所有人员列表
     */
    @PutMapping
    public R update(@RequestBody Group group) {
        return success(this.groupService.updateById(group));
    @GetMapping("getAllUser")
    @ApiOperation(value = "获取群组所有人员列表")
    @ApiImplicitParam(name = "id", value = "群组id", required = true, dataType = "Integer")
    public R<List<GroupUserVo>> getAllUser(@RequestParam("id") Integer id) {
        return R.ok(groupService.getAllUser(id));
    }
    /**
     * 删除数据
     *
     * @param idList 主键结合
     * @return 删除结果
     */
    @DeleteMapping
    public R delete(@RequestParam("idList") List<Long> idList) {
        return success(this.groupService.removeByIds(idList));
    @GetMapping("getAllGroupName")
    @ApiOperation(value = "获取群组名称")
    public R<List<Group>> getAllGroupName() {
        return R.ok(groupService.list());
    }
}
}