.idea/compiler.xml
@@ -7,8 +7,8 @@ <sourceOutputDir name="target/generated-sources/annotations" /> <sourceTestOutputDir name="target/generated-test-sources/test-annotations" /> <outputRelativeToContentRoot value="true" /> <module name="ycl-platform" /> <module name="ycl-common" /> <module name="ycl-platform" /> </profile> </annotationProcessing> </component> .idea/uiDesigner.xml
New file @@ -0,0 +1,124 @@ <?xml version="1.0" encoding="UTF-8"?> <project version="4"> <component name="Palette2"> <group name="Swing"> <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" /> </item> <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false"> <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" /> </item> <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false"> <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" /> </item> <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true"> <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" /> </item> <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" /> <initial-values> <property name="text" value="Button" /> </initial-values> </item> <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> <initial-values> <property name="text" value="RadioButton" /> </initial-values> </item> <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" /> <initial-values> <property name="text" value="CheckBox" /> </initial-values> </item> <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false"> <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" /> <initial-values> <property name="text" value="Label" /> </initial-values> </item> <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true"> <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> <preferred-size width="150" height="-1" /> </default-constraints> </item> <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true"> <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> <preferred-size width="150" height="-1" /> </default-constraints> </item> <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true"> <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1"> <preferred-size width="150" height="-1" /> </default-constraints> </item> <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true"> <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> <preferred-size width="150" height="50" /> </default-constraints> </item> <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> <preferred-size width="150" height="50" /> </default-constraints> </item> <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true"> <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> <preferred-size width="150" height="50" /> </default-constraints> </item> <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true"> <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" /> </item> <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> <preferred-size width="150" height="50" /> </default-constraints> </item> <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3"> <preferred-size width="150" height="50" /> </default-constraints> </item> <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3"> <preferred-size width="150" height="50" /> </default-constraints> </item> <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> <preferred-size width="200" height="200" /> </default-constraints> </item> <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false"> <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3"> <preferred-size width="200" height="200" /> </default-constraints> </item> <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true"> <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> </item> <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" /> </item> <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false"> <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" /> </item> <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" /> </item> <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false"> <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1"> <preferred-size width="-1" height="20" /> </default-constraints> </item> <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false"> <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" /> </item> <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false"> <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" /> </item> </group> </component> </project> ycl-common/src/main/java/com/ycl/config/WebConfig.java
@@ -1,45 +1,43 @@ //package com.ycl.config; //import org.springframework.context.annotation.Bean; //import org.springframework.context.annotation.Configuration; //import org.springframework.core.Ordered; //import org.springframework.core.annotation.Order; //import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; //import org.springframework.security.crypto.password.PasswordEncoder; //import org.springframework.web.cors.CorsConfiguration; //import org.springframework.web.cors.UrlBasedCorsConfigurationSource; //import org.springframework.web.filter.CorsFilter; ///** // * @author Lyq // * @version 1.0 // * @date 2022/9/10 11:09 // */ //@Configuration //@Order(Ordered.HIGHEST_PRECEDENCE) //public class WebConfig { // // // @Bean // public CorsFilter corsFilter() { // final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // final CorsConfiguration config = new CorsConfiguration(); // // 允许cookies跨域 // config.setAllowCredentials(true); // // #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin // config.addAllowedOrigin("*"); // // #允许访问的头信息,*表示全部 // config.addAllowedHeader("*"); // // 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了 // config.setMaxAge(18000L); // // 允许提交请求的方法,*表示全部允许 // config.addAllowedMethod("OPTIONS"); // config.addAllowedMethod("HEAD"); // // 允许Get的请求方法 // config.addAllowedMethod("GET"); // config.addAllowedMethod("PUT"); // config.addAllowedMethod("POST"); // config.addAllowedMethod("DELETE"); // config.addAllowedMethod("PATCH"); // source.registerCorsConfiguration("/**", config); // return new CorsFilter(source); // } //} package com.ycl.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; /** * @author Lyq * @version 1.0 * @date 2022/9/10 11:09 */ @Configuration @Order(Ordered.HIGHEST_PRECEDENCE) public class WebConfig { @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); // 允许cookies跨域 config.setAllowCredentials(true); // #允许向该服务器提交请求的URI,*表示全部允许,在SpringMVC中,如果设成*,会自动转成当前请求头中的Origin config.addAllowedOrigin("*"); // #允许访问的头信息,*表示全部 config.addAllowedHeader("*"); // 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了 config.setMaxAge(18000L); // 允许提交请求的方法,*表示全部允许 config.addAllowedMethod("OPTIONS"); config.addAllowedMethod("HEAD"); // 允许Get的请求方法 config.addAllowedMethod("GET"); config.addAllowedMethod("PUT"); config.addAllowedMethod("POST"); config.addAllowedMethod("DELETE"); config.addAllowedMethod("PATCH"); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } } ycl-platform/src/main/java/com/ycl/controller/NewsInformationController.java
@@ -5,14 +5,23 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.api.ApiController; import com.baomidou.mybatisplus.extension.api.R; import com.baomidou.mybatisplus.extension.conditions.query.QueryChainWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ycl.entity.NewsColumnInformation; import com.ycl.entity.NewsInformation; import com.ycl.service.NewsInformationService; import com.ycl.entity.NewsInformationPolice; import com.ycl.entity.NewsPolice; import com.ycl.service.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import java.io.Serializable; import java.sql.SQLException; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; /** * 资讯表(NewsInformation)表控制层 @@ -29,6 +38,14 @@ @Resource private NewsInformationService newsInformationService; @Autowired private NewsPoliceService policeService; @Autowired private NewsInformationPoliceService newsInformationPoliceService; @Autowired private NewsColumnInformationService newsColumnInformationService; /** * 分页查询所有数据 * @@ -38,7 +55,7 @@ */ @GetMapping public R selectAll(Page<NewsInformation> page, NewsInformation newsInformation) { return success(this.newsInformationService.page(page, new QueryWrapper<>(newsInformation))); return success(this.newsInformationService.page(page, new QueryWrapper<>(newsInformation).orderByDesc("publish_time"))); } /** @@ -58,9 +75,29 @@ * @param newsInformation 实体对象 * @return 新增结果 */ @Transactional(rollbackFor = SQLException.class) @PostMapping public R insert(@RequestBody NewsInformation newsInformation) { return success(this.newsInformationService.save(newsInformation)); Integer saveResult = this.newsInformationService.insertOneInformation(newsInformation); Integer informationId=newsInformation.getId(); if (newsInformation.getIsSign()==0){ List<String> departmentIds = newsInformation.getDepartmentId(); for (String departmentId:departmentIds){ QueryWrapper<NewsPolice> wrapper = new QueryWrapper(); wrapper.eq("news_department_id",departmentId); List<NewsPolice> list = policeService.list(wrapper); if (!list.isEmpty()){ for (NewsPolice newsPolice:list){ newsInformationPoliceService.save(NewsInformationPolice.builder().newsPoliceId(newsPolice.getId()).newsInformationId(informationId).isSign(0).build()); } } } } for (String columnId:newsInformation.getColumnId()){ newsColumnInformationService.save(NewsColumnInformation.builder().columnId(Integer.parseInt(columnId)).informationId(informationId).build()); } return success(saveResult); } /** @@ -71,6 +108,25 @@ */ @PutMapping public R update(@RequestBody NewsInformation newsInformation) { Integer informationId = newsInformation.getId(); if (newsInformation.getIsSign()==0){ newsInformationPoliceService.remove(new QueryWrapper<NewsInformationPolice>().eq("news_information_id",informationId)); List<String> departmentIds = newsInformation.getDepartmentId(); for (String departmentId:departmentIds){ QueryWrapper<NewsPolice> wrapper = new QueryWrapper(); wrapper.eq("news_department_id",departmentId); List<NewsPolice> list = policeService.list(wrapper); if (!list.isEmpty()){ for (NewsPolice newsPolice:list){ newsInformationPoliceService.save(NewsInformationPolice.builder().newsPoliceId(newsPolice.getId()).newsInformationId(informationId).isSign(0).build()); } } } } newsColumnInformationService.remove(new QueryWrapper<NewsColumnInformation>().eq("information_id",informationId)); for (String columnId:newsInformation.getColumnId()){ newsColumnInformationService.save(NewsColumnInformation.builder().columnId(Integer.parseInt(columnId)).informationId(informationId).build()); } return success(this.newsInformationService.updateById(newsInformation)); } ycl-platform/src/main/java/com/ycl/controller/NewsInformationPoliceController.java
@@ -64,15 +64,22 @@ } /** * 修改数据 * 修改信息或签收状态 * * @param newsInformationPolice 实体对象 * @return 修改结果 */ @PutMapping public R update(@RequestBody NewsInformationPolice newsInformationPolice) { public R updateSignStatus(@RequestBody NewsInformationPolice newsInformationPolice) { if (newsInformationPolice.getId()==null){ QueryWrapper<NewsInformationPolice> wrapper = new QueryWrapper<>(); NewsInformationPolice one = newsInformationPoliceService.getOne(wrapper.eq("news_information_id", newsInformationPolice.getNewsInformationId()).eq("news_police_id", newsInformationPolice.getNewsPoliceId())); one.setIsSign(1); return success(this.newsInformationPoliceService.updateById(one)); } return success(this.newsInformationPoliceService.updateById(newsInformationPolice)); } /** * 删除数据 @@ -84,5 +91,19 @@ public R delete(@RequestParam("idList") List<Long> idList) { return success(this.newsInformationPoliceService.removeByIds(idList)); } /** * 通过资讯id查询总数和已阅人数 * * @param id 主键 * @return 单条数据 */ @GetMapping("information/{id}") public R selectListByInformationId(@PathVariable Serializable id) { int sum = this.newsInformationPoliceService.count(new QueryWrapper<NewsInformationPolice>().eq("news_information_id", id)); int sign = this.newsInformationPoliceService.count(new QueryWrapper<NewsInformationPolice>().eq("news_information_id", id).eq("is_sign",1)); return success(sign+"/"+sum); } } ycl-platform/src/main/java/com/ycl/entity/NewsChannel.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import java.io.Serializable; import java.sql.Date; import java.util.List; /** * 频道表(NewsChannel)表实体类 @@ -21,7 +22,16 @@ private String code; //创建时间 private Date createTime; //栏目id private List<String> columnId; public List<String> getColumnId() { return columnId; } public void setColumnId(List<String> columnId) { this.columnId = columnId; } public Integer getId() { return id; ycl-platform/src/main/java/com/ycl/entity/NewsColumnInformation.java
@@ -2,6 +2,10 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.NoArgsConstructor; import java.io.Serializable; /** @@ -11,6 +15,9 @@ * @since 2022-11-17 11:38:27 */ @SuppressWarnings("serial") @Builder @NoArgsConstructor @AllArgsConstructor public class NewsColumnInformation extends Model<NewsColumnInformation> { private Integer id; ycl-platform/src/main/java/com/ycl/entity/NewsInformation.java
@@ -2,8 +2,11 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serializable; import java.sql.Date; import java.util.List; /** * 资讯表(NewsInformation)表实体类 @@ -20,16 +23,37 @@ //内容 private String content; //发布时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date publishTime; //是否签收0未签收1签收2不需要签收 //是否需要签收0需要签收1不需要签收 private Integer isSign; //创建时间 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime; //警员id private Object sendTo; private Integer sendTo; //图片地址 private String imageUrl; //部门(机构)id private List<String> departmentId; //栏目id private List<String> columnId; public List<String> getColumnId() { return columnId; } public void setColumnId(List<String> columnId) { this.columnId = columnId; } public List<String> getDepartmentId() { return departmentId; } public void setDepartmentId(List<String> departmentId) { this.departmentId = departmentId; } public Integer getId() { return id; @@ -79,11 +103,11 @@ this.createTime = createTime; } public Object getSendTo() { public Integer getSendTo() { return sendTo; } public void setSendTo(Object sendTo) { public void setSendTo(Integer sendTo) { this.sendTo = sendTo; } ycl-platform/src/main/java/com/ycl/entity/NewsInformationPolice.java
@@ -2,6 +2,10 @@ import com.baomidou.mybatisplus.extension.activerecord.Model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.NoArgsConstructor; import java.io.Serializable; /** @@ -11,6 +15,9 @@ * @since 2022-11-17 15:17:21 */ @SuppressWarnings("serial") @Builder @NoArgsConstructor @AllArgsConstructor public class NewsInformationPolice extends Model<NewsInformationPolice> { private Integer id; ycl-platform/src/main/java/com/ycl/mapper/NewsInformationDao.java
@@ -31,5 +31,7 @@ */ int insertOrUpdateBatch(@Param("entities") List<NewsInformation> entities); int insertOneInformation(@Param("entity") NewsInformation entity); } ycl-platform/src/main/java/com/ycl/mapper/NewsInformationPoliceDao.java
File was renamed from ycl-platform/src/main/java/com/ycl/dao/NewsInformationPoliceDao.java @@ -1,4 +1,4 @@ package com.ycl.dao; package com.ycl.mapper; import java.util.List; ycl-platform/src/main/java/com/ycl/service/NewsInformationService.java
@@ -10,6 +10,6 @@ * @since 2022-11-17 11:38:27 */ public interface NewsInformationService extends IService<NewsInformation> { int insertOneInformation(NewsInformation entity); } ycl-platform/src/main/java/com/ycl/service/impl/NewsInformationPoliceServiceImpl.java
@@ -1,7 +1,7 @@ package com.ycl.service.impl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ycl.dao.NewsInformationPoliceDao; import com.ycl.mapper.NewsInformationPoliceDao; import com.ycl.entity.NewsInformationPolice; import com.ycl.service.NewsInformationPoliceService; import org.springframework.stereotype.Service; ycl-platform/src/main/java/com/ycl/service/impl/NewsInformationServiceImpl.java
@@ -4,6 +4,8 @@ import com.ycl.mapper.NewsInformationDao; import com.ycl.entity.NewsInformation; import com.ycl.service.NewsInformationService; import org.apache.ibatis.annotations.Param; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** @@ -15,5 +17,12 @@ @Service("newsInformationService") public class NewsInformationServiceImpl extends ServiceImpl<NewsInformationDao, NewsInformation> implements NewsInformationService { @Autowired NewsInformationDao newsInformationDao; @Override public int insertOneInformation(NewsInformation entity) { return newsInformationDao.insertOneInformation(entity); } } ycl-platform/src/main/resources/mapper/NewsDepartmentInformationDao.xml
File was deleted ycl-platform/src/main/resources/mapper/NewsInformationDao.xml
@@ -31,5 +31,10 @@ on duplicate key update title = values(title) , content = values(content) , publish_time = values(publish_time) , is_sign = values(is_sign) , create_time = values(create_time) , send_to = values(send_to) , image_url = values(image_url) </insert> <insert id="insertOneInformation" keyProperty="id" useGeneratedKeys="true"> insert into news_website.news_information(title, content, publish_time, is_sign, create_time, send_to, image_url) values (#{entity.title}, #{entity.content}, #{entity.publishTime}, #{entity.isSign}, #{entity.createTime}, #{entity.sendTo}, #{entity.imageUrl}) </insert> </mapper> ycl-platform/src/main/resources/mapper/NewsInformationPoliceDao.xml
@@ -1,6 +1,6 @@ <?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.dao.NewsInformationPoliceDao"> <mapper namespace="com.ycl.mapper.NewsInformationPoliceDao"> <resultMap type="com.ycl.entity.NewsInformationPolice" id="NewsInformationPoliceMap"> <result property="id" column="id" jdbcType="INTEGER"/>