初始化
commit
9fd87605d7
|
@ -0,0 +1,39 @@
|
|||
target/
|
||||
!.mvn/wrapper/maven-wrapper.jar
|
||||
!**/src/main/**/target/
|
||||
!**/src/test/**/target/
|
||||
|
||||
### IntelliJ IDEA ###
|
||||
.idea/modules.xml
|
||||
.idea/jarRepositories.xml
|
||||
.idea/compiler.xml
|
||||
.idea/libraries/
|
||||
*.iws
|
||||
*.iml
|
||||
*.ipr
|
||||
logs
|
||||
.idea
|
||||
### Eclipse ###
|
||||
.apt_generated
|
||||
.classpath
|
||||
.factorypath
|
||||
.project
|
||||
.settings
|
||||
.springBeans
|
||||
.sts4-cache
|
||||
|
||||
### NetBeans ###
|
||||
/nbproject/private/
|
||||
/nbbuild/
|
||||
/dist/
|
||||
/nbdist/
|
||||
/.nb-gradle/
|
||||
build/
|
||||
!**/src/main/**/build/
|
||||
!**/src/test/**/build/
|
||||
|
||||
### VS Code ###
|
||||
.vscode/
|
||||
|
||||
### Mac OS ###
|
||||
.DS_Store
|
|
@ -0,0 +1,19 @@
|
|||
#起始镜像
|
||||
FROM anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/openjdk:17-8.6
|
||||
#暴露端口号
|
||||
EXPOSE 10008
|
||||
|
||||
#挂载目录的位置
|
||||
VOLUME /home/logs/health-information
|
||||
#构建复制外部文件到docker
|
||||
COPY health-information-server/target/health-information-server.jar /home/app.jar
|
||||
#工作目录 exec -it 进入容器内部后的默认的起始目录
|
||||
WORKDIR /home
|
||||
ENV TIME_ZONE Asia/Shanghai
|
||||
#指定东八区
|
||||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||||
|
||||
#启动java 程序
|
||||
ENTRYPOINT ["java","-Dfile.encoding=UTF-8","-jar","/home/app.jar"]
|
||||
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-information</artifactId>
|
||||
<version>3.6.3</version>
|
||||
</parent>
|
||||
<version>3.6.3</version>
|
||||
<artifactId>health-information-common</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-common-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-common-security</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>dragon-public</id>
|
||||
<name>dragon-maven</name>
|
||||
<url>http://10.100.1.7:8081/repository/maven-public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>dragon-release</id>
|
||||
<name>dragon-releases</name>
|
||||
<url>http://10.100.1.7:8081/repository/maven-releases/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,46 @@
|
|||
package com.health.information.common.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/19 15:21
|
||||
* 资讯表
|
||||
*/
|
||||
@Data
|
||||
public class Information {
|
||||
/**
|
||||
* 资讯列表主键
|
||||
*/
|
||||
private Integer informationId;
|
||||
/**
|
||||
* 资讯标题
|
||||
*/
|
||||
private String informationTitle;
|
||||
/**
|
||||
* 图片
|
||||
*/
|
||||
private String picture;
|
||||
/**
|
||||
* 发布人
|
||||
*/
|
||||
private String createName;
|
||||
/**
|
||||
* 发布资讯时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTime;
|
||||
/**
|
||||
* 资讯详情
|
||||
*/
|
||||
private String informationDetails;
|
||||
/**
|
||||
* 资讯类型主键
|
||||
*/
|
||||
private Integer informationTypeId;
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
package com.health.information.common.domain;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/22 20:16
|
||||
* 资讯收藏表
|
||||
*/
|
||||
@Data
|
||||
public class InformationCollection {
|
||||
/**
|
||||
* 用户收藏资讯表主键
|
||||
*/
|
||||
private Integer informationCollectionId;
|
||||
/**
|
||||
* 用户表主键
|
||||
*/
|
||||
private Integer userId;
|
||||
/**
|
||||
* 资讯表主键
|
||||
*/
|
||||
private Integer informationId;
|
||||
/**
|
||||
* 收藏时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date collectionTime;
|
||||
/**
|
||||
* 是否删除收藏 1-是 2-否
|
||||
*/
|
||||
private Integer isDelete;
|
||||
/**
|
||||
* 是否收藏 1-是
|
||||
*/
|
||||
private Integer isCollection;
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
package com.health.information.common.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/19 15:49
|
||||
* 资讯类型表
|
||||
*/
|
||||
@Data
|
||||
public class InformationType {
|
||||
/**
|
||||
* 资讯类型主键
|
||||
*/
|
||||
private Integer informationTypeId;
|
||||
/**
|
||||
* 资讯类型名称
|
||||
*/
|
||||
private String informationTypeName;
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
package com.health.information.common.domain;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/11/1 9:24
|
||||
*/
|
||||
@Data
|
||||
public class Rewards {
|
||||
/**
|
||||
* 奖励表主键
|
||||
*/
|
||||
private Integer rewardsId;
|
||||
/**
|
||||
* 是否已经获取奖励 1-是
|
||||
*/
|
||||
private Integer isRewards;
|
||||
/**
|
||||
* 被奖励时间
|
||||
*/
|
||||
private Date rewardsTime;
|
||||
/**
|
||||
* 被奖励用户ID
|
||||
*/
|
||||
private Integer rewardsUserId;
|
||||
/**
|
||||
* 视频表主键
|
||||
*/
|
||||
private Integer informationId;
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package com.health.information.common.domain.request;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/20 16:18
|
||||
* 发布咨询参数
|
||||
*/
|
||||
@Data
|
||||
public class RequestInsertInformation implements Serializable {
|
||||
/**
|
||||
* 资讯标题
|
||||
*/
|
||||
private String informationTitle;
|
||||
/**
|
||||
* 图片
|
||||
*/
|
||||
private String picture;
|
||||
/**
|
||||
* 传入的图片
|
||||
*/
|
||||
private String[] receivePicture;
|
||||
/**
|
||||
* 发布资讯人
|
||||
*/
|
||||
private String createName;
|
||||
/**
|
||||
* 资讯详情
|
||||
*/
|
||||
private String informationDetails;
|
||||
/**
|
||||
* 资讯类型主键
|
||||
*/
|
||||
private Integer informationTypeId;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package com.health.information.common.domain.request;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/11/3 20:46
|
||||
*/
|
||||
@Data
|
||||
public class RequestList {
|
||||
private Integer informationTypeId;
|
||||
private Integer pageNum = 1;
|
||||
private Integer pageSize = 5;
|
||||
}
|
|
@ -0,0 +1,80 @@
|
|||
package com.health.information.common.domain.response;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/19 16:06
|
||||
* 资讯列表响应参数
|
||||
*/
|
||||
@Data
|
||||
public class ResponseInformation {
|
||||
/**
|
||||
* 资讯列表主键
|
||||
*/
|
||||
private Integer informationId;
|
||||
/**
|
||||
* 资讯标题
|
||||
*/
|
||||
private String informationTitle;
|
||||
/**
|
||||
* 图片
|
||||
*/
|
||||
private String picture;
|
||||
/**
|
||||
* 响应到前台的图片
|
||||
*/
|
||||
private String[] receivePicture;
|
||||
/**
|
||||
* 发布人
|
||||
*/
|
||||
private String createName;
|
||||
/**
|
||||
* 发布资讯时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date createTime;
|
||||
/**
|
||||
* 资讯详情
|
||||
*/
|
||||
private String informationDetails;
|
||||
/**
|
||||
* 资讯类型主键
|
||||
*/
|
||||
private Integer informationTypeId;
|
||||
/**
|
||||
* 资讯类型名称
|
||||
*/
|
||||
private String informationTypeName;
|
||||
/**
|
||||
* 用户收藏资讯表主键
|
||||
*/
|
||||
private Integer informationCollectionId;
|
||||
/**
|
||||
* 用户表主键
|
||||
*/
|
||||
private Integer userId;
|
||||
/**
|
||||
* 收藏时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
|
||||
private Date collectionTime;
|
||||
/**
|
||||
* 是否删除收藏 1-是 2-否
|
||||
*/
|
||||
private Integer isDelete;
|
||||
/**
|
||||
* 是否已经领取H币奖励 1-是 2-否
|
||||
*/
|
||||
private Integer isRewards;
|
||||
/**
|
||||
* 是否收藏 1-是
|
||||
*/
|
||||
private Integer isCollection;
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-information</artifactId>
|
||||
<version>3.6.3</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>health-information-remote</artifactId>
|
||||
|
||||
<version>3.6.3</version>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>dragon-public</id>
|
||||
<name>dragon-maven</name>
|
||||
<url>http://10.100.1.7:8081/repository/maven-public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>dragon-release</id>
|
||||
<name>dragon-releases</name>
|
||||
<url>http://10.100.1.7:8081/repository/maven-releases/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-information-common</artifactId>
|
||||
<version>3.6.3</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
|
@ -0,0 +1,177 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-information</artifactId>
|
||||
<version>3.6.3</version>
|
||||
</parent>
|
||||
<version>3.6.3</version>
|
||||
<artifactId>health-information-server</artifactId>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-wallet-common</artifactId>
|
||||
<version>3.6.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-wallet-remote</artifactId>
|
||||
<version>3.6.5</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-information-common</artifactId>
|
||||
<version>3.6.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>cn.hutool</groupId>
|
||||
<artifactId>hutool-all</artifactId>
|
||||
<version>4.5.16</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>base-file-remote</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>base-system-common</artifactId>
|
||||
</dependency>
|
||||
<!-- SpringCloud Alibaba Nacos -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringCloud Alibaba Nacos Config -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringCloud Alibaba Sentinel -->
|
||||
<dependency>
|
||||
<groupId>com.alibaba.cloud</groupId>
|
||||
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-web</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- SpringBoot Actuator -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-actuator</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- Swagger UI -->
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger-ui</artifactId>
|
||||
<version>${swagger.fox.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Mysql Connector -->
|
||||
<dependency>
|
||||
<groupId>com.mysql</groupId>
|
||||
<artifactId>mysql-connector-j</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common DataSource -->
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-common-datasource</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- RuoYi Common DataScope -->
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-common-datascope</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-common-security</artifactId>
|
||||
<version>3.6.8</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-common-redis</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>software.amazon.awssdk</groupId>
|
||||
<artifactId>s3</artifactId>
|
||||
<version>2.18.30</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.amazonaws</groupId>
|
||||
<artifactId>aws-java-sdk-s3</artifactId>
|
||||
<version>1.11.813</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>2.0.5</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>software.amazon.awssdk</groupId>
|
||||
<artifactId>s3-transfer-manager</artifactId>
|
||||
<version>2.18.30-PREVIEW</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>commons-codec</groupId>
|
||||
<artifactId>commons-codec</artifactId>
|
||||
<version>1.15</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>2.0.5</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>dragon-public</id>
|
||||
<name>dragon-maven</name>
|
||||
<url>http://10.100.1.7:8081/repository/maven-public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>dragon-release</id>
|
||||
<name>dragon-releases</name>
|
||||
<url>http://10.100.1.7:8081/repository/maven-releases/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
<build>
|
||||
<finalName>${project.artifactId}</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
<goal>repackage</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!--当deploy时候忽略此model-->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-deploy-plugin</artifactId>
|
||||
<configuration>
|
||||
<skip>true</skip>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
|
@ -0,0 +1,19 @@
|
|||
package com.health.information.server;
|
||||
|
||||
import com.health.common.security.annotation.EnableRyFeignClients;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
|
||||
/**
|
||||
* @author 冯凯
|
||||
* @version 1.0
|
||||
* @description:
|
||||
* @date 2023/10/18 22:20
|
||||
*/
|
||||
@SpringBootApplication
|
||||
@EnableRyFeignClients
|
||||
public class HealthInformationApp {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(HealthInformationApp.class);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,116 @@
|
|||
package com.health.information.server.controller;
|
||||
|
||||
import com.health.common.core.domain.Result;
|
||||
import com.health.information.common.domain.InformationType;
|
||||
import com.health.information.common.domain.request.RequestInsertInformation;
|
||||
import com.health.information.common.domain.response.ResponseInformation;
|
||||
import com.health.information.server.service.InformationService;
|
||||
import lombok.extern.log4j.Log4j2;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/19 11:11
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/information")
|
||||
@Log4j2
|
||||
public class InformationController {
|
||||
@Autowired
|
||||
private InformationService informationService;
|
||||
|
||||
/**
|
||||
* 资讯列表
|
||||
*
|
||||
* @param informationTypeId
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/listInformation/{informationTypeId}")
|
||||
public Result<List<ResponseInformation>> listInformation(@PathVariable Integer informationTypeId) {
|
||||
List<ResponseInformation> information = informationService.listInformation(informationTypeId);
|
||||
return Result.success(information, "操作成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询资讯类型表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping("/listInformationType")
|
||||
public Result<List<InformationType>> listInformationType() {
|
||||
List<InformationType> informationTypes = informationService.listInformationType();
|
||||
return Result.success(informationTypes, "操作成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布资讯
|
||||
*
|
||||
* @param requestInsertInformation
|
||||
*/
|
||||
@PostMapping("/insertInformation")
|
||||
public Result insertInformation(@RequestBody RequestInsertInformation requestInsertInformation) {
|
||||
informationService.insertInformation(requestInsertInformation);
|
||||
return Result.success(null, "操作成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 收藏资讯
|
||||
*
|
||||
* @param informationId
|
||||
*/
|
||||
@PostMapping("/insertInformationCollection/{informationId}")
|
||||
public Result insertCollectionByUserIdAndInformationId(@PathVariable Integer informationId) {
|
||||
informationService.insertCollectionByUserIdAndInformationId(informationId);
|
||||
return Result.success(null, "操作成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 我收藏的资讯
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/listInformationCollection/{userId}")
|
||||
public Result<List<ResponseInformation>> listInformationCollection(@PathVariable Integer userId) {
|
||||
List<ResponseInformation> responseInformationList = informationService.listInformationCollection(userId);
|
||||
return Result.success(responseInformationList, "操作成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除我收藏的资讯
|
||||
*
|
||||
* @param informationCollectionId
|
||||
*/
|
||||
@PostMapping("/deleteInformationCollection/{informationCollectionId}")
|
||||
public Result deleteInformationCollection(@PathVariable Integer informationCollectionId) {
|
||||
informationService.deleteInformationCollection(informationCollectionId);
|
||||
return Result.success(null, "操作成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
*
|
||||
* @param file
|
||||
*/
|
||||
@PostMapping("/uploadPicture")
|
||||
public Result uploadPicture(@RequestParam MultipartFile file) throws IOException {
|
||||
Result result = informationService.uploadPicture(file);
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 浏览奖励H币
|
||||
*
|
||||
* @param informationId
|
||||
*/
|
||||
@PostMapping("/browseRewards/{informationId}")
|
||||
public void browseRewards(@PathVariable Integer informationId) {
|
||||
informationService.browseRewards(informationId);
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,86 @@
|
|||
package com.health.information.server.mapper;
|
||||
|
||||
import com.health.information.common.domain.InformationCollection;
|
||||
import com.health.information.common.domain.InformationType;
|
||||
import com.health.information.common.domain.Rewards;
|
||||
import com.health.information.common.domain.request.RequestInsertInformation;
|
||||
import com.health.information.common.domain.response.ResponseInformation;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/19 11:12
|
||||
*/
|
||||
@Mapper
|
||||
public interface InformationMapper {
|
||||
|
||||
/**
|
||||
* 资讯列表
|
||||
*
|
||||
* @param informationTypeId
|
||||
* @return
|
||||
*/
|
||||
List<ResponseInformation> listInformation(@Param("informationTypeId") Integer informationTypeId);
|
||||
|
||||
/**
|
||||
* 查询资讯类型表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<InformationType> listInformationType();
|
||||
|
||||
/**
|
||||
* 发布咨询
|
||||
*
|
||||
* @param requestInsertInformation
|
||||
*/
|
||||
void insertInformation(RequestInsertInformation requestInsertInformation);
|
||||
|
||||
/**
|
||||
* 收藏资讯
|
||||
*
|
||||
* @param informationCollection
|
||||
*/
|
||||
void insertCollectionByUserIdAndInformationId(InformationCollection informationCollection);
|
||||
|
||||
/**
|
||||
* 我收藏的资讯
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<ResponseInformation> listInformationCollection(@Param("userId") Integer userId);
|
||||
|
||||
/**
|
||||
* 删除我收藏的资讯
|
||||
*
|
||||
* @param informationCollectionId
|
||||
*/
|
||||
void deleteInformationCollection(@Param("informationCollectionId") Integer informationCollectionId);
|
||||
|
||||
/**
|
||||
* 根据资讯类型主键查询资讯类型对象
|
||||
*
|
||||
* @param informationTypeId
|
||||
* @return
|
||||
*/
|
||||
InformationType getInformationTypeKey(@Param("informationTypeId") Integer informationTypeId);
|
||||
|
||||
/**
|
||||
* 查询奖励表
|
||||
*
|
||||
* @param informationId
|
||||
* @return
|
||||
*/
|
||||
Rewards getInformation(@Param("informationId") Integer informationId);
|
||||
|
||||
/**
|
||||
* 添加奖励记录
|
||||
*
|
||||
* @param rws
|
||||
*/
|
||||
void insertRewards(Rewards rws);
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
package com.health.information.server.service;
|
||||
|
||||
import com.health.common.core.domain.Result;
|
||||
import com.health.information.common.domain.InformationType;
|
||||
import com.health.information.common.domain.request.RequestInsertInformation;
|
||||
import com.health.information.common.domain.response.ResponseInformation;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/19 11:12
|
||||
*/
|
||||
public interface InformationService {
|
||||
/**
|
||||
* 资讯列表
|
||||
*
|
||||
* @param informationTypeId
|
||||
* @return
|
||||
*/
|
||||
List<ResponseInformation> listInformation(Integer informationTypeId);
|
||||
|
||||
/**
|
||||
* 查询资讯类型表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<InformationType> listInformationType();
|
||||
|
||||
/**
|
||||
* 发布咨询
|
||||
*
|
||||
* @param requestInsertInformation
|
||||
*/
|
||||
void insertInformation(RequestInsertInformation requestInsertInformation);
|
||||
|
||||
/**
|
||||
* 收藏资讯
|
||||
*
|
||||
* @param informationId
|
||||
*/
|
||||
void insertCollectionByUserIdAndInformationId(Integer informationId);
|
||||
|
||||
/**
|
||||
* 我收藏的资讯
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
List<ResponseInformation> listInformationCollection(Integer userId);
|
||||
|
||||
/**
|
||||
* 删除我收藏的资讯
|
||||
*
|
||||
* @param informationCollectionId
|
||||
*/
|
||||
void deleteInformationCollection(Integer informationCollectionId);
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
*
|
||||
* @param file
|
||||
*/
|
||||
Result uploadPicture(MultipartFile file) throws IOException;
|
||||
|
||||
/**
|
||||
* 浏览奖励H币
|
||||
*
|
||||
* @param informationId
|
||||
*/
|
||||
void browseRewards(Integer informationId);
|
||||
}
|
|
@ -0,0 +1,228 @@
|
|||
package com.health.information.server.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.health.common.core.constant.SecurityConstants;
|
||||
import com.health.common.core.domain.Result;
|
||||
import com.health.common.redis.service.RedisService;
|
||||
import com.health.common.security.utils.SecurityUtils;
|
||||
import com.health.information.common.domain.InformationType;
|
||||
import com.health.information.common.domain.InformationCollection;
|
||||
import com.health.information.common.domain.Rewards;
|
||||
import com.health.information.common.domain.request.RequestInsertInformation;
|
||||
import com.health.information.common.domain.response.ResponseInformation;
|
||||
import com.health.information.server.mapper.InformationMapper;
|
||||
import com.health.information.server.service.InformationService;
|
||||
import com.health.information.server.utils.DogeUtil;
|
||||
import com.health.wallet.common.domain.req.MoneyChangeRecordReq;
|
||||
import com.health.wallet.remote.RemoteWalletService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.RedisTemplate;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials;
|
||||
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
|
||||
import software.amazon.awssdk.core.sync.RequestBody;
|
||||
import software.amazon.awssdk.regions.Region;
|
||||
import software.amazon.awssdk.services.s3.S3Client;
|
||||
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
|
||||
import software.amazon.awssdk.services.s3.model.PutObjectResponse;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.net.URI;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/19 11:12
|
||||
*/
|
||||
@Service
|
||||
@SuppressWarnings("ALL")
|
||||
public class InformationServiceImpl implements InformationService {
|
||||
@Autowired
|
||||
private InformationMapper informationMapper;
|
||||
@Autowired
|
||||
private RedisService redisService;
|
||||
@Autowired
|
||||
private RedisTemplate<String, String> redisTemplate;
|
||||
@Autowired
|
||||
private DogeUtil dogeUtil;
|
||||
@Autowired
|
||||
private RemoteWalletService remoteWalletService;
|
||||
|
||||
public static S3Client init(JSONObject credentials) {
|
||||
AwsSessionCredentials awsCreds = AwsSessionCredentials.create(
|
||||
credentials.getString("accessKeyId"),
|
||||
credentials.getString("secretAccessKey"),
|
||||
credentials.getString("sessionToken"));
|
||||
|
||||
return S3Client.builder()
|
||||
.credentialsProvider(StaticCredentialsProvider.create(awsCreds))
|
||||
.region(Region.of("automatic"))
|
||||
.endpointOverride(URI.create("https://cos.ap-shanghai.myqcloud.com")) // 修改为多吉云控制台存储空间 SDK 参数中的 s3Endpoint
|
||||
.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* 资讯列表
|
||||
*
|
||||
* @param informationTypeId
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<ResponseInformation> listInformation(Integer informationTypeId) {
|
||||
//根据资讯类型ID查询资讯类型对象
|
||||
InformationType informationType = informationMapper.getInformationTypeKey(informationTypeId);
|
||||
//判断当前查询的资讯是否存在redis
|
||||
if (redisService.hasKey(informationType.getInformationTypeName())) {
|
||||
//缓存
|
||||
return redisService.getCacheList(informationType.getInformationTypeName());
|
||||
}
|
||||
List<ResponseInformation> responseInformationList = informationMapper.listInformation(informationType.getInformationTypeId());
|
||||
|
||||
redisService.setCacheList(informationType.getInformationTypeName(), responseInformationList);
|
||||
//数据库
|
||||
return responseInformationList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询资讯类型表
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<InformationType> listInformationType() {
|
||||
return informationMapper.listInformationType();
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布资讯
|
||||
*
|
||||
* @param requestInsertInformation
|
||||
*/
|
||||
@Override
|
||||
public void insertInformation(RequestInsertInformation requestInsertInformation) {
|
||||
//根据资讯类型主键查询资讯类型对象
|
||||
InformationType informationTypeKey = informationMapper.getInformationTypeKey(requestInsertInformation.getInformationTypeId());
|
||||
//根据资讯类型名称删除键
|
||||
redisTemplate.delete(informationTypeKey.getInformationTypeName());
|
||||
//获取前台传入的照片数组
|
||||
String[] receivePicture = requestInsertInformation.getReceivePicture();
|
||||
StringBuilder pics = new StringBuilder();
|
||||
for (String picture : receivePicture) {
|
||||
//循环拼接
|
||||
pics.append(picture).append(",");
|
||||
}
|
||||
//获取当前发布咨询人名称给参数createName赋值
|
||||
requestInsertInformation.setCreateName(SecurityUtils.getUsername());
|
||||
//字符串图片截取
|
||||
requestInsertInformation.setPicture(pics.substring(0, pics.length() - 1));
|
||||
informationMapper.insertInformation(requestInsertInformation);
|
||||
}
|
||||
|
||||
/**
|
||||
* 收藏资讯
|
||||
*
|
||||
* @param informationId
|
||||
*/
|
||||
@Override
|
||||
public void insertCollectionByUserIdAndInformationId(Integer informationId) {
|
||||
//创建收藏资讯对象
|
||||
InformationCollection collection = new InformationCollection();
|
||||
collection.setUserId(Math.toIntExact(SecurityUtils.getUserId()));
|
||||
collection.setInformationId(informationId);
|
||||
collection.setIsDelete(2);
|
||||
collection.setIsCollection(1);
|
||||
informationMapper.insertCollectionByUserIdAndInformationId(collection);//收藏资讯
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询我收藏的资讯
|
||||
*
|
||||
* @param userId
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<ResponseInformation> listInformationCollection(Integer userId) {
|
||||
return informationMapper.listInformationCollection(userId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除我收藏的资讯
|
||||
*
|
||||
* @param informationCollectionId
|
||||
*/
|
||||
@Override
|
||||
public void deleteInformationCollection(Integer informationCollectionId) {
|
||||
informationMapper.deleteInformationCollection(informationCollectionId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 上传图片
|
||||
*
|
||||
* @param file
|
||||
*/
|
||||
@Override
|
||||
public Result uploadPicture(MultipartFile file) throws IOException {
|
||||
String _bucket = "yanmou"; // 替换为你要上传到的存储空间名称
|
||||
//获取文件后缀,因此此后端代码可接收一切文件,上传格式前端限定
|
||||
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".") + 1)
|
||||
.toLowerCase();
|
||||
// 重构文件名称
|
||||
String pikId = UUID.randomUUID().toString().replaceAll("-", "");
|
||||
String newVideoName = pikId + "." + fileExt;
|
||||
String _key = "information/" + newVideoName; // 本次允许客户端上传的文件名,请根据当前网站用户登录状态、权限进行合理的最小化授权
|
||||
// String _key = "abc/*"; // 也可以这样设置为 abc/* ,表示允许客户端上传到 abc 文件夹下的任意文件名
|
||||
// String _key = "*"; // 或者设为 * 表示允许客户端上传到该存储空间内的任意文件(有安全风险,不推荐这样做)
|
||||
|
||||
JSONObject body = new JSONObject(); // 这里 JSONObject 来自 org.json.JSONObject
|
||||
// 存储请求的信息
|
||||
body.put("channel", "OSS_UPLOAD");
|
||||
body.put("scopes", _bucket + ":" + _key);
|
||||
|
||||
JSONObject data = dogeUtil.dogeAPIGet("/auth/tmp_token.json", body);
|
||||
JSONObject credentials = data.getJSONObject("Credentials");
|
||||
System.out.println(data);
|
||||
// 调用 init 方法初始化 s3Client,并将 credentials 作为参数
|
||||
S3Client s3Client = init(credentials);
|
||||
PutObjectRequest putOb = PutObjectRequest.builder()
|
||||
.bucket("s-sh-7758-yanmou-1258813047") // 存储空间的名称
|
||||
.key(_key)
|
||||
.build();
|
||||
|
||||
InputStream inputStream = file.getInputStream();//获取文件的输入流
|
||||
int available = inputStream.available();
|
||||
PutObjectResponse putObjectResponse = s3Client.putObject(putOb, RequestBody.fromInputStream(inputStream, available));
|
||||
|
||||
return Result.success("http://s-sh-7758-yanmou.oss.dogecdn.com/" + putOb.key(), "上传成功!");
|
||||
// RequestBody 也支持 fromFile、fromBytes、fromBytesBuffer、fromInputStream 等多种来源
|
||||
}
|
||||
|
||||
/**
|
||||
* 浏览奖励H币
|
||||
*
|
||||
* @param informationId
|
||||
*/
|
||||
@Override
|
||||
public void browseRewards(Integer informationId) {
|
||||
//查询奖励表
|
||||
Rewards rewards = informationMapper.getInformation(informationId);
|
||||
if (null == rewards.getIsRewards()) {
|
||||
Rewards rws = new Rewards();
|
||||
rws.setRewardsUserId(Math.toIntExact(SecurityUtils.getUserId()));
|
||||
rws.setIsRewards(1);
|
||||
rws.setInformationId(informationId);
|
||||
//添加奖励记录
|
||||
informationMapper.insertRewards(rws);
|
||||
|
||||
//修改用户余额
|
||||
MoneyChangeRecordReq moneyChangeRecordReq = new MoneyChangeRecordReq();
|
||||
moneyChangeRecordReq.setChangeAmount(10);
|
||||
moneyChangeRecordReq.setChangeOrigin("浏览资讯超过10s奖励H币");
|
||||
moneyChangeRecordReq.setChangeType(1);
|
||||
moneyChangeRecordReq.setCreateUser(SecurityUtils.getUserId());
|
||||
remoteWalletService.moneyChangeByOtherOperate(moneyChangeRecordReq, SecurityConstants.INNER);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,119 @@
|
|||
package com.health.information.server.utils;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.commons.codec.binary.Hex;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.crypto.Mac;
|
||||
import javax.crypto.spec.SecretKeySpec;
|
||||
import java.io.*;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLEncoder;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.security.InvalidKeyException;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Wenkang Tang
|
||||
* @date 2023/10/27 20:33
|
||||
*/
|
||||
@Configuration
|
||||
@Component
|
||||
public class DogeUtil {
|
||||
// 普通 API 请使用这个方法
|
||||
public JSONObject dogeAPIGet(String apiPath, Map<String, String> params) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Map.Entry<String, String> hm : params.entrySet()) {
|
||||
try {
|
||||
sb.append(URLEncoder.encode(hm.getKey(), String.valueOf(StandardCharsets.UTF_8))).append('=').append(URLEncoder.encode(hm.getValue(), String.valueOf(StandardCharsets.UTF_8))).append("&");
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
String bodyText = sb.toString().replace("&$", "");
|
||||
try {
|
||||
return dogeAPIGet(apiPath, bodyText, false);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// 要求请求内容 Body 是一个 JSON 的 API,请使用这个方法
|
||||
public JSONObject dogeAPIGet(String apiPath, JSONObject params) {
|
||||
String bodyText = params.toString();
|
||||
try {
|
||||
return dogeAPIGet(apiPath, bodyText, true);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// 无参数 API
|
||||
public JSONObject dogeAPIGet(String apiPath) {
|
||||
try {
|
||||
return dogeAPIGet(apiPath, "", true);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
public JSONObject dogeAPIGet(String apiPath, String paramsText, Boolean jsonMode) throws IOException {
|
||||
// 这里返回值类型是 JSONObject,你也可以根据你的具体情况使用不同的 JSON 库并修改最下方 JSON 处理代码
|
||||
|
||||
// 这里替换为你的多吉云永久 AccessKey 和 SecretKey,可在用户中心 - 密钥管理中查看
|
||||
// 请勿在客户端暴露 AccessKey 和 SecretKey,那样恶意用户将获得账号完全控制权
|
||||
String accessKey = "02a4810cb73129c4";
|
||||
String secretKey = "4d9a1342fcee91d96698ce9425d5a23a";
|
||||
|
||||
String signStr = apiPath + "\n" + paramsText;
|
||||
String sign = "";
|
||||
try {
|
||||
Mac mac = Mac.getInstance("HmacSHA1");
|
||||
mac.init(new SecretKeySpec(secretKey.getBytes(), "HmacSHA1"));
|
||||
sign = new String(new Hex().encode(mac.doFinal(signStr.getBytes())), StandardCharsets.UTF_8); // 这里 Hex 来自 org.apache.commons.codec.binary.Hex
|
||||
} catch (NoSuchAlgorithmException | InvalidKeyException e) {
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException(e.getMessage());
|
||||
}
|
||||
String authorization = "TOKEN " + accessKey + ':' + sign;
|
||||
|
||||
URL u = new URL("https://api.dogecloud.com" + apiPath);
|
||||
HttpURLConnection conn = (HttpURLConnection) u.openConnection();
|
||||
conn.setDoOutput(true);
|
||||
conn.setRequestMethod("POST");
|
||||
conn.setRequestProperty("Content-Type", jsonMode ? "application/json" : "application/x-www-form-urlencoded");
|
||||
conn.setRequestProperty("Authorization", authorization);
|
||||
conn.setRequestProperty("Content-Length", String.valueOf(paramsText.length()));
|
||||
OutputStream os = conn.getOutputStream();
|
||||
os.write(paramsText.getBytes());
|
||||
os.flush();
|
||||
os.close();
|
||||
StringBuilder retJSON = new StringBuilder();
|
||||
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
|
||||
String readLine = "";
|
||||
try (BufferedReader responseReader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) {
|
||||
while ((readLine = responseReader.readLine()) != null) {
|
||||
retJSON.append(readLine).append("\n");
|
||||
}
|
||||
responseReader.close();
|
||||
}
|
||||
JSONObject ret = JSONObject.parseObject(retJSON.toString());
|
||||
if (ret.getInteger("code") != 200) {
|
||||
System.err.println("{\"error\":\"API 返回错误:" + ret.getString("msg") + "\"}");
|
||||
} else {
|
||||
JSONObject output = new JSONObject();
|
||||
JSONObject data = ret.getJSONObject("data");
|
||||
return data;
|
||||
}
|
||||
} else {
|
||||
System.err.println("{\"error\":\"网络错误:" + conn.getResponseCode() + "\"}");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
# Tomcat
|
||||
server:
|
||||
port: 10008
|
||||
|
||||
# Spring
|
||||
spring:
|
||||
jackson:
|
||||
date-format: yyyy-MM-dd HH:mm:ss
|
||||
time-zone: GMT+8
|
||||
application:
|
||||
# 应用名称
|
||||
name: health-information
|
||||
profiles:
|
||||
# 环境配置
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 10.100.1.5:8848
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: 10.100.1.5:8848
|
||||
# 配置文件格式
|
||||
file-extension: yml
|
||||
# 共享配置
|
||||
shared-configs:
|
||||
- application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
|
|
@ -0,0 +1,74 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration scan="true" scanPeriod="60 seconds" debug="false">
|
||||
<!-- 日志存放路径 -->
|
||||
<property name="log.path" value="./logs/health-information" />
|
||||
<!-- 日志输出格式 -->
|
||||
<property name="log.pattern" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />
|
||||
|
||||
<!-- 控制台输出 -->
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>${log.pattern}</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- 系统日志输出 -->
|
||||
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/info.log</file>
|
||||
<!-- 循环政策:基于时间创建日志文件 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- 日志文件名格式 -->
|
||||
<fileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<!-- 日志最大的历史 60天 -->
|
||||
<maxHistory>60</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>${log.pattern}</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<!-- 过滤的级别 -->
|
||||
<level>INFO</level>
|
||||
<!-- 匹配时的操作:接收(记录) -->
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<file>${log.path}/error.log</file>
|
||||
<!-- 循环政策:基于时间创建日志文件 -->
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<!-- 日志文件名格式 -->
|
||||
<fileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log</fileNamePattern>
|
||||
<!-- 日志最大的历史 60天 -->
|
||||
<maxHistory>60</maxHistory>
|
||||
</rollingPolicy>
|
||||
<encoder>
|
||||
<pattern>${log.pattern}</pattern>
|
||||
</encoder>
|
||||
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||
<!-- 过滤的级别 -->
|
||||
<level>ERROR</level>
|
||||
<!-- 匹配时的操作:接收(记录) -->
|
||||
<onMatch>ACCEPT</onMatch>
|
||||
<!-- 不匹配时的操作:拒绝(不记录) -->
|
||||
<onMismatch>DENY</onMismatch>
|
||||
</filter>
|
||||
</appender>
|
||||
|
||||
<!-- 系统模块日志级别控制 -->
|
||||
<logger name="com.health" level="info" />
|
||||
<!-- Spring日志级别控制 -->
|
||||
<logger name="org.springframework" level="warn" />
|
||||
|
||||
<root level="info">
|
||||
<appender-ref ref="console" />
|
||||
</root>
|
||||
|
||||
<!--系统操作日志-->
|
||||
<root level="info">
|
||||
<appender-ref ref="file_info" />
|
||||
<appender-ref ref="file_error" />
|
||||
</root>
|
||||
</configuration>
|
|
@ -0,0 +1,109 @@
|
|||
<?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.health.information.server.mapper.InformationMapper">
|
||||
|
||||
<!-- 发布资讯 -->
|
||||
<insert id="insertInformation">
|
||||
INSERT INTO `health-information`.`t_information` (`information_id`, `information_title`, `picture`,
|
||||
`create_name`, `create_time`, `information_details`,
|
||||
`information_type_id`)
|
||||
VALUES (0, #{informationTitle}, #{picture}, #{createName}, now(), #{informationDetails}, #{informationTypeId});
|
||||
</insert>
|
||||
|
||||
<!-- 收藏资讯 -->
|
||||
<insert id="insertCollectionByUserIdAndInformationId">
|
||||
INSERT INTO `health-information`.`t_information_collection` (`information_collection_id`, `user_id`,
|
||||
`information_id`, `collection_time`, `is_delete`,
|
||||
`is_collection`)
|
||||
VALUES (0, #{userId}, #{informationId}, now(), #{isDelete}, #{isCollection});
|
||||
</insert>
|
||||
|
||||
<!-- 添加奖励记录 -->
|
||||
<insert id="insertRewards">
|
||||
INSERT INTO `health-information`.`t_rewards` (`rewards_id`, `is_rewards`, `rewards_time`, `rewards_user_id`,
|
||||
`information_id`)
|
||||
VALUES (0, #{isRewards}, now(), #{rewardsUserId}, #{informationId});
|
||||
</insert>
|
||||
|
||||
|
||||
<!-- 删除我收藏的资讯 -->
|
||||
<update id="deleteInformationCollection">
|
||||
update t_information_collection
|
||||
set is_delete = 1
|
||||
where information_collection_id = #{informationCollectionId}
|
||||
</update>
|
||||
|
||||
<!-- 资讯列表 -->
|
||||
<select id="listInformation" resultType="com.health.information.common.domain.response.ResponseInformation">
|
||||
select
|
||||
i.*,
|
||||
it.information_type_name,
|
||||
ic.information_collection_id,
|
||||
ic.user_id,
|
||||
ic.collection_time,
|
||||
ic.is_delete,
|
||||
ic.is_collection,
|
||||
tr.rewards_id,
|
||||
tr.is_rewards,
|
||||
tr.rewards_time,
|
||||
tr.rewards_user_id
|
||||
from t_information i
|
||||
left join t_information_type it on i.information_type_id = it.information_type_id
|
||||
left join t_information_collection ic on ic.information_id = i.information_id
|
||||
left join t_rewards tr on tr.information_id = i.information_id
|
||||
<where>
|
||||
<if test="null != informationTypeId">
|
||||
and i.information_type_id = #{informationTypeId}
|
||||
</if>
|
||||
</where>
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<!-- 查询资讯类型表 -->
|
||||
<select id="listInformationType" resultType="com.health.information.common.domain.InformationType">
|
||||
select *
|
||||
from t_information_type
|
||||
</select>
|
||||
|
||||
<!-- 查询资讯收藏表 -->
|
||||
<select id="getInformationCollection" resultType="com.health.information.common.domain.InformationCollection">
|
||||
select *
|
||||
from t_information_collection
|
||||
where information_id = #{informationId}
|
||||
and user_id = #{userId}
|
||||
</select>
|
||||
|
||||
<!-- 我收藏的资讯 -->
|
||||
<select id="listInformationCollection" resultType="com.health.information.common.domain.response.ResponseInformation">
|
||||
select ic.*,
|
||||
i.information_title,
|
||||
i.picture,
|
||||
i.create_name,
|
||||
i.create_time,
|
||||
i.information_details,
|
||||
i.information_type_id,
|
||||
it.information_type_name
|
||||
from t_information_collection ic
|
||||
left join t_information i on i.information_id = ic.information_id
|
||||
left join t_information_type it on it.information_type_id = i.information_type_id
|
||||
where ic.user_id = #{userId}
|
||||
and ic.is_delete = 2
|
||||
and is_collection = 1
|
||||
</select>
|
||||
|
||||
<!-- 根据资讯类型主键查询资讯类型对象 -->
|
||||
<select id="getInformationTypeKey" resultType="com.health.information.common.domain.InformationType">
|
||||
select *
|
||||
from t_information_type
|
||||
where information_type_id = #{informationTypeId}
|
||||
</select>
|
||||
|
||||
<!-- 查询奖励表 -->
|
||||
<select id="getInformation" resultType="com.health.information.common.domain.Rewards">
|
||||
select is_rewards
|
||||
from t_rewards
|
||||
where information_id = #{informationId}
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>com.health</groupId>
|
||||
<artifactId>health-modules</artifactId>
|
||||
<version>3.6.3</version>
|
||||
</parent>
|
||||
<artifactId>health-information</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<modules>
|
||||
<module>health-information-common</module>
|
||||
<module>health-information-remote</module>
|
||||
<module>health-information-server</module>
|
||||
</modules>
|
||||
<version>3.6.3</version>
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>dragon-public</id>
|
||||
<name>dragon-maven</name>
|
||||
<url>http://10.100.1.7:8081/repository/maven-public/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
<id>dragon-release</id>
|
||||
<name>dragon-releases</name>
|
||||
<url>http://10.100.1.7:8081/repository/maven-releases/</url>
|
||||
</repository>
|
||||
</distributionManagement>
|
||||
</project>
|
Loading…
Reference in New Issue