From 6c82b0f944a0d3547659db5ec1f640a9ec7d3fd3 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 15 Jun 2022 11:08:52 +0800
Subject: [PATCH] 20220606
---
src/main/java/com/xcong/farmer/cms/modules/system/util/CaptchaUtil.java | 38 +++
src/main/java/com/xcong/farmer/cms/modules/system/util/UUIDUtil.java | 11 +
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java | 19 +
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddMessageDto.java | 35 +++
pom.xml | 7
src/main/java/com/xcong/farmer/cms/modules/system/entity/ValidateCodeProperties.java | 35 +++
src/main/resources/mapper/UserMapper.xml | 4
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java | 55 +++++
src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java | 2
src/main/resources/mapper/NavigationBarMapper.xml | 4
src/main/java/com/xcong/farmer/cms/modules/system/entity/MessageBoardEntity.java | 34 +++
src/main/resources/mapper/RoleMapper.xml | 4
src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java | 7
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MessageBoardServiceImpl.java | 98 +++++++++
src/main/resources/mapper/ArticleMapper.xml | 4
src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminMessageBoardVo.java | 32 +++
src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminCommonController.java | 9
src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminMessageBoardController.java | 49 ++++
src/main/resources/mapper/ColumnMapper.xml | 4
src/main/java/com/xcong/farmer/cms/modules/system/config/KaptchaConfig.java | 46 ++++
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java | 7
src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminMessageBoardDto.java | 19 +
src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java | 5
src/main/java/com/xcong/farmer/cms/modules/system/mapper/MessageBoardMapper.java | 13 +
src/main/resources/application.yml | 2
src/main/java/com/xcong/farmer/cms/modules/system/service/IMessageBoardService.java | 19 +
src/main/resources/mapper/MessageBoardMapper.xml | 25 ++
27 files changed, 565 insertions(+), 22 deletions(-)
diff --git a/pom.xml b/pom.xml
index e228198..e99d630 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,6 +30,13 @@
</properties>
<dependencies>
+
+ <dependency>
+ <groupId>com.github.penggle</groupId>
+ <artifactId>kaptcha</artifactId>
+ <version>2.3.2</version>
+ </dependency>
+
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
index 9456823..82bc12a 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
@@ -43,8 +43,10 @@
.antMatchers("/webjars/**").permitAll()
.antMatchers("/v2/**").permitAll()
.antMatchers("/api/common/login").permitAll()
+ .antMatchers("/api/common/captcha").permitAll()
.antMatchers("/api/common/doUpload").permitAll()
.antMatchers("/api/common/uploadFile").permitAll()
+ .antMatchers("/api/messageBoard/addMessage").permitAll()
.antMatchers("/image/**").permitAll()
.anyRequest().authenticated()
.and().apply(securityConfiguereAdapter());
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/config/KaptchaConfig.java b/src/main/java/com/xcong/farmer/cms/modules/system/config/KaptchaConfig.java
new file mode 100644
index 0000000..2018344
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/config/KaptchaConfig.java
@@ -0,0 +1,46 @@
+package com.xcong.farmer.cms.modules.system.config;
+
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.google.code.kaptcha.util.Config;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import java.util.Properties;
+
+@Configuration
+public class KaptchaConfig {
+ @Bean
+ public DefaultKaptcha producer() {
+ //Properties类
+ Properties properties = new Properties();
+ // 图片边框
+ properties.setProperty("kaptcha.border", "no");
+ // 边框颜色
+// properties.setProperty("kaptcha.border.color", "105,179,90");
+ // 字体颜色
+ properties.setProperty("kaptcha.textproducer.font.color", "black");
+ // 图片宽
+ properties.setProperty("kaptcha.image.width", "160");
+ // 图片高
+ properties.setProperty("kaptcha.image.height", "58");
+ // 文字间隔
+ properties.setProperty("kaptcha.textproducer.font.space", "5");
+ // 字体大小
+ properties.setProperty("kaptcha.textproducer.font.size", "38");
+ // session key
+ properties.setProperty("kaptcha.session.key", "code");
+ // 验证码长度
+ properties.setProperty("kaptcha.textproducer.char.length", "4");
+ // 字体
+ properties.setProperty("kaptcha.textproducer.font.names", "Arial, Courier");
+ //图片干扰
+// properties.setProperty("kaptcha.noise.impl","com.google.code.kaptcha.impl.DefaultNoise");
+ //去除Kaptcha方法得到验证码的干扰线
+ properties.setProperty("kaptcha.noise.impl","com.google.code.kaptcha.impl.NoNoise");
+ //Kaptcha 使用上述配置
+ Config config = new Config(properties);
+ //DefaultKaptcha对象使用上述配置, 并返回这个Bean
+ DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
+ defaultKaptcha.setConfig(config);
+ return defaultKaptcha;
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminCommonController.java b/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminCommonController.java
index 9b7517a..eed8bdb 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminCommonController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminCommonController.java
@@ -1,7 +1,6 @@
package com.xcong.farmer.cms.modules.system.controller;
import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.StrUtil;
import com.xcong.farmer.cms.common.contants.AppContants;
import com.xcong.farmer.cms.common.response.Result;
import com.xcong.farmer.cms.modules.system.dto.AdminLoginDto;
@@ -18,6 +17,8 @@
import java.io.File;
import java.io.IOException;
+import java.util.Map;
+
@RestController
@RequestMapping(value = "/api/common")
@@ -34,6 +35,12 @@
return iCommonService.login(adminLoginDto);
}
+ @ApiOperation(value = "获取验证码", notes = "获取验证码")
+ @GetMapping("/captcha")
+ public Result captcha() throws IOException {
+ return iCommonService.captchaCreator();
+ }
+
/**
* 用户退出登录
* @return
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminMessageBoardController.java b/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminMessageBoardController.java
new file mode 100644
index 0000000..74794b2
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/controller/AdminMessageBoardController.java
@@ -0,0 +1,49 @@
+package com.xcong.farmer.cms.modules.system.controller;
+
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.AdminAddMessageDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminDeleteDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminMessageBoardDto;
+import com.xcong.farmer.cms.modules.system.service.IMessageBoardService;
+import com.xcong.farmer.cms.modules.system.vo.AdminMessageBoardVo;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+
+@RestController
+@RequestMapping(value = "/api/messageBoard")
+@Slf4j
+@Api(value = "留言板", tags = "留言板")
+public class AdminMessageBoardController {
+
+ @Resource
+ private IMessageBoardService iMessageBoardService;
+
+ @ApiOperation(value = "留言板分页列表", notes = "留言板分页列表")
+ @ApiResponses({@ApiResponse(code = 200, message = "ok", response = AdminMessageBoardVo.class)})
+ @PostMapping(value = "/messageInPage")
+ public Result getMessageInPage(@RequestBody @Valid AdminMessageBoardDto adminMessageBoardDto) {
+ return iMessageBoardService.getMessageInPage(adminMessageBoardDto);
+ }
+
+ @ApiOperation(value = "删除留言", notes = "删除留言")
+ @PostMapping(value = "/delObjs")
+ public Result delObjs(@RequestBody @Valid AdminDeleteDto adminDeleteDto) {
+ return iMessageBoardService.delObjs(adminDeleteDto);
+ }
+
+ @ApiOperation(value = "新增留言", notes = "新增留言")
+ @PostMapping(value = "/addMessage")
+ public Result addMessage(HttpServletRequest request,@RequestBody @Valid AdminAddMessageDto adminAddMessageDto) {
+ return iMessageBoardService.addMessage(request,adminAddMessageDto);
+ }
+
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddMessageDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddMessageDto.java
new file mode 100644
index 0000000..1ca8fd7
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminAddMessageDto.java
@@ -0,0 +1,35 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+
+@Data
+@ApiModel(value = "AdminAddMessageDto", description = "参数接收类")
+public class AdminAddMessageDto {
+
+ @ApiModelProperty(value = "姓名")
+ @NotNull(message = "请输入姓名")
+ private String name;
+
+ @ApiModelProperty(value = "联系方式")
+ @NotNull(message = "请输入联系方式")
+ private String contactValue;
+
+ @ApiModelProperty(value = "留言标题")
+ @NotNull(message = "请输入留言标题")
+ private String title;
+
+ @ApiModelProperty(value = "留言描述")
+ @NotNull(message = "请输入留言描述")
+ private String remark;
+
+ @ApiModelProperty(value = "备注1")
+ private String paramOne;
+
+ @ApiModelProperty(value = "备注2")
+ private String paramTwo;
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java
index b6871be..c76f9ba 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java
@@ -15,4 +15,11 @@
@NotBlank(message = "请输入密码")
private String password;
+ private String codeToken;
+
+ @NotBlank(message = "请输入验证码")
+ private String codeValue;
+
+
+
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminMessageBoardDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminMessageBoardDto.java
new file mode 100644
index 0000000..179f4bb
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminMessageBoardDto.java
@@ -0,0 +1,19 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminMessageBoardDto", description = "参数接收类")
+public class AdminMessageBoardDto {
+
+ @ApiModelProperty(value = "查询条件", example = "张三")
+ private String queryKey;
+
+ @ApiModelProperty(value = "每页条数", example = "10")
+ private Integer pageSize;
+
+ @ApiModelProperty(value = "第几页", example = "1")
+ private Integer pageNum;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/MessageBoardEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/MessageBoardEntity.java
new file mode 100644
index 0000000..53ad8c5
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/MessageBoardEntity.java
@@ -0,0 +1,34 @@
+package com.xcong.farmer.cms.modules.system.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.util.Date;
+import lombok.Data;
+
+/**
+ * 留言板表
+ */
+@Data
+@TableName("t_message_board")
+public class MessageBoardEntity {
+ //ID
+
+ @TableId(value = "id",type = IdType.AUTO)
+ private Long id;
+ //姓名
+ private String name;
+ //联系方式
+ private String contactValue;
+ //留言标题
+ private String title;
+ //留言描述
+ private String remark;
+ //所属公司ID
+ private Long companyId;
+ //创建时间
+ private Date createTime;
+
+ private String paramOne;
+ private String paramTwo;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/ValidateCodeProperties.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ValidateCodeProperties.java
new file mode 100644
index 0000000..38f75f3
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/ValidateCodeProperties.java
@@ -0,0 +1,35 @@
+package com.xcong.farmer.cms.modules.system.entity;
+
+import lombok.Data;
+
+@Data
+public class ValidateCodeProperties {
+
+ /**
+ * 验证码有效时间,单位秒
+ */
+ private Long time = 120L;
+ /**
+ * 验证码类型,可选值 png和 gif
+ */
+ private String type = "png";
+ /**
+ * 图片宽度,px
+ */
+ private Integer width = 130;
+ /**
+ * 图片高度,px
+ */
+ private Integer height = 48;
+ /**
+ * 验证码位数
+ */
+ private Integer length = 4;
+ /**
+ * 验证码值的类型
+ * 1. 数字加字母
+ * 2. 纯数字
+ * 3. 纯字母
+ */
+ private Integer charType = 2;
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/MessageBoardMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/MessageBoardMapper.java
new file mode 100644
index 0000000..1f46ad3
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/MessageBoardMapper.java
@@ -0,0 +1,13 @@
+package com.xcong.farmer.cms.modules.system.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.farmer.cms.modules.system.entity.MessageBoardEntity;
+import com.xcong.farmer.cms.modules.system.vo.AdminMessageBoardVo;
+import org.apache.ibatis.annotations.Param;
+
+public interface MessageBoardMapper extends BaseMapper<MessageBoardEntity> {
+
+ IPage<AdminMessageBoardVo> selectAdminMessageBoardInPage(Page<AdminMessageBoardVo> page, @Param("record") MessageBoardEntity messageBoardEntity);
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java
index ef6dc9b..04d7f74 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java
@@ -4,10 +4,17 @@
import com.xcong.farmer.cms.common.response.Result;
import com.xcong.farmer.cms.modules.system.dto.AdminLoginDto;
import com.xcong.farmer.cms.modules.system.entity.UserEntity;
+import java.io.IOException;
+
+import java.util.Map;
public interface ICommonService extends IService<UserEntity> {
Result login(AdminLoginDto adminLoginDto);
Result memberLogout();
+ //生成token
+ Map<String, Object> createToken(String captcha);
+ //生成captcha验证码
+ Result captchaCreator() throws IOException;
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/IMessageBoardService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/IMessageBoardService.java
new file mode 100644
index 0000000..aecafb6
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/IMessageBoardService.java
@@ -0,0 +1,19 @@
+package com.xcong.farmer.cms.modules.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.AdminAddMessageDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminDeleteDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminMessageBoardDto;
+import com.xcong.farmer.cms.modules.system.entity.MessageBoardEntity;
+
+import javax.servlet.http.HttpServletRequest;
+
+public interface IMessageBoardService extends IService<MessageBoardEntity> {
+
+ Result getMessageInPage(AdminMessageBoardDto adminMessageBoardDto);
+
+ Result delObjs(AdminDeleteDto adminDeleteDto);
+
+ Result addMessage(HttpServletRequest request, AdminAddMessageDto adminAddMessageDto);
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
index 7de2ada..1cb5399 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/ArticleServiceImpl.java
@@ -133,10 +133,7 @@
return Result.fail("文章不存在");
}
Integer releaseStatus = adminUpdateArticleDto.getReleaseStatus();
- if(!ArticleEntity.RELEASE_STATUS_YES.equals(releaseStatus)){
- return Result.fail("请先取消文章的发布状态");
- }
- articleEntity.getReleaseStatus();
+ articleEntity.setReleaseStatus(releaseStatus);
String title = adminUpdateArticleDto.getTitle();
articleEntity.setTitle(title);
String childTitle = adminUpdateArticleDto.getChildTitle();
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java
index dffba4e..51f3f21 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java
@@ -8,17 +8,24 @@
import com.xcong.farmer.cms.common.response.Result;
import com.xcong.farmer.cms.configurations.properties.ApplicationProperties;
import com.xcong.farmer.cms.configurations.properties.SecurityProperties;
-import com.xcong.farmer.cms.modules.member.entity.MemberEntity;
import com.xcong.farmer.cms.modules.system.dto.AdminLoginDto;
import com.xcong.farmer.cms.modules.system.entity.UserEntity;
import com.xcong.farmer.cms.modules.system.mapper.UserMapper;
import com.xcong.farmer.cms.modules.system.service.ICommonService;
+import com.xcong.farmer.cms.modules.system.util.CaptchaUtil;
import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
-import com.xcong.farmer.cms.utils.MessageSourceUtils;
+import com.xcong.farmer.cms.modules.system.util.UUIDUtil;
import com.xcong.farmer.cms.utils.RedisUtils;
+import java.util.concurrent.TimeUnit;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.core.ValueOperations;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
+
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -40,9 +47,33 @@
private ApplicationProperties applicationProperties;
@Resource
private SecurityProperties securityProperties;
+ @Autowired
+ private RedisTemplate<String, Object> redisTemplate;
+ @Autowired
+ private UUIDUtil uuidUtil;
+ @Autowired
+ private CaptchaUtil captchaUtil;
+ //从SpringBoot的配置文件中取出过期时间
+ @Value("${server.servlet.session.timeout}")
+ private Integer timeout;
@Override
public Result login(AdminLoginDto adminLoginDto) {
+
+ //根据前端传回的token在redis中找对应的value
+ ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();
+ String codeToken = adminLoginDto.getCodeToken();
+ String codeValue = adminLoginDto.getCodeValue();
+ if (redisTemplate.hasKey(codeToken)) {
+ //验证通过, 删除对应的key
+ if (valueOperations.get(codeToken).equals(codeValue)) {
+ redisTemplate.delete(codeToken);
+ } else {
+ return Result.fail("请输入正确验证码");
+ }
+ } else {
+ return Result.fail("验证码已过期,请刷新当前页面");
+ }
String username = adminLoginDto.getUsername();
String password = adminLoginDto.getPassword();
UserEntity userEntity = userMapper.selectByUserNameAndPassword(username, SecureUtil.md5(password));
@@ -93,6 +124,26 @@
return Result.ok("退出成功");
}
+ @Override
+ public Map<String, Object> createToken(String captcha) {
+ //生成一个token
+ String key = uuidUtil.getUUID32();
+ //生成验证码对应的token 以token为key 验证码为value存在redis中
+ ValueOperations<String, Object> valueOperations = redisTemplate.opsForValue();
+ valueOperations.set(key, captcha);
+ //设置验证码过期时间
+ redisTemplate.expire(key, timeout, TimeUnit.MINUTES);
+ Map<String, Object> map = new HashMap<>();
+ map.put("token", key);
+ map.put("expire", timeout);
+ return map;
+ }
+
+ @Override
+ public Result captchaCreator() throws IOException {
+ return captchaUtil.catchaImgCreator();
+ }
+
public String generateAsaToken(String token) {
RSA rsa = new RSA(null, securityProperties.getPublicKey());
return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey);
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MessageBoardServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MessageBoardServiceImpl.java
new file mode 100644
index 0000000..79cd77e
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/MessageBoardServiceImpl.java
@@ -0,0 +1,98 @@
+package com.xcong.farmer.cms.modules.system.service.Impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.AdminAddMessageDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminDeleteDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminMessageBoardDto;
+import com.xcong.farmer.cms.modules.system.entity.CompanyEntity;
+import com.xcong.farmer.cms.modules.system.entity.MessageBoardEntity;
+import com.xcong.farmer.cms.modules.system.entity.UserEntity;
+import com.xcong.farmer.cms.modules.system.mapper.CompanyMapper;
+import com.xcong.farmer.cms.modules.system.mapper.MessageBoardMapper;
+import com.xcong.farmer.cms.modules.system.service.IMessageBoardService;
+import com.xcong.farmer.cms.modules.system.util.LoginUserUtil;
+import com.xcong.farmer.cms.modules.system.vo.AdminMessageBoardVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.date.DateUtil;
+
+import cn.hutool.core.collection.CollUtil;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.List;
+
+@Service
+@Slf4j
+public class MessageBoardServiceImpl extends ServiceImpl<MessageBoardMapper, MessageBoardEntity> implements IMessageBoardService {
+
+ @Resource
+ private CompanyMapper companyMapper;
+
+ @Override
+ public Result getMessageInPage(AdminMessageBoardDto adminMessageBoardDto) {
+ MessageBoardEntity messageBoardEntity = new MessageBoardEntity();
+ UserEntity userlogin = LoginUserUtil.getLoginUser();
+ Long companyId = userlogin.getCompanyId();
+ if(UserEntity.USER_BELONG_TOP != companyId){
+ messageBoardEntity.setCompanyId(companyId);
+ }
+ String queryKey = adminMessageBoardDto.getQueryKey();
+ if(StrUtil.isNotEmpty(queryKey)){
+ messageBoardEntity.setName(queryKey);
+ messageBoardEntity.setRemark(queryKey);
+ }
+ Page<AdminMessageBoardVo> page = new Page<>(adminMessageBoardDto.getPageNum(), adminMessageBoardDto.getPageSize());
+ IPage<AdminMessageBoardVo> list = this.baseMapper.selectAdminMessageBoardInPage(page, messageBoardEntity);
+ return Result.ok(list);
+ }
+
+ @Override
+ @Transactional
+ public Result delObjs(AdminDeleteDto adminDeleteDto) {
+ String ids = adminDeleteDto.getIds();
+ if(StrUtil.isNotEmpty(ids)){
+ String[] messageIds = ids.split(StringPool.COMMA);
+ for(String messageIdStr : messageIds){
+ Long messageId = Long.valueOf(messageIdStr);
+ this.baseMapper.deleteById(messageId);
+ }
+ }
+ return Result.ok("删除成功");
+ }
+
+ @Override
+ public Result addMessage(HttpServletRequest request, AdminAddMessageDto adminAddMessageDto) {
+ StringBuffer requestURL = request.getRequestURL();
+ List<CompanyEntity> companyEntities = companyMapper.selectList(new QueryWrapper<>());
+ Long companyId = 0L;
+ if(CollUtil.isNotEmpty(companyEntities)){
+ for(CompanyEntity companyEntity : companyEntities){
+ boolean contains = StrUtil.contains(requestURL, companyEntity.getWebAddress());
+ if(contains){
+ companyId = companyEntity.getId();
+ }
+ }
+ }
+ MessageBoardEntity messageBoardEntity = new MessageBoardEntity();
+ messageBoardEntity.setName(adminAddMessageDto.getName());
+ messageBoardEntity.setContactValue(adminAddMessageDto.getContactValue());
+ messageBoardEntity.setTitle(adminAddMessageDto.getTitle());
+ messageBoardEntity.setRemark(adminAddMessageDto.getRemark());
+ messageBoardEntity.setCreateTime(DateUtil.date());
+ messageBoardEntity.setParamOne(adminAddMessageDto.getParamOne());
+ messageBoardEntity.setParamTwo(adminAddMessageDto.getParamTwo());
+ if(companyId > 0L){
+ messageBoardEntity.setCompanyId(companyId);
+ }
+ this.baseMapper.insert(messageBoardEntity);
+ return Result.ok("留言成功");
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
index 04baff4..54e461c 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
@@ -251,11 +251,20 @@
List<UserRoleEntity> userRoleEntities = userRoleMapper.selectList(userRoleQueryWrapper);
if(CollUtil.isNotEmpty(userRoleEntities)){
List menuIds = new ArrayList<Long>();
- for(UserRoleEntity userRoleEntity : userRoleEntities){
- List<RoleMenuEntity> roleMenuEntities = roleMenuMapper.selectListByRoleId(userRoleEntity.getRoleId());
- if(CollUtil.isNotEmpty(roleMenuEntities)){
- for(RoleMenuEntity roleMenuEntity : roleMenuEntities){
- menuIds.add(roleMenuEntity.getMenuId());
+ if(UserEntity.USERNAME_DEFAULT.equals(loginUser.getUsername())){
+ List<MenuEntity> menuEntities = menuMapper.selectList(new QueryWrapper<>());
+ if(CollUtil.isNotEmpty(menuEntities)){
+ for(MenuEntity menuEntity : menuEntities){
+ menuIds.add(menuEntity.getId());
+ }
+ }
+ }else{
+ for(UserRoleEntity userRoleEntity : userRoleEntities){
+ List<RoleMenuEntity> roleMenuEntities = roleMenuMapper.selectListByRoleId(userRoleEntity.getRoleId());
+ if(CollUtil.isNotEmpty(roleMenuEntities)){
+ for(RoleMenuEntity roleMenuEntity : roleMenuEntities){
+ menuIds.add(roleMenuEntity.getMenuId());
+ }
}
}
}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/util/CaptchaUtil.java b/src/main/java/com/xcong/farmer/cms/modules/system/util/CaptchaUtil.java
new file mode 100644
index 0000000..3179140
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/util/CaptchaUtil.java
@@ -0,0 +1,38 @@
+package com.xcong.farmer.cms.modules.system.util;
+
+import com.google.code.kaptcha.impl.DefaultKaptcha;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.service.ICommonService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import sun.misc.BASE64Encoder;
+import javax.imageio.ImageIO;
+import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.util.Map;
+
+@Component
+public class CaptchaUtil {
+
+ @Autowired
+ private DefaultKaptcha producer;
+ @Autowired
+ private ICommonService iCommonService;
+ //生成catchCreator的map
+ public Result catchaImgCreator() throws IOException {
+ //生成文字验证码
+ String text = producer.createText();
+ //生成文字对应的图片验证码
+ BufferedImage image = producer.createImage(text);
+ //将图片写出
+ ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
+ ImageIO.write(image, "jpg", outputStream);
+ //对写出的字节数组进行Base64编码 ==> 用于传递8比特字节码
+ BASE64Encoder encoder = new BASE64Encoder();
+ //生成token
+ Map<String, Object> token = iCommonService.createToken(text);
+ token.put("img", encoder.encode(outputStream.toByteArray()));
+ return Result.ok(token);
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/util/UUIDUtil.java b/src/main/java/com/xcong/farmer/cms/modules/system/util/UUIDUtil.java
new file mode 100644
index 0000000..092fa42
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/util/UUIDUtil.java
@@ -0,0 +1,11 @@
+package com.xcong.farmer.cms.modules.system.util;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.stereotype.Component;
+import java.util.UUID;
+@Component public class UUIDUtil {
+ /** * 生成32位的随机UUID * @return 字符形式的小写UUID */
+ @Bean public String getUUID32() {
+ return UUID.randomUUID().toString() .replace("-", "").toLowerCase();
+ }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminMessageBoardVo.java b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminMessageBoardVo.java
new file mode 100644
index 0000000..57adb85
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/vo/AdminMessageBoardVo.java
@@ -0,0 +1,32 @@
+package com.xcong.farmer.cms.modules.system.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.google.type.Date;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminMessageBoardVo", description = "留言板列表返回")
+public class AdminMessageBoardVo {
+
+ //ID
+ private Long id;
+
+ @ApiModelProperty(value = "姓名")
+ private String name;
+
+ @ApiModelProperty(value = "联系方式")
+ private String contactValue;
+
+ @ApiModelProperty(value = "留言标题")
+ private String title;
+
+ @ApiModelProperty(value = "留言描述")
+ private String remark;
+
+ @ApiModelProperty(value = "创建时间")
+ private Date createTime;
+
+}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 0f0a173..bc48d12 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -2,6 +2,8 @@
port: 8878
servlet:
context-path: /
+ session:
+ timeout: 1
spring:
datasource:
diff --git a/src/main/resources/mapper/ArticleMapper.xml b/src/main/resources/mapper/ArticleMapper.xml
index ef9352b..38bc01b 100644
--- a/src/main/resources/mapper/ArticleMapper.xml
+++ b/src/main/resources/mapper/ArticleMapper.xml
@@ -15,8 +15,8 @@
<if test="record.columnId != null">
and a.column_id = #{record.columnId}
</if>
- <if test="record.belongId != null">
- and a.company_id = #{record.belongId}
+ <if test="record.companyId != null">
+ and a.company_id = #{record.companyId}
</if>
<if test="record.title!=null">
and a.title like concat ('%',#{record.title},'%')
diff --git a/src/main/resources/mapper/ColumnMapper.xml b/src/main/resources/mapper/ColumnMapper.xml
index 3fdb807..3ea4d55 100644
--- a/src/main/resources/mapper/ColumnMapper.xml
+++ b/src/main/resources/mapper/ColumnMapper.xml
@@ -12,8 +12,8 @@
<if test="record.parentId != null">
and a.parent_id = #{record.parentId}
</if>
- <if test="record.belongId != null">
- and a.company_id = #{record.belongId}
+ <if test="record.companyId != null">
+ and a.company_id = #{record.companyId}
</if>
</if>
</where>
diff --git a/src/main/resources/mapper/MessageBoardMapper.xml b/src/main/resources/mapper/MessageBoardMapper.xml
new file mode 100644
index 0000000..5fd7925
--- /dev/null
+++ b/src/main/resources/mapper/MessageBoardMapper.xml
@@ -0,0 +1,25 @@
+<?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.xcong.farmer.cms.modules.system.mapper.MessageBoardMapper">
+
+ <select id="selectAdminMessageBoardInPage" resultType="com.xcong.farmer.cms.modules.system.vo.AdminMessageBoardVo">
+ SELECT
+ a.*
+ FROM
+ t_message_board a
+ <where>
+ <if test="record != null" >
+ <if test="record.name!=null">
+ and a.name like concat ('%',#{record.name},'%')
+ </if>
+ <if test="record.remark!=null">
+ and a.remark like concat ('%',#{record.remark},'%')
+ </if>
+ <if test="record.companyId!=null">
+ and a.company_id = #{record.companyId}
+ </if>
+ </if>
+ </where>
+ </select>
+
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/NavigationBarMapper.xml b/src/main/resources/mapper/NavigationBarMapper.xml
index 1893c71..0aef3ca 100644
--- a/src/main/resources/mapper/NavigationBarMapper.xml
+++ b/src/main/resources/mapper/NavigationBarMapper.xml
@@ -12,8 +12,8 @@
<if test="record.parentId != null">
and a.parent_id = #{record.parentId}
</if>
- <if test="record.belongId != null">
- and a.company_id = #{record.belongId}
+ <if test="record.companyId != null">
+ and a.company_id = #{record.companyId}
</if>
</if>
</where>
diff --git a/src/main/resources/mapper/RoleMapper.xml b/src/main/resources/mapper/RoleMapper.xml
index 2d4e3a5..485e29f 100644
--- a/src/main/resources/mapper/RoleMapper.xml
+++ b/src/main/resources/mapper/RoleMapper.xml
@@ -12,8 +12,8 @@
<if test="record.roleName!=null">
and a.role_name like concat ('%',#{record.roleName},'%')
</if>
- <if test="record.belongId!=null">
- and a.company_id = #{record.belongId}
+ <if test="record.companyId!=null">
+ and a.company_id = #{record.companyId}
</if>
</if>
</where>
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index c406e22..fb8962c 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -17,8 +17,8 @@
<if test="record.username!=null">
and a.username like concat ('%',#{record.username},'%')
</if>
- <if test="record.belongId!=null">
- and a.company_id = #{record.belongId}
+ <if test="record.companyId!=null">
+ and a.company_id = #{record.companyId}
</if>
</if>
</where>
--
Gitblit v1.9.1