dengsixing 3 лет назад
Родитель
Сommit
8b7d435465

+ 35 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/controller/AdvertiseController.java

@@ -0,0 +1,35 @@
+package com.fdkankan.manage.controller;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.service.IAdvertiseService;
+import com.fdkankan.manage.vo.PageAdvertiseParamVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 招聘信息表 前端控制器
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-08
+ */
+@RestController
+@RequestMapping("/service/manage/advertise")
+public class AdvertiseController {
+
+    @Autowired
+    private IAdvertiseService advertiseService;
+
+    @PostMapping("/pageAdvertise")
+    public Page pageAdvertise(@RequestBody PageAdvertiseParamVO param){
+        return advertiseService.pageAdvertise(param);
+    }
+
+}
+

+ 92 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/entity/Advertise.java

@@ -0,0 +1,92 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fdkankan.db.base.BaseEntity;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 招聘信息表
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-08
+ */
+@Getter
+@Setter
+@TableName("t_advertise")
+public class Advertise extends BaseEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 职位名称
+     */
+    @TableField("position_name")
+    private String positionName;
+
+    /**
+     * 工作地点
+     */
+    @TableField("working_place")
+    private String workingPlace;
+
+    /**
+     * 薪资待遇
+     */
+    @TableField("salary")
+    private String salary;
+
+    /**
+     * 招聘人数
+     */
+    @TableField("count")
+    private Integer count;
+
+    /**
+     * 工作职责
+     */
+    @TableField("duty")
+    private String duty;
+
+    /**
+     * 任职资格
+     */
+    @TableField("qualification")
+    private String qualification;
+
+    /**
+     * 发布状态(0-否,1-是)
+     */
+    @TableField("is_public")
+    private Integer isPublic;
+
+    /**
+     * 发布时间
+     */
+    @TableField("public_time")
+    private Date publicTime;
+
+    /**
+     * 置顶状态(0-否,1-是)
+     */
+    @TableField("is_top")
+    private Integer isTop;
+
+    /**
+     * 置顶时间
+     */
+    @TableField("top_time")
+    private Date topTime;
+
+
+}

+ 1 - 1
4dkankan-center-manage/src/main/java/com/fdkankan/manage/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir") + "\\4dkankan-center-manage";
 
         generate(path,"manage", getTables(new String[]{
-                "t_news",
+                "t_advertise",
         }));
 
 //        generate(path,"goods", getTables(new String[]{

+ 187 - 184
4dkankan-center-manage/src/main/java/com/fdkankan/manage/interceptor/VisitLogInterceptor.java

@@ -1,184 +1,187 @@
-//package com.fdkankan.manage.interceptor;
-//
-//import cn.hutool.core.util.StrUtil;
-//import cn.hutool.extra.servlet.ServletUtil;
-//import cn.hutool.http.ContentType;
-//import cn.hutool.http.useragent.UserAgent;
-//import cn.hutool.http.useragent.UserAgentUtil;
-//import cn.hutool.poi.excel.ExcelUtil;
-//import com.alibaba.fastjson.JSON;
-//import com.alibaba.fastjson.JSONObject;
-//import com.fdkankan.common.util.JwtUtil;
-//import com.fdkankan.manage.bean.MenuBean;
-//import com.fdkankan.manage.entity.OperLog;
-//import com.fdkankan.redis.constant.RedisKey;
-//import com.fdkankan.redis.util.RedisUtil;
-//import io.jsonwebtoken.Claims;
-//import java.util.Arrays;
-//import java.util.Calendar;
-//import java.util.Date;
-//import java.util.HashMap;
-//import java.util.LinkedList;
-//import java.util.Map;
-//import java.util.Objects;
-//import javax.servlet.http.HttpServletRequest;
-//import lombok.extern.slf4j.Slf4j;
-//import org.aspectj.lang.JoinPoint;
-//import org.aspectj.lang.ProceedingJoinPoint;
-//import org.aspectj.lang.annotation.Around;
-//import org.aspectj.lang.annotation.Aspect;
-//import org.aspectj.lang.annotation.Pointcut;
-//import org.aspectj.lang.reflect.MethodSignature;
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.data.mongodb.core.MongoTemplate;
-//import org.springframework.stereotype.Component;
-//import org.springframework.web.context.request.RequestContextHolder;
-//import org.springframework.web.context.request.ServletRequestAttributes;
-//import org.springframework.web.multipart.MultipartFile;
-//
-//@Component
-//@Aspect
-//@Slf4j
-//public class VisitLogInterceptor {
-//
-//	@Autowired
-//	private RedisUtil redisUtil;
-//
-//	@Autowired
-//	private MongoTemplate mongoTemplate;
-//
-//	@Value("${server.servlet.context-path:null}")
-//	private String contextPath;
-//
-//	// 切入点表达式
-//	@Pointcut("execution(public * com.fdkankan.manage.controller..*.*(..))")
-//	public void privilege() {
-//	}
-//
-//	@Around("privilege()")
-//	public Object around(ProceedingJoinPoint pjp) throws Throwable {
-//
-//		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
-//
-//		//获取客户端ip
-//		String clientIP = ServletUtil.getClientIP(request);
-//
-//		//获取uri
-//		String uri = request.getRequestURI();
-//		if(StrUtil.isNotEmpty(contextPath)){
-//			uri = uri.replaceFirst(contextPath, "");
-//		}
-//
-//		//获取请求方式
-//		String method = request.getMethod();
-//
-//		//获取浏览器信息
-//		String browser = this.getBrowser(request);
-//
-//		//获取参数
-//		String params = this.getParams(pjp, request);
-//
-//		//获取操作路径
-//		String requestPath = this.getRequestPath(uri);
-//
-//        //放行
-//		Object result = pjp.proceed();
-//
-//		//获取用户信息 如果已登录,从token中获取用户信息,如果是登录接口,查询数据库获取用户信息
-//		Map<String, Object> userInfo = this.getUserInfo(request, uri, result);
-//		Long userId = (Long)userInfo.get("userId");
-//		String userName = (String)userInfo.get("userName");
-//		String nickName = (String)userInfo.get("nickName");
-//
-//		//写入mongodb
-//		OperLog operLog = new OperLog();
-//		operLog.setUserId(userId);
-//		operLog.setUserName(userName);
-//		operLog.setNickName(nickName);
-//		operLog.setRequestPath(requestPath);
-//		operLog.setUri(uri);
-//		operLog.setMethod(method);
-//		operLog.setParams(params);
-//		operLog.setIp(clientIP);
-//		operLog.setBrowser(browser);
-//		operLog.setCreateTime(Calendar.getInstance().getTime());
-//		mongoTemplate.insert(operLog);
-//
-//		return result;
-//	}
-//
-//	private String getRequestPath(String uri){
-//		String hget = redisUtil.hget(RedisKey.MANAGE_MENU, uri);
-//		MenuBean menuBean = JSON.parseObject(hget, MenuBean.class);
-//		LinkedList<String> menuList = new LinkedList<>();
-//		this.getRequestPathHandler(menuList, menuBean);
-//		StringBuilder sb = new StringBuilder();
-//		menuList.stream().forEach(str->sb.append("->").append(str));
-//		return sb.substring(2);
-//	}
-//
-//	private void getRequestPathHandler(LinkedList list, MenuBean menuBean){
-//		list.addFirst("[" + menuBean.getName() + "]");
-//		if(Objects.isNull(menuBean.getParent())){
-//			return;
-//		}
-//		this.getRequestPathHandler(list, menuBean.getParent());
-//	}
-//
-//	private Map<String, Object> getUserInfo(HttpServletRequest request, String uri, Object result){
-//		String token = null;
-//		boolean isLogin = uri.endsWith("login");
-//		if(isLogin){
-//			String resultStr = JSON.toJSONString(result);
-//			JSONObject jsonObject = JSON.parseObject(resultStr);
-//			JSONObject data = jsonObject.getJSONObject("data");
-//			token = data.getString("token");
-//		}else{
-//			token = request.getHeader("token");
-//		}
-//		Claims claims = JwtUtil.parseJWT(token);
-//		Integer userId = (Integer) claims.get("userId");
-//		String userName = (String)claims.get("userName");
-//		String nickName = (String)claims.get("nickName");
-//		Map<String, Object> userInfo = new HashMap<>();
-//		userInfo.put("userId", Long.valueOf(userId));
-//		userInfo.put("userName", userName);
-//		userInfo.put("nickName", nickName);
-//		return userInfo;
-//	}
-//
-//	private String getParams(JoinPoint pjp, HttpServletRequest request){
-//
-//		// 获取参数名称
-//		String[] parameterNamesArgs = ((MethodSignature) pjp.getSignature()).getParameterNames();
-//		//获取请求参数值
-//		Object[] args = pjp.getArgs();
-//
-//		Map<String, Object> paramMap = new HashMap<>();
-//		String contentType = request.getContentType();
-//		if(ContentType.JSON.getValue().equals(contentType)){
-//			return JSON.toJSONString(args[0]);
-//		}else{
-//			for (int i = 0; i < args.length; i++) {
-//				if(args[i] instanceof MultipartFile){
-//					paramMap.put(parameterNamesArgs[i], ((MultipartFile) args[i]).getOriginalFilename());
-//					continue;
-//				}
-//				paramMap.put(parameterNamesArgs[i], args[i]);
-//			}
-//		}
-//		return JSON.toJSONString(paramMap);
-//	}
-//
-//	private String getBrowser(HttpServletRequest request){
-//		String userAgentStr = request.getHeader("User-Agent");
-//		UserAgent userAgent = UserAgentUtil.parse(userAgentStr);
-//		String browserType = userAgent.getBrowser().toString();
-//		String browserVersion = userAgent.getVersion();
-//		String browserFormat = "%s(版本%s)";
-//		return  String.format(browserFormat, browserType, browserVersion);
-//	}
-//
-//}
-//
+package com.fdkankan.manage.interceptor;
+
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.extra.servlet.ServletUtil;
+import cn.hutool.http.ContentType;
+import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentUtil;
+import cn.hutool.poi.excel.ExcelUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.common.util.JwtUtil;
+import com.fdkankan.manage.bean.MenuBean;
+import com.fdkankan.manage.entity.OperLog;
+import com.fdkankan.redis.constant.RedisKey;
+import com.fdkankan.redis.util.RedisUtil;
+import io.jsonwebtoken.Claims;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Objects;
+import javax.servlet.http.HttpServletRequest;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.aspectj.lang.reflect.MethodSignature;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.mongodb.core.MongoTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+import org.springframework.web.multipart.MultipartFile;
+
+@Component
+@Aspect
+@Slf4j
+public class VisitLogInterceptor {
+
+	@Autowired
+	private RedisUtil redisUtil;
+
+	@Autowired
+	private MongoTemplate mongoTemplate;
+
+	@Value("${server.servlet.context-path:null}")
+	private String contextPath;
+
+	// 切入点表达式
+	@Pointcut("execution(public * com.fdkankan.manage.controller..*.*(..))")
+	public void privilege() {
+	}
+
+	@Around("privilege()")
+	public Object around(ProceedingJoinPoint pjp) throws Throwable {
+
+		HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+
+		//获取客户端ip
+		String clientIP = ServletUtil.getClientIP(request);
+
+		//获取uri
+		String uri = request.getRequestURI();
+		if(StrUtil.isNotEmpty(contextPath)){
+			uri = uri.replaceFirst(contextPath, "");
+		}
+
+		//获取请求方式
+		String method = request.getMethod();
+
+		//获取浏览器信息
+		String browser = this.getBrowser(request);
+
+		//获取参数
+		String params = this.getParams(pjp, request);
+
+		//获取操作路径
+		String requestPath = this.getRequestPath(uri);
+
+        //放行
+		Object result = pjp.proceed();
+
+		//获取用户信息 如果已登录,从token中获取用户信息,如果是登录接口,查询数据库获取用户信息
+		Map<String, Object> userInfo = this.getUserInfo(request, uri, result);
+		Long userId = (Long)userInfo.get("userId");
+		String userName = (String)userInfo.get("userName");
+		String nickName = (String)userInfo.get("nickName");
+
+		//写入mongodb
+		OperLog operLog = new OperLog();
+		operLog.setUserId(userId);
+		operLog.setUserName(userName);
+		operLog.setNickName(nickName);
+		operLog.setRequestPath(requestPath);
+		operLog.setUri(uri);
+		operLog.setMethod(method);
+		operLog.setParams(params);
+		operLog.setIp(clientIP);
+		operLog.setBrowser(browser);
+		operLog.setCreateTime(Calendar.getInstance().getTime());
+		mongoTemplate.insert(operLog);
+
+		return result;
+	}
+
+	private String getRequestPath(String uri){
+		String hget = redisUtil.hget(RedisKey.MANAGE_MENU, uri);
+		MenuBean menuBean = JSON.parseObject(hget, MenuBean.class);
+		if(Objects.isNull(menuBean)){
+		    return null;
+        }
+		LinkedList<String> menuList = new LinkedList<>();
+		this.getRequestPathHandler(menuList, menuBean);
+		StringBuilder sb = new StringBuilder();
+		menuList.stream().forEach(str->sb.append("->").append(str));
+		return sb.substring(2);
+	}
+
+	private void getRequestPathHandler(LinkedList list, MenuBean menuBean){
+		list.addFirst("[" + menuBean.getName() + "]");
+		if(Objects.isNull(menuBean.getParent())){
+			return;
+		}
+		this.getRequestPathHandler(list, menuBean.getParent());
+	}
+
+	private Map<String, Object> getUserInfo(HttpServletRequest request, String uri, Object result){
+		String token = null;
+		boolean isLogin = uri.endsWith("login");
+		if(isLogin){
+			String resultStr = JSON.toJSONString(result);
+			JSONObject jsonObject = JSON.parseObject(resultStr);
+			JSONObject data = jsonObject.getJSONObject("data");
+			token = data.getString("token");
+		}else{
+			token = request.getHeader("token");
+		}
+		Claims claims = JwtUtil.parseJWT(token);
+		Integer userId = (Integer) claims.get("userId");
+		String userName = (String)claims.get("userName");
+		String nickName = (String)claims.get("nickName");
+		Map<String, Object> userInfo = new HashMap<>();
+		userInfo.put("userId", Long.valueOf(userId));
+		userInfo.put("userName", userName);
+		userInfo.put("nickName", nickName);
+		return userInfo;
+	}
+
+	private String getParams(JoinPoint pjp, HttpServletRequest request){
+
+		// 获取参数名称
+		String[] parameterNamesArgs = ((MethodSignature) pjp.getSignature()).getParameterNames();
+		//获取请求参数值
+		Object[] args = pjp.getArgs();
+
+		Map<String, Object> paramMap = new HashMap<>();
+		String contentType = request.getContentType();
+		if(ContentType.JSON.getValue().equals(contentType)){
+			return JSON.toJSONString(args[0]);
+		}else{
+			for (int i = 0; i < args.length; i++) {
+				if(args[i] instanceof MultipartFile){
+					paramMap.put(parameterNamesArgs[i], ((MultipartFile) args[i]).getOriginalFilename());
+					continue;
+				}
+				paramMap.put(parameterNamesArgs[i], args[i]);
+			}
+		}
+		return JSON.toJSONString(paramMap);
+	}
+
+	private String getBrowser(HttpServletRequest request){
+		String userAgentStr = request.getHeader("User-Agent");
+		UserAgent userAgent = UserAgentUtil.parse(userAgentStr);
+		String browserType = userAgent.getBrowser().toString();
+		String browserVersion = userAgent.getVersion();
+		String browserFormat = "%s(版本%s)";
+		return  String.format(browserFormat, browserType, browserVersion);
+	}
+
+}
+

+ 18 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/mapper/IAdvertiseMapper.java

@@ -0,0 +1,18 @@
+package com.fdkankan.manage.mapper;
+
+import com.fdkankan.manage.entity.Advertise;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * <p>
+ * 招聘信息表 Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-08
+ */
+@Mapper
+public interface IAdvertiseMapper extends BaseMapper<Advertise> {
+
+}

+ 21 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/service/IAdvertiseService.java

@@ -0,0 +1,21 @@
+package com.fdkankan.manage.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.entity.Advertise;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.vo.PageAdvertiseParamVO;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * <p>
+ * 招聘信息表 服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-08
+ */
+public interface IAdvertiseService extends IService<Advertise> {
+
+    Page pageAdvertise(PageAdvertiseParamVO param);
+
+}

+ 35 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/service/impl/AdvertiseServiceImpl.java

@@ -0,0 +1,35 @@
+package com.fdkankan.manage.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.entity.Advertise;
+import com.fdkankan.manage.mapper.IAdvertiseMapper;
+import com.fdkankan.manage.service.IAdvertiseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.vo.PageAdvertiseParamVO;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 招聘信息表 服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-08
+ */
+@Service
+public class AdvertiseServiceImpl extends ServiceImpl<IAdvertiseMapper, Advertise> implements IAdvertiseService {
+
+    @Override
+    public Page pageAdvertise(PageAdvertiseParamVO param) {
+
+        LambdaQueryWrapper<Advertise> queryWrapper = new LambdaQueryWrapper<>();
+        if(StrUtil.isNotEmpty(param.getPositionName())){
+            queryWrapper.like(Advertise::getPositionName, "%".concat(param.getPositionName()).concat("%"));
+        }
+        Page<Advertise> page = this.page(
+            new Page<>(param.getPageNum(), param.getPageSize()), queryWrapper);
+        return page;
+    }
+}

+ 22 - 0
4dkankan-center-manage/src/main/java/com/fdkankan/manage/vo/PageAdvertiseParamVO.java

@@ -0,0 +1,22 @@
+package com.fdkankan.manage.vo;
+
+import com.fdkankan.common.request.RequestBase;
+import lombok.Data;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-06-06
+ */
+@Data
+public class PageAdvertiseParamVO extends RequestBase {
+
+    /**
+     * 职位名称
+     */
+    private String positionName;
+
+}

+ 5 - 0
4dkankan-center-manage/src/main/resources/mapper/manage/AdvertiseMapper.xml

@@ -0,0 +1,5 @@
+<?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.fdkankan.manage.mapper.IAdvertiseMapper">
+
+</mapper>

+ 1 - 1
4dkankan-center-scene/src/main/resources/bootstrap-test.yml

@@ -33,7 +33,7 @@ spring:
             refresh: true
       discovery:
         server-addr: 120.24.144.164:8848
-        namespace: 4dkankan-test
+        namespace: 4dkankan-dev
     sentinel:
       transport:
         dashboard: 120.24.144.164:8888