提交 92f093e0 作者: 张开石

1、添加模板类型的新增、更新、删除接口

父级 b86cff22
......@@ -106,6 +106,11 @@
<version>2.7.0</version> <!-- 与你的 Spring Boot 版本保持一致 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
......
......@@ -16,6 +16,7 @@ public class MyBatisMetaHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
// todo zhangks 没生效
Date now = new Date();
// boolean hasId = metaObject.hasSetter(ID);
boolean hasCreateTime = metaObject.hasSetter(CREATE_TIME);
......
package com.cmeeting.constant;
import java.util.Arrays;
import java.util.List;
/**
* @Description
* @Author zhang kaishi
* @Date 2025/7/18 10:02
**/
public class MeetingTypeConstant {
/** 类型下所有模板自动授权目标用户
* 0-不授权
* 1-授权给所有人
* 2-自定义权限
*/
public static final Integer AUTH_TYPE_NO = 0;
public static final Integer AUTH_TYPE_ALL = 1;
public static final Integer AUTH_TYPE_CUSTOM = 2;
}
package com.cmeeting.constant;
/**
* @Description
* @Author zhang kaishi
* @Date 2025/7/18 10:47
**/
public class ModulePermissionConstant {
/**
* 权限类型
* 0-部门
* 1-用户
*/
public static final Integer TYPE_DEPT = 0;
public static final Integer TYPE_USER = 1;
}
package com.cmeeting.controller;
import com.cmeeting.constant.MeetingTypeConstant;
import com.cmeeting.service.MeetTypeService;
import com.cmeeting.util.R;
import com.cmeeting.vo.MeetingTypeVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
/**
* @Description
* @Author zhang kaishi
* @Date 2025/7/18 9:47
**/
@RestController
@RequestMapping("/meetingType")
public class MeetingTypeController {
@Autowired
private MeetTypeService meetTypeService;
/**
* 新增会议类型
* @param meetingTypeVo 请求参数
*/
@PostMapping("/add")
public R add(@RequestBody @Validated(MeetingTypeVo.AddGroup.class) MeetingTypeVo meetingTypeVo) {
// 参数校验
Integer authType = meetingTypeVo.getAuthType();
if (MeetingTypeConstant.AUTH_TYPE_CUSTOM.equals(authType) && ObjectUtils.isEmpty(meetingTypeVo.getUserIds())) {
return R.error("userIds不能为空");
}
meetTypeService.add(meetingTypeVo);
return R.ok();
}
/**
* 更新会议类型
* @param meetingTypeVo 请求参数
*/
@PostMapping("/update")
public R update(@RequestBody @Validated(MeetingTypeVo.UpdateGroup.class) MeetingTypeVo meetingTypeVo) {
// 参数校验
Integer authType = meetingTypeVo.getAuthType();
if (MeetingTypeConstant.AUTH_TYPE_CUSTOM.equals(authType) && ObjectUtils.isEmpty(meetingTypeVo.getUserIds())) {
return R.error("userIds不能为空");
}
meetTypeService.update(meetingTypeVo);
return R.ok();
}
/**
* 删除会议类型
* @param meetingTypeVo 请求参数
*/
@PostMapping("/delete")
public R delete(@RequestBody @Validated(MeetingTypeVo.DeleteGroup.class) MeetingTypeVo meetingTypeVo) {
meetTypeService.delete(meetingTypeVo.getId());
return R.ok();
}
}
......@@ -2,6 +2,7 @@ package com.cmeeting.mapper.primary;
import com.cmeeting.pojo.MeetType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* @author Administrator
......@@ -9,6 +10,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @createDate 2025-07-17 10:55:32
* @Entity com.cmeeting.pojo.MeetType
*/
@Mapper
public interface MeetTypeMapper extends BaseMapper<MeetType> {
}
......
......@@ -70,4 +70,13 @@ public class MeetType {
*
*/
private String updateUser;
/**
*
*/
private String createUserName;
/**
*
*/
private String updateUserName;
}
\ No newline at end of file
......@@ -2,6 +2,9 @@ package com.cmeeting.service;
import com.cmeeting.pojo.MeetType;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cmeeting.vo.MeetingTypeVo;
import javax.validation.constraints.NotNull;
/**
* @author Administrator
......@@ -10,4 +13,21 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface MeetTypeService extends IService<MeetType> {
/**
* 添加会议类型
* @param meetingTypeVo 请求参数
*/
void add(MeetingTypeVo meetingTypeVo);
/**
* 更新会议类型
* @param meetingTypeVo
*/
void update(MeetingTypeVo meetingTypeVo);
/**
* 根据id删除会议类型
* @param id 会议类型id
*/
void delete(Long id);
}
package com.cmeeting.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cmeeting.ad.entity.RobotSecurityUser;
import com.cmeeting.ad.util.SecurityUtil;
import com.cmeeting.constant.MeetingTypeConstant;
import com.cmeeting.constant.ModulePermissionConstant;
import com.cmeeting.mapper.primary.MeetTemplateEnableMapper;
import com.cmeeting.mapper.primary.MeetingRecordTemplateMapper;
import com.cmeeting.mapper.primary.ModulePermissionMapper;
import com.cmeeting.pojo.MeetTemplateEnable;
import com.cmeeting.pojo.MeetType;
import com.cmeeting.pojo.MeetingRecordTemplate;
import com.cmeeting.pojo.ModulePermission;
import com.cmeeting.service.MeetTypeService;
import com.cmeeting.mapper.primary.MeetTypeMapper;
import com.cmeeting.service.MeetingRecordTemplateService;
import com.cmeeting.service.ModulePermissionService;
import com.cmeeting.util.R;
import com.cmeeting.vo.MeetingTypeVo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* @author Administrator
* @description 针对表【meet_type(会议类型)】的数据库操作Service实现
* @createDate 2025-07-17 10:55:32
*/
@Slf4j
@Service
public class MeetTypeServiceImpl extends ServiceImpl<MeetTypeMapper, MeetType>
implements MeetTypeService{
@Autowired
private MeetTypeMapper meetTypeMapper;
@Autowired
private MeetingRecordTemplateMapper meetingRecordTemplateMapper;
@Autowired
private MeetTemplateEnableMapper meetTemplateEnableMapper;
/**
* 添加会议类型
*
* @param meetingTypeVo 请求参数
*/
@Override
public void add(MeetingTypeVo meetingTypeVo) {
Date now = new Date();
RobotSecurityUser loginUser = SecurityUtil.getUser();
// todo zhangks 校验管理员身份
MeetType meetType = new MeetType();
meetType.setName(meetingTypeVo.getName());
meetType.setPersonalPermission(meetingTypeVo.getPersonalPermission());
meetType.setAuthType(meetingTypeVo.getAuthType());
meetType.setRelId(meetingTypeVo.getRelId());
meetType.setContent(meetingTypeVo.getContent());
meetType.setCreateTime(now);
meetType.setUpdateTime(now);
meetType.setCreateUser(loginUser.getId());
meetType.setUpdateUser(loginUser.getId());
meetType.setCreateUserName(loginUser.getUsername());
meetType.setUpdateUserName(loginUser.getUsername());
meetTypeMapper.insert(meetType);
}
/**
* 更新会议类型
*
* @param meetingTypeVo 请求参数
*/
@Override
public void update(MeetingTypeVo meetingTypeVo) {
Date now = new Date();
RobotSecurityUser loginUser = SecurityUtil.getUser();
MeetType meetType = new MeetType();
meetType.setId(meetingTypeVo.getId());
meetType.setName(meetingTypeVo.getName());
meetType.setPersonalPermission(meetingTypeVo.getPersonalPermission());
meetType.setAuthType(meetingTypeVo.getAuthType());
meetType.setRelId(meetingTypeVo.getRelId());
meetType.setContent(meetingTypeVo.getContent());
meetType.setUpdateTime(now);
meetType.setUpdateUser(loginUser.getId());
meetType.setUpdateUserName(loginUser.getUsername());
meetTypeMapper.updateById(meetType);
}
/**
* 根据id删除会议类型
*
* @param id 会议类型id
*/
@Transactional
@Override
public void delete(Long id) {
// 删除类型
int meetingTypeCount = meetTypeMapper.deleteById(id);
if (meetingTypeCount == 0) {
return;
}
// 删除模板
int templateCount = meetingRecordTemplateMapper.delete(new QueryWrapper<MeetingRecordTemplate>().eq("meeting_type", id));
if (templateCount == 0) {
return;
}
// 查询该类型下的所有模板
List<MeetingRecordTemplate> templateList = meetingRecordTemplateMapper.selectList(new QueryWrapper<MeetingRecordTemplate>()
.select("meeting_type")
.eq("meeting_type", id));
List<Long> templateIdList = templateList.stream().map(item -> item.getMeetingType()).collect(Collectors.toList());
// 删除模板的授权数据
meetTemplateEnableMapper.delete(new QueryWrapper<MeetTemplateEnable>().in("rel_id", templateIdList));
}
}
......
package com.cmeeting.vo;
import lombok.Data;
import org.hibernate.validator.constraints.Range;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @Description 会议类型vo
* @Author zhang kaishi
* @Date 2025/7/18 9:50
**/
@Data
public class MeetingTypeVo {
@NotNull(message = "id不能为空", groups = {UpdateGroup.class, DeleteGroup.class})
private Long id;
// 类型名称
@NotEmpty(message = "name不能为空", groups = {AddGroup.class, UpdateGroup.class})
private String name;
// 允许用户在此类型下自定义创建模板,0-不允许,1-允许(默认)
@Range(min = 0, max = 1, message = "personalPermission只能为0或1", groups = {AddGroup.class, UpdateGroup.class})
private Integer personalPermission;
// 授权类型。0-不授权,1-授权给所有人(默认),2-自定义
@Range(min = 0, max = 2, message = "authType只能为0或1或2", groups = {AddGroup.class, UpdateGroup.class})
private Integer authType;
// 用户id
private List<String> userIds;
// 参考类型id
private Long relId;
// 类型描述的内容
@NotEmpty(message = "content不能为空", groups = {AddGroup.class, UpdateGroup.class})
private String content;
public interface AddGroup{};
public interface UpdateGroup{};
public interface DeleteGroup{};
}
......@@ -16,10 +16,13 @@
<result property="updateTime" column="update_time" />
<result property="createUser" column="create_user" />
<result property="updateUser" column="update_user" />
<result property="createUserName" column="create_user_name" />
<result property="updateUserName" column="update_user_name" />
</resultMap>
<sql id="Base_Column_List">
id, `name`, is_del, personal_permission, auth_type, rel_id,
content, create_time, update_time, create_user, update_user
content, create_time, update_time, create_user, update_user, create_user_name, update_user_name
</sql>
</mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论