framework/src/main/java/com/yuanchu/mom/config/OpenFifer.java
@@ -1,13 +1,29 @@ package com.yuanchu.mom.config; import cn.hutool.log.Log; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import javax.annotation.Resource; import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.List; @Configuration public class OpenFifer extends WebMvcConfigurationSupport { @@ -30,6 +46,9 @@ @Value("${wordUrl}") private String wordUrl; @Value("${spring.jackson.date-format}") private String pattern; public void addResourceHandlers(ResourceHandlerRegistry registry) { //é ç½®æ¦æªå¨è®¿é®éæèµæº registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/"); @@ -49,4 +68,29 @@ registry.addInterceptor(logConfig).addPathPatterns("/**"); super.addInterceptors(registry); } // å ¨å±æ ¼å¼åå¤ç @Override protected void extendMessageConverters(List<HttpMessageConverter<?>> converters) { // è¿åç»å端å»é¤null Jackson2ObjectMapperBuilder json = Jackson2ObjectMapperBuilder.json(); MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); //localDateTimeæ ¼å¼å JavaTimeModule module = new JavaTimeModule(); LocalDateTimeDeserializer dateTimeDeserializer = new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(pattern)); LocalDateTimeSerializer dateTimeSerializer = new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(pattern)); module.addDeserializer(LocalDateTime.class, dateTimeDeserializer); module.addSerializer(LocalDateTime.class, dateTimeSerializer); ObjectMapper objectMapper = json.modules(module) .featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS).build(); //dateæ¶é´æ ¼å¼å objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); objectMapper.setDateFormat(new SimpleDateFormat(pattern)); // è®¾ç½®æ ¼å¼åå 容 converter.setObjectMapper(objectMapper); converters.add(0, converter); } } framework/src/main/java/com/yuanchu/mom/controller/InformationNotificationController.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,66 @@ package com.yuanchu.mom.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.mapper.InformationNotificationMapper; import com.yuanchu.mom.pojo.InformationNotification; import com.yuanchu.mom.pojo.InformationNotificationDto; import com.yuanchu.mom.service.InformationNotificationService; import com.yuanchu.mom.vo.Result; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.stereotype.Controller; import java.util.List; /** * <p> * æ¶æ¯éç¥ å端æ§å¶å¨ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-04-23 02:14:30 */ @Api(tags = "æ¶æ¯éç¥") @RestController @RequestMapping("/informationNotification") public class InformationNotificationController { @Autowired private InformationNotificationService informationNotificationService; @ApiOperation(value = "æ»å¨å页æ¥è¯¢") @GetMapping("page") public Result<?> getPage(Long size, Long current, String messageType) { return Result.success(informationNotificationService.getPage(new Page<>(current, size), messageType)); } @ApiOperation(value = "æ´æ°æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ï¼") @PutMapping("updateMessageStatus") public Result<?> updateMessageStatus(@RequestBody InformationNotification informationNotification) { informationNotificationService.updateById(informationNotification); return Result.success(); } @ApiOperation(value = "æ è®°ææä¿¡æ¯ä¸ºå·²è¯»/å 餿æå·²è¯»æ¶æ¯") @PutMapping("informationReadOrDelete/{isMarkAllInformationRead}") public Result<?> markAllInformationReadOrDeleteAllReadMessages(@PathVariable("isMarkAllInformationRead") Boolean isMarkAllInformationRead) { informationNotificationService.markAllInformationReadOrDeleteAllReadMessages(isMarkAllInformationRead); return Result.success(); } @ApiOperation(value = "æ ¹æ®Idå 餿°æ®") @DeleteMapping("deleteDataBasedOnId") public Result<?> deleteDataBasedOnId(Integer id) { informationNotificationService.removeById(id); return Result.success(); } @ApiOperation(value = "æ¥è¯¢æ¯å¦å卿ªè¯»æ°æ®") @GetMapping("checkForUnreadData") public Result<?> checkForUnreadData() { return Result.success(informationNotificationService.checkForUnreadData()); } } framework/src/main/java/com/yuanchu/mom/mapper/InformationNotificationMapper.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,22 @@ package com.yuanchu.mom.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.pojo.InformationNotification; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.yuanchu.mom.pojo.InformationNotificationDto; import java.util.List; /** * <p> * æ¶æ¯éç¥ Mapper æ¥å£ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-04-23 02:14:30 */ public interface InformationNotificationMapper extends BaseMapper<InformationNotification> { IPage<InformationNotificationDto> getPage(Page page, String messageType); } framework/src/main/java/com/yuanchu/mom/pojo/InformationNotification.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ package com.yuanchu.mom.pojo; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; /** * <p> * æ¶æ¯éç¥ * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-04-23 02:14:30 */ @Getter @Setter @TableName("information_notification") @ApiModel(value = "InformationNotification对象", description = "æ¶æ¯éç¥") public class InformationNotification implements Serializable { private static final long serialVersionUID = 1L; @ApiModelProperty("主é®ID") private Integer id; @ApiModelProperty("å建人") private String createUser; @ApiModelProperty("æ´æ°æ¶é´") @TableField(fill = FieldFill.INSERT_UPDATE) private LocalDateTime updateTime; @ApiModelProperty("å建æ¶é´/åéæ¶é´") @TableField(fill = FieldFill.INSERT) private LocalDateTime createTime; @ApiModelProperty("å¾ åãæ¥æ¶ãå®¡æ ¸ãæ¹åãé¢è¦æéãéç¥å ¬å") private String messageType; @ApiModelProperty("主é¢") private String theme; @ApiModelProperty("å 容") private String content; @ApiModelProperty("åé人Id") private Integer senderId; @ApiModelProperty("æ¶ä»¶äºº") private Integer consigneeId; @ApiModelProperty("æ¥çç¶æï¼å·²è¯»ï¼æªè¯»") private Boolean viewStatus; @ApiModelProperty("æ¶æ¯ç¶æï¼æç»ãæ¥æ¶ï¼ï¼æ ¹æ®æ¶æ¯ç±»åå±ç¤ºï¼") private Boolean messageStatus; @ApiModelProperty("跳转路å¾") private String jumpPath; @ApiModelProperty("跳转Id") private String jumpId; } framework/src/main/java/com/yuanchu/mom/pojo/InformationNotificationDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ package com.yuanchu.mom.pojo; import lombok.Data; @Data public class InformationNotificationDto extends InformationNotification{ private String senderUser; private String consigneeUser; } framework/src/main/java/com/yuanchu/mom/service/InformationNotificationService.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,26 @@ package com.yuanchu.mom.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.pojo.InformationNotification; import com.baomidou.mybatisplus.extension.service.IService; import com.yuanchu.mom.pojo.InformationNotificationDto; import java.util.List; /** * <p> * æ¶æ¯éç¥ æå¡ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-04-23 02:14:30 */ public interface InformationNotificationService extends IService<InformationNotification> { IPage<InformationNotificationDto> getPage(Page page, String messageType); void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead); Boolean checkForUnreadData(); } framework/src/main/java/com/yuanchu/mom/service/impl/InformationNotificationServiceImpl.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,61 @@ package com.yuanchu.mom.service.impl; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.yuanchu.mom.common.GetLook; import com.yuanchu.mom.pojo.InformationNotification; import com.yuanchu.mom.mapper.InformationNotificationMapper; import com.yuanchu.mom.pojo.InformationNotificationDto; import com.yuanchu.mom.service.InformationNotificationService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; import java.util.Map; /** * <p> * æ¶æ¯éç¥ æå¡å®ç°ç±» * </p> * * @author æ±èéµ·éç½ç»ç§ææéå ¬å¸ * @since 2024-04-23 02:14:30 */ @Service public class InformationNotificationServiceImpl extends ServiceImpl<InformationNotificationMapper, InformationNotification> implements InformationNotificationService { @Autowired private GetLook getLook; @Override public IPage<InformationNotificationDto> getPage(Page page, String messageType) { return baseMapper.getPage(page, messageType); } @Override public void markAllInformationReadOrDeleteAllReadMessages(Boolean isMarkAllInformationRead) { Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectInsOrderParameter"); if (isMarkAllInformationRead) { baseMapper.update(new InformationNotification(), Wrappers.<InformationNotification>lambdaUpdate() .set(InformationNotification::getViewStatus, true) .eq(InformationNotification::getConsigneeId, map1.get("userId"))); } else { baseMapper.delete(Wrappers.<InformationNotification>lambdaUpdate() .eq(InformationNotification::getConsigneeId, map1.get("userId")) .eq(InformationNotification::getViewStatus, true)); } } @Override public Boolean checkForUnreadData() { Map<String, Integer> map1 = getLook.selectPowerByMethodAndUserId("selectInsOrderParameter"); List<InformationNotification> informationNotifications = baseMapper.selectList( Wrappers.<InformationNotification>lambdaQuery() .eq(InformationNotification::getConsigneeId, map1.get("userId")) .eq(InformationNotification::getViewStatus, false) .last("limit 1")); return !informationNotifications.isEmpty(); } } framework/src/main/resources/mapper/InformationNotificationMapper.xml
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,14 @@ <?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.yuanchu.mom.mapper.InformationNotificationMapper"> <select id="getPage" resultType="com.yuanchu.mom.pojo.InformationNotificationDto"> select i.*, u.name senderUser, u2.name consigneeUserr from information_notification i left join user u on i.sender_id = u.id left join user u2 on u2.id = i.consignee_id <if test="messageType != '' and messageType != null"> where i.message_type = #{messageType} </if> </select> </mapper> system-run/src/main/java/com/yuanchu/mom/CodeGenerator.java
@@ -19,11 +19,10 @@ public static String database_username = "root"; public static String database_password= "123456"; public static String author = "æ±èéµ·éç½ç»ç§ææéå ¬å¸"; public static String model_name = "/cnas-server"; // å¦æä¸ºåå¸å¼å¡«å模ååç§°ï¼å¦æä¸æ¯åå¸å¼ä¸ºç©ºå³å¯ public static String model_name = "/framework"; // å¦æä¸ºåå¸å¼å¡«å模ååç§°ï¼å¦æä¸æ¯åå¸å¼ä¸ºç©ºå³å¯ public static String setParent = "com.yuanchu.mom"; // å è·¯å¾ public static void main(String[] args) { String projectPath = System.getProperty("user.dir"); System.out.println(projectPath+"==================="); FastAutoGenerator.create(database_url, database_username, database_password) // å ¨å±é ç½® .globalConfig(builder -> { @@ -69,6 +68,7 @@ // Controller çç¥é ç½® .controllerBuilder() .enableFileOverride() // è¦çå·²çææä»¶ .enableRestStyle() // å¼å¯çæ@RestController æ§å¶å¨ ; }) //5ãæ¨¡æ¿å¼æ system-run/src/main/resources/application.yml
@@ -3,6 +3,9 @@ spring: profiles: active: dev jackson: # å ¨å±æ¶é´å¤ç LocalDateTimeæ¶é´åºåå· date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 servlet: multipart: max-file-size: 20MB # å个æä»¶å¤§å°