瀏覽代碼

后台基础功能

chenwen 2 年之前
父節點
當前提交
64585f340f

+ 2 - 1
.classpath

@@ -24,8 +24,9 @@
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17">
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
 		<attributes>
+			<attribute name="module" value="true"/>
 			<attribute name="maven.pomderived" value="true"/>
 		</attributes>
 	</classpathentry>

+ 116 - 0
src/main/java/com/hb/proj/allconfig/APICallFilter.java

@@ -0,0 +1,116 @@
+package com.hb.proj.allconfig;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.filter.OncePerRequestFilter;
+
+import com.hb.proj.utils.JacksonUtils;
+import com.hb.proj.utils.RespVOBuilder;
+
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+public class APICallFilter extends OncePerRequestFilter {
+	
+	private  static Logger logger=LoggerFactory.getLogger(APICallFilter.class);
+	
+	private  static  Set<String> EXCLUDE_PATHS=null;
+	
+	@Override
+	protected void initFilterBean() throws ServletException {
+		String excludePath=super.getFilterConfig().getInitParameter("excludePath");
+		if(StringUtils.isNotBlank(excludePath)) {
+			String[] ep=excludePath.split(",");
+			EXCLUDE_PATHS=Collections.unmodifiableSet(new HashSet<>(Arrays.asList(ep)));
+		}
+	}
+
+	
+	@Override
+	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
+			throws ServletException, IOException {
+		
+		
+		if(!checkAPIAuth(request)) {
+			writeToResponse(response,JacksonUtils.getJSON(RespVOBuilder.error("权限不足或登录已过期")));
+			return ;
+		}
+		filterChain.doFilter(request,response);
+	}
+
+	
+	
+	
+    private boolean checkAPIAuth(HttpServletRequest request) {
+		
+		String reqUri=request.getRequestURI();
+		String contextPath=request.getContextPath();
+		reqUri=reqUri.replaceFirst(contextPath, "");
+		
+		if(isExcludePath(reqUri)) {
+			logger.debug("该请求地址为排除地址:"+reqUri);
+			return true;
+		}
+		
+		String token=request.getHeader(CacheConfig.TOKEN_HEADER_NAME);
+		if(StringUtils.isBlank(token)) {
+			return false;
+		}
+		AccessToken accessToken=CacheConfig.get(token);
+		if(accessToken==null) {
+			return false;
+		}
+		
+		return accessToken.verify(reqUri);
+	}
+    
+    private boolean isExcludePath(String path)
+	{
+		if(EXCLUDE_PATHS==null||EXCLUDE_PATHS.size()==0){
+			return false;
+		}
+		for(String pth : EXCLUDE_PATHS)
+		{
+			if(path.indexOf(pth)>=0)
+			{
+				return true;
+			}
+		}
+		return false;
+	}
+    
+    private  void writeToResponse(HttpServletResponse response,String message){
+		PrintWriter out=null;
+		try {
+			response.setContentType("text/json;charset=UTF-8");
+			out = response.getWriter();
+			out.write(message);
+			
+		} catch (Exception ex) {
+			ex.printStackTrace();
+		}finally{
+			if (out != null) {
+				out.flush();
+				out.close();
+			}
+		}
+	}
+
+
+
+
+	
+	
+	
+
+}

+ 18 - 0
src/main/java/com/hb/proj/auth/controller/AuthController.java

@@ -0,0 +1,18 @@
+package com.hb.proj.auth.controller;
+
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 权限相关接口
+ * @author cwen
+ *
+ */
+
+@RestController
+@RequestMapping("/auth")
+@Validated
+public class AuthController {
+
+}

+ 77 - 0
src/main/java/com/hb/proj/auth/controller/LoginController.java

@@ -0,0 +1,77 @@
+package com.hb.proj.auth.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.hb.proj.allconfig.AccessToken;
+import com.hb.proj.allconfig.CacheConfig;
+import com.hb.proj.allconfig.SysLog;
+import com.hb.proj.auth.service.User;
+import com.hb.proj.auth.service.UserService;
+import com.hb.proj.utils.RequestParams;
+import com.hb.proj.utils.RespVO;
+import com.hb.proj.utils.RespVOBuilder;
+
+import jakarta.validation.constraints.NotBlank;
+
+/**
+ * 登录相关接口
+ */
+
+@RestController
+@RequestMapping("/api/login")
+@Validated
+public class LoginController {
+	
+	
+	@Autowired
+	private UserService userService;
+	
+	/**
+	 * 登录认证
+	 * @apiNote 通过账号密码认证
+	 * @param loginId 登录账号
+	 * @param pwd   前台md5加密 密码
+	 * @return
+	 */
+	@RequestMapping("/check")
+	@SysLog("用户{arg0}登录系统")
+	public RespVO<AccessToken> check(@NotBlank(message = "账号不能为空") String loginId,@NotBlank(message = "密码不能为空") String pwd){
+		User us=userService.getByLoginId(loginId);
+		if(us==null||!pwd.equals(us.getPwd())) {
+			return RespVOBuilder.error("账号或密码错误");
+		}
+		
+		AccessToken token=new AccessToken(us.getUserId());
+		
+		CacheConfig.put(token);
+		
+		
+		return RespVOBuilder.ok(token);
+	}
+
+	/**
+	 * 获得单个用户数据.
+	 * @apiNote <p>通过指定的用户编号获取数据<br>
+	 * 用户编号不能为空
+	 * @param id 用户编号
+	 * @param params 其它参数
+	 * @return 用户数据json
+	 */
+	@RequestMapping("/get")
+	RespVO<User> getUser(@NotBlank(message = "用户编号【id】不能为空") String id,RequestParams params) {
+		return RespVOBuilder.ok(userService.getUs(id));
+	}
+	
+	@RequestMapping("/update")
+	@SysLog("更新用户{arg0}的姓名为{arg1}")
+	RespVO<String> updateUser(@NotBlank(message = "用户编号编号【id】不能为空") String id,String name) {
+		User us=new User();
+		us.setNickname(name);
+		us.setUserId(id);
+		boolean rst=userService.updateUser(us);
+		return rst?RespVOBuilder.ok():RespVOBuilder.error("未找到数据");
+	}
+}

+ 64 - 0
src/main/java/com/hb/proj/auth/service/User.java

@@ -0,0 +1,64 @@
+package com.hb.proj.auth.service;
+
+public class User {
+	
+	/**
+	 * 用户编号
+	 * @mock a123e
+	 */
+	private String userId;
+	
+	private String nickname;
+	
+	private String pwd;
+	
+	private String loginId;
+	
+	private String orgId;
+	
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+
+	
+
+	public String getPwd() {
+		return pwd;
+	}
+
+	public void setPwd(String pwd) {
+		this.pwd = pwd;
+	}
+
+	public String getLoginId() {
+		return loginId;
+	}
+
+	public void setLoginId(String loginId) {
+		this.loginId = loginId;
+	}
+
+	public String getOrgId() {
+		return orgId;
+	}
+
+	public void setOrgId(String orgId) {
+		this.orgId = orgId;
+	}
+
+	public String getNickname() {
+		return nickname;
+	}
+
+	public void setNickname(String nickname) {
+		this.nickname = nickname;
+	}
+
+	
+
+}

+ 73 - 0
src/main/java/com/hb/proj/auth/service/UserService.java

@@ -0,0 +1,73 @@
+package com.hb.proj.auth.service;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import com.hb.xframework.dao.core.SpringJdbcDAO;
+import com.hb.xframework.dao.util.PageModel;
+
+@Service
+public class UserService {
+
+	
+	
+	@Autowired
+	private SpringJdbcDAO springDAO;
+	
+	
+	public User getByLoginId(String loginId) {
+		String sql="""
+				
+				select * from t_user
+				where user_id=?
+				
+				""";
+		return springDAO.queryForPojo(sql,User.class,loginId);
+	}
+	
+	/**
+	 * 获得单个用户数据.服务层方法
+	 * @param id
+	 * @return
+	 */
+	public User getUs(String id){
+		String sql="""
+				
+				select * from t_user
+				where user_id=?
+				
+				""";
+		return springDAO.queryForPojo(sql,User.class,id);
+	}
+	
+	public List<Map<String,Object>> getAllUsers(){
+		return springDAO.queryForList("select * from t_user");
+	}
+	
+	
+	
+	public Map<String,Object> getUserMapping(){
+		return springDAO.queryForMapping("select * from t_user", "user_id", "user_name");
+	}
+	
+	
+	
+	public PageModel<Map<String,Object>> queryPagedMapUser(){
+		return springDAO.queryForPagedData("select * from T_car", 1, 10);
+	}
+	
+	public int updateUser() {
+		Map<String,Object> args=new HashMap<String,Object>();
+		args.put("userName", "张云华2");
+		args.put("userId", "2c9138fa7413d7e80174235443700095");
+		return springDAO.updateNamedSQL("update t_user set user_name=:userName where user_id=:userId", args);
+	}
+	
+	public boolean updateUser(User us) {
+		return springDAO.update(us, "t_user", "user_id")>0;
+	}
+}

+ 61 - 0
src/main/java/com/hb/proj/model/User.java

@@ -0,0 +1,61 @@
+package com.hb.proj.model;
+
+public class User {
+
+	private String userName;
+	
+	private String openid;
+	
+	private String phone;
+	
+	
+	private String userId;
+	
+	private String loginId;
+
+	public String getUserName() {
+		return userName;
+	}
+
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+
+	
+	public String getPhone() {
+		return phone;
+	}
+
+	public void setPhone(String phone) {
+		this.phone = phone;
+	}
+
+	
+
+	public String getOpenid() {
+		return openid;
+	}
+
+	public void setOpenid(String openid) {
+		this.openid = openid;
+	}
+
+	public String getUserId() {
+		return userId;
+	}
+
+	public void setUserId(String userId) {
+		this.userId = userId;
+	}
+
+	public String getLoginId() {
+		return loginId;
+	}
+
+	public void setLoginId(String loginId) {
+		this.loginId = loginId;
+	}
+
+	
+
+}

+ 2 - 2
src/main/resources/application-dev.properties

@@ -1,10 +1,10 @@
 # 应用名称
-spring.application.name=MyTempProj
+spring.application.name=智能油田
 
 # 应用服务 WEB 访问端口
 server.port=8080
 
-server.servlet.context-path=/myproj
+server.servlet.context-path=/zl
 server.tomcat.uri-encoding=UTF-8
 server.servlet.encoding.charset=UTF-8
 server.servlet.encoding.enabled=true