From 79021347547006ff53fe3371dab3c2cd281014b1 Mon Sep 17 00:00:00 2001 From: xiangpei <xiangpei@timesnew.cn> Date: 星期三, 05 六月 2024 17:00:22 +0800 Subject: [PATCH] 班级通知 --- src/main/java/com/ycl/jxkg/service/ClassesNotifyService.java | 65 +++++++ src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java | 83 +++++++++ src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java | 50 +++++ src/main/java/com/ycl/jxkg/domain/query/ClassesNotifyQuery.java | 22 ++ src/main/java/com/ycl/jxkg/domain/vo/ClassesNotifyVO.java | 42 ++++ src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java | 119 +++++++++++++ src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java | 2 src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java | 34 +++ src/main/resources/mapper/ClassesNotifyMapper.xml | 46 +++++ src/main/java/com/ycl/jxkg/mapper/ClassesNotifyMapper.java | 34 +++ 10 files changed, 496 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java index 6af2f91..0f1a651 100644 --- a/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java +++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesController.java @@ -65,7 +65,7 @@ return classesService.page(query); } - @GetMapping("/dissolution/{id}") + @PutMapping("/dissolution/{id}") @ApiOperation(value = "瑙f暎", notes = "瑙f暎") @PreAuthorize("hasAuthority('classes:dissolution')") public Result dissolution(@PathVariable("id") Integer id) { diff --git a/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java b/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java new file mode 100644 index 0000000..3a903ac --- /dev/null +++ b/src/main/java/com/ycl/jxkg/controller/admin/ClassesNotifyController.java @@ -0,0 +1,83 @@ +package com.ycl.jxkg.controller.admin; + +import com.ycl.jxkg.group.Update; +import com.ycl.jxkg.group.Add; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import lombok.RequiredArgsConstructor; +import java.util.List; +import org.springframework.validation.annotation.Validated; +import javax.validation.constraints.NotEmpty; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import com.ycl.jxkg.service.ClassesNotifyService; +import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.domain.form.ClassesNotifyForm; +import com.ycl.jxkg.domain.query.ClassesNotifyQuery; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +/** + * 鐝骇閫氱煡 鍓嶇鎺у埗鍣� + * + * @author xp + * @since 2024-06-05 + */ +@Validated +@RequiredArgsConstructor +@Api(value = "鐝骇閫氱煡", tags = "鐝骇閫氱煡绠$悊") +@RestController +@RequestMapping("/api/classes-notify") +public class ClassesNotifyController { + + private final ClassesNotifyService classesNotifyService; + + @PostMapping + @ApiOperation(value = "娣诲姞", notes = "娣诲姞") + @PreAuthorize("hasAuthority('classesNotify:add')") + public Result add(@RequestBody @Validated(Add.class) ClassesNotifyForm form) { + return classesNotifyService.add(form); + } + + @PutMapping + @ApiOperation(value = "淇敼", notes = "淇敼") + @PreAuthorize("hasAuthority('classesNotify:edit')") + public Result update(@RequestBody @Validated(Update.class) ClassesNotifyForm form) { + return classesNotifyService.update(form); + } + + @DeleteMapping("/{id}") + @ApiOperation(value = "ID鍒犻櫎", notes = "ID鍒犻櫎") + @PreAuthorize("hasAuthority('classesNotify:del')") + public Result removeById(@PathVariable("id") String id) { + return classesNotifyService.removeById(id); + } + + @DeleteMapping("/batch") + @ApiOperation(value = "鎵归噺鍒犻櫎", notes = "鎵归噺鍒犻櫎") + @PreAuthorize("hasAuthority('classesNotify:del:batch')") + public Result remove(@RequestBody @NotEmpty(message = "璇烽�夋嫨鏁版嵁") List<String> ids) { + return classesNotifyService.remove(ids); + } + + @GetMapping("/page") + @ApiOperation(value = "鍒嗛〉", notes = "鍒嗛〉") + @PreAuthorize("hasAuthority('classesNotify:page')") + public Result page(ClassesNotifyQuery query) { + return classesNotifyService.page(query); + } + + @GetMapping("/{id}") + @ApiOperation(value = "璇︽儏", notes = "璇︽儏") + @PreAuthorize("hasAuthority('classesNotify:detail')") + public Result detail(@PathVariable("id") Integer id) { + return classesNotifyService.detail(id); + } + + @GetMapping("/list") + @PreAuthorize("hasAuthority('classesNotify:list')") + @ApiOperation(value = "鍒楄〃", notes = "鍒楄〃") + public Result list() { + return classesNotifyService.all(); + } +} diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java b/src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java new file mode 100644 index 0000000..6fe48ed --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/entity/ClassesNotify.java @@ -0,0 +1,34 @@ +package com.ycl.jxkg.domain.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; + +import com.ycl.jxkg.domain.base.AbsEntity; +import lombok.Data; + +/** + * 鐝骇閫氱煡 + * + * @author xp + * @since 2024-06-05 + */ +@Data +@TableName("t_classes_notify") +public class ClassesNotify extends AbsEntity { + + private static final long serialVersionUID = 1L; + + @TableField("classes_id") + /** 鐝骇 */ + private Integer classesId; + + @TableField("teacher_id") + /** 鍙戝嚭閫氱煡鑰� */ + private Integer teacherId; + + @TableField("notify_content") + /** 閫氱煡鍐呭 */ + private String notifyContent; + + +} diff --git a/src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java b/src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java new file mode 100644 index 0000000..b660d7b --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/form/ClassesNotifyForm.java @@ -0,0 +1,50 @@ +package com.ycl.jxkg.domain.form; + +import com.ycl.jxkg.group.Update; +import com.ycl.jxkg.group.Add; +import com.ycl.jxkg.domain.base.AbsForm; +import com.ycl.jxkg.domain.entity.ClassesNotify; +import org.springframework.beans.BeanUtils; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import org.springframework.lang.NonNull; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.Date; + +/** + * 鐝骇閫氱煡琛ㄥ崟 + * + * @author xp + * @since 2024-06-05 + */ +@Data +@ApiModel(value = "ClassesNotify琛ㄥ崟", description = "鐝骇閫氱煡琛ㄥ崟") +public class ClassesNotifyForm extends AbsForm { + + @NotNull(message = "鐝骇涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("鐝骇") + private Integer classesId; + + @NotNull(message = "鍙戝嚭閫氱煡鑰呬笉鑳戒负绌�", groups = {Add.class, Update.class}) + @ApiModelProperty("鍙戝嚭閫氱煡鑰�") + private Integer teacherId; + + @NotBlank(message = "閫氱煡鍐呭涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("閫氱煡鍐呭") + private String notifyContent; + + @NotNull(message = "涓嶈兘涓虹┖", groups = {Add.class, Update.class}) + @ApiModelProperty("") + private Date createTime; + + public static ClassesNotify getEntityByForm(@NonNull ClassesNotifyForm form, ClassesNotify entity) { + if(entity == null) { + entity = new ClassesNotify(); + } + BeanUtils.copyProperties(form, entity); + return entity; + } + +} diff --git a/src/main/java/com/ycl/jxkg/domain/query/ClassesNotifyQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ClassesNotifyQuery.java new file mode 100644 index 0000000..1fb6795 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/query/ClassesNotifyQuery.java @@ -0,0 +1,22 @@ +package com.ycl.jxkg.domain.query; + +import com.ycl.jxkg.domain.base.AbsQuery; +import java.util.List; +import org.springframework.lang.NonNull; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 鐝骇閫氱煡鏌ヨ + * + * @author xp + * @since 2024-06-05 + */ +@Data +@ApiModel(value = "ClassesNotify鏌ヨ", description = "鐝骇閫氱煡鏌ヨ") +public class ClassesNotifyQuery extends AbsQuery { +} + diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ClassesNotifyVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ClassesNotifyVO.java new file mode 100644 index 0000000..84ad885 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/domain/vo/ClassesNotifyVO.java @@ -0,0 +1,42 @@ +package com.ycl.jxkg.domain.vo; + +import com.ycl.jxkg.domain.base.AbsVo; +import com.ycl.jxkg.domain.entity.ClassesNotify; +import java.util.List; +import org.springframework.lang.NonNull; +import org.springframework.beans.BeanUtils; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.Date; + +/** + * 鐝骇閫氱煡灞曠ず + * + * @author xp + * @since 2024-06-05 + */ +@Data +public class ClassesNotifyVO extends AbsVo { + + /** 鐝骇 */ + private Integer classesId; + + /** 鍙戝嚭閫氱煡鑰� */ + private Integer teacherId; + + /** 閫氱煡鍐呭 */ + private String notifyContent; + + /** */ + private Date createTime; + + public static ClassesNotifyVO getVoByEntity(@NonNull ClassesNotify entity, ClassesNotifyVO vo) { + if(vo == null) { + vo = new ClassesNotifyVO(); + } + BeanUtils.copyProperties(entity, vo); + return vo; + } + +} diff --git a/src/main/java/com/ycl/jxkg/mapper/ClassesNotifyMapper.java b/src/main/java/com/ycl/jxkg/mapper/ClassesNotifyMapper.java new file mode 100644 index 0000000..a6d55a0 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/mapper/ClassesNotifyMapper.java @@ -0,0 +1,34 @@ +package com.ycl.jxkg.mapper; + +import com.ycl.jxkg.domain.entity.ClassesNotify; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ycl.jxkg.domain.query.ClassesNotifyQuery; +import com.ycl.jxkg.domain.vo.ClassesNotifyVO; +import com.ycl.jxkg.domain.form.ClassesNotifyForm; +import java.util.List; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * 鐝骇閫氱煡 Mapper 鎺ュ彛 + * + * @author xp + * @since 2024-06-05 + */ +@Mapper +public interface ClassesNotifyMapper extends BaseMapper<ClassesNotify> { + + /** + * id鏌ユ壘鐝骇閫氱煡 + * @param id + * @return + */ + ClassesNotifyVO getById(Integer id); + + /** + * 鍒嗛〉 + */ + IPage getPage(IPage page, @Param("query") ClassesNotifyQuery query); + +} diff --git a/src/main/java/com/ycl/jxkg/service/ClassesNotifyService.java b/src/main/java/com/ycl/jxkg/service/ClassesNotifyService.java new file mode 100644 index 0000000..ce849c1 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/service/ClassesNotifyService.java @@ -0,0 +1,65 @@ +package com.ycl.jxkg.service; + +import com.ycl.jxkg.domain.entity.ClassesNotify; +import com.baomidou.mybatisplus.extension.service.IService; +import com.ycl.jxkg.base.Result; +import com.ycl.jxkg.domain.form.ClassesNotifyForm; +import com.ycl.jxkg.domain.query.ClassesNotifyQuery; +import java.util.List; + +/** + * 鐝骇閫氱煡 鏈嶅姟绫� + * + * @author xp + * @since 2024-06-05 + */ +public interface ClassesNotifyService extends IService<ClassesNotify> { + + /** + * 娣诲姞 + * @param form + * @return + */ + Result add(ClassesNotifyForm form); + + /** + * 淇敼 + * @param form + * @return + */ + Result update(ClassesNotifyForm form); + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + Result remove(List<String> ids); + + /** + * id鍒犻櫎 + * @param id + * @return + */ + Result removeById(String id); + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + Result page(ClassesNotifyQuery query); + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + Result detail(Integer id); + + /** + * 鍒楄〃 + * @return + */ + Result all(); +} diff --git a/src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java new file mode 100644 index 0000000..7502ed6 --- /dev/null +++ b/src/main/java/com/ycl/jxkg/service/impl/ClassesNotifyServiceImpl.java @@ -0,0 +1,119 @@ +package com.ycl.jxkg.service.impl; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.ycl.jxkg.domain.entity.ClassesNotify; +import com.ycl.jxkg.mapper.ClassesNotifyMapper; +import com.ycl.jxkg.service.ClassesNotifyService; +import com.ycl.jxkg.base.Result; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ycl.jxkg.domain.form.ClassesNotifyForm; +import com.ycl.jxkg.domain.vo.ClassesNotifyVO; +import com.ycl.jxkg.domain.query.ClassesNotifyQuery; +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import com.ycl.jxkg.utils.PageUtil; +import org.springframework.beans.BeanUtils; +import org.springframework.util.Assert; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * 鐝骇閫氱煡 鏈嶅姟瀹炵幇绫� + * + * @author xp + * @since 2024-06-05 + */ +@Service +@RequiredArgsConstructor +public class ClassesNotifyServiceImpl extends ServiceImpl<ClassesNotifyMapper, ClassesNotify> implements ClassesNotifyService { + + private final ClassesNotifyMapper classesNotifyMapper; + + /** + * 娣诲姞 + * @param form + * @return + */ + @Override + public Result add(ClassesNotifyForm form) { + ClassesNotify entity = ClassesNotifyForm.getEntityByForm(form, null); + baseMapper.insert(entity); + return Result.ok("娣诲姞鎴愬姛"); + } + + /** + * 淇敼 + * @param form + * @return + */ + @Override + public Result update(ClassesNotifyForm form) { + ClassesNotify entity = baseMapper.selectById(form.getId()); + + // 涓虹┖鎶汭llegalArgumentException锛屽仛鍏ㄥ眬寮傚父澶勭悊 + Assert.notNull(entity, "璁板綍涓嶅瓨鍦�"); + BeanUtils.copyProperties(form, entity); + baseMapper.updateById(entity); + return Result.ok("淇敼鎴愬姛"); + } + + /** + * 鎵归噺鍒犻櫎 + * @param ids + * @return + */ + @Override + public Result remove(List<String> ids) { + baseMapper.deleteBatchIds(ids); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * id鍒犻櫎 + * @param id + * @return + */ + @Override + public Result removeById(String id) { + baseMapper.deleteById(id); + return Result.ok("鍒犻櫎鎴愬姛"); + } + + /** + * 鍒嗛〉鏌ヨ + * @param query + * @return + */ + @Override + public Result page(ClassesNotifyQuery query) { + IPage<ClassesNotifyVO> page = PageUtil.getPage(query, ClassesNotifyVO.class); + baseMapper.getPage(page, query); + return Result.ok().data(page.getRecords()).total(page.getTotal()); + } + + /** + * 鏍规嵁id鏌ユ壘 + * @param id + * @return + */ + @Override + public Result detail(Integer id) { + ClassesNotifyVO vo = baseMapper.getById(id); + Assert.notNull(vo, "璁板綍涓嶅瓨鍦�"); + return Result.ok().data(vo); + } + + /** + * 鍒楄〃 + * @return + */ + @Override + public Result all() { + List<ClassesNotify> entities = baseMapper.selectList(null); + List<ClassesNotifyVO> vos = entities.stream() + .map(entity -> ClassesNotifyVO.getVoByEntity(entity, null)) + .collect(Collectors.toList()); + return Result.ok().data(vos); + } +} diff --git a/src/main/resources/mapper/ClassesNotifyMapper.xml b/src/main/resources/mapper/ClassesNotifyMapper.xml new file mode 100644 index 0000000..95e4b83 --- /dev/null +++ b/src/main/resources/mapper/ClassesNotifyMapper.xml @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ycl.jxkg.mapper.ClassesNotifyMapper"> + + <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 --> + <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.vo.ClassesNotifyVO"> + <result column="classes_id" property="classesId" /> + <result column="teacher_id" property="teacherId" /> + <result column="notify_content" property="notifyContent" /> + <result column="create_time" property="createTime" /> + </resultMap> + + + + + + + + <select id="getById" resultMap="BaseResultMap"> + SELECT + TCN.classes_id, + TCN.teacher_id, + TCN.notify_content, + TCN.create_time, + TCN.id + FROM + t_classes_notify TCN + WHERE + TCN.id = #{id} AND TCN.deleted = 0 + </select> + + + <select id="getPage" resultMap="BaseResultMap"> + SELECT + TCN.classes_id, + TCN.teacher_id, + TCN.notify_content, + TCN.create_time, + TCN.id + FROM + t_classes_notify TCN + WHERE + TCN.deleted = 0 + </select> + +</mapper> -- Gitblit v1.8.0