From 2a3a35d28dc7dae1a88601711f81e38d630fde72 Mon Sep 17 00:00:00 2001 From: ChangFeng <752492631@qq.com> Date: Thu, 11 Apr 2024 09:24:05 +0800 Subject: [PATCH] =?UTF-8?q?2024.4.11=20=E5=AE=8C=E6=88=90=E4=BA=86node?= =?UTF-8?q?=E7=9A=84=E7=BB=84=E5=90=88=E6=9D=A1=E4=BB=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=92=8C=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MapperProvider/NodeProvider.java | 39 +++++++++++++++++++ .../hongliang/videotask/bean/NodeBean.java | 13 +++++++ .../videotask/controller/NodeControl.java | 26 +++++++++++++ .../videotask/controller/UserControl.java | 10 +++++ .../videotask/mappers/NodeMapper.java | 16 ++++++++ .../videotask/service/NodeService.java | 9 +++++ .../service/impl/NodeServiceImpl.java | 25 ++++++++++++ .../videotask/utils/CommonFuction.java | 27 +++++++++++++ src/test/java/LoginTest.java | 12 ++++++ 9 files changed, 177 insertions(+) create mode 100644 src/main/java/com/hongliang/videotask/MapperProvider/NodeProvider.java create mode 100644 src/main/java/com/hongliang/videotask/bean/NodeBean.java create mode 100644 src/main/java/com/hongliang/videotask/controller/NodeControl.java create mode 100644 src/main/java/com/hongliang/videotask/mappers/NodeMapper.java create mode 100644 src/main/java/com/hongliang/videotask/service/NodeService.java create mode 100644 src/main/java/com/hongliang/videotask/service/impl/NodeServiceImpl.java create mode 100644 src/main/java/com/hongliang/videotask/utils/CommonFuction.java diff --git a/src/main/java/com/hongliang/videotask/MapperProvider/NodeProvider.java b/src/main/java/com/hongliang/videotask/MapperProvider/NodeProvider.java new file mode 100644 index 0000000..b7ee7af --- /dev/null +++ b/src/main/java/com/hongliang/videotask/MapperProvider/NodeProvider.java @@ -0,0 +1,39 @@ +package com.hongliang.videotask.MapperProvider; + +import org.apache.ibatis.annotations.Param; + +import java.util.Map; + +public class NodeProvider { + /** + * 组合条件查询 + * @param condition 包含pageNum,pageSize,查询字段项,orderby + * @return + */ + public String GetNodeList(Map condition){ +// System.out.println("condition:"+condition.toString()); + // 使用StringBuilder来拼接SQL + StringBuilder sb=new StringBuilder(); + sb.append("select * from node where 1=1"); + + //开如拼接查询条件 + if (condition.containsKey("nodename")){ + sb.append(" and nodename like concat('%', #{nodename},'%')"); + } + + //……如果有其他条件,就继续 + + //如果有排序 + if (condition.containsKey("orderby")){ + sb.append(" order by #{orderby}"); + } + + //拼接分页 + if (condition.containsKey("offset") && condition.containsKey("pageSize")){ + sb.append(" limit #{offset},#{pageSize}"); + } + + //返回sql语句 + return sb.toString(); + } +} diff --git a/src/main/java/com/hongliang/videotask/bean/NodeBean.java b/src/main/java/com/hongliang/videotask/bean/NodeBean.java new file mode 100644 index 0000000..15aad78 --- /dev/null +++ b/src/main/java/com/hongliang/videotask/bean/NodeBean.java @@ -0,0 +1,13 @@ +package com.hongliang.videotask.bean; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class NodeBean { + private Integer id; + private String nodename; +} diff --git a/src/main/java/com/hongliang/videotask/controller/NodeControl.java b/src/main/java/com/hongliang/videotask/controller/NodeControl.java new file mode 100644 index 0000000..f1cda1b --- /dev/null +++ b/src/main/java/com/hongliang/videotask/controller/NodeControl.java @@ -0,0 +1,26 @@ +package com.hongliang.videotask.controller; + +import com.hongliang.videotask.common.Response; +import com.hongliang.videotask.common.ResponseCode; +import com.hongliang.videotask.service.impl.NodeServiceImpl; +import org.springframework.http.ResponseEntity; +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; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/node") +public class NodeControl { + @Resource + private NodeServiceImpl nodeService; + + @PostMapping("list") + public ResponseEntity GetNodeListByCondition(@RequestBody String condition){ + System.out.println(condition); + return ResponseEntity.ok(new Response(ResponseCode.OK,"success", + this.nodeService.GetNodeListByCondition(condition))); + } +} diff --git a/src/main/java/com/hongliang/videotask/controller/UserControl.java b/src/main/java/com/hongliang/videotask/controller/UserControl.java index 0af311b..9b4340d 100644 --- a/src/main/java/com/hongliang/videotask/controller/UserControl.java +++ b/src/main/java/com/hongliang/videotask/controller/UserControl.java @@ -3,9 +3,11 @@ package com.hongliang.videotask.controller; import cn.dev33.satoken.stp.StpUtil; import com.hongliang.videotask.bean.LoginBean; import com.hongliang.videotask.bean.LoginResultBean; +import com.hongliang.videotask.bean.UserBean; import com.hongliang.videotask.common.Response; import com.hongliang.videotask.common.ResponseCode; import com.hongliang.videotask.service.impl.LoginServiceImpl; +import com.hongliang.videotask.service.impl.UserServiceImpl; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -18,6 +20,8 @@ import java.time.format.DateTimeFormatter; public class UserControl { @Resource private LoginServiceImpl loginService; + @Resource + private UserServiceImpl userService; @GetMapping("hello") public ResponseEntity hello(){ @@ -48,6 +52,12 @@ public class UserControl { @PostMapping("logout") public ResponseEntity logout(){ + StpUtil.logout(); return ResponseEntity.ok(new Response(ResponseCode.OK,"成功退出",null)); } + + @GetMapping("getuserbyid") + public ResponseEntity GetUserByID(@RequestParam("id") int id){ + return ResponseEntity.ok(new Response(ResponseCode.OK,"成功",userService.GetUserByID(id))); + } } diff --git a/src/main/java/com/hongliang/videotask/mappers/NodeMapper.java b/src/main/java/com/hongliang/videotask/mappers/NodeMapper.java new file mode 100644 index 0000000..6df6140 --- /dev/null +++ b/src/main/java/com/hongliang/videotask/mappers/NodeMapper.java @@ -0,0 +1,16 @@ +package com.hongliang.videotask.mappers; + +import com.hongliang.videotask.MapperProvider.NodeProvider; +import com.hongliang.videotask.bean.NodeBean; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.SelectProvider; +import org.springframework.stereotype.Repository; + +import java.util.List; +import java.util.Map; + +@Repository +public interface NodeMapper { + @SelectProvider(type= NodeProvider.class,method = "GetNodeList") + List GetNodeListByCondition(Map condition); +} diff --git a/src/main/java/com/hongliang/videotask/service/NodeService.java b/src/main/java/com/hongliang/videotask/service/NodeService.java new file mode 100644 index 0000000..c45649c --- /dev/null +++ b/src/main/java/com/hongliang/videotask/service/NodeService.java @@ -0,0 +1,9 @@ +package com.hongliang.videotask.service; + +import com.hongliang.videotask.bean.NodeBean; + +import java.util.List; + +public interface NodeService { + List GetNodeListByCondition(String condition); +} diff --git a/src/main/java/com/hongliang/videotask/service/impl/NodeServiceImpl.java b/src/main/java/com/hongliang/videotask/service/impl/NodeServiceImpl.java new file mode 100644 index 0000000..08a3fac --- /dev/null +++ b/src/main/java/com/hongliang/videotask/service/impl/NodeServiceImpl.java @@ -0,0 +1,25 @@ +package com.hongliang.videotask.service.impl; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.hongliang.videotask.bean.NodeBean; +import com.hongliang.videotask.mappers.NodeMapper; +import com.hongliang.videotask.service.NodeService; +import com.hongliang.videotask.utils.CommonFuction; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class NodeServiceImpl implements NodeService { + @Autowired + private NodeMapper nodeMapper; + + public List GetNodeListByCondition(String condition){ + Map map= CommonFuction.JsonStringToMapWithOffset(condition); + return this.nodeMapper.GetNodeListByCondition(map); + } +} diff --git a/src/main/java/com/hongliang/videotask/utils/CommonFuction.java b/src/main/java/com/hongliang/videotask/utils/CommonFuction.java new file mode 100644 index 0000000..02f8eb3 --- /dev/null +++ b/src/main/java/com/hongliang/videotask/utils/CommonFuction.java @@ -0,0 +1,27 @@ +package com.hongliang.videotask.utils; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; + +import java.util.HashMap; +import java.util.Map; + +public class CommonFuction { + /** + * 将一个带pageNum和pageSize的json对象,转换为Map对象,供mybatis的provider使用,并添加offset + * @param jsonStr 一个包含查询条件和分页信息的json对象 + * @return Map对象 + */ + public static Map JsonStringToMapWithOffset(String jsonStr){ + JSONObject jsonObject= JSON.parseObject(jsonStr); + Map map = new HashMap<>(); + for (String key : jsonObject.keySet()) { + map.put(key, jsonObject.get(key)); + } + int pagenum=Integer.parseInt( map.get("pageNum").toString()); + int pagesize=Integer.parseInt(map.get("pageSize").toString()); + map.put("offset",(pagenum-1)*pagesize); +// System.out.println("service condition:"+map.toString()); + return map; + } +} diff --git a/src/test/java/LoginTest.java b/src/test/java/LoginTest.java index b27960e..9f6e48c 100644 --- a/src/test/java/LoginTest.java +++ b/src/test/java/LoginTest.java @@ -1,8 +1,20 @@ import org.junit.Test; +import java.util.HashMap; +import java.util.Map; + public class LoginTest { @Test public void testAdd(){ System.out.println("this is a test!"); } + + @Test + public void testMap(){ + Map params = new HashMap<>(); + params.put("key1", 1); + params.put("key2", 2); + + System.out.println(params); + } }