diff --git a/src/main/java/com/glxp/api/controller/sup/UserComanyController.java b/src/main/java/com/glxp/api/controller/sup/UserComanyController.java index e006aff..c46b685 100644 --- a/src/main/java/com/glxp/api/controller/sup/UserComanyController.java +++ b/src/main/java/com/glxp/api/controller/sup/UserComanyController.java @@ -1,5 +1,6 @@ package com.glxp.api.controller.sup; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageInfo; import com.glxp.api.annotation.AuthRuleAnnotation; @@ -8,11 +9,15 @@ import com.glxp.api.common.util.ResultVOUtils; import com.glxp.api.controller.BaseController; import com.glxp.api.entity.basic.ProductInfoEntity; import com.glxp.api.entity.sup.UserCompanyEntity; +import com.glxp.api.entity.sup.UserCompanyOnlineEntity; import com.glxp.api.req.auth.FilterUserComapanyRequest; import com.glxp.api.req.basic.ProductInfoFilterRequest; import com.glxp.api.res.PageSimpleResponse; import com.glxp.api.res.auth.registComPerResponse; +import com.glxp.api.res.sup.UserCompanyOnlineResponse; +import com.glxp.api.service.sup.UserCompanyOnlineService; import com.glxp.api.service.sup.UserCompanyService; +import com.glxp.api.util.DateUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -38,10 +43,10 @@ public class UserComanyController extends BaseController { @GetMapping("udi/auth/user/comapny/search") public BaseResponse search(FilterUserComapanyRequest filterUserComapanyRequest) { //获取部门id - if(filterUserComapanyRequest.getSearchKey() == null){ + if (filterUserComapanyRequest.getSearchKey() == null) { filterUserComapanyRequest.setSearchKey(""); } - List userCompanyEntities = userCompanyService.list(new QueryWrapper().like("companyName", filterUserComapanyRequest.getSearchKey()).eq("checkStatus",1)); + List userCompanyEntities = userCompanyService.list(new QueryWrapper().like("companyName", filterUserComapanyRequest.getSearchKey()).eq("checkStatus", 1)); PageInfo pageInfo; pageInfo = new PageInfo<>(userCompanyEntities); @@ -64,4 +69,31 @@ public class UserComanyController extends BaseController { pageSimpleResponse.setList(userCompanyEntities); return ResultVOUtils.success(pageSimpleResponse); } + + + @Resource + UserCompanyOnlineService userCompanyOnlineService; + + @AuthRuleAnnotation("") + @GetMapping("udi/auth/user/comapny/status/filter") + public BaseResponse filterCompanyStaus(FilterUserComapanyRequest filterUserComapanyRequest) { + + List userCompanyEntities = userCompanyService.filterCompanyName(filterUserComapanyRequest); + + if (CollUtil.isNotEmpty(userCompanyEntities)) { + for (UserCompanyEntity userCompanyEntity : userCompanyEntities) { + UserCompanyOnlineResponse userCompanyOnlineResponse = userCompanyOnlineService.findOnLineByConfig(userCompanyEntity.getId()); + if (DateUtil.isExpire(userCompanyOnlineResponse.getUpdateTime(), userCompanyOnlineResponse.getHeartRate())) { + userCompanyEntity.setOnLineStatus(2); + } else + userCompanyEntity.setOnLineStatus(1); + } + } + PageInfo pageInfo = new PageInfo<>(userCompanyEntities); + PageSimpleResponse pageSimpleResponse = new PageSimpleResponse<>(); + pageSimpleResponse.setTotal(pageInfo.getTotal()); + pageSimpleResponse.setList(userCompanyEntities); + return ResultVOUtils.success(pageSimpleResponse); + } + } diff --git a/src/main/java/com/glxp/api/controller/sup/UserCompanyConfigController.java b/src/main/java/com/glxp/api/controller/sup/UserCompanyConfigController.java new file mode 100644 index 0000000..84d5da1 --- /dev/null +++ b/src/main/java/com/glxp/api/controller/sup/UserCompanyConfigController.java @@ -0,0 +1,29 @@ +package com.glxp.api.controller.sup; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.entity.sup.UserCompanyConfigEntity; +import com.glxp.api.service.sup.UserCompanyConfigService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; + +@RestController +@Slf4j +public class UserCompanyConfigController { + + + @Resource + UserCompanyConfigService userCompanyConfigService; + + //获取企业任务配置 + @PostMapping("/admin/user/config/get") + public BaseResponse heartPost(String companyId) { + UserCompanyConfigEntity userCompanyConfigEntity = userCompanyConfigService.getOne(new QueryWrapper().eq("companyId", companyId)); + return ResultVOUtils.success(userCompanyConfigEntity); + } + +} diff --git a/src/main/java/com/glxp/api/controller/sup/UserOnLineController.java b/src/main/java/com/glxp/api/controller/sup/UserOnLineController.java index 449a5b0..1a83861 100644 --- a/src/main/java/com/glxp/api/controller/sup/UserOnLineController.java +++ b/src/main/java/com/glxp/api/controller/sup/UserOnLineController.java @@ -1,12 +1,38 @@ package com.glxp.api.controller.sup; +import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.entity.sup.UserCompanyOnlineEntity; +import com.glxp.api.req.sup.UserCompanyOnlineRequest; +import com.glxp.api.service.sup.UserCompanyOnlineService; +import com.glxp.api.util.BeanCopyUtils; import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import springfox.documentation.annotations.ApiIgnore; + +import javax.annotation.Resource; @RestController @Slf4j public class UserOnLineController { + @Resource + UserCompanyOnlineService userCompanyOnlineService; + + /** + * 企业定时心跳,报告是否在线 + * + * @param userCompanyOnlineRequest + * @return + */ + @PostMapping("/admin/user/online/heart") + public BaseResponse heartPost(@RequestBody UserCompanyOnlineRequest userCompanyOnlineRequest) { + UserCompanyOnlineEntity userCompanyOnlineEntity = new UserCompanyOnlineEntity(); + BeanCopyUtils.copy(userCompanyOnlineRequest, userCompanyOnlineEntity); + userCompanyOnlineService.saveOrUpdate(userCompanyOnlineEntity); + return ResultVOUtils.success("报告成功!"); + } + } diff --git a/src/main/java/com/glxp/api/dao/sup/UserCompanyConfigMapper.java b/src/main/java/com/glxp/api/dao/sup/UserCompanyConfigMapper.java index 164774b..b906b7f 100644 --- a/src/main/java/com/glxp/api/dao/sup/UserCompanyConfigMapper.java +++ b/src/main/java/com/glxp/api/dao/sup/UserCompanyConfigMapper.java @@ -6,4 +6,5 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserCompanyConfigMapper extends BaseMapper { + } diff --git a/src/main/java/com/glxp/api/dao/sup/UserCompanyOnlineMapper.java b/src/main/java/com/glxp/api/dao/sup/UserCompanyOnlineMapper.java index 2c382c0..39a2577 100644 --- a/src/main/java/com/glxp/api/dao/sup/UserCompanyOnlineMapper.java +++ b/src/main/java/com/glxp/api/dao/sup/UserCompanyOnlineMapper.java @@ -2,8 +2,11 @@ package com.glxp.api.dao.sup; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.sup.UserCompanyOnlineEntity; +import com.glxp.api.res.sup.UserCompanyOnlineResponse; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserCompanyOnlineMapper extends BaseMapper { + + UserCompanyOnlineResponse findOnLineByConfig(Long companyId); } diff --git a/src/main/java/com/glxp/api/entity/sup/UserCompanyEntity.java b/src/main/java/com/glxp/api/entity/sup/UserCompanyEntity.java index 444bcfc..21139d4 100644 --- a/src/main/java/com/glxp/api/entity/sup/UserCompanyEntity.java +++ b/src/main/java/com/glxp/api/entity/sup/UserCompanyEntity.java @@ -88,5 +88,11 @@ public class UserCompanyEntity implements Serializable { @TableField(value = "`reason`") private String reason; + /** + * 在线状态 1:在线;2:离线 + */ + @TableField(exist = false) + private Integer onLineStatus; + private static final long serialVersionUID = 1L; } diff --git a/src/main/java/com/glxp/api/entity/sup/UserCompanyOnlineEntity.java b/src/main/java/com/glxp/api/entity/sup/UserCompanyOnlineEntity.java index 450ad25..f473816 100644 --- a/src/main/java/com/glxp/api/entity/sup/UserCompanyOnlineEntity.java +++ b/src/main/java/com/glxp/api/entity/sup/UserCompanyOnlineEntity.java @@ -13,6 +13,7 @@ import lombok.Data; @Data @TableName(value = "user_company_online") public class UserCompanyOnlineEntity implements Serializable { + @TableId(value = "companyId", type = IdType.INPUT) private Long companyId; diff --git a/src/main/java/com/glxp/api/req/sup/UserCompanyOnlineRequest.java b/src/main/java/com/glxp/api/req/sup/UserCompanyOnlineRequest.java new file mode 100644 index 0000000..209552d --- /dev/null +++ b/src/main/java/com/glxp/api/req/sup/UserCompanyOnlineRequest.java @@ -0,0 +1,15 @@ +package com.glxp.api.req.sup; + +import lombok.Data; + +import java.util.Date; + +@Data +public class UserCompanyOnlineRequest { + + private Long companyId; + + private Long userId; + + private Date updateTime; +} diff --git a/src/main/java/com/glxp/api/res/sup/UserCompanyOnlineResponse.java b/src/main/java/com/glxp/api/res/sup/UserCompanyOnlineResponse.java new file mode 100644 index 0000000..57b067e --- /dev/null +++ b/src/main/java/com/glxp/api/res/sup/UserCompanyOnlineResponse.java @@ -0,0 +1,18 @@ +package com.glxp.api.res.sup; + +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.util.Date; + +@Data +public class UserCompanyOnlineResponse { + private Long companyId; + + private Long userId; + + private Date updateTime; + + private Long heartRate; + +} diff --git a/src/main/java/com/glxp/api/service/sup/UserCompanyOnlineService.java b/src/main/java/com/glxp/api/service/sup/UserCompanyOnlineService.java index 072588c..acf990f 100644 --- a/src/main/java/com/glxp/api/service/sup/UserCompanyOnlineService.java +++ b/src/main/java/com/glxp/api/service/sup/UserCompanyOnlineService.java @@ -1,10 +1,29 @@ package com.glxp.api.service.sup; -import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.glxp.api.dao.sup.UserCompanyOnlineMapper; import com.glxp.api.entity.sup.UserCompanyOnlineEntity; +import com.glxp.api.res.sup.UserCompanyOnlineResponse; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.Date; + @Service public class UserCompanyOnlineService extends ServiceImpl { + + @Resource + UserCompanyOnlineMapper userCompanyOnlineMapper; + + public UserCompanyOnlineEntity findByCompnayId(Long companyId) { + return userCompanyOnlineMapper.selectOne(new QueryWrapper().eq("companyId", companyId)); + } + + public UserCompanyOnlineResponse findOnLineByConfig(Long companyId) { + return userCompanyOnlineMapper.findOnLineByConfig(companyId); + } + + } diff --git a/src/main/java/com/glxp/api/util/DateUtil.java b/src/main/java/com/glxp/api/util/DateUtil.java index 050f83e..b01d329 100644 --- a/src/main/java/com/glxp/api/util/DateUtil.java +++ b/src/main/java/com/glxp/api/util/DateUtil.java @@ -615,7 +615,6 @@ public class DateUtil extends DateUtils { /** * 向后推迟时间 * - * @param time 时间 * @param hour 小时 * @return */ @@ -689,4 +688,11 @@ public class DateUtil extends DateUtils { String formatDate = smdate.format(calendar.getTime()); return formatDate; } + + + public static boolean isExpire(Date date, Long frequency) { + if (date == null || frequency == null) + return true; + return System.currentTimeMillis() - date.getTime() > frequency; + } } diff --git a/src/main/resources/mybatis/mapper/sup/UserCompanyOnlineMapper.xml b/src/main/resources/mybatis/mapper/sup/UserCompanyOnlineMapper.xml index 04a4f5e..4319fed 100644 --- a/src/main/resources/mybatis/mapper/sup/UserCompanyOnlineMapper.xml +++ b/src/main/resources/mybatis/mapper/sup/UserCompanyOnlineMapper.xml @@ -1,4 +1,12 @@ +