h5_meeting/api/index.js
@@ -5,7 +5,7 @@ // export const meetScreenData = (data) => { return http({ url: 'cloudService/web/meeting/meetScreenData', url: '/meetingAdmin/cloudService/web/meeting/meetScreenData', method: 'get', data }) h5_meeting/manifest.json
@@ -1,5 +1,5 @@ { "name" : "h5_meeting", "name" : "安泰会议室", "appid" : "__UNI__EF8BAA7", "description" : "", "versionName" : "1.0.0", @@ -47,6 +47,38 @@ /* SDK配置 */ "sdkConfigs" : { "ad" : {} }, "icons" : { "android" : { "xxhdpi" : "unpackage/res/icons/144x144.png", "xhdpi" : "unpackage/res/icons/96x96.png", "hdpi" : "unpackage/res/icons/72x72.png", "xxxhdpi" : "unpackage/res/icons/192x192.png" }, "ios" : { "appstore" : "unpackage/res/icons/1024x1024.png", "ipad" : { "app" : "unpackage/res/icons/76x76.png", "app@2x" : "unpackage/res/icons/152x152.png", "notification" : "unpackage/res/icons/20x20.png", "notification@2x" : "unpackage/res/icons/40x40.png", "proapp@2x" : "unpackage/res/icons/167x167.png", "settings" : "unpackage/res/icons/29x29.png", "settings@2x" : "unpackage/res/icons/58x58.png", "spotlight" : "unpackage/res/icons/40x40.png", "spotlight@2x" : "unpackage/res/icons/80x80.png" }, "iphone" : { "app@2x" : "unpackage/res/icons/120x120.png", "app@3x" : "unpackage/res/icons/180x180.png", "notification@2x" : "unpackage/res/icons/40x40.png", "notification@3x" : "unpackage/res/icons/60x60.png", "settings@2x" : "unpackage/res/icons/58x58.png", "settings@3x" : "unpackage/res/icons/87x87.png", "spotlight@2x" : "unpackage/res/icons/80x80.png", "spotlight@3x" : "unpackage/res/icons/120x120.png" } } } } }, h5_meeting/pages/index/config.vue
@@ -11,14 +11,14 @@ <view class="item"> <view class="title">接口地址</view> <view class="line"> <input type="text" v-model="param.baseUrl" /> <input type="text" placeholder="http://10.50.250.178:8088/gateway_interface" v-model="param.baseUrl" /> <image src="../../static/icon/right.svg" class="icon"></image> </view> </view> <view class="item"> <view class="title">接口调用间隔(秒)</view> <view class="line"> <input type="text" v-model="param.time" /> <input type="text" placeholder="60" v-model="param.time" /> <image src="../../static/icon/right.svg" class="icon"></image> </view> </view> h5_meeting/unpackage/res/icons/1024x1024.png
h5_meeting/unpackage/res/icons/120x120.png
h5_meeting/unpackage/res/icons/144x144.png
h5_meeting/unpackage/res/icons/152x152.png
h5_meeting/unpackage/res/icons/167x167.png
h5_meeting/unpackage/res/icons/180x180.png
h5_meeting/unpackage/res/icons/192x192.png
h5_meeting/unpackage/res/icons/20x20.png
h5_meeting/unpackage/res/icons/29x29.png
h5_meeting/unpackage/res/icons/40x40.png
h5_meeting/unpackage/res/icons/58x58.png
h5_meeting/unpackage/res/icons/60x60.png
h5_meeting/unpackage/res/icons/72x72.png
h5_meeting/unpackage/res/icons/76x76.png
h5_meeting/unpackage/res/icons/80x80.png
h5_meeting/unpackage/res/icons/87x87.png
h5_meeting/unpackage/res/icons/96x96.png
h5_meeting/utils/config.js
@@ -1,6 +1,6 @@ // export const baseUrl = 'meetingAdmin/' export const baseUrl = 'http://10.50.250.178:8088/gateway_interface/meetingAdmin/' export const baseUrl = 'http://10.50.250.178:8088/gateway_interface/' export const uploadAvatar = `${baseUrl}visitsAdmin/cloudService/web/public/uploadFtp.do` export const uploadUrl = `${baseUrl}visitsAdmin/cloudService/public/uploadBatch` server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/BookingsServiceImpl.java
@@ -464,7 +464,7 @@ queryWrapper.selectAs(Rooms::getName, Bookings::getRoomName); queryWrapper.selectAs(SystemUser::getRealname, Bookings::getRealName); queryWrapper.selectAs(Company::getName, Bookings::getDepartmentName); queryWrapper.select(" CASE WHEN t.START_TIME > now() AND t.`STATUS` = 0 THEN 1 WHEN ( (t.END_TIME < now() AND t.`STATUS` = 0 ) or t.`STATUS` = 2 ) THEN 3 WHEN t.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus "); queryWrapper.select(" CASE WHEN t.START_TIME_REAL IS NULL AND t.`STATUS` = 0 THEN 1 WHEN ( ( t.END_TIME < now() AND t.`STATUS` = 0 ) or t.`STATUS` = 2 ) THEN 3 WHEN t.`STATUS` = 1 THEN 5 ELSE 2 END meetingStatus "); queryWrapper.leftJoin(Rooms.class, Rooms::getId, Bookings::getRoomId); queryWrapper.leftJoin(SystemUser.class, SystemUser::getId, Bookings::getCreator); queryWrapper.leftJoin(Company.class,Company::getId,SystemUser::getCompanyId); @@ -476,7 +476,6 @@ 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, Company::getId, pageWrap.getModel().getDepartmentId()); queryWrapper.apply(Objects.nonNull(pageWrap.getModel().getMeetingStatus()) &&Constants.equalsInteger(pageWrap.getModel().getMeetingStatus(),Constants.ONE), @@ -1124,9 +1123,32 @@ if(DateUtil.afterMinutesDate(bookings.getStartTime(),-beforeMinutes).getTime()>System.currentTimeMillis()){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"会议仅可以提前"+beforeMinutes+"分钟开始"); } //查询是否存在其他未开始的会议 防止颗粒度与提前开始的问题 if(bookingsMapper.selectCount(new QueryWrapper<Bookings>() .lambda() .apply(" now() < START_TIME and END_TIME <= '" + DateUtil.DateToStr(bookings.getStartTime(),"yyyy-MM-dd HH:mm:ss") +"'" ) .isNull(Bookings::getStartTimeReal) .isNull(Bookings::getDoneDate) .eq(Bookings::getStatus,Constants.ZERO) .eq(Bookings::getRoomId,bookings.getRoomId()) .ne(Bookings::getId,bookings.getId()) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"存在未开启会议,无法进行开始会议"); }; if(bookingsMapper.selectCount(new QueryWrapper<Bookings>() .lambda() .apply(" END_TIME > now() and START_TIME < now() ") .isNotNull(Bookings::getStartTimeReal) .isNull(Bookings::getDoneDate) .eq(Bookings::getStatus,Constants.ZERO) .eq(Bookings::getRoomId,bookings.getRoomId()) )>Constants.ZERO){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前开启时间与其他会议存在冲突,无法进行开始会议"); }; }else{ if(bookings.getStartTime().getTime() > System.currentTimeMillis()){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未到会议申请开始时间,无法进行开启"); throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未到会议申请开始时间,无法进行开始"); } } bookings.setStartTimeReal(new Date()); @@ -1138,7 +1160,8 @@ .lambda() .set(Bookings::getStatus,Constants.TWO) .set(Bookings::getDoneDate,new Date()) .apply(" END_TIME < now() ") .set(Bookings::getDoneInfo,"其他会议开始,自动关闭") .apply(" ( END_TIME < now() or ( END_TIME > now() and START_TIME < now() and START_TIME_REAL is null ) )") .eq(Bookings::getStatus,Constants.ZERO) .eq(Bookings::getRoomId,bookings.getRoomId()) ); server/meeting/meeting_service/src/main/java/com/doumee/service/business/impl/RoomsServiceImpl.java
@@ -106,9 +106,12 @@ roomsMapper.insert(rooms); if(!Constants.equalsInteger(rooms.getFileType(),Constants.TWO)){ List<Multifile> multifileList = rooms.getMultifileList(); if(CollectionUtils.isEmpty(multifileList)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请上传附件信息"); } for (Multifile multifile:multifileList) { if(Objects.isNull(multifile) || StringUtils.isBlank(multifile.getFileurl())){ || StringUtils.isBlank(multifile.getFileurl())){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"附件参数错误"); } multifile.setCreateDate(new Date()); @@ -397,6 +400,9 @@ if(!Constants.equalsInteger(rooms.getFileType(),Constants.TWO)){ List<Multifile> multifileList = rooms.getMultifileList(); if(CollectionUtils.isEmpty(multifileList)){ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请上传附件信息"); } for (Multifile multifile:multifileList) { if(Objects.isNull(multifile) || StringUtils.isBlank(multifile.getFileurl())){