Prechádzať zdrojové kódy

1、设置考勤打卡信息接口

machaoyi 1 rok pred
rodič
commit
7bf30820d0

+ 20 - 5
.idea/workspace.xml

@@ -4,8 +4,15 @@
     <option name="autoReloadType" value="SELECTIVE" />
   </component>
   <component name="ChangeListManager">
-    <list default="true" id="1dc46973-e6f5-473b-a131-bf2bbc2dca15" name="更改" comment="1、新增打卡上班模块">
+    <list default="true" id="1dc46973-e6f5-473b-a131-bf2bbc2dca15" name="更改" comment="1、打卡接口新增经纬度字段">
+      <change afterPath="$PROJECT_DIR$/work/src/main/java/com/ctsi/work/WorkAddr/controller/WorkAddrController.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/work/src/main/java/com/ctsi/work/WorkAddr/entity/WorkAddr.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/work/src/main/java/com/ctsi/work/WorkAddr/mapper/WorkAddrMapper.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/work/src/main/java/com/ctsi/work/WorkAddr/mapper/WorkAddrMapper.xml" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/work/src/main/java/com/ctsi/work/WorkAddr/service/WorkAddrService.java" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/work/src/main/java/com/ctsi/work/WorkAddr/service/impl/WorkAddrServiceImpl.java" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
+      <change beforePath="$PROJECT_DIR$/work/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/work/pom.xml" afterDir="false" />
     </list>
     <option name="SHOW_DIALOG" value="false" />
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
@@ -152,7 +159,7 @@
       <workItem from="1705278479826" duration="43131000" />
       <workItem from="1705392945258" duration="4784000" />
       <workItem from="1705397771531" duration="2808000" />
-      <workItem from="1705452083011" duration="4465000" />
+      <workItem from="1705452083011" duration="5349000" />
     </task>
     <task id="LOCAL-00001" summary="基础框架配置">
       <option name="closed" value="true" />
@@ -442,7 +449,15 @@
       <option name="project" value="LOCAL" />
       <updated>1705455297957</updated>
     </task>
-    <option name="localTasksCounter" value="37" />
+    <task id="LOCAL-00037" summary="1、打卡接口新增经纬度字段">
+      <option name="closed" value="true" />
+      <created>1705457258943</created>
+      <option name="number" value="00037" />
+      <option name="presentableId" value="LOCAL-00037" />
+      <option name="project" value="LOCAL" />
+      <updated>1705457258943</updated>
+    </task>
+    <option name="localTasksCounter" value="38" />
     <servers />
   </component>
   <component name="TypeScriptGeneratedFilesManager">
@@ -491,7 +506,6 @@
   </component>
   <component name="VcsManagerConfiguration">
     <option name="ADD_EXTERNAL_FILES_SILENTLY" value="true" />
-    <MESSAGE value="1、角色表" />
     <MESSAGE value="1、token使用redis持久化集成&#10;2、菜单和部门列表展示所有信息" />
     <MESSAGE value="1、登录接口包修改" />
     <MESSAGE value="1、用户角色表" />
@@ -516,7 +530,8 @@
     <MESSAGE value="1、字典管理" />
     <MESSAGE value="1、整理模块" />
     <MESSAGE value="1、新增打卡上班模块" />
-    <option name="LAST_COMMIT_MESSAGE" value="1、新增打卡上班模块" />
+    <MESSAGE value="1、打卡接口新增经纬度字段" />
+    <option name="LAST_COMMIT_MESSAGE" value="1、打卡接口新增经纬度字段" />
   </component>
   <component name="XSLT-Support.FileAssociations.UIState">
     <expand />

+ 6 - 0
work/pom.xml

@@ -55,6 +55,12 @@
             <artifactId>lombok</artifactId>
             <version>1.18.26</version>
         </dependency>
+        <dependency>
+            <groupId>cn.dev33</groupId>
+            <artifactId>sa-token-core</artifactId>
+            <version>1.37.0</version>
+            <scope>compile</scope>
+        </dependency>
     </dependencies>
     <profiles>
         <profile>

+ 115 - 0
work/src/main/java/com/ctsi/work/WorkAddr/controller/WorkAddrController.java

@@ -0,0 +1,115 @@
+package com.ctsi.work.WorkAddr.controller;
+
+import cn.dev33.satoken.stp.StpUtil;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ctsi.entity.FramePage;
+import com.ctsi.utils.ApiResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+import com.ctsi.work.WorkAddr.entity.WorkAddr;
+import com.ctsi.work.WorkAddr.service.WorkAddrService;
+
+import javax.annotation.Resource;
+
+ /**
+ * 打卡地址表;(work_addr)表控制层
+ * @author : machaoyi
+ * @date : 2024-1-17
+ */
+@Api(tags = "打卡地址表对象功能接口")
+@RestController
+@RequestMapping("/workAddr")
+public class WorkAddrController{
+    @Resource
+    private WorkAddrService workAddrService;
+    private static final Logger log = LoggerFactory.getLogger(WorkAddrController.class);
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    @ApiOperation("通过ID查询单条数据")
+    @GetMapping("{id}")
+    public ApiResult<WorkAddr> queryById(Long id){
+        try {
+            return ApiResult.success(workAddrService.queryById(id));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("查询失败",null);
+        }
+    }
+    
+    /** 
+     * 分页查询
+     *
+     * @param workAddr 筛选条件
+     * @return 查询结果
+     */
+    @ApiOperation("分页查询")
+    @GetMapping
+    public ApiResult<Page<WorkAddr>> paginQuery(WorkAddr workAddr, FramePage framePage){
+        try {
+            return ApiResult.success(workAddrService.paginQuery(workAddr, framePage.getPageNum(), framePage.getPageSize()));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("分页查询失败",null);
+        }    
+    }
+    
+    /** 
+     * 新增数据
+     *
+     * @param workAddr 实例对象
+     * @return 实例对象
+     */
+    @ApiOperation("新增数据")
+    @PostMapping
+    public ApiResult<WorkAddr> add(@RequestBody WorkAddr workAddr){
+        try {
+            workAddr.setCreatedBy(StpUtil.getLoginIdAsLong());
+            return ApiResult.success(workAddrService.insert(workAddr));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("新增数据失败",null);
+        }
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param workAddr 实例对象
+     * @return 实例对象
+     */
+    @ApiOperation("更新数据")
+    @PutMapping
+    public ApiResult<WorkAddr> edit(@RequestBody WorkAddr workAddr){
+        try {
+            return ApiResult.success(workAddrService.update(workAddr));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("更新数据失败",null);
+        }
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 是否成功
+     */
+    @ApiOperation("通过主键删除数据")
+    @DeleteMapping
+    public ApiResult<Boolean> deleteById(Long id){
+        try {
+            return ApiResult.success(workAddrService.deleteById(id));
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            return ApiResult.failure("删除数据失败",null);
+        }
+    }
+}

+ 133 - 0
work/src/main/java/com/ctsi/work/WorkAddr/entity/WorkAddr.java

@@ -0,0 +1,133 @@
+package com.ctsi.work.WorkAddr.entity;
+
+import com.ctsi.utils.LongtoStringSerialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+import java.util.Date;
+
+ /**
+ * 打卡地址表;
+ * @author : machaoyi
+ * @date : 2024-1-17
+ */
+@ApiModel(value = "打卡地址表",description = "")
+@TableName("work_addr")
+public class WorkAddr implements Serializable,Cloneable{
+    /** 主键id */
+    @ApiModelProperty(value = "主键id",notes = "")
+    @TableId
+    @JsonSerialize(using = LongtoStringSerialize.class)
+    private Long id ;
+    /** 创建人userid */
+    @ApiModelProperty(value = "创建人userid",notes = "")
+    private Long createdBy ;
+    /** 创建时间 */
+    @ApiModelProperty(value = "创建时间",notes = "")
+    private Date createdTime ;
+    /** 逻辑删除 */
+    @ApiModelProperty(value = "逻辑删除",notes = "")
+    private Integer delFlag ;
+    /** 考勤点名称 */
+    @ApiModelProperty(value = "考勤点名称",notes = "")
+    private String addrName ;
+    /** 考勤点经度 */
+    @ApiModelProperty(value = "考勤点经度",notes = "")
+    private String addrLng ;
+    /** 考勤点纬度 */
+    @ApiModelProperty(value = "考勤点纬度",notes = "")
+    private String addrLat ;
+    /** 考勤范围 */
+    @ApiModelProperty(value = "考勤范围",notes = "")
+    private String addrRange ;
+    /** 上班打卡时间 */
+    @ApiModelProperty(value = "上班打卡时间",notes = "")
+    private String addrIn ;
+    /** 下班打卡时间 */
+    @ApiModelProperty(value = "下班打卡时间",notes = "")
+    private String addrQuit ;
+
+    /** 主键id */
+    public Long getId(){
+        return this.id;
+    }
+    /** 主键id */
+    public void setId(Long id){
+        this.id=id;
+    }
+    /** 创建人userid */
+    public Long getCreatedBy(){
+        return this.createdBy;
+    }
+    /** 创建人userid */
+    public void setCreatedBy(Long createdBy){
+        this.createdBy=createdBy;
+    }
+    /** 创建时间 */
+    public Date getCreatedTime(){
+        return this.createdTime;
+    }
+    /** 创建时间 */
+    public void setCreatedTime(Date createdTime){
+        this.createdTime=createdTime;
+    }
+    /** 逻辑删除 */
+    public Integer getDelFlag(){
+        return this.delFlag;
+    }
+    /** 逻辑删除 */
+    public void setDelFlag(Integer delFlag){
+        this.delFlag=delFlag;
+    }
+    /** 考勤点名称 */
+    public String getAddrName(){
+        return this.addrName;
+    }
+    /** 考勤点名称 */
+    public void setAddrName(String addrName){
+        this.addrName=addrName;
+    }
+    /** 考勤点经度 */
+    public String getAddrLng(){
+        return this.addrLng;
+    }
+    /** 考勤点经度 */
+    public void setAddrLng(String addrLng){
+        this.addrLng=addrLng;
+    }
+    /** 考勤点纬度 */
+    public String getAddrLat(){
+        return this.addrLat;
+    }
+    /** 考勤点纬度 */
+    public void setAddrLat(String addrLat){
+        this.addrLat=addrLat;
+    }
+    /** 考勤范围 */
+    public String getAddrRange(){
+        return this.addrRange;
+    }
+    /** 考勤范围 */
+    public void setAddrRange(String addrRange){
+        this.addrRange=addrRange;
+    }
+    /** 上班打卡时间 */
+    public String getAddrIn(){
+        return this.addrIn;
+    }
+    /** 上班打卡时间 */
+    public void setAddrIn(String addrIn){
+        this.addrIn=addrIn;
+    }
+    /** 下班打卡时间 */
+    public String getAddrQuit(){
+        return this.addrQuit;
+    }
+    /** 下班打卡时间 */
+    public void setAddrQuit(String addrQuit){
+        this.addrQuit=addrQuit;
+    }
+}

+ 26 - 0
work/src/main/java/com/ctsi/work/WorkAddr/mapper/WorkAddrMapper.java

@@ -0,0 +1,26 @@
+package com.ctsi.work.WorkAddr.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+import com.ctsi.work.WorkAddr.entity.WorkAddr;
+
+ /**
+ * 打卡地址表;(work_addr)表数据库访问层
+ * @author : machaoyi
+ * @date : 2024-1-17
+ */
+@Mapper
+public interface WorkAddrMapper  extends BaseMapper<WorkAddr>{
+    /** 
+     * 分页查询指定行数据
+     *
+     * @param page 分页参数
+     * @param wrapper 动态查询条件
+     * @return 分页对象列表
+     */
+    IPage<WorkAddr> selectByPage(IPage<WorkAddr> page , @Param(Constants.WRAPPER) Wrapper<WorkAddr> wrapper);
+}

+ 8 - 0
work/src/main/java/com/ctsi/work/WorkAddr/mapper/WorkAddrMapper.xml

@@ -0,0 +1,8 @@
+<?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.ctsi.work.WorkAddr.mapper.WorkAddrMapper">
+     <select id="selectByPage" resultType="com.ctsi.work.WorkAddr.entity.WorkAddr">
+        select * from work_addr ${ew.customSqlSegment}
+    </select>
+</mapper>

+ 51 - 0
work/src/main/java/com/ctsi/work/WorkAddr/service/WorkAddrService.java

@@ -0,0 +1,51 @@
+package com.ctsi.work.WorkAddr.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ctsi.work.WorkAddr.entity.WorkAddr;
+
+ /**
+ * 打卡地址表;(work_addr)表服务接口
+ * @author : machaoyi
+ * @date : 2024-1-17
+ */
+public interface WorkAddrService{
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    WorkAddr queryById(Long id);
+    
+    /**
+     * 分页查询
+     *
+     * @param workAddr 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    Page<WorkAddr> paginQuery(WorkAddr workAddr, long current, long size);
+    /** 
+     * 新增数据
+     *
+     * @param workAddr 实例对象
+     * @return 实例对象
+     */
+    WorkAddr insert(WorkAddr workAddr);
+    /** 
+     * 更新数据
+     *
+     * @param workAddr 实例对象
+     * @return 实例对象
+     */
+    WorkAddr update(WorkAddr workAddr);
+    /** 
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 是否成功
+     */
+    boolean deleteById(Long id);
+}

+ 131 - 0
work/src/main/java/com/ctsi/work/WorkAddr/service/impl/WorkAddrServiceImpl.java

@@ -0,0 +1,131 @@
+package com.ctsi.work.WorkAddr.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
+import com.ctsi.work.WorkAddr.entity.WorkAddr;
+import com.ctsi.work.WorkAddr.mapper.WorkAddrMapper;
+import com.ctsi.work.WorkAddr.service.WorkAddrService;
+ /**
+ * 打卡地址表;(work_addr)表服务实现类
+ * @author : machaoyi
+ * @date : 2024-1-17
+ */
+@Service
+public class WorkAddrServiceImpl implements WorkAddrService{
+    @Autowired
+    private WorkAddrMapper workAddrMapper;
+    
+    /** 
+     * 通过ID查询单条数据 
+     *
+     * @param id 主键
+     * @return 实例对象
+     */
+    public WorkAddr queryById(Long id){
+        return workAddrMapper.selectById(id);
+    }
+    
+    /**
+     * 分页查询
+     *
+     * @param workAddr 筛选条件
+     * @param current 当前页码
+     * @param size  每页大小
+     * @return
+     */
+    public Page<WorkAddr> paginQuery(WorkAddr workAddr, long current, long size){
+        //1. 构建动态查询条件
+        LambdaQueryWrapper<WorkAddr> queryWrapper = new LambdaQueryWrapper<>();
+        if(StrUtil.isNotBlank(workAddr.getAddrName())){
+            queryWrapper.eq(WorkAddr::getAddrName, workAddr.getAddrName());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrLng())){
+            queryWrapper.eq(WorkAddr::getAddrLng, workAddr.getAddrLng());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrLat())){
+            queryWrapper.eq(WorkAddr::getAddrLat, workAddr.getAddrLat());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrRange())){
+            queryWrapper.eq(WorkAddr::getAddrRange, workAddr.getAddrRange());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrIn())){
+            queryWrapper.eq(WorkAddr::getAddrIn, workAddr.getAddrIn());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrQuit())){
+            queryWrapper.eq(WorkAddr::getAddrQuit, workAddr.getAddrQuit());
+        }
+        //2. 执行分页查询
+        Page<WorkAddr> pagin = new Page<>(current , size , true);
+        IPage<WorkAddr> selectResult = workAddrMapper.selectPage(pagin , queryWrapper);
+        pagin.setPages(selectResult.getPages());
+        pagin.setTotal(selectResult.getTotal());
+        pagin.setRecords(selectResult.getRecords());
+        //3. 返回结果
+        return pagin;
+    }
+    
+    /** 
+     * 新增数据
+     *
+     * @param workAddr 实例对象
+     * @return 实例对象
+     */
+    public WorkAddr insert(WorkAddr workAddr){
+        workAddrMapper.insert(workAddr);
+        return workAddr;
+    }
+    
+    /** 
+     * 更新数据
+     *
+     * @param workAddr 实例对象
+     * @return 实例对象
+     */
+    public WorkAddr update(WorkAddr workAddr){
+        //1. 根据条件动态更新
+        LambdaUpdateChainWrapper<WorkAddr> chainWrapper = new LambdaUpdateChainWrapper<WorkAddr>(workAddrMapper);
+        if(StrUtil.isNotBlank(workAddr.getAddrName())){
+            chainWrapper.set(WorkAddr::getAddrName, workAddr.getAddrName());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrLng())){
+            chainWrapper.set(WorkAddr::getAddrLng, workAddr.getAddrLng());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrLat())){
+            chainWrapper.set(WorkAddr::getAddrLat, workAddr.getAddrLat());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrRange())){
+            chainWrapper.set(WorkAddr::getAddrRange, workAddr.getAddrRange());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrIn())){
+            chainWrapper.set(WorkAddr::getAddrIn, workAddr.getAddrIn());
+        }
+        if(StrUtil.isNotBlank(workAddr.getAddrQuit())){
+            chainWrapper.set(WorkAddr::getAddrQuit, workAddr.getAddrQuit());
+        }
+        //2. 设置主键,并更新
+        chainWrapper.eq(WorkAddr::getId, workAddr.getId());
+        boolean ret = chainWrapper.update();
+        //3. 更新成功了,查询最最对象返回
+        if(ret){
+            return queryById(workAddr.getId());
+        }else{
+            return workAddr;
+        }
+    }
+    
+    /** 
+     * 通过主键删除数据
+     *
+     * @param id 主键
+     * @return 是否成功
+     */
+    public boolean deleteById(Long id){
+        int total = workAddrMapper.deleteById(id);
+        return total > 0;
+    }
+}