k94314517
2024-07-03 ca133ed72b297141f906810f81413e15d3d66333
代码初始化
已添加3个文件
已删除8个文件
已修改83个文件
已重命名2个文件
1667 ■■■■■ 文件已修改
server/meeting/meeting_admin/src/main/java/com/doumee/api/business/MeetingController.java 33 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_admin/src/main/java/com/doumee/api/common/HomeController.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/MeetingCloudController.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/MeetingApi.java 20 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/RoomsApi.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_admin/src/main/resources/bootstrap-dev.yml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_admin/src/main/resources/bootstrap.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java 176 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/admin/request/BusinessOverDTO.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/BookingTime.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/RoomTime.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/dao/web/request/MeetingPageRequest.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/BookingsService.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/ProjectsServiceImpl.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomTimeServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/config/jwt/JwtProperties.java 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/config/mybatis/EasySqlInjector.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/constants/ResponseStatus.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/core/utils/Constants.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/business/dao/CompanyMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/MultifileMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/SystemUserMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/LoginAuthDTO.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/LoginByOpenidDTO.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/join/NoticesJoinMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/ApiController.java 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/ProblemWebController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java 126 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveParamMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarEventMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarsMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceEventMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceRoleMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/EmpowerMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/MemberCardMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/MemberMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/MemberRoleMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ParkBookMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ParksMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/TrainTimeMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitEventMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitsMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/ApproveJoinMapper.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/EmpowerJoinMapper.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/DateIntervalVO.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/VisitDetailVO.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/ERPSyncService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java 97 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ProblemLogServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java 59 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVehicleFromHKServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/openapi/src/main/java/com/doumee/api/web/ApiController.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/openapi/src/main/java/com/doumee/api/web/BizResourceController.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/openapi/src/main/java/com/doumee/api/web/ErpResourceController.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/meeting/meeting_admin/src/main/java/com/doumee/api/business/MeetingController.java
@@ -7,6 +7,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.QrCodeUtils;
import com.doumee.dao.admin.request.BusinessOverDTO;
import com.doumee.dao.business.model.Bookings;
import com.doumee.dao.web.request.BookingsRequest;
import com.doumee.dao.web.request.MeetingPageRequest;
@@ -45,7 +46,6 @@
    @ApiOperation(value = "当月会议表", notes = "当月会议表")
    @GetMapping("/monthMeeting")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "yearMonth", value = "年月  yyyy-MM", required = true)
    })
    public ApiResponse<List<MonthDataResponse>> monthDay(@RequestParam String yearMonth) {
@@ -66,9 +66,6 @@
    @ApiOperation("我的会议列表")
    @PostMapping("/myMeetingPage")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse<IPage<MeetingListResponse>> myMeetingPage(@RequestBody PageWrap<MeetingPageRequest> pageWrap) {
        LoginUserInfo user = getLoginUser(null);
        pageWrap.getModel().setUserId(user.getId());
@@ -81,7 +78,6 @@
    @ApiOperation("会议详情")
    @GetMapping("/meetingDetail")
    @ApiImplicitParams({
//            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
    })
    public ApiResponse<MeetingDetailResponse> meetingDetail(@RequestParam Integer id) {
@@ -91,7 +87,6 @@
    @ApiOperation("获取会议开门二维码")
    @GetMapping("/getQrCode")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
    })
    public ApiResponse<String> getQrCode(@RequestParam Integer id) {
@@ -102,9 +97,7 @@
    @ApiOperation("获取会议开门二维码-图片流")
    @GetMapping("/getQrCodeImg")
    @ApiImplicitParams({
//            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public void getQrCodeImg(@RequestParam Integer id,@RequestParam String token, HttpServletResponse response) throws  Exception {
        LoginUserInfo user = getLoginUser(null);
@@ -117,9 +110,6 @@
    @ApiOperation("会议预约")
    @PostMapping("/reservationMeeting")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
    })
    public ApiResponse<Integer> reservationMeeting(@RequestBody BookingsRequest bookingsRequest) {
        LoginUserInfo user = getLoginUser(null);
        bookingsRequest.setCreator(user.getId());
@@ -128,14 +118,21 @@
    }
    @ApiOperation("取消会议预约")
    @GetMapping("/reservationCancel")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
    })
    public ApiResponse reservationCancel(@RequestParam Integer id) {
    @PostMapping("/reservationCancel")
    public ApiResponse reservationCancel(@RequestBody BusinessOverDTO businessOverDTO) {
        LoginUserInfo user = getLoginUser(null);
        bookingsService.reservationCancel(id,user.getId());
        businessOverDTO.setUserId(user.getId());
        bookingsService.reservationCancel(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("提前结束会议")
    @PostMapping("/reservationOver")
    public ApiResponse reservationOver(@RequestBody BusinessOverDTO businessOverDTO) {
        LoginUserInfo user = getLoginUser(null);
        businessOverDTO.setUserId(user.getId());
        bookingsService.reservationOver(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
server/meeting/meeting_admin/src/main/java/com/doumee/api/common/HomeController.java
@@ -60,7 +60,7 @@
        bookquery.eq(Bookings::getIsdeleted, Constants.ZERO);
        bookquery.eq(Bookings::getStatus, Constants.ZERO);
        bookquery.apply("DATE_FORMAT(t.START_TIME,'%Y-%m-%d') = DATE_FORMAT(now(),'%Y-%m-%d') " );
        Integer   todayBookingsNum= bookingsJoinMapper.selectCount(bookquery);
        Long  todayBookingsNum= bookingsJoinMapper.selectCount(bookquery);
        json.put("todayBookingsNum",todayBookingsNum);
        //今日会议时长(小时)
@@ -136,7 +136,7 @@
        MPJLambdaWrapper<Rooms> rm1 = new MPJLambdaWrapper<>();
        rm1.eq(Rooms::getIsdeleted, Constants.ZERO);
        rm1.eq(Rooms::getStatus, Constants.ZERO);
        Integer roomNum=  roomsJoinMapper.selectCount(rm1);
        Long roomNum=  roomsJoinMapper.selectCount(rm1);
        json.put("roomNum",roomNum);
        //员工数量
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/admin/MeetingCloudController.java
@@ -8,6 +8,7 @@
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.QrCodeUtils;
import com.doumee.dao.admin.request.BusinessOverDTO;
import com.doumee.dao.business.model.Bookings;
import com.doumee.dao.web.request.BookingsRequest;
import com.doumee.dao.web.request.MeetingPageRequest;
@@ -130,18 +131,25 @@
        return ApiResponse.success("操作成功",bookingsService.reservationMeeting(bookingsRequest));
    }
    @ApiOperation("取消会议预约")
    @GetMapping("/reservationCancel")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "header", dataType = "String", name = "token", value = "用户token值", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
    })
    public ApiResponse reservationCancel(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
//        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
    @PostMapping("/reservationCancel")
    public ApiResponse reservationCancel(@RequestBody BusinessOverDTO businessOverDTO, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        bookingsService.reservationCancel(id,user.getId());
        businessOverDTO.setUserId(user.getId());
        bookingsService.reservationCancel(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("提前结束会议")
    @PostMapping("/reservationOver")
    public ApiResponse reservationOver(@RequestBody BusinessOverDTO businessOverDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        businessOverDTO.setUserId(user.getId());
        bookingsService.reservationOver(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
}
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/MeetingApi.java
@@ -8,6 +8,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.admin.request.BusinessOverDTO;
import com.doumee.dao.business.model.Bookings;
import com.doumee.dao.system.vo.UserResponse;
import com.doumee.dao.web.request.BookingsRequest;
@@ -143,16 +144,23 @@
    }
    @ApiOperation("取消会议预约")
    @GetMapping("/reservationCancel")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "会议主键", required = true),
    })
    public ApiResponse reservationCancel(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
    @PostMapping("/reservationCancel")
    public ApiResponse reservationCancel(@RequestBody BusinessOverDTO businessOverDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        bookingsService.reservationCancel(id,user.getId());
        businessOverDTO.setUserId(user.getId());
        bookingsService.reservationCancel(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
    @ApiOperation("提前结束会议")
    @PostMapping("/reservationOver")
    public ApiResponse reservationOver(@RequestBody BusinessOverDTO businessOverDTO,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        LoginUserInfo user = getLoginUser(token);
        businessOverDTO.setUserId(user.getId());
        bookingsService.reservationOver(businessOverDTO);
        return ApiResponse.success("操作成功");
    }
}
server/meeting/meeting_admin/src/main/java/com/doumee/cloud/web/RoomsApi.java
@@ -2,7 +2,6 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.doumee.api.BaseController;
import com.doumee.config.Jwt.JwtTokenUtil;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.LoginUserInfo;
server/meeting/meeting_admin/src/main/resources/bootstrap-dev.yml
@@ -16,6 +16,7 @@
      config:
        server-addr: http://175.27.187.84:8848 #配置Nacos地址
        namespace: dmvisit
#        namespace: dev_renkang
        username: nacos
        password: nacos
#        file-extension: yaml
@@ -23,6 +24,7 @@
#        data-id: com.doumee.meeting.admin
      discovery:
        server-addr: http://175.27.187.84:8848 #配置Nacos地址
#        namespace: dev_renkang
        namespace: dmvisit
        username: nacos
        password: nacos
server/meeting/meeting_admin/src/main/resources/bootstrap.yml
@@ -1,6 +1,6 @@
spring:
  profiles:
    active: test
    active: dev
  application:
    name: meetingAdmin
      # å®‰å…¨é…ç½®
server/meeting/meeting_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java
ÎļþÒÑɾ³ý
server/meeting/meeting_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
ÎļþÒÑɾ³ý
server/meeting/meeting_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
ÎļþÒÑɾ³ý
server/meeting/meeting_service/src/main/java/com/doumee/dao/admin/request/BusinessOverDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,22 @@
package com.doumee.dao.admin.request;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.utils.DESUtil;
import com.doumee.dao.admin.response.DevWgResponseParam;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
@Data
@ApiModel("会议结束请求类")
public class BusinessOverDTO {
    @ApiModelProperty(value = "业务主键")
    private  Integer id  ;
    @ApiModelProperty(value = "业务操作备注")
    private  String businessRemark;
    @ApiModelProperty(value = "用户主键",required = true)
    private  Integer userId  ;
}
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/BookingsMapper.java
@@ -24,7 +24,8 @@
    @Select(" select a.id , a.START_TIME , a.END_TIME , b.`NAME` as roomName , a.`NAME` as meetingName  ,date_format(a.START_TIME,'%Y-%m-%d') as meetingDate , a.START_TIME as startTime, a.status ," +
            " CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime,  c.REALNAME as bookingUser ," +
            " CASE  WHEN a.START_TIME > now() and a.`STATUS` = 0  THEN 1  WHEN a.END_TIME < now()  or a.`STATUS` = 1  THEN 3 ELSE 2  END meetingStatus , b.IMGURL as imgUrl ," +
            " CASE WHEN a.START_TIME > now() AND a.`STATUS` = 0 THEN 1  WHEN a.END_TIME < now() AND a.`STATUS` = 0  THEN 3 WHEN a.`STATUS` = 1 THEN 5 ELSE  2  END meetingStatus ," +
            " b.IMGURL as imgUrl ," +
            " a.remark  " +
            " from meeting_book a inner join meeting_rooms b  on a.ROOM_ID = b.ID  " +
            " inner join system_user c on a.CREATOR = c.id  " +
@@ -35,7 +36,7 @@
    @Select(" select a.id , a.START_TIME , a.END_TIME , b.id as roomId,  b.`NAME` as roomName , a.`NAME` as meetingName  ,date_format(a.START_TIME,'%Yå¹´%m月%d日') as meetingDate ," +
            " CONCAT(date_format(a.START_TIME,'%H:%i') , ' ~ ',date_format(a.END_TIME,'%H:%i')) as meetingTime,  c.REALNAME as bookingUserName ," +
            " CASE  WHEN a.START_TIME > now() and a.`STATUS` = 0  THEN 1  WHEN a.END_TIME < now()  or a.`STATUS` = 1  THEN 3 ELSE 2  END meetingStatus ," +
            "  CASE WHEN a.START_TIME > now() AND a.`STATUS` = 0 THEN 1  WHEN a.END_TIME < now() AND a.`STATUS` = 0  THEN 3 WHEN a.`STATUS` = 1 THEN 5 ELSE  2  END meetingStatus ," +
            " a.CONTENT as meetingContent, c.MOBILE as bookingUserMobile , e.`NAME` as bookingUserDepartment , a.CREATOR as bookingUserId  , a.remark  " +
            " from meeting_book a inner join meeting_rooms b  on a.ROOM_ID = b.ID  " +
            " left join system_user c on a.CREATOR = c.id " +
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/BookingTime.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
import io.swagger.annotations.ApiModel;
@@ -58,4 +59,7 @@
    @ExcelColumn(name="时间段编码(关联room_time表)")
    private Integer timeId;
    @ApiModelProperty(value = "结束时间  HH:mm",hidden = true)
    @TableField(exist = false)
    private String endTime;
}
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/Bookings.java
@@ -81,7 +81,7 @@
    @ApiModelProperty(value = "会议内容")
    private String content;
    @ApiModelProperty(value = "状态 0启用 1禁用")
    @ApiModelProperty(value = "状态 0已预约 1已撤销 2已结束 ")
    private Integer status;
    @ApiModelProperty(value = "取消人")
@@ -93,7 +93,17 @@
    @ApiModelProperty(value = "发送通知:0=未发送 1=已发送")
    private Integer sendNotice;
    @ApiModelProperty(value = "取消备注")
    private String cancelInfo;
    @ApiModelProperty(value = "提前结束人")
    private Integer doneUserId;
    @ApiModelProperty(value = "提前结束时间")
    private Date doneDate;
    @ApiModelProperty(value = "取消备注")
    private String doneInfo;
    @ApiModelProperty(value = "预约人")
    @TableField(exist = false)
@@ -162,4 +172,8 @@
    @ApiModelProperty(value = "weekday")
    @TableField(exist = false)
    private String weekday;
    @ApiModelProperty(value = "会议状态: 1=未开始;2=进行中;3=已结束 ; 4=即将开始; 5=已撤销")
    @TableField(exist = false)
    private Integer meetingStatus;
}
server/meeting/meeting_service/src/main/java/com/doumee/dao/business/model/RoomTime.java
@@ -59,8 +59,8 @@
    @ExcelColumn(name="开放开始时间")
    private String startTime;
    @ApiModelProperty(value = "开发结束时间")
    @ExcelColumn(name="开发结束时间")
    @ApiModelProperty(value = "开放结束时间")
    @ExcelColumn(name="开放结束时间")
    private String endTime;
    @ApiModelProperty(value = "状态 0可选 1不可选 ", example = "1")
server/meeting/meeting_service/src/main/java/com/doumee/dao/web/request/MeetingPageRequest.java
@@ -31,4 +31,9 @@
    @ApiModelProperty(value = "会议室主键")
    private Integer roomsId;
    @ApiModelProperty(value = "会议状态: 1=未开始;2=进行中;3=已结束 ; 4=即将开始; 5=已撤销")
    private Integer meetingStatus;
}
server/meeting/meeting_service/src/main/java/com/doumee/service/business/BookingsService.java
@@ -4,6 +4,7 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.admin.request.BusinessOverDTO;
import com.doumee.dao.admin.response.DevWgResponseParam;
import com.doumee.dao.business.model.Bookings;
import com.doumee.dao.business.vo.RoomStatisticsVo;
@@ -168,7 +169,7 @@
     * @param id
     * @param userId
     */
    void reservationCancel(Integer id,Integer userId);
    void reservationCancel(BusinessOverDTO businessOverDTO);
    /**
@@ -207,4 +208,6 @@
    void sendBookingsNotice();
    IPage<UserResponse> getUserPage(PageWrap<UserPageRequest> pageWrap);
    void reservationOver(BusinessOverDTO businessOverDTO);
}
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -16,6 +16,7 @@
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.MeetConstants;
import com.doumee.core.wx.SendWxMessage;
import com.doumee.dao.admin.request.BusinessOverDTO;
import com.doumee.dao.admin.request.QrOpenDoorDto;
import com.doumee.dao.admin.response.DevWgResponseParam;
import com.doumee.dao.business.*;
@@ -188,6 +189,7 @@
        bookquery.selectAs(BookingTime::getTimeId, Bookings::getRoomTimeId);
        bookquery.selectAs(BookingTime::getId, Bookings::getBookingTimeId);
        bookquery.eq(Bookings::getIsdeleted, MeetConstants.ZERO);
        bookquery.eq(BookingTime::getIsdeleted, MeetConstants.ZERO);
        bookquery.eq(Bookings::getRoomId, bookings.getRoomId());
        bookquery.eq(Bookings::getStatus, MeetConstants.ZERO);
        //bookquery.ge(Bookings::getStartTime, bookings.getStartTime());
@@ -251,14 +253,13 @@
        bookings.getBookingTimeList().stream().forEach(s -> {
            s.setId(null);
            s.setCreator(user.getId());
            s.setCreateDate(new Date());
            s.setIsdeleted(MeetConstants.ZERO);
            s.setBookingId(bookings.getId());
            bookingTimeJoinMapper.insert(s);
        });
    }
    public void updateManager(Bookings bookings, LoginUserInfo user) {
@@ -271,7 +272,9 @@
            userRel.setIsdeleted(MeetConstants.ONE);
            userRelJoinMapper.update(userRel, updateWrapper);
        }
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(bookings.getSysList())){
        bookings.getSysList().stream().forEach(s -> {
                s.setId(null);
            s.setIsdeleted(MeetConstants.ZERO);
            s.setCreateDate(new Date());
            s.setCreator(user.getId());
@@ -280,7 +283,7 @@
            s.setObjType(MeetConstants.ONE);
            userRelJoinMapper.insert(s);
        });
        }
    }
    public void updateProjectRel(Bookings rooms, LoginUserInfo user) {
@@ -294,7 +297,7 @@
            projectRelJoinMapper.update(projectRel, updateWrapper);
            rooms.getProjectList().stream().forEach(s -> {
                s.setId(null);
                s.setIsdeleted(MeetConstants.ZERO);
                s.setCreateDate(new Date());
                s.setCreator(user.getId());
@@ -472,7 +475,7 @@
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getName()), Bookings::getName, pageWrap.getModel().getName());
        queryWrapper.eq(pageWrap.getModel().getStatus() != null, Bookings::getStatus, pageWrap.getModel().getStatus());
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getRealName()), SystemUser::getRealname, pageWrap.getModel().getRealName());
        queryWrapper.eq(pageWrap.getModel().getDepartmentId() != null, SystemUser::getId, pageWrap.getModel().getDepartmentId());
        queryWrapper.eq(pageWrap.getModel().getDepartmentId() != null, Company::getId, pageWrap.getModel().getDepartmentId());
        if (pageWrap.getModel().getStartTime() != null) {
            queryWrapper.ge(Bookings::getStartTime, pageWrap.getModel().getStartTime());
@@ -489,6 +492,13 @@
        SimpleDateFormat format1 = new SimpleDateFormat("HH:mm");
        IPage<Bookings> result = bookingsJoinMapper.selectJoinPage(page, Bookings.class, queryWrapper);
        result.getRecords().stream().forEach(s -> {
            if(s.getStartTime().getTime()>System.currentTimeMillis()&&s.getStatus().equals(Constants.ZERO)){
                s.setMeetingStatus(Constants.ONE);
            }else if(s.getEndTime().getTime()<System.currentTimeMillis()||Constants.equalsInteger(s.getStatus(),Constants.ONE) || Constants.equalsInteger(s.getStatus(),Constants.TWO) ){
                s.setMeetingStatus(Constants.THREE);
            }else{
                s.setMeetingStatus(Constants.TWO);
            }
            MPJLambdaWrapper<Multifile> bookquery = new MPJLambdaWrapper<>();
            bookquery.eq(Multifile::getIsdeleted, MeetConstants.ZERO);
            bookquery.eq(Multifile::getObjId, s.getId());
@@ -764,7 +774,8 @@
     */
    @Override
    public IPage<MeetingListResponse> getMyMeetingPage(PageWrap<MeetingPageRequest> pageWrap) {
        IPage<MeetingListResponse> page = bookingsMapper.myMeetingPage(pageWrap.toPage(), new QueryWrapper<MeetingListResponse>()
        QueryWrapper queryWrapper = new QueryWrapper<MeetingListResponse>()
                .and(StringUtils.isNotBlank(pageWrap.getModel().getRoomsName()),
                        j -> j.like("a.NAME",pageWrap.getModel().getRoomsName()).or()
                                .like(" b.NAME", pageWrap.getModel().getRoomsName()))
@@ -780,22 +791,42 @@
                        .eq("b.ISDELETED",MeetConstants.ZERO)
                        .eq("b.STATUS",MeetConstants.ZERO)
                        .eq("a.ISDELETED",MeetConstants.ZERO)
                        .orderByDesc(!Objects.isNull(pageWrap.getModel().getStatus())&&pageWrap.getModel().getStatus().equals(MeetConstants.TWO),"a.START_TIME")
                        .orderByAsc(Objects.isNull(pageWrap.getModel().getStatus())||pageWrap.getModel().getStatus().equals(MeetConstants.ONE),"a.START_TIME")
        );
                .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus())
                        &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.ONE),
                        " now() > a.START_TIME and a.status = 0 "
                )
                .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus())
                                &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.TWO),
                        " now() >= a.START_TIME and a.END_TIME >= now() "
                )
                .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus())
                                &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.THREE),
                        " now() > a.END_TIME or a.status  = 2 "
                )
                .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus())
                                &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.FOUR),
                        " now() > a.START_TIME  and   SUBDATE(NOW(), INTERVAL 120 MINUTE) > a.START_TIME "
                )
                .apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus())
                                &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.FIVE),
                        " a.STATUS = 1  "
                )
//                        .orderByDesc(!Objects.isNull(pageWrap.getModel().getStatus())&&pageWrap.getModel().getStatus().equals(MeetConstants.TWO),"a.START_TIME")
//                        .orderByAsc(Objects.isNull(pageWrap.getModel().getStatus())||pageWrap.getModel().getStatus().equals(MeetConstants.ONE),"a.START_TIME")
                .orderByDesc( Constants.equalsInteger(pageWrap.getModel().getQueryType(),MeetConstants.TWO),"a.CREATE_DATE")
                .orderByAsc(Constants.equalsInteger(pageWrap.getModel().getQueryType(),MeetConstants.ONE),"a.START_TIME");
        IPage<MeetingListResponse> page = bookingsMapper.myMeetingPage(pageWrap.toPage(), queryWrapper);
        String path = systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.FTP_RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(MeetConstants.FTP, MeetConstants.PROJECTS).getCode();
        page.getRecords().forEach(i -> {
            i.setPrefixUrl(path);
            if(i.getMeetingStatus().equals(Constants.ZERO)){
                if(i.getStatus()==Constants.ONE){
                    i.setMeetingStatus(5);
                }else{
                    //开始前5分钟 å¤§äºŽå½“前时间 åˆ™æ˜¾ç¤ºå³å°†å¼€å§‹
                    if(DateUtil.afterMinutesDate(i.getStartTime(),-5).getTime()>System.currentTimeMillis()){
                if(i.getMeetingStatus()==Constants.ONE){
                    //开始前120分钟 å¤§äºŽå½“前时间 åˆ™æ˜¾ç¤ºå³å°†å¼€å§‹
                    if(DateUtil.afterMinutesDate(i.getStartTime(),-120).getTime()>System.currentTimeMillis()){
                        i.setMeetingStatus(4);
                    }
                }
            }
        });
@@ -934,18 +965,15 @@
    /**
     * ä¼šè®®é¢„约记录取消
     *
     * @param id
     * @param userId
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void reservationCancel(Integer id, Integer userId) {
        Bookings bookings = bookingsMapper.selectById(id);
    public void reservationCancel(BusinessOverDTO businessOverDTO) {
        Bookings bookings = bookingsMapper.selectById(businessOverDTO.getId());
        if (Objects.isNull(bookings)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "未查询到预约记录");
        }
        if (!bookings.getCreator().equals(userId)) {
        if (!bookings.getCreator().equals(businessOverDTO.getUserId())) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非你的预约记录,无法进行取消");
        }
        if (System.currentTimeMillis() > bookings.getStartTime().getTime()) {
@@ -955,10 +983,11 @@
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "本次操作失败,预约状态已流转");
        }
        bookings.setCancelTime(new Date());
        bookings.setCancelUser(userId);
        bookings.setCancelUser(businessOverDTO.getUserId());
        bookings.setCancelInfo(businessOverDTO.getBusinessRemark());
        bookings.setStatus(MeetConstants.ONE);
        bookings.setEditDate(new Date());
        bookings.setEditor(userId);
        bookings.setEditor(businessOverDTO.getUserId());
        bookingsMapper.updateById(bookings);
        //取消会议 å‘送取消通知
        this.sendNotice(bookings, 3);
@@ -966,6 +995,63 @@
        sendWxMessage.bookingsCancel(systemUserMapper.selectById(bookings.getCreator()), bookings, roomsMapper.selectById(bookings.getRoomId()));
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void reservationOver(BusinessOverDTO businessOverDTO) {
        if(Objects.isNull(businessOverDTO)
            || Objects.isNull(businessOverDTO.getUserId())
            || Objects.isNull(businessOverDTO.getId())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        Bookings bookings = bookingsMapper.selectById(businessOverDTO.getId());
        if (Objects.isNull(bookings)) {
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "未查询到预约记录");
        }
        Long userRelList = userRelMapper.selectCount(new QueryWrapper<UserRel>().lambda()
                .eq(UserRel::getIsdeleted,Constants.ZERO)
                .eq(UserRel::getObjId,bookings.getRoomId())
                .eq(UserRel::getObjType,Constants.ONE)
                .eq(UserRel::getUserId,businessOverDTO.getUserId()));
        if (!bookings.getCreator().equals(businessOverDTO.getUserId()) && userRelList <= 0) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "非你的预约记录,无法进行该操作");
        }
        if (System.currentTimeMillis() < bookings.getStartTime().getTime()) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议未开始,无法进行结束,如需该操作请使用取消功能");
        }
        if (System.currentTimeMillis() > bookings.getEndTime().getTime()) {
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "会议已结束,无法进行该操作");
        }
        if(!bookings.getStatus().equals(MeetConstants.ZERO)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "本次操作失败,会议状态已流转");
        }
        bookings.setDoneDate(new Date());
        bookings.setDoneUserId(businessOverDTO.getUserId());
        bookings.setStatus(MeetConstants.TWO);
        bookings.setEditDate(new Date());
        bookings.setEditor(businessOverDTO.getUserId());
        bookingsMapper.updateById(bookings);
        //查询所有的预约时间
        List<BookingTime> bookingTimeList = bookingTimeJoinMapper.selectJoinList(BookingTime.class,
                new MPJLambdaWrapper<BookingTime>()
                        .selectAll(BookingTime.class)
                        .selectAs(RoomTime::getEndTime,BookingTime::getEndTime)
                        .leftJoin(RoomTime.class,RoomTime::getId,BookingTime::getTimeId)
                        .eq(BookingTime::getBookingId,bookings.getId()));
        //获取当天  åªæœ‰å½“天日期内可以处理
        String today = DateUtil.dateToString(new Date(),"yyyy-mm-dd");
        //循环标记数据为已删除 ä¸å†å ç”¨
        for (BookingTime bookingTime:bookingTimeList) {
            if(DateUtil.getDateFromString(today + " " + bookingTime.getEndTime() +":00").getTime()>System.currentTimeMillis()){
                bookingTime.setIsdeleted(Constants.ZERO);
                bookingTimeJoinMapper.updateById(bookingTime);
            }
        }
    }
    /**
     * å®šæ—¶å‘送会议 å³å°†å¼€å§‹é€šçŸ¥
@@ -1026,7 +1112,7 @@
        Notices notices = new Notices(noticeObjectType,bookings.getId(),noticeObjectType.getInfo(),bookings.getCreator(), Constants.ZERO);
        noticeList.add(notices);
        if(noticeList.size()>0){
            noticesMapper.insertBatchSomeColumn(noticeList);
            noticesMapper.insert(noticeList);
        }
    }
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/ProjectsServiceImpl.java
@@ -3,6 +3,7 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.core.wx.MeetConstants;
import com.doumee.dao.business.ProjectsMapper;
@@ -39,6 +40,7 @@
    public Integer create(Projects projects) {
        Projects insert = new Projects();
        insert.setIsdeleted(Constants.ZERO);
        insert.setCreator(projects.getCreator());
        insert.setEditor(projects.getEditor());
        insert.setName(projects.getName());
server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomTimeServiceImpl.java
@@ -127,6 +127,7 @@
        bookquery.selectAs(BookingTime::getTimeId, Bookings::getRoomTimeId);
        bookquery.selectAs(BookingTime::getId, Bookings::getBookingTimeId);
        bookquery.eq(Bookings::getIsdeleted, Constants.ZERO);
        bookquery.eq(BookingTime::getIsdeleted, Constants.ZERO);
        bookquery.eq(Bookings::getRoomId, roomTime.getRoomId());
        bookquery.eq(Bookings::getStatus,Constants.ZERO);
        bookquery.apply("DATE_FORMAT(t.START_TIME,'%Y-%m-%d') = DATE_FORMAT('" + DateUtil.dateToString(roomTime.getYudingDate(), "yyyy-MM-dd") + "','%Y-%m-%d') ");
server/system_gateway/src/main/java/com/doumee/api/gateway/JwtAuthController.java
@@ -14,7 +14,6 @@
import com.doumee.service.system.SystemLoginService;
import com.doumee.service.system.SystemUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.server.reactive.ServerHttpRequest;
server/system_service/src/main/java/com/doumee/config/jwt/JwtProperties.java
server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
server/system_service/src/main/java/com/doumee/config/mybatis/EasySqlInjector.java
ÎļþÒÑɾ³ý
server/system_service/src/main/java/com/doumee/config/mybatis/MyBatisPlusConfig.java
@@ -20,9 +20,5 @@
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
    @Bean
    public EasySqlInjector sqlInjector() {
        return new EasySqlInjector();
    }
}
server/system_service/src/main/java/com/doumee/core/constants/ResponseStatus.java
@@ -27,6 +27,7 @@
    NOT_ALLOWED(5110, "不允许的操作"),
    TOKEN_EXCEED_TIME(5111, "TOKEN过期"),
    NO_LOGIN(5112, "未登录"),
    NO_ALLOW_LOGIN(5113, "该类用户不允许登录"),
    ;
    private int code;
server/system_service/src/main/java/com/doumee/core/model/LoginUserInfo.java
@@ -4,6 +4,7 @@
import com.doumee.dao.system.model.SystemPermission;
import com.doumee.dao.system.model.SystemRole;
import com.doumee.dao.system.model.SystemUser;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.beans.BeanUtils;
@@ -38,6 +39,8 @@
    private String sessionId;
    private Date loginDate;
    @ApiModelProperty(value = "账户来源:0=后台添加 ï¼› 2=司机注册")
    private Integer source;
    private List<String> roles;
server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -94,6 +94,7 @@
    public static final String ERP ="ERP" ;
    public static final Integer THREE =3 ;
    public static final Integer FOUR =4 ;
    public static final Integer FIVE =5 ;
    public static final String ORG_USER_ORIGIN = "ORG_USER_ORIGIN";
    public static final String VIRTUAL_CARD_INDEX = "02098469790";
    public static final String RETRY_CONNECT_NUM ="RETRY_CONNECT_NUM" ;
@@ -404,7 +405,7 @@
public interface  memberType{
    int lw_visitor = 0;//劳务访客
    int driver = 0;//司机人员
    int visitor = 1;//普通访客
    int internal = 2;//内部人员
}
server/system_service/src/main/java/com/doumee/dao/business/dao/CompanyMapper.java
@@ -11,5 +11,4 @@
 */
public interface CompanyMapper extends BaseMapper<Company> {
    void insertBatchSomeColumn(List<Company> addList);
}
server/system_service/src/main/java/com/doumee/dao/system/MultifileMapper.java
@@ -11,5 +11,4 @@
 */
public interface MultifileMapper extends BaseMapper<Multifile> {
    void insertBatchSomeColumn(List<Multifile> fileList);
}
server/system_service/src/main/java/com/doumee/dao/system/SystemUserMapper.java
@@ -26,7 +26,6 @@
    List<SystemUserListVO> selectManageList(@Param("dto") QuerySystemUserDTO dto, @Param("orderByClause") String orderByClause);
    void insertBatchSomeColumn(List<SystemUser> userList);
server/system_service/src/main/java/com/doumee/dao/system/dto/LoginAuthDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,24 @@
package com.doumee.dao.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
 * @author Eva.Caesar Liu
 * @date 2023/05/04 18:21
 */
@Data
@ApiModel("微信登录授权参数")
public class LoginAuthDTO implements Serializable {
    @ApiModelProperty(value = "编码")
    private String code;
    @ApiModelProperty(value = "类型")
    private Integer soucre;
}
server/system_service/src/main/java/com/doumee/dao/system/dto/LoginByOpenidDTO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,20 @@
package com.doumee.dao.system.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
/**
 * @author Eva.Caesar Liu
 * @date 2023/05/04 18:21
 */
@Data
@ApiModel("公众号登录参数")
public class LoginByOpenidDTO implements Serializable {
    @ApiModelProperty(value = "userId" , hidden = true)
    private Integer userId;
}
server/system_service/src/main/java/com/doumee/dao/system/dto/NoticesDTO.java
@@ -1,8 +1,10 @@
package com.doumee.dao.system.dto;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@@ -22,9 +24,13 @@
    private Integer queryType;
    @ApiModelProperty(value = "开始日期")
    @JsonFormat(pattern="yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date startDate;
    @ApiModelProperty(value = "结束日期")
    @JsonFormat(pattern="yyyy-MM-dd")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date endDate;
    @ApiModelProperty(value = "0访客审批 1访客报备 2用车审批 3隐患处理 4物流车审批 5系统系统")
server/system_service/src/main/java/com/doumee/dao/system/join/NoticesJoinMapper.java
@@ -11,5 +11,4 @@
 */
public interface NoticesJoinMapper extends MPJJoinMapper<Notices> {
    void insertBatchSomeColumn(List<Notices> noticeList);
}
server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
@@ -104,7 +104,9 @@
    private Integer status;
    @ApiModelProperty(value = "企业编码(关联company)")
    private Integer companyId;
    @ApiModelProperty(value = "0 å¯ç”¨ 1 ç¦ç”¨")
    @ApiModelProperty(value = "账户来源:0=后台添加 ï¼› 2=司机注册")
    private Integer source;
    @ApiModelProperty(value = "公司名称")
    @TableField(exist = false)
    private String companyName;
    @ApiModelProperty(value = "数据权限内部门编码集合")
server/system_service/src/main/java/com/doumee/service/system/SystemLoginService.java
@@ -1,6 +1,7 @@
package com.doumee.service.system;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.dao.system.dto.LoginByOpenidDTO;
import com.doumee.dao.system.dto.LoginDTO;
import org.springframework.http.server.reactive.ServerHttpRequest;
@@ -19,5 +20,14 @@
     * @date 2023/03/21 14:49
     */
    String loginByPassword (LoginDTO dto, HttpServletRequest request);
    LoginUserInfo loginByPasswordNew (LoginDTO dto, ServerHttpRequest request);
    /**
     * æ ¹æ® openId登录
     * @param userId
     * @param request
     * @return
     */
    String loginByUserId(Integer userId);
}
server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -1,15 +1,19 @@
package com.doumee.service.system.impl;
import com.doumee.config.jwt.JwtTokenUtil;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.dao.CompanyMapper;
import com.doumee.dao.business.model.Company;
import com.doumee.dao.system.dto.LoginByOpenidDTO;
import com.doumee.dao.system.dto.LoginDTO;
import com.doumee.dao.system.model.*;
import com.doumee.service.common.CaptchaService;
import com.doumee.service.system.*;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
@@ -22,6 +26,7 @@
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
@@ -58,6 +63,11 @@
    @Autowired
    private CompanyMapper companyMapper;
    @Resource
    private JwtTokenUtil jwtTokenUtil;
    @Override
    public String loginByPassword(LoginDTO dto, HttpServletRequest request) {
@@ -127,7 +137,6 @@
                throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(),"对不起,验证码不正确!");
            }
        }
        // æ ¹æ®ç”¨æˆ·åæŸ¥è¯¢ç”¨æˆ·å¯¹è±¡
        SystemUser queryDto = new SystemUser();
        queryDto.setUsername(dto.getUsername());
@@ -135,6 +144,9 @@
        SystemUser user = systemUserService.findOne(queryDto);
        if (user == null) {
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
        }
        if(!Constants.equalsInteger(user.getSource(),Constants.ZERO)){
            throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN);
        }
        String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt());
        // æ¯”较密码
@@ -158,4 +170,41 @@
        return  userInfo;
    }
    /**
     * å†…部人员 ä¸Ž å¸æœº æ ¹æ®code查询openId后进行登录接口
     * @return
     */
    @Override
    public String loginByUserId(Integer userId) {
        SystemLoginLog loginLog = new SystemLoginLog();
        loginLog.setLoginTime(new Date());
        loginLog.setSystemVersion(systemVersion);
        loginLog.setLocation(Utils.Location.getLocationString(loginLog.getIp()));
        loginLog.setServerIp(Utils.Server.getIP());
        // æ ¹æ®ç”¨æˆ·åæŸ¥è¯¢ç”¨æˆ·å¯¹è±¡
        SystemUser user = systemUserService.findById(userId);
        if (user == null) {
            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
        }
        Company company = new Company();
        if(Objects.nonNull(user.getCompanyId())){
            company = companyMapper.selectById(user.getCompanyId());
        }
        // èŽ·å–ç™»å½•ç”¨æˆ·ä¿¡æ¯
        List<SystemRole> roles = systemRoleService.findByUserId(user.getId());
        List<SystemPermission> permissions = systemPermissionService.findByUserId(user.getId());
        SystemRole rt = new SystemRole();
        rt.setDeleted(Boolean.FALSE);
        //数据部门权限集合
        user.setCompanyIdList(systemDataPermissionService.selectHighRole(new SystemDataPermission(),rt,user));
        LoginUserInfo userInfo = LoginUserInfo.from(user, roles, permissions,company,null);
        String token = jwtTokenUtil.generateToken(userInfo);
        return  token;
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/VisitsCloudController.java
@@ -97,7 +97,7 @@
    @PostMapping("/page")
    @CloudRequiredPermission("business:visits:query")
    public ApiResponse<PageData<Visits>> findPage (@RequestBody PageWrap<Visits> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token){
        pageWrap.getModel().setMemberId(getLoginUser(token).getMemberId());
        pageWrap.getModel().setReceptMemberId(getLoginUser(token).getMemberId());
        return ApiResponse.success(visitsService.findPage(pageWrap));
    }
@@ -124,6 +124,13 @@
        return ApiResponse.success(visitsService.retentionPage(pageWrap));
    }
    @ApiOperation(value = "PC端访客记录提交", notes = "访客提交")
    @PostMapping("/createFk")
    public ApiResponse createFk(@RequestBody Visits visits) {
        visits.setSourceType(Constants.ZERO);
        return ApiResponse.success("查询成功", visitsService.createFk(visits,false,Constants.ONE));
    }
    @ApiOperation(value = "访客报备", notes = "访客报备")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/ApiController.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/InternalWebController.java
@@ -1,7 +1,6 @@
package com.doumee.cloud.web;
import com.doumee.api.BaseController;
import com.doumee.cloud.web.ApiController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.annotation.pr.PreventRepeat;
import com.doumee.core.annotation.trace.Trace;
@@ -95,7 +94,7 @@
    @PostMapping("/createVisit")
    public ApiResponse createVisit(@RequestBody Visits visits,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        visits.setCreateMemberId(getLoginUser(token).getMemberId());
        return ApiResponse.success("查询成功", visitsService.createFk(visits,false));
        return ApiResponse.success("查询成功", visitsService.createFk(visits,false,Constants.ZERO));
    }
    @ApiOperation(value = "审批流记录审批", notes = "内部人员")
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/ProblemWebController.java
@@ -1,6 +1,5 @@
package com.doumee.cloud.web;
import com.doumee.cloud.web.ApiController;
import com.doumee.config.annotation.LoginNoRequired;
import com.doumee.core.annotation.trace.Trace;
import com.doumee.core.model.ApiResponse;
@@ -33,7 +32,7 @@
@LoginNoRequired
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/web/problem")
@Slf4j
public class ProblemWebController extends ApiController {
public class ProblemWebController {
    @Autowired
    private ProblemsService problemsService;
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/VisitorWebController.java
@@ -29,9 +29,11 @@
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ServerWebExchange;
import javax.validation.Valid;
import java.util.List;
import java.util.Objects;
/**
 * Created by IntelliJ IDEA.
@@ -60,10 +62,11 @@
    @ApiOperation(value = "访客微信授权", notes = "访客微信授权获取openId")
    @GetMapping("/wxAuthorize")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "授权码", required = true)
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "code", value = "授权码", required = true),
            @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "source", value = "来源:0=司机;1=访客;2=内部员工", required = true)
    })
    public ApiResponse<WxAuthorizeVO> wxAuthorize(@RequestParam String code) {
        WxAuthorizeVO wxAuthorizeVO =  memberService.wxAuthorize(code);
    public ApiResponse<WxAuthorizeVO> wxAuthorize(@RequestParam String code,@RequestParam Integer source) {
        WxAuthorizeVO wxAuthorizeVO =  memberService.wxAuthorize(code,source);
        return ApiResponse.success("查询成功",wxAuthorizeVO);
    }
@@ -79,7 +82,7 @@
    @PostMapping("/createFk")
    public ApiResponse createFk(@RequestBody Visits visits) {
        visits.setSourceType(Constants.ZERO);
        return ApiResponse.success("查询成功", visitsService.createFk(visits,false));
        return ApiResponse.success("查询成功", visitsService.createFk(visits,false,Constants.ZERO));
    }
@@ -94,7 +97,8 @@
    @ApiOperation(value = "访客记录详情", notes = "访客记录详情")
    @GetMapping("/detail")
    public ApiResponse<VisitDetailVO> detail(@RequestParam Integer id,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success("查询成功", visitsService.getVisitDetail(id,getLoginUser(token).getMemberId()));
        LoginUserInfo loginUserInfo = getLoginUser(token);
        return ApiResponse.success("查询成功", visitsService.getVisitDetail(id, Objects.isNull(loginUserInfo)?null:loginUserInfo.getMemberId()));
    }
server/visits/dmvisit_service/src/main/java/com/doumee/config/Jwt/JwtPayLoad.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_service/src/main/java/com/doumee/config/Jwt/JwtTokenUtil.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_service/src/main/java/com/doumee/config/Jwt/WebMvcConfig.java
ÎļþÒÑɾ³ý
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveMapper.java
@@ -12,7 +12,6 @@
 */
public interface ApproveMapper extends BaseMapper<Approve> {
    void insertBatchSomeColumn(List<Approve> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ApproveParamMapper.java
@@ -11,5 +11,4 @@
 */
public interface ApproveParamMapper extends BaseMapper<ApproveParam> {
    void insertBatchSomeColumn(List<ApproveParam> paramList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarEventMapper.java
@@ -11,5 +11,4 @@
 */
public interface CarEventMapper extends BaseMapper<CarEvent> {
    void insertBatchSomeColumn(List<CarEvent> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/CarsMapper.java
@@ -11,5 +11,4 @@
 */
public interface CarsMapper extends BaseMapper<Cars> {
    void insertBatchSomeColumn(List<Cars> allHkList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceEventMapper.java
@@ -11,5 +11,4 @@
 * @date 2023/11/30 15:33
 */
public interface DeviceEventMapper extends BaseMapper<DeviceEvent> {
    void insertBatchSomeColumn(List<DeviceEvent> addList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceMapper.java
@@ -11,6 +11,4 @@
 */
public interface DeviceMapper extends BaseMapper<Device> {
    Integer insertBatchSomeColumn(Collection<Device> entityList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/DeviceRoleMapper.java
@@ -11,5 +11,4 @@
 */
public interface DeviceRoleMapper extends BaseMapper<DeviceRole> {
    void insertBatchSomeColumn(List<DeviceRole> addList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/EmpowerMapper.java
@@ -11,5 +11,4 @@
 */
public interface EmpowerMapper extends BaseMapper<Empower> {
    void insertBatchSomeColumn(List<Empower> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/MemberCardMapper.java
@@ -11,6 +11,4 @@
 * @date 2023/11/30 15:33
 */
public interface MemberCardMapper extends BaseMapper<MemberCard> {
    void insertBatchSomeColumn(List<MemberCard> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/MemberMapper.java
@@ -17,5 +17,4 @@
 */
public interface MemberMapper extends MPJBaseMapper<Member> {
    void insertBatchSomeColumn(List<Member> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/MemberRoleMapper.java
@@ -12,6 +12,5 @@
 */
public interface MemberRoleMapper extends BaseMapper<MemberRole> {
    void insertBatchSomeColumn(List<MemberRole> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ParkBookMapper.java
@@ -12,5 +12,4 @@
 */
public interface ParkBookMapper extends BaseMapper<ParkBook> {
    void insertBatchSomeColumn(List<ParkBook> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/ParksMapper.java
@@ -11,5 +11,4 @@
 */
public interface ParksMapper extends BaseMapper<Parks> {
    void insertBatchSomeColumn(List<Parks> addList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/RetentionMapper.java
@@ -10,6 +10,4 @@
 * @date 2023/11/30 15:33
 */
public interface RetentionMapper extends BaseMapper<Retention> {
    void insertBatchSomeColumn(List<Retention> retentionList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/TrainTimeMapper.java
@@ -11,5 +11,4 @@
 */
public interface TrainTimeMapper extends BaseMapper<TrainTime> {
    void insertBatchSomeColumn(List<TrainTime> newList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitEventMapper.java
@@ -11,5 +11,4 @@
 */
public interface VisitEventMapper extends BaseMapper<VisitEvent> {
    void insertBatchSomeColumn(List<VisitEvent> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/VisitsMapper.java
@@ -11,5 +11,4 @@
 */
public interface VisitsMapper extends BaseMapper<Visits> {
    void insertBatchSomeColumn(List<Visits> withUserList);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/ApproveJoinMapper.java
@@ -12,7 +12,5 @@
 */
public interface ApproveJoinMapper extends MPJJoinMapper<Approve> {
    void insertBatchSomeColumn(List<Approve> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/join/EmpowerJoinMapper.java
@@ -11,5 +11,4 @@
 * @date 2023/11/30 15:33
 */
public interface EmpowerJoinMapper extends MPJJoinMapper<Empower> {
    void insertBatchSomeColumn(List<Empower> list);
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/CarUseBook.java
@@ -134,8 +134,8 @@
    @ExcelColumn(name="申请人编码(关联member)")
    private Integer memberId;
    @ApiModelProperty(value = "司机编码(关联car_driver)", example = "1")
    @ExcelColumn(name="司机编码(关联car_driver)")
    @ApiModelProperty(value = "司机编码(关联memberId)", example = "1")
    @ExcelColumn(name="司机编码(关联memberId)")
    private Integer driverId;
    @ApiModelProperty(value = "司机姓名", example = "1")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/Member.java
@@ -75,8 +75,8 @@
    @ExcelColumn(name="健康码")
    private String imgurl;
    @ApiModelProperty(value = "类型 0劳务访客 1普通访客  2内部人员", example = "1")
    @ExcelColumn(name="类型 0劳务访客 1普通访客 2内部人员")
    @ApiModelProperty(value = "类型 0司机人员 1普通访客  2内部人员", example = "1")
    @ExcelColumn(name="类型 0司机人员 1普通访客 2内部人员")
    private Integer type;
    @ApiModelProperty(value = "访客名称/内部人员")
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/DateIntervalVO.java
@@ -28,4 +28,7 @@
    @ApiModelProperty(value = "是否占用")
    private Integer isUse;
    @ApiModelProperty(value = "用车记录主键")
    private Integer carUseBookId;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/web/response/VisitDetailVO.java
@@ -7,6 +7,7 @@
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
import java.util.List;
/**
@@ -17,6 +18,8 @@
 */
@Data
public class VisitDetailVO {
    @ApiModelProperty(value = "创建时间")
    private Date createTime;
    @ApiModelProperty(value = "审批状态")
    private Integer status;
@@ -76,6 +79,8 @@
    @ApiModelProperty(value = "审批信息数据")
    private ApproveDataVO approveDateVO;
    @ApiModelProperty(value = "证件类型 0身份证 1港澳证件 2护照", example = "1")
    private Integer idcardType;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/MemberService.java
@@ -16,6 +16,7 @@
import com.doumee.dao.web.reqeust.VisitMemberDTO;
import com.doumee.dao.web.response.MemberVO;
import com.doumee.dao.web.response.WxAuthorizeVO;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -173,20 +174,13 @@
     * @param code
     * @return
     */
    WxAuthorizeVO wxAuthorize(String code);
    WxAuthorizeVO wxAuthorize(String code,Integer source);
    List<MemberVO> getVisitedMember(CheckVisitedDTO checkVisitedDTO);
    /**
     * è´¦å·å¯†ç 
     * å†…部人员/劳务访客登录
     * @param accountLoginDTO
     * @return
     */
    WxAuthorizeVO accountLogin(AccountLoginDTO accountLoginDTO);
    /**
     * å†…部可拜访人员分页
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/VisitsService.java
@@ -9,6 +9,7 @@
import com.doumee.dao.web.reqeust.VisitRecordDTO;
import com.doumee.dao.web.response.VisitDetailVO;
import com.doumee.dao.web.response.VisitRecordVO;
import io.swagger.models.auth.In;
import java.util.List;
@@ -27,7 +28,7 @@
     */
    Integer create(Visits visits);
    Integer createFk(Visits visits,Boolean isERP);
    Integer createFk(Visits visits, Boolean isERP, Integer source);
    /**
     * è®¿å®¢æŠ¥å¤‡
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/ext/ERPSyncService.java
@@ -53,7 +53,7 @@
     * @param accessSecret
     * @return
     */
    AccessTokenResponse createERPToken(String accessKey, String accessSecret);
//    AccessTokenResponse createERPToken(String accessKey, String accessSecret);
    /**
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveServiceImpl.java
@@ -36,6 +36,7 @@
import org.apache.xpath.operations.Bool;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -257,17 +258,19 @@
                                &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO)
                        ).count()
                );
                //已处理数据
                internalHomeVO.setNoticeDealNum(
                        noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
                                &&StringUtils.equals(i.getParam4(),i.getUserId().toString())
                                &&Constants.equalsInteger(i.getStatus(),Constants.ONE)
                                &&Constants.equalsInteger(i.getSendacopy(),Constants.ZERO)
                        ).count()
                );
                //我发起的数据
                internalHomeVO.setNoticeCreateNum(
                        noticesJoinMapper.selectCount(new QueryWrapper<Notices>().lambda().eq(Notices::getParam3,memberId))
                );
                //抄送我的数据
                internalHomeVO.setNoticeCopyNum(
                        noticesList.stream().filter(i->Constants.equalsInteger(i.getUserId(),memberId)
                                &&Constants.equalsInteger(i.getSendacopy(),Constants.ONE)
@@ -374,7 +377,8 @@
        if(CollectionUtils.isNotEmpty(approveCopyList)){
            this.organizeApproveCopyData(approveTempl,approveParamList,businessId,approveList);
        }
        approveMapper.insertBatchSomeColumn(approveList);
        approveJoinMapper.insert(approveList);
//        approveJoinMapper.insert(approveList);
    }
@@ -396,6 +400,7 @@
        createUserApprove.setIsdeleted(Constants.ZERO);
        createUserApprove.setTemplatId(approveTempl.getId());
        createUserApprove.setChekorId(createMember.getId());
        createUserApprove.setCheckDate(createUserApprove.getCreateDate());
        createUserApprove.setStatus(Constants.approveStatus.pass);
        createUserApprove.setTitle("发起申请");
        createUserApprove.setStatusInfo("");
@@ -467,6 +472,7 @@
                approve.setChekorId(memberId);
                approve.setStatus(i==0?Constants.ONE:Constants.ZERO);
                approve.setStatusInfo(i==0?"审批中":"待审批");
                approve.setTitle("审批人");
                approve.setIsEndCheck((i+1) == approveParamList.size()?Constants.ONE:Constants.ZERO);
                approve.setObjId(businessId);
                approve.setLevel(i+1);
@@ -684,11 +690,6 @@
            for(Approve level:levelList){
                List<Approve> tlist = getLevelInfoFromList(level,approveGroupList);
                approveDateVO.getApproveList().addAll(tlist);
                if(tlist.size() ==0
                        ||Constants.equalsInteger(Constants.approveStatus.unPass,  tlist.get(0).getStatus())
                        ||Constants.equalsInteger(Constants.approveStatus.cancel,  tlist.get(0).getStatus())){
                    break;
                }
            }
        }
@@ -702,6 +703,7 @@
            waitModel.setApproveList(copyList);
            approveDateVO.getApproveList().add(waitModel);
        }
        System.out.println(JSONObject.toJSONString(approveDateVO));
        return approveDateVO;
    }
@@ -781,19 +783,14 @@
                if(CollectionUtils.isNotEmpty(approveList)){
                    waitModel.setCreateDate(approveList.get(Constants.ZERO).getCreateDate());
                }
                if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.pass)){
                waitModel.setMemberName("已抄送"+ approveList.size() +"人");
                }else if(Constants.equalsInteger(waitModel.getStatus(),Constants.approveStatus.wait)){
                    waitModel.setMemberName("处理中");
                }
                waitModel.setApproveList(approveList);
                list.add(waitModel);
            }
            //如果是或签
//            if(otherPassList.size()>0){
//                Approve waitModel = new Approve();
//                waitModel.setApproveType(Constants.ONE);
//                waitModel.setStatusInfo(StringUtils.defaultString(level.getTitle(),"审批人")+"(抄送或签审批人)");
//                waitModel.setStatus(Constants.ONE);
//                waitModel.setApproveList(otherPassList);
//                list.add(waitModel);
//            }
        }
@@ -816,7 +813,7 @@
            }else if(Constants.equalsInteger(Constants.approveStatus.auditIng,approve.getStatus())||Constants.equalsInteger(Constants.approveStatus.wait,approve.getStatus())){
                waitList.add(approve);
            }else if(Constants.equalsInteger(Constants.approveStatus.unPass,approve.getStatus())){
                refuseModel = approve;
                BeanUtils.copyProperties(approve,refuseModel);
            }
        }
    }
@@ -1009,6 +1006,7 @@
                .eq(Notices::getUserId,approve.getChekorId())
                .eq(Notices::getSendacopy,Constants.ZERO)
                .eq(Notices::getIsdeleted,Constants.ZERO)
                .last(" limit 1 ")
        );
        if(Objects.isNull(notices)){
            log.info("未查询到通知记录");
@@ -1020,7 +1018,7 @@
        approve.setCheorId(approveDTO.getLoginUserInfo().getMemberId().toString());
        approve.setCheckorName(approveDTO.getLoginUserInfo().getRealname());
        approve.setCheckDate(new Date());
        approve.setStatusInfo(approveDTO.getStatus()==Constants.TWO?"已同意":approveDTO.getCheckInfo());
        approve.setStatusInfo(approveDTO.getStatus()==Constants.TWO?"已同意":"已驳回");
        //本级所有 å¾…审批记录
        List<Approve> approveList = approveJoinMapper.selectJoinList(Approve.class,
                new MPJLambdaWrapper<Approve>()
@@ -1048,10 +1046,12 @@
        Boolean dealBusinessBean = false;
        //审批驳回情况
        if(approveDTO.getStatus().equals(Constants.THREE)){
            dealBusinessBean = true;
            //修改其他所有待审批和审批中记录数据
            approveJoinMapper.update(null,new UpdateWrapper<Approve>()
                    .lambda()
                    .set(Approve::getStatus,Constants.approveStatus.otherUnPass)
                    .set(Approve::getCheckDate,new Date())
                    .in(Approve::getStatus,Constants.approveStatus.auditIng,Constants.approveStatus.wait)
                    .eq(Approve::getObjId,approve.getObjId())
                    .eq(Approve::getObjType,approve.getObjType())
@@ -1081,7 +1081,6 @@
                    );
                }
            }
            return;
        }else{
            //处理其他业务数据
            if((Constants.equalsInteger(approve.getApproveType(),Constants.ZERO)
@@ -1091,6 +1090,7 @@
                    approveJoinMapper.update(null,new UpdateWrapper<Approve>()
                            .lambda()
                            .set(Approve::getStatus,Constants.approveStatus.otherDeal)
                            .set(Approve::getCheckDate,new Date())
                            .in(Approve::getId,approveList.stream().map(m->m.getId()).collect(Collectors.toList())));
                }
                dealBusinessBean = true;
@@ -1102,17 +1102,24 @@
                    approveJoinMapper.update(null,new UpdateWrapper<Approve>()
                            .lambda()
                            .set(Approve::getStatus,Constants.approveStatus.otherDeal)
                            .set(Approve::getCheckDate,new Date())
                            .in(Approve::getId,approveList.stream().map(m->m.getId()).collect(Collectors.toList())));
                }
                /**开启下一级别的数据为待审核**/
                approveJoinMapper.update(null,new UpdateWrapper<Approve>()
                        .lambda()
                        .set(Approve::getStatus,Constants.approveStatus.auditIng)
                        .set(Approve::getTitle,"审批人")
                        .set(Approve::getCheckDate,new Date())
                        .eq(Approve::getStatus,Constants.approveStatus.wait)
                        .eq(Approve::getObjId,approve.getObjId())
                        .eq(Approve::getObjType,approve.getObjType())
                        .eq(Approve::getLevel,(approve.getLevel()+1))
                );
                if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals(
                        Constants.approveObjectType.unCityUseCar)){
                    this.updDriver(approveDTO,approve,false);
                }
            }else if(approve.getApproveType().equals(Constants.ONE)){
                //会签 ä¸”终审
                //无他人审批的情况 åˆ™ä¿®æ”¹æ•°æ®çŠ¶æ€
@@ -1215,7 +1222,7 @@
                .eq(Approve::getType,Constants.ZERO)
                .eq(Approve::getLevel,(approve.getLevel() + Constants.ONE))
        );
        if(CollectionUtils.isNotEmpty(nextApproveList)){
        if(CollectionUtils.isEmpty(nextApproveList)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"审批流数据异常");
        }
        Notices newNotices = new Notices();
@@ -1255,23 +1262,7 @@
            visitsMapper.updateById(visits);
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.cityUseCar)||approveDTO.getObjType().equals(
                Constants.approveObjectType.unCityUseCar)){
            // å¸‚内外用车申请
            CarUseBook carUseBook = carUseBookMapper.selectById(approveDTO.getObjId());
            if(Objects.isNull(carUseBook)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到用车记录");
            }
            carUseBook.setStatus(approveDTO.getStatus());
            carUseBook.setEditDate(new Date());
            carUseBook.setEditor(approveDTO.getLoginUserInfo().getMemberId());
            //如果配置修改司机 ä¸” å…¥å‚了更换后司机信息
            if(approveDTO.getStatus()==Constants.TWO&&Constants.equalsInteger(approve.getDriverParam(),Constants.ONE)){
                CarDriver carDriver = carDriverMapper.selectById(approveDTO.getDriverId());
                if(Objects.isNull(carDriver)){
                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到司机信息");
                }
                carUseBook.setDriverId(carDriver.getId());
            }
            carUseBookMapper.updateById(carUseBook);
            this.updDriver(approveDTO,approve,true);
        }else if(approveDTO.getObjType().equals(Constants.approveObjectType.logisticsCarUse)){
            //TODO  ç‰©æµè½¦é¢„约
@@ -1281,4 +1272,34 @@
    }
    public void updDriver(ApproveDTO approveDTO,Approve approve,Boolean dealBusinessBean){
        // å¸‚内外用车申请
        CarUseBook carUseBook = carUseBookMapper.selectById(approveDTO.getObjId());
        if(Objects.isNull(carUseBook)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到用车记录");
        }
        if(dealBusinessBean){
            carUseBook.setStatus(approveDTO.getStatus());
        }else{
            if(Constants.equalsInteger(approveDTO.getStatus(),Constants.TWO)){
                carUseBook.setStatus(Constants.ONE);
            }
        }
        carUseBook.setEditDate(new Date());
        carUseBook.setEditor(approveDTO.getLoginUserInfo().getMemberId());
        //如果配置修改司机 ä¸” å…¥å‚了更换后司机信息
        if(approveDTO.getStatus()==Constants.TWO&&Constants.equalsInteger(approve.getDriverParam(),Constants.ONE)){
            CarDriver carDriver = carDriverMapper.selectOne(new QueryWrapper<CarDriver>().lambda()
                    .eq(CarDriver::getIsdeleted,Constants.ZERO)
                    .eq(CarDriver::getStatus,Constants.ZERO)
                    .eq(CarDriver::getMemberId,approveDTO.getDriverId()));
            if(Objects.isNull(carDriver)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到司机信息");
            }
             carUseBook.setDriverId(carDriver.getMemberId());
        }
        carUseBookMapper.updateById(carUseBook);
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ApproveTemplServiceImpl.java
@@ -9,10 +9,8 @@
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.ApproveParamMapper;
import com.doumee.dao.business.ApproveTemplMapper;
import com.doumee.dao.business.MemberMapper;
import com.doumee.dao.business.join.MemberJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.ApproveParamDataVO;
import com.doumee.service.business.ApproveTemplService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -28,8 +26,6 @@
import java.util.Date;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
/**
 * å®¡æ‰¹æ¨¡ç‰ˆä¿¡æ¯è¡¨Service实现
@@ -94,7 +90,7 @@
            approveParamMapper.delete(new UpdateWrapper<ApproveParam>().lambda()
                    .eq(ApproveParam::getTemplId,template.getId()));
            //批量插入新的配置
            approveParamMapper.insertBatchSomeColumn(model.getParamList());
            approveParamMapper.insert(model.getParamList());
        }
        return 1;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarUseBookServiceImpl.java
@@ -83,7 +83,6 @@
                || Objects.isNull(carUseBook.getStartTime())
                || Objects.isNull(carUseBook.getEndTime())
                || Objects.isNull(carUseBook.getCreator())
                || Objects.isNull(carUseBook.getMemberId())
                || Objects.isNull(carUseBook.getPlanUseDate())
                || Objects.isNull(carUseBook.getType())
                || StringUtils.isEmpty(carUseBook.getMemberIds())
@@ -92,6 +91,9 @@
                || StringUtils.isEmpty(carUseBook.getAddr())
        ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if(Objects.nonNull(carUseBook.getCreator())&&Objects.isNull(carUseBook.getMemberId())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前登录用户无法进行该操作!");
        }
        if(carUseBook.getEndTime().getTime()<=System.currentTimeMillis()){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"选择日期异常[结束时间小于当前时间],请刷新重试");
@@ -108,6 +110,7 @@
        if(Objects.isNull(cars)||!cars.getType().equals(Constants.ONE)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"车辆信息异常");
        }
        carUseBook.setCarCode(cars.getCode());
        //根据车辆查询司机信息
        CarDriver carDriver = carDriverMapper.selectOne(new QueryWrapper<CarDriver>().lambda()
                .eq(CarDriver::getCarId,cars.getId())
@@ -124,7 +127,6 @@
        }
        carUseBookMapper.insert(carUseBook);
        //用车申请 å®¡æ‰¹è®°å½•创建
        approveService.createApproveFlow(carUseBook.getType()==0?3:4,carUseBook.getId(),carUseBook.getMemberId());
        return carUseBook.getId();
    }
@@ -207,6 +209,7 @@
                }
            }
            approve.setCheckInfo(model.getCancelInfo());
            approve.setCheckDate(model.getCancelTime());
            approveList.add(approve);
        }
        model.setApproveDateVO(approveDataVO);
@@ -372,11 +375,6 @@
                        .or().apply("  START_TIME < '"+dateDay+" 00:00:00' and END_TIME  > '"+dateDay+" 23:59:59'  "))
        );
        for (DateIntervalVO dateIntervalVO:dateIntervalVOList) {
            //判断时间是否大于当前
            if(DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()<=System.currentTimeMillis()){
                dateIntervalVO.setIsUse(Constants.ONE);
                continue;
            }
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(carUseBookList)){
                for (CarUseBook i:carUseBookList  ) {
                    if(
@@ -389,10 +387,16 @@
                                    (DateUtil.getDateFromString(dateIntervalVO.getStartTime()).getTime() >= i.getStartTime().getTime() &&
                                            DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime() <= i.getEndTime().getTime())
                    ){
                        dateIntervalVO.setCarUseBookId(i.getId());
                        dateIntervalVO.setIsUse(Constants.ONE);
                        break;
                    }
                }
            }
            //判断时间是否大于当前
            if(Constants.equalsInteger(dateIntervalVO.getIsUse(),Constants.ZERO)  && DateUtil.getDateFromString(dateIntervalVO.getEndTime()).getTime()<=System.currentTimeMillis()){
                dateIntervalVO.setIsUse(Constants.ONE);
                continue;
            }
        }
        return dateIntervalVOList;
@@ -436,7 +440,7 @@
       carUseBook.setCancelTime(new Date());
       carUseBook.setCancelStatus(Constants.ONE);
       carUseBook.setStatus(Constants.FOUR);
       carUseBook.setCancelUser(loginUserInfo.getId());
       carUseBook.setCancelUser(loginUserInfo.getMemberId());
       carUseBook.setCancelType(Constants.ONE);
       if(loginUserInfo.getId().equals(carUseBook.getCreator())){
           carUseBook.setCancelType(Constants.ZERO);
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerParamServiceImpl.java
@@ -47,6 +47,13 @@
        if(loginUserInfo == null){
            loginUserInfo = model.getLoginUserInfo();
        }
        if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
                .eq(HiddenDangerParam::getType,model.getType())
                .eq(HiddenDangerParam::getName,model.getName())
                .eq(HiddenDangerParam::getIsdeleted,Constants.ZERO)
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该名称已存在!");
        }
        if(Constants.equalsInteger(model.getType(),Constants.ZERO)){
            //如果是区域配置
            List<Integer> ids = model.getMemberIdList();
@@ -122,6 +129,14 @@
        if(hiddenDangerParam == null || Constants.equalsInteger(hiddenDangerParam.getIsdeleted(),Constants.ONE)){
            throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,该配置信息不存在,请返回刷新页面重试!");
        }
        if(hiddenDangerParamMapper.selectCount(new QueryWrapper<HiddenDangerParam>().lambda()
                .eq(HiddenDangerParam::getType,model.getType())
                .eq(HiddenDangerParam::getName,model.getName())
                .eq(HiddenDangerParam::getIsdeleted,Constants.ZERO)
                .ne(HiddenDangerParam::getId,model.getId())
        )>Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,该名称已存在!");
        }
        if(Constants.equalsInteger(hiddenDangerParam.getType(),Constants.ZERO)){
            //如果是区域配置,校验安全员信息是否正确
            List<Integer> ids =model.getMemberIdList();
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/HiddenDangerServiceImpl.java
@@ -84,6 +84,7 @@
        if(Objects.isNull(hiddenDangerParam)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到隐患区域");
        }
        HiddenDangerParam hiddenDangerCate = hiddenDangerParamMapper.selectById(hiddenDanger.getCateId());
        if(Objects.isNull(hiddenDangerCate)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到隐患类型");
@@ -317,6 +318,7 @@
                .eq(pageWrap.getModel().getCheckInfo() != null, HiddenDanger::getCheckInfo, pageWrap.getModel().getCheckInfo())
                .eq(pageWrap.getModel().getCheckUserId() != null, HiddenDanger::getCheckUserId, pageWrap.getModel().getCheckUserId())
                .eq(pageWrap.getModel().getAreaName() != null, HiddenDanger::getAreaName, pageWrap.getModel().getAreaName())
                .like(pageWrap.getModel().getCompanyName() != null,"t4.company_name_path",pageWrap.getModel().getCompanyName())
                .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getName,pageWrap.getModel().getMemberName())
                        .or().like(Member::getPhone,pageWrap.getModel().getMemberName()))
@@ -448,7 +450,7 @@
            }
        }
        if(fileList.size()>0){
            multifileMapper.insertBatchSomeColumn(fileList);
            multifileMapper.insert(fileList);
        }
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/MemberServiceImpl.java
@@ -2,6 +2,7 @@
import cn.hutool.core.util.IdcardUtil;
import cn.hutool.core.util.PhoneUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
@@ -9,8 +10,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.DataSyncConfig;
import com.doumee.config.Jwt.JwtPayLoad;
import com.doumee.config.Jwt.JwtTokenUtil;
import com.doumee.core.annotation.excel.ExcelImporter;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -64,10 +63,12 @@
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.http.server.reactive.ServerHttpRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.util.Date;
import java.util.*;
import java.util.stream.Collectors;
@@ -127,6 +128,9 @@
    @Autowired
    @Lazy
    private SmsEmailService smsEmailService;
    @Autowired
    private SystemLoginService systemLoginService;
    @Value("${debug_model}")
    private Boolean isDebug;
@@ -740,7 +744,7 @@
                    memberRole.setRoleId(deviceRole.getId());
                    memberRoleList.add(memberRole);
                }
                memberRoleMapper.insertBatchSomeColumn(memberRoleList);
                memberRoleMapper.insert(memberRoleList);
            }
            member.setRoleId(ids);
            return  1;
@@ -1112,6 +1116,7 @@
            queryWrapper.eq(Member::getCompanyId,member.getCompanyId());
        }
        queryWrapper.eq(Member::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(Member::getWorkStatus,Constants.ZERO);
        List<Member> list =  memberJoinMapper.selectJoinList(Member.class,queryWrapper);
//        if(list!=null){
//            for(Member m : list){
@@ -1551,7 +1556,7 @@
                        list.add(model);
                    }
                    //导入新增的授权信息
                    empowerMapper.insertBatchSomeColumn(list);
                    empowerMapper.insert(list);
                }
            }
        }
@@ -1621,7 +1626,10 @@
     * @return
     */
    @Override
    public WxAuthorizeVO wxAuthorize(String code){
    public WxAuthorizeVO wxAuthorize(String code, Integer source){
        if(StringUtils.isBlank(code)||Objects.isNull(source)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        String appId = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_APPID).getCode();
        String appSecret = systemDictDataBiz.queryByCode(Constants.WX_PLATFORM,Constants.WX_PLATFORM_SECRET).getCode();
        String getTokenUrl = WXConstant.GET_USER_INFO_URL.replace("CODE", code)
@@ -1640,6 +1648,7 @@
                .selectAs(Company::getName,Member::getCompanyName)
                .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                .eq(Member::getOpenid,openId)
                .eq(Member::getType,source)
                .eq(Member::getIsdeleted,Constants.ZERO)
                .orderByDesc(Member::getCreateDate)
                .last(" limit 1 ")
@@ -1658,12 +1667,16 @@
            String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
                    systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode();
            member.setPrefixUrl(prefixUrl);
//            JwtPayLoad payLoad = new JwtPayLoad(Integer.toString(member.getId()));
//            String token = JwtTokenUtil.generateToken(payLoad);
//            //存储token至redis
//            RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME);
//            wxAuthorizeVO.setToken(token);
            wxAuthorizeVO.setMember(member);
            //司机 ä¸Ž å†…部人员 æä¾›token
            if(Constants.equalsInteger(source,Constants.ZERO)||Constants.equalsInteger(source,Constants.TWO)){
                SystemUser systemUser = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda().eq(SystemUser::getMemberId,member.getId())
                        .eq(SystemUser::getStatus,Constants.ZERO).last(" limit 1 "));
                if(Objects.nonNull(systemUser)){
                    String token = systemLoginService.loginByUserId(systemUser.getId());
                    wxAuthorizeVO.setToken(token);
                }
            }
        }
        return wxAuthorizeVO;
    }
@@ -1734,51 +1747,6 @@
    @Override
    public WxAuthorizeVO accountLogin(AccountLoginDTO accountLoginDTO){
        System.out.println(DESUtil.decrypt(Constants.EDS_PWD,"eIaPD5AR5DBuTBE9MW14QRG07IDKXCdh"));
        if(accountLoginDTO.getAccount().length()!=18
            //&&!IdcardUtil.isValidCard(accountLoginDTO.getAccount())
        ){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证号码有误,请核实后重试!");
        }
        Member member = memberMapper.selectOne(new QueryWrapper<Member>().lambda()
                .eq(Member::getIdcardNo, DESUtil.encrypt(Constants.EDS_PWD, accountLoginDTO.getAccount()))
                .ne(Member::getType,Constants.memberType.visitor)
        );
        if(Objects.isNull(member)){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未查询到用户,请联系管理员");
        }
        if(member.getIsdeleted() == Constants.ONE){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已删除,请联系管理员");
        }
        if(member.getStatus() != Constants.ZERO){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"用户已禁用,请联系管理员");
        }
        String md5Password = DESUtil.encrypt(Constants.EDS_PWD, accountLoginDTO.getPassword());
        if(!md5Password.equals(member.getPassward())){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"账户密码错误!");
        }
        if(StringUtils.isNotBlank(accountLoginDTO.getOpenId())){
            //先清空原有访客的openid绑定关系
            memberMapper.update(null, new UpdateWrapper<Member>().lambda()
                    .ne(Member::getType,Constants.memberType.visitor)
                    .eq(Member::getOpenid,accountLoginDTO.getOpenId())
                    .set(Member::getOpenid,null)
            );
            //更新当前登录用户 openId
            member.setOpenid(accountLoginDTO.getOpenId());
            memberMapper.updateById(member);
        }
        WxAuthorizeVO wxAuthorizeVO = new WxAuthorizeVO();
        JwtPayLoad payLoad = new JwtPayLoad(Integer.toString(member.getId()));
        String token = JwtTokenUtil.generateToken(payLoad);
        //存储token至redis
        RedisUtil.addObject(redisTemplate,Constants.RedisKeys.INTERNAL_TOKEN+"_"+member.getId(),token,Constants.RedisKeys.EXPIRE_TIME);
        wxAuthorizeVO.setToken(token);
        return wxAuthorizeVO;
    }
    @Override
@@ -1787,7 +1755,7 @@
        List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getIsdeleted,Constants.ZERO));
        if(CollectionUtils.isNotEmpty(memberList)){
            stagingHeadVO.setWorkerCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.internal)).count());
            stagingHeadVO.setLwCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.lw_visitor)).count());
            stagingHeadVO.setLwCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.driver)).count());
            stagingHeadVO.setVisitorCount(memberList.stream().filter(m->m.getType().equals(Constants.memberType.visitor)).count());
        }
        //在场车辆
@@ -1811,7 +1779,7 @@
                new MPJLambdaWrapper<Member>()
                        .select("count(1) as memberCount, t1.name as companyName")
                        .leftJoin(Company.class,Company::getId,Member::getCompanyId)
                        .eq(Member::getType,Constants.memberType.lw_visitor)
                        .eq(Member::getType,Constants.memberType.driver)
                        .groupBy(Company::getId,Company::getName)
        );
        List<Map<String,Object>> retentionMaps = retentionJoinMapper.selectMaps(new MPJLambdaWrapper<Retention>()
@@ -1886,7 +1854,7 @@
                    throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"对不起,员工信息【"+insert.getName()+"】同步安防平台失败,请稍后重试!");
                }
            }
            memberMapper.insertBatchSomeColumn(newList);
            memberMapper.insert(newList);
            List<SystemUser> userList = new ArrayList<>();
            for(Member insert: newList){
                //创建系统登陆账号(默认无任何角色)
@@ -1896,7 +1864,7 @@
                }
            }
            if(userList.size()>0){
                systemUserMapper.insertBatchSomeColumn(userList);
                systemUserMapper.insert(userList);
            }
        }catch (Exception e){
            //如果发生异常,删除已经创建的人员信息
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java
@@ -222,7 +222,7 @@
                parkBook.setRemark("待同步安防平台");
                parkBookList.add(parkBook);
            }
            parkBookMapper.insertBatchSomeColumn(parkBookList);
            parkBookMapper.insert(parkBookList);
        }
        return 0;
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ProblemLogServiceImpl.java
@@ -183,7 +183,7 @@
            if(Objects.isNull(member)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到劳务人员");
            }
            if(!member.getType().equals(Constants.memberType.lw_visitor)){
            if(!member.getType().equals(Constants.memberType.driver)){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非劳务人员类型,答题失败");
            }
            if(!member.getStatus().equals(Constants.ZERO)){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/TrainTimeServiceImpl.java
@@ -231,7 +231,7 @@
            if(newList == null || newList.size() ==0){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,录入有效数据为空!");
            }
            trainTimeMapper.insertBatchSomeColumn(newList);
            trainTimeMapper.insert(newList);
            return "导入成功";
        }catch (BusinessException e){
            throw e;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitReasonServiceImpl.java
@@ -47,6 +47,7 @@
        update.setEditor(userInfo.getId());
        update.setEditDate(new Date());
        update.setIsdeleted(Constants.ONE);
        update.setId(id);
        visitReasonMapper.updateById(update);
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/VisitsServiceImpl.java
@@ -170,7 +170,7 @@
                }
                visits.setWithUserList(visitsList);
            }
            this.createFk(visits,true);
            this.createFk(visits,true,Constants.ONE);
    }
    @Transactional(propagation = Propagation.NOT_SUPPORTED)
@@ -197,16 +197,15 @@
     */
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public Integer createFk(Visits visits,Boolean isERP) {
    public Integer createFk(Visits visits,Boolean isERP,Integer source) {
        isValidBaseParam(visits);
        //检查是否必须答题,并且符合答题要求
        ProblemLog problemLog = isValidProblemLog(visits);
        ProblemLog problemLog = isValidProblemLog(visits,source);
        //获取申请的海康访问门禁组信息
        getHkDeviceRoles(visits,isERP);
        //检验拜访人是否合法
        Member visitMember = isValideVisitedUser(visits.getReceptMemberId());
        if(Constants.equalsInteger(Constants.ZERO, visits.getIdcardType())&&visits.getIdcardNo().length()!=18
//            &&!IdcardUtil.isValidCard(visits.getIdcardNo())
        ){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,身份证号码有误,请核实后重试!");
        }
@@ -454,7 +453,7 @@
                approve.setObjId(visitId);
                approveList.add(approve);
            }
            approveMapper.insertBatchSomeColumn(approveList);
            approveMapper.insert(approveList);
        }
    }
@@ -481,7 +480,7 @@
                approve.setObjId(visitId);
                approveList.add(approve);
            }
            approveMapper.insertBatchSomeColumn(approveList);
            approveMapper.insert(approveList);
        }
    }
@@ -634,11 +633,11 @@
        }else if(visits.getType().equals(Constants.ONE) && StringUtils.isBlank(visits.getConstructionReason())){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,未填写施工事由!");
        }
        if(visits.getEndtime().getTime() < System.currentTimeMillis()){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,入厂时间必须大于当前时间!");//
        }
        if(visits.getEndtime().getTime() <= visits.getStarttime().getTime()){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,离厂时间必须大于入厂时间!");//
        }
        if(visits.getEndtime().getTime() <= System.currentTimeMillis()){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,入厂时间必须大于当前时间!");//
        }
        if(!DateUtil.getDateLong(visits.getEndtime()).equals(DateUtil.getDateLong(visits.getStarttime()))){
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,预约日期不可以跨天!");
@@ -722,7 +721,7 @@
                v.setSourceType(visits.getSourceType());
            }
            //批量插入数据
            visitsMapper.insertBatchSomeColumn(visits.getWithUserList());
            visitsMapper.insert(visits.getWithUserList());
        }
    }
@@ -891,7 +890,6 @@
            }
            //核查预约用户是否存在未签离的预约记录
//            isExsitNoOutVisisRecord(member);
            member.setFaceImg(visits.getFaceImg());
            member.setImgurl(StringUtils.isNotBlank(visits.getImgurl())?visits.getImgurl():null);
            member.setEditDate(visits.getCreateDate());
@@ -997,7 +995,16 @@
        return  member;
    }
    private ProblemLog isValidProblemLog(Visits visits) {
    /**
     * æ˜¯å¦éœ€è¦ç­”题
     * @param visits
     * @param source
     * @return
     */
    private ProblemLog isValidProblemLog(Visits visits,Integer source) {
        if(!Constants.equalsInteger(source,Constants.ZERO)){
            return null;
        }
        String required = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROBLEM_VISIT_REQUIRED).getCode();
        if(StringUtils.equals(required,Constants.ONE+"")&&visits.getSourceType()==Constants.ZERO&&!visits.getType().equals(Constants.TWO)){
            //如果必须答题,查找答题记录
@@ -1162,8 +1169,10 @@
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO);
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType()),Visits::getType,pageWrap.getModel().getType());
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getType())&&Constants.equalsInteger(pageWrap.getModel().getType(),Constants.TWO),Visits::getType,pageWrap.getModel().getType());
        queryWrapper.ne(Objects.nonNull(pageWrap.getModel().getType())&&!Constants.equalsInteger(pageWrap.getModel().getType(),Constants.TWO),Visits::getType,Constants.TWO);
        queryWrapper.eq(StringUtils.isNotBlank(pageWrap.getModel().getOpenid()),Visits::getOpenid,pageWrap.getModel().getOpenid());
        queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getCarNos()),Visits::getCarNos,pageWrap.getModel().getCarNos());
//        queryWrapper.eq(StringUtils.isBlank(pageWrap.getModel().getOpenid()),"1","2");
        queryWrapper.and(StringUtils.isNotBlank(pageWrap.getModel().getName()),ms->ms.like(Visits::getName,pageWrap.getModel().getName())
                .or().like(Visits::getPhone,pageWrap.getModel().getName()))
@@ -1172,6 +1181,7 @@
                .eq(Objects.nonNull(pageWrap.getModel().getStatus()),Visits::getStatus,pageWrap.getModel().getStatus());
        queryWrapper.isNull(Visits::getParentId);
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getMemberId()),Visits::getMemberId,pageWrap.getModel().getMemberId());
        queryWrapper.eq(Objects.nonNull(pageWrap.getModel().getReceptMemberId()),Visits::getReceptMemberId,pageWrap.getModel().getReceptMemberId());
        queryWrapper.orderByDesc(Visits::getCreateDate);
        IPage<Visits> result = visitsJoinMapper.selectJoinPage(page, Visits.class,queryWrapper);
@@ -1247,12 +1257,14 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到被访员工信息");
        }
        VisitDetailVO visitDetailVO = new VisitDetailVO();
        visitDetailVO.setCreateTime(visits.getCreateDate());
        visitDetailVO.setStatus(visits.getStatus());
        visitDetailVO.setCarNos(visits.getCarNos());
        visitDetailVO.setPhone(visits.getPhone());
        visitDetailVO.setVisitUserName(member.getName());
        visitDetailVO.setVisitReason(visits.getReason());
        visitDetailVO.setQrcode(visits.getQrcode());
        visitDetailVO.setIdcardType(visits.getIdcardType());
        visitDetailVO.setVisitTime(DateUtil.DateToStr(visits.getStarttime(),"yyyy-MM-dd HH:mm") + " è‡³ " + DateUtil.DateToStr(visits.getEndtime(),"yyyy-MM-dd HH:mm") );
        //被访人员部门
        Company company = companyMapper.selectById(member.getCompanyId());
@@ -1266,6 +1278,7 @@
        visitDetailVO.setConstructionReason(visits.getConstructionReason());
        visitDetailVO.setImgUrl(visits.getImgurl());
        visitDetailVO.setIdCardDecode(visits.getIdcardDecode());
        visitDetailVO.setFaceImg(visits.getFaceImg());
        visitDetailVO.setPrefix(systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() +
                systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode());
        if(StringUtils.isNotBlank(visits.getDoors())){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/erp/ErpSyncServiceImpl.java
@@ -7,8 +7,6 @@
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.config.DataSyncConfig;
import com.doumee.config.Jwt.JwtPayLoad;
import com.doumee.config.Jwt.JwtTokenUtil;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.erp.ErpConstants;
import com.doumee.core.erp.ErpTool;
@@ -153,7 +151,7 @@
            List<Company>  allList = companyMapper.selectList(new QueryWrapper<Company>().lambda().eq(Company::getType,Constants.ONE));
            dealCompanyChangeList(list,addList,updateList,delIds,allList);
            if(addList.size()>0){
                companyMapper.insertBatchSomeColumn(addList);
                companyMapper.insert(addList);
            }
            if(updateList.size()>0){
                for(Company c : updateList){
@@ -306,7 +304,7 @@
                    .eq(Member::getType, Constants.memberType.internal));
            dealUserChangeList(list,addList,updateList,delList,allList,param);
            if(addList.size()>0){
                memberMapper.insertBatchSomeColumn(addList);
                memberMapper.insert(addList);
               /* for (Member member:addList) {
                    dealRoleEmpower(member );
                }*/
@@ -474,31 +472,30 @@
        return  false;
    }
    @Override
    public AccessTokenResponse createERPToken(String accessKey, String accessSecret){
        AccessTokenResponse result = new AccessTokenResponse();
        try{
            String erpAccessKey = systemDictDataBiz.queryByCode(Constants.ERP_CONFIG,Constants.ERP_ACCESS_KEY).getCode();
            String erpAccessSecret = systemDictDataBiz.queryByCode(Constants.ERP_CONFIG,Constants.ERP_ACCESS_SECRET).getCode();
            if(!(accessKey.equals(erpAccessKey)&&erpAccessSecret.equals(accessSecret))){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"秘钥匹配失败");
            }
            JwtPayLoad payLoad = new JwtPayLoad(erpAccessKey+"-"+erpAccessSecret);
            String token = JwtTokenUtil.generateToken(payLoad);
            RedisUtil.addObject(redisTemplate,Constants.RedisKeys.ERP_TOKEN,token,Constants.RedisKeys.EXPIRE_TIME);
            result.setToken(token);
            result.setExpireTime(Constants.RedisKeys.EXPIRE_TIME);
            return result;
        }catch (BusinessException e){
            throw e;
        }finally {
            Map<String,String> param = new HashMap<>();
            param.put("accessKey",accessKey);
            param.put("accessSecret",accessSecret);
            saveInterfaceLog(param,"/visitBiz/accesstoken",JSONObject.toJSONString(result),Constants.ZERO);
        }
    }
//    @Override
//    public AccessTokenResponse createERPToken(String accessKey, String accessSecret){
//        AccessTokenResponse result = new AccessTokenResponse();
//        try{
//            String erpAccessKey = systemDictDataBiz.queryByCode(Constants.ERP_CONFIG,Constants.ERP_ACCESS_KEY).getCode();
//            String erpAccessSecret = systemDictDataBiz.queryByCode(Constants.ERP_CONFIG,Constants.ERP_ACCESS_SECRET).getCode();
//            if(!(accessKey.equals(erpAccessKey)&&erpAccessSecret.equals(accessSecret))){
//                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"秘钥匹配失败");
//
//            String token = JwtTokenUtil.generateToken(payLoad);
//            RedisUtil.addObject(redisTemplate,Constants.RedisKeys.ERP_TOKEN,token,Constants.RedisKeys.EXPIRE_TIME);
//            result.setToken(token);
//            result.setExpireTime(Constants.RedisKeys.EXPIRE_TIME);
//            return result;
//        }catch (BusinessException e){
//            throw e;
//        }finally {
//            Map<String,String> param = new HashMap<>();
//            param.put("accessKey",accessKey);
//            param.put("accessSecret",accessSecret);
//            saveInterfaceLog(param,"/visitBiz/accesstoken",JSONObject.toJSONString(result),Constants.ZERO);
//        }
//
//    }
    /**
     * é—¨ç¦ç»„全量接口
@@ -926,7 +923,7 @@
                }
            }
            if(memberCardList.size()>0){
                memberCardMapper.insertBatchSomeColumn(memberCardList);
                memberCardMapper.insert(memberCardList);
            }
        }
    }
@@ -1010,7 +1007,7 @@
                        parkBook.setRemark("待同步安防平台");
                        parkBookList.add(parkBook);
                    }
                    parkBookMapper.insertBatchSomeColumn(parkBookList);
                    parkBookMapper.insert(parkBookList);
                }else{
                    throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,停车库信息不存在,授权失败");
                }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDeviceServiceImpl.java
@@ -71,7 +71,7 @@
                }
            }
            if(addList.size()>0){
                deviceMapper.insertBatchSomeColumn(addList);
                deviceMapper.insert(addList);
            }
            if(editList.size()>0){
                for(Device d : editList){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncDoorsServiceImpl.java
@@ -88,7 +88,7 @@
                }
            }
            if(addList.size()>0){
                deviceMapper.insertBatchSomeColumn(addList);
                deviceMapper.insert(addList);
            }
            if(editList.size()>0){
                for(Device d : editList){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncParkServiceImpl.java
@@ -228,7 +228,7 @@
                }
            }
            if(addList.size()>0){
                parksMapper.insertBatchSomeColumn(addList);
                parksMapper.insert(addList);
            }
            if(editList.size()>0){
                for(Parks d : editList){
@@ -367,7 +367,7 @@
                    List<CarEvent> sublist = allHkList.subList(startIndex, endIndex);
                    if(sublist.size()>0){
                        carEventMapper.insertBatchSomeColumn(sublist);//插入新数据
                        carEventMapper.insert(sublist);//插入新数据
                    }
                    startIndex = endIndex;
                    endIndex += sublistSize;
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPrivilegeServiceImpl.java
@@ -96,7 +96,7 @@
                }
            }
            if(addList.size()>0){
                DeviceRoleMapper.insertBatchSomeColumn(addList);
                DeviceRoleMapper.insert(addList);
            }
            if(editList.size()>0){
                for(DeviceRole d : editList){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/HkSyncPushServiceImpl.java
@@ -99,7 +99,7 @@
            }
            if(list.size()>0){
                //插入门禁记录
                deviceEventMapper.insertBatchSomeColumn(list);
                deviceEventMapper.insert(list);
            }
            if(delRetentionLis.size()>0){
                //先删除原有的在场人员(内部人员)
@@ -109,7 +109,7 @@
            }
            if(retentionList.size()>0){
                //再插入最新的在厂人员
                retentionMapper.insertBatchSomeColumn(retentionList);
                retentionMapper.insert(retentionList);
            }
            log.error("【海康门禁事件推送】========成功=======");
        }catch (Exception e) {
@@ -289,7 +289,7 @@
            }
            if(list.size()>0){
                //插入门禁记录
                visitEventMapper.insertBatchSomeColumn(list);
                visitEventMapper.insert(list);
            }
            if(delRetentionLis.size()>0){
                //先删除原有的在场人员(普通访客)
@@ -299,7 +299,7 @@
            }
            if(retentionList.size()>0){
                //再插入最新的在厂人员
                retentionMapper.insertBatchSomeColumn(retentionList);
                retentionMapper.insert(retentionList);
            }
            log.error("【海康访客事件推送】========成功=======");
        }catch (Exception e){
@@ -461,7 +461,7 @@
            }
            if(list.size()>0){
                //插入门禁记录
                carEventMapper.insertBatchSomeColumn(list);
                carEventMapper.insert(list);
            }
            if(delRetentionList.size()>0){
                //先删除原有的在场人员(内部人员)
@@ -471,7 +471,7 @@
            }
            if(retentionList.size()>0){
                //再插入最新的在厂人员
                retentionMapper.insertBatchSomeColumn(retentionList);
                retentionMapper.insert(retentionList);
            }
            log.error("【海康停车场事件推送】========成功=======");
        }catch (Exception e){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/ferp/HkSyncOrgUserToHKServiceImpl.java
@@ -518,7 +518,7 @@
                        .eq(Empower::getMemberId,member.getId())
                        .eq(Empower::getIsdeleted,Constants.ZERO)
                        .in(Empower::getDeviceId,deviceIds) );
                empowerMapper.insertBatchSomeColumn(list);
                empowerMapper.insert(list);
            }
        }
    }
@@ -577,7 +577,7 @@
                    .eq(Empower::getMemberId,member.getId())
                    .eq(Empower::getIsdeleted,Constants.ZERO)
                    .in(Empower::getDeviceId,deviceIds) );
            empowerMapper.insertBatchSomeColumn(list);
            empowerMapper.insert(list);
        }
    }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncOrgUserFromHKServiceImpl.java
@@ -101,7 +101,7 @@
                throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未同步到任何组织信息!");
            }
            companyMapper.delete(new UpdateWrapper<>());//清空原有数据
            companyMapper.insertBatchSomeColumn(allHkList);//插入新数据
            companyMapper.insert(allHkList);//插入新数据
        }catch (BusinessException e){
            throw  e;
        }catch (Exception e){
@@ -190,7 +190,7 @@
                throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未同步到任何组织信息!");
            }
            memberMapper.delete(new UpdateWrapper<>());//清空原有数据
            memberMapper.insertBatchSomeColumn(allHkList);//插入新数据
            memberMapper.insert(allHkList);//插入新数据
        }catch (BusinessException e){
            throw  e;
        }catch (Exception e){
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVehicleFromHKServiceImpl.java
@@ -99,7 +99,7 @@
            }
            //清空原有的数据
            carsMapper.delete(new UpdateWrapper<>());
            carsMapper.insertBatchSomeColumn(allHkList);//插入新数据
            carsMapper.insert(allHkList);//插入新数据
        }catch (BusinessException e){
            throw  e;
        }
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/hksync/fhk/HkSyncVisitFromHKServiceImpl.java
@@ -108,7 +108,7 @@
                    .ge(Visits::getStarttime,start)
                    .eq(Visits::getType,Constants.ONE)
                    .le(Visits::getStarttime,end));
            visitsMapper.insertBatchSomeColumn(allHkList);//插入新数据
            visitsMapper.insert(allHkList);//插入新数据
        }catch (BusinessException e){
            throw  e;
        }
server/visits/openapi/src/main/java/com/doumee/api/web/ApiController.java
@@ -1,6 +1,5 @@
package com.doumee.api.web;
import com.doumee.config.Jwt.JwtTokenUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
@@ -26,10 +25,10 @@
        return request;
    }
    protected String getToken() {
        Object obj = this.getRequest().getAttribute(JwtTokenUtil.HEADER_KEY);
        return obj != null ? obj.toString() : null;
    }
//    protected String getToken() {
//        Object obj = this.getRequest().getAttribute(JwtTokenUtil.HEADER_KEY);
//        return obj != null ? obj.toString() : null;
//    }
}
server/visits/openapi/src/main/java/com/doumee/api/web/BizResourceController.java
@@ -39,7 +39,7 @@
@RestController
@RequestMapping("/visitbiz")
@Slf4j
public class BizResourceController extends ApiController {
public class BizResourceController{
    @Autowired
    private ERPSyncService erpSyncService;
@@ -51,7 +51,7 @@
    private VisitsService visitsService;
    @ApiOperation(value = "调用凭据获取接口", notes = "访客端提供,供ERP端调用,向ERP提供统接口调用凭证")
   /* @ApiOperation(value = "调用凭据获取接口", notes = "访客端提供,供ERP端调用,向ERP提供统接口调用凭证")
    @GetMapping("/accesstoken")
    @ApiImplicitParams({
            @ApiImplicitParam(paramType = "query", dataType = "String", name = "accessKey", value = "访问key,由访客端提供", required = true),
@@ -60,7 +60,7 @@
    public ApiResponse<AccessTokenResponse> accesstoken(@RequestParam  String accessKey, @RequestParam  String accessSecret) {
        ApiResponse response = ApiResponse.success(null);
        try {
            response.setData(erpSyncService.createERPToken(accessKey,accessSecret));
//            response.setData(erpSyncService.createERPToken(accessKey,accessSecret));
        }catch (BusinessException e){
            response = ApiResponse.failed(e.getCode(), e.getMessage());
        }catch (Exception e){
@@ -317,7 +317,7 @@
        map.put("FTP资源访问映射地址",
        systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode());
        return  ApiResponse.success(map);
    }
    }*/
server/visits/openapi/src/main/java/com/doumee/api/web/ErpResourceController.java
@@ -36,7 +36,7 @@
@RestController
@RequestMapping("/erp/resource")
@Slf4j
public class ErpResourceController extends ApiController {
public class ErpResourceController{
    @ApiOperation(value = "全量组织信息接口", notes = "ERP端提供,供访客端拉取全部组织信息,用于初始化及周期性数据核查")
    @PostMapping("/org/list")
    public ERPApiResponse<PageData<ErpOrgListResponse>> orgList (@RequestBody PageWrap<OrgListRequest> pageWrap) {