当前位置: 首页 > news >正文

学做网站论坛账号免费b2b网站推广有哪些

学做网站论坛账号,免费b2b网站推广有哪些,wordpress前台管理员,开源网站github### 使用Spring Boot实现OA通知公告模块 使用Spring Boot框架实现一个支持多种形式公告发布、设置发布时间和有效期,以及公告发布后推送通知的模块。 #### 项目结构 结构组织项目: OA_Notification_Module/ ├── src/ │ ├── main/ │ │ …

### 使用Spring Boot实现OA通知公告模块

使用Spring Boot框架实现一个支持多种形式公告发布、设置发布时间和有效期,以及公告发布后推送通知的模块。

#### 项目结构

结构组织项目:

```
OA_Notification_Module/
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/
│   │   │       └── example/
│   │   │           └── oamodule/
│   │   │               ├── controller/
│   │   │               │   └── AnnouncementController.java
│   │   │               ├── model/
│   │   │               │   └── Announcement.java
│   │   │               ├── repository/
│   │   │               │   └── AnnouncementRepository.java
│   │   │               ├── service/
│   │   │               │   ├── AnnouncementService.java
│   │   │               │   └── NotificationService.java
│   │   │               └── OaNotificationModuleApplication.java
│   │   └── resources/
│   │       ├── application.properties
│   └── test/
│       └── java/
└── pom.xml
```

#### 1. `Announcement` 模型类

```java
package com.example.oamodule.model;

import javax.persistence.Entity;
import javax.persistence.Id;
import java.time.LocalDateTime;

@Entity
public class Announcement {
    @Id
    private String id;
    private String type; // TEXT, IMAGE, VIDEO
    private String content;
    private LocalDateTime publishTime;
    private LocalDateTime expiryTime;

    public Announcement() {}

    public Announcement(String id, String type, String content, LocalDateTime publishTime, LocalDateTime expiryTime) {
        this.id = id;
        this.type = type;
        this.content = content;
        this.publishTime = publishTime;
        this.expiryTime = expiryTime;
    }

    // Getters and Setters
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public LocalDateTime getPublishTime() {
        return publishTime;
    }

    public void setPublishTime(LocalDateTime publishTime) {
        this.publishTime = publishTime;
    }

    public LocalDateTime getExpiryTime() {
        return expiryTime;
    }

    public void setExpiryTime(LocalDateTime expiryTime) {
        this.expiryTime = expiryTime;
    }

    public boolean isExpired() {
        return LocalDateTime.now().isAfter(expiryTime);
    }
}
```

#### 2. `AnnouncementRepository` 接口

```java
package com.example.oamodule.repository;

import com.example.oamodule.model.Announcement;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;

@Repository
public interface AnnouncementRepository extends JpaRepository<Announcement, String> {
    List<Announcement> findByExpiryTimeAfter(LocalDateTime now);
}
```

#### 3. `AnnouncementService` 服务类

```java
package com.example.oamodule.service;

import com.example.oamodule.model.Announcement;
import com.example.oamodule.repository.AnnouncementRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class AnnouncementService {
    @Autowired
    private AnnouncementRepository announcementRepository;

    public void createAnnouncement(String id, String type, String content, LocalDateTime publishTime, LocalDateTime expiryTime) {
        Announcement announcement = new Announcement(id, type, content, publishTime, expiryTime);
        announcementRepository.save(announcement);
        System.out.println("Announcement created: " + announcement.getId());
    }

    public List<Announcement> getAllAnnouncements() {
        return announcementRepository.findAll();
    }

    public List<Announcement> getActiveAnnouncements() {
        return announcementRepository.findByExpiryTimeAfter(LocalDateTime.now());
    }

    public void removeExpiredAnnouncements() {
        List<Announcement> announcements = announcementRepository.findAll();
        for (Announcement announcement : announcements) {
            if (announcement.isExpired()) {
                announcementRepository.delete(announcement);
            }
        }
    }
}
```

#### 4. `NotificationService` 服务类

```java
package com.example.oamodule.service;

import com.example.oamodule.model.Announcement;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class NotificationService {
    @Autowired
    private JavaMailSender mailSender;

    public void sendNotifications(List<Announcement> announcements) {
        for (Announcement announcement : announcements) {
            // 模拟推送到电子邮件
            SimpleMailMessage message = new SimpleMailMessage();
            message.setTo("employee@example.com");
            message.setSubject("New Announcement: " + announcement.getType());
            message.setText(announcement.getContent());
            mailSender.send(message);
            System.out.println("Sent notification for announcement: " + announcement.getId());
        }
    }
}
```

#### 5. `AnnouncementController` 控制器类

```java
package com.example.oamodule.controller;

import com.example.oamodule.model.Announcement;
import com.example.oamodule.service.AnnouncementService;
import com.example.oamodule.service.NotificationService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.List;

@RestController
@RequestMapping("/announcements")
public class AnnouncementController {
    @Autowired
    private AnnouncementService announcementService;

    @Autowired
    private NotificationService notificationService;

    @PostMapping
    public void createAnnouncement(@RequestBody Announcement announcement) {
        announcementService.createAnnouncement(announcement.getId(), announcement.getType(), announcement.getContent(),
                announcement.getPublishTime(), announcement.getExpiryTime());
        notificationService.sendNotifications(List.of(announcement));
    }

    @GetMapping
    public List<Announcement> getAllAnnouncements() {
        return announcementService.getAllAnnouncements();
    }

    @GetMapping("/active")
    public List<Announcement> getActiveAnnouncements() {
        return announcementService.getActiveAnnouncements();
    }

    @DeleteMapping("/expired")
    public void removeExpiredAnnouncements() {
        announcementService.removeExpiredAnnouncements();
    }
}
```

#### 6. 应用主类

```java
package com.example.oamodule;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class OaNotificationModuleApplication {
    public static void main(String[] args) {
        SpringApplication.run(OaNotificationModuleApplication.class, args);
    }
}
```

#### 7. `application.properties` 配置文件

```properties
spring.datasource.url=jdbc:mysql://localhost:3306/oamodule
spring.datasource.username=root
spring.datasource.password=password
spring.jpa.hibernate.ddl-auto=update

spring.mail.host=smtp.example.com
spring.mail.port=587
spring.mail.username=your-email@example.com
spring.mail.password=your-email-password
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
```

#### 8. 数据库初始化脚本

```sql
CREATE DATABASE oamodule;

USE oamodule;

CREATE TABLE announcements (
    id VARCHAR(50) PRIMARY KEY,
    type VARCHAR(10),
    content TEXT,
    publish_time TIMESTAMP,
    expiry_time TIMESTAMP
);
```

#### 9. `pom.xml` 示例

```xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://www.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>oamodule</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>
```

使用Spring Boot框架实现了一个支持多种形式公告发布、设置发布时间和有效期以及公告发布后推送功能的OA通知公告模块。这个模块结合了JPA进行数据库操作,并使用Spring Mail进行邮件推送。

http://www.ritt.cn/news/16248.html

相关文章:

  • 自由策划企业网站管理系统破解版免费ip地址网站
  • 做速卖通的素材有哪些网站长沙百度网站优化
  • 做笑话网站赚钱吗如何增加网站的外链
  • 上海哪家公司做网站最好今日国内新闻摘抄十条
  • java前端要学什么网站优化名词解释
  • 建设配资网站有要求吗百度云引擎搜索
  • 专题网站开发 交互方法原画培训班一般学费多少
  • 天津多媒体设计公司百度seo优
  • 2018什么语言做网站比较好搜索引擎网站入口
  • 微网站 微官网的区别seo是什么软件
  • 广东网站建设报价今天热点新闻
  • 网站建设费用IP百度网站推广费用多少
  • 网站被很多公司抄袭整合网络营销是什么
  • 免费接码网页版中国seo关键词优化软件手机
  • 商城类网站备案免费开网店免费供货
  • 站长工具官方网企业官网建站
  • 新乡做网站公司电话排名优化网站seo排名
  • 网站内部优化有哪些内容福州关键词排名优化
  • 网站站内搜索怎么做保定关键词优化软件
  • 怎样用网站做淘宝客汕头seo代理
  • 做网站卖广告位赚钱郑州网络营销策划
  • 那个网站做推广比较好大连seo按天付费
  • 电商类网站怎么做推广郑州网络营销推广
  • 北京网站建设公司分享网站改版注意事项广州营销课程培训班
  • 联通物联网服务运营平台seo外包优化服务商
  • 珠海网站定制开发seo上排名
  • 重庆企业做网站看b站视频软件下载安装
  • 网站忘记后台地址百度投放广告流程
  • 网站空间的存放种类想要网站推广版
  • 枣庄高端网站建设营销网络推广