diff --git a/api/src/main/java/com/sv/netty/config/OrderTools.java b/api/src/main/java/com/sv/netty/config/OrderTools.java new file mode 100644 index 0000000..69be697 --- /dev/null +++ b/api/src/main/java/com/sv/netty/config/OrderTools.java @@ -0,0 +1,115 @@ +package com.sv.netty.config; + +public interface OrderTools { + String JS = "(function(global){var Timetables=function(option){this.el=document.querySelector(option.el);this.Timetables=option.timetables||[];this.week=option.week||[];this.merge=typeof option.merge===\"boolean\"?option.merge:true;this.TimetableType=option.timetableType||[];this.leftHandText=[];this.highlightWeek=option.highlightWeek||\"\";this.gridOnClick=typeof option.gridOnClick===\"function\"?option.gridOnClick:undefined;var styles=option.styles||{};this.leftHandWidth=styles.leftHandWidth||40;this.Gheight=styles.Gheight||48;this.defaultPalette=[\"#f05261\",\"#48a8e4\",\"#ffd061\",\"#52db9a\",\"#70d3e6\",\"#52db9a\",\"#3f51b5\",\"#f3d147\",\"#4adbc3\",\"#673ab7\",\"#f3db49\",\"#76bfcd\",\"#b495e1\",\"#ff9800\",\"#8bc34a\"];this.palette=(typeof styles.palette===\"boolean\"&&!styles.palett)?false:(styles.palette||[]).concat(this.defaultPalette);this._init()};Timetables.prototype={_init:function(option){var option=option||{};var style=option.styles||{};var gridOnClick=option.gridOnClick||this.gridOnClick;var merge=typeof option.merge===\"boolean\"?option.merge:this.merge;var highlightWeek=option.highlightWeek||this.highlightWeek;var leftHandText=this.leftHandText;var leftHandWidth=style.leftHandWidth||this.leftHandWidth;var Gheight=style.Gheight||this.Gheight;var palette;if(typeof style.palette===\"boolean\"&&!style.palette){palette=false}else{palette=style.palette?(style.palette||[]).concat(this.defaultPalette):this.palette}var Timetables=option.timetables||this.Timetables;var week=option.week||this.week;var TimetableType=JSON.parse(JSON.stringify(option.timetableType||this.TimetableType));var deepCopyTimetableType=option.timetableType||this.TimetableType;var TimetableTypeLength=TimetableType.length;Timetables.forEach(function(item,index){if(item.lengthweek.length-1){return}var courseItem=document.createElement(\"li\");courseItem.style.cssFloat=\"left\";courseItem.style.width=100/week.length+\"%\";courseItem.style.height=Gheight+\"px\";courseItem.style.boxSizing=\"border-box\";courseItem.style.position=\"relative\";if(merge&&listMerge[i][index].length>1){var mergeDom=document.createElement(\"span\");mergeDom.style.position=\"absolute\";mergeDom.style.zIndex=9;mergeDom.style.width=\"100%\";mergeDom.style.height=Gheight*listMerge[i][index].length+\"px\";mergeDom.style.left=0;mergeDom.style.top=0;if(palette){mergeDom.style.backgroundColor=palette[paletteIndex];mergeDom.style.color=\"#fff\";paletteIndex++;if(paletteIndex>palette.length){paletteIndex=0}}mergeDom.innerText=listMerge[i][index].name;mergeDom.className=\"course-hasContent\";courseItem.appendChild(mergeDom)}else{if(merge&&listMerge[i][index].length===0){courseItem.innerText=\"\"\n" + + " }else{if(item&&palette){courseItem.style.backgroundColor=palette[paletteIndex];courseItem.style.color=\"#fff\";paletteIndex++;if(paletteIndex>palette.length){paletteIndex=0}}else{if(item){courseItem.className=\"course-hasContent\"}}courseItem.innerText=item||\"\"}}courseItem.onclick=function(e){var allList=document.querySelectorAll(\".Courses-content ul li\").forEach(function(v,i){v.classList.remove(\"grid-active\")});this.className=\"grid-active\";var info={name:item,week:week[i],index:index+1,length:merge?listMerge[i][index].length:1};gridOnClick&&gridOnClick(info)};courseItems.appendChild(courseItem)});courseListContent.appendChild(courseItems)});courseWrapper.appendChild(courseListContent);courseWrapper.appendChild(leftHand);this.el.appendChild(courseWrapper);var courseItemDomHeight=(document.querySelector(\".stage_1 li\")||document.querySelector(\".stage_none li\")).offsetHeight;var coursesHeadDomHeight=document.querySelector(\".Courses-head\").offsetHeight;var leftHandTextDom=document.createElement(\"div\");leftHandTextDom.className=\"left-hand-TextDom\";leftHandTextDom.style.height=coursesHeadDomHeight+\"px\";leftHandTextDom.style.boxSizing=\"border-box\";leftHandText.forEach(function(item){var leftHandTextItem=document.createElement(\"div\");leftHandTextItem.innerText=item;leftHandTextDom.appendChild(leftHandTextItem)});leftHand.appendChild(leftHandTextDom);deepCopyTimetableType.forEach(function(item,index){var handItem=document.createElement(\"div\");handItem.style.width=\"100%\";handItem.style.height=courseItemDomHeight*item[1]+\"px\";handItem.style.boxSizing=\"border-box\";if(typeof item[0]===\"object\"){for(var v in item[0]){var handItemInner=document.createElement(\"p\");handItemInner.innerText=item[0][v];handItemInner.style.margin=\"0px\";handItemInner.className=\"left-hand-\"+v;handItem.appendChild(handItemInner)}}else{handItem.innerText=item[0]||\"\"}handItem.className=\"left-hand-\"+(index+1);leftHand.appendChild(handItem)})},setOption:function(option){(option||{}).setNewOption=true;this._init(option)}};if(typeof module!==\"undefined\"&&module.exports){module.exports=Timetables}if(typeof define===\"function\"){define(function(){return Timetables})}global.Timetables=Timetables})(this);"; + + String STYLE = "#coursesTable {\n" + + " padding: 15px 10px;\n" + + "}\n" + + "\n" + + ".Courses-head {\n" + + " background-color: #edffff;\n" + + "}\n" + + "\n" + + ".Courses-head > div {\n" + + " text-align: center;\n" + + " font-size: 14px;\n" + + " line-height: 28px;\n" + + "}\n" + + "\n" + + ".left-hand-TextDom, .Courses-head {\n" + + " background-color: #f2f6f7;\n" + + "}\n" + + "\n" + + ".Courses-leftHand {\n" + + " background-color: #f2f6f7;\n" + + " font-size: 12px;\n" + + "}\n" + + "\n" + + ".Courses-leftHand .left-hand-index {\n" + + " color: #9c9c9c;\n" + + " margin-bottom: 4px !important;\n" + + "}\n" + + "\n" + + ".Courses-leftHand .left-hand-name {\n" + + " color: #666;\n" + + "}\n" + + "\n" + + ".Courses-leftHand p {\n" + + " text-align: center;\n" + + " font-weight: 900;\n" + + "}\n" + + "\n" + + ".Courses-head > div {\n" + + " border-left: none !important;\n" + + "}\n" + + "\n" + + ".Courses-leftHand > div {\n" + + " padding-top: 5px;\n" + + " border-bottom: 1px dashed rgb(219, 219, 219);\n" + + "}\n" + + "\n" + + ".Courses-leftHand > div:last-child {\n" + + " border-bottom: none !important;\n" + + "}\n" + + "\n" + + ".left-hand-TextDom, .Courses-head {\n" + + " border-bottom: 1px solid rgba(0, 0, 0, 0.1) !important;\n" + + "}\n" + + "\n" + + ".Courses-content > ul {\n" + + " border-bottom: 1px dashed rgb(219, 219, 219);\n" + + " box-sizing: border-box;\n" + + "}\n" + + "\n" + + ".Courses-content > ul:last-child {\n" + + " border-bottom: none !important;\n" + + "}\n" + + "\n" + + ".Courses-content li {\n" + + " text-align: center;\n" + + " color: #666666;\n" + + " font-size: 14px;\n" + + " line-height: 18px;\n" + + "}\n" + + "\n" + + ".Courses-content li span {\n" + + " padding: 6px 2px;\n" + + " box-sizing: border-box;\n" + + " line-height: 18px;\n" + + " border-radius: 4px;\n" + + " white-space: normal;\n" + + " word-break: break-all;\n" + + " cursor: pointer;\n" + + "}\n" + + "\n" + + ".grid-active {\n" + + " z-index: 9999;\n" + + "}\n" + + "\n" + + ".grid-active span {\n" + + " box-shadow: 0px 2px 4px rgba(0, 0, 0, 0.2);\n" + + "}\n" + + "#qrcode {\n" + + " float: right;\n" + + "}\n" + + "#venue span {\n" + + " float: right;\n" + + " font-size: 20px;\n" + + " margin-right: 40%;\n" + + "}\n" + + "body {\n" + + " background-size: 100%;\n" + + "}"; + + String LOGO = "https://yingdd.oss-cn-hangzhou.aliyuncs.com/image/1534557885564.png"; + + String COMMON_TYPE = "[" + + "[{index: '1', name: '06:00'}, 1]," + + "[{index: '2', name: '12:00'}, 1]," + + "[{index: '3', name: '18:00'}, 1]" + + "]"; + + String BG ="http://smartvenue.oss-cn-beijing.aliyuncs.com/data/bg20210507.jpg"; +} diff --git a/api/src/main/java/com/sv/netty/controller/AppVenueLessonController.java b/api/src/main/java/com/sv/netty/controller/AppVenueLessonController.java index 85aa97e..293497a 100644 --- a/api/src/main/java/com/sv/netty/controller/AppVenueLessonController.java +++ b/api/src/main/java/com/sv/netty/controller/AppVenueLessonController.java @@ -1,11 +1,12 @@ package com.sv.netty.controller; +import com.dw.ccm.wechat.base.utils.JsonUtils; import com.sv.dto.app.VenueItem; import com.sv.dto.app.VenueLessonStatus; import com.sv.entity.Venue; +import com.sv.netty.config.OrderTools; import com.sv.service.api.VenueLessonService; import com.sv.service.oms.VenueService; -import org.apache.http.client.fluent.Request; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -13,13 +14,10 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.InputStream; import java.time.LocalDate; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; @RestController public class AppVenueLessonController { @@ -51,80 +49,129 @@ public class AppVenueLessonController { LocalDate now = LocalDate.now(); date = now.toString(); } + List th = fetchDays(LocalDate.parse(date)); + Venue venue = venueService.getVenue(id); + List lessonTypes = venueLessonService.getLessonTypes(id); List lessonOrder = venueLessonService.getLessonOrder(id); - String returnHtml = concatResult(lessonOrder); + String returnHtml = concatResult(lessonOrder,th,lessonTypes,venue); return returnHtml; } - private String concatResult(List lessonOrder) { + private List fetchDays(LocalDate date) { + List list = new ArrayList<>(); + for (int i = 0; i < 4; i++) { + list.add(date.toString()); + date = date.plusDays(1); + } + list.add(date.toString()); + return list; + } + + private String concatResult(List lessonOrder, List th, List lessonTypes, Venue venue) { StringBuffer sb = new StringBuffer(); sb.append("" + ""); - sb.append(""); + sb.append(""); + sb.append(""); sb.append(""); - sb.append(""); - sb.append("

【" + lessonOrder.get(0).getVenueName() + "】预订信息" + "

"); - sb.append(""); - sb.append("" + -// "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - ""); -// boolean firstLine = true; - for (VenueLessonStatus s : lessonOrder){ - sb.append(""); -// if (firstLine){ -// sb.append( ""); -// firstLine = false; -// } - sb.append( ""); - sb.append( ""); - sb.append( ""); - sb.append( ""); - sb.append( ""); - sb.append( ""); - sb.append( ""); - String note = s.getNote().replaceAll("
","").replaceAll("
","").replaceAll("

", "").replaceAll("

", "
"); - sb.append( ""); - sb.append(""); + sb.append(""); + // 显示LOGO && 场馆名 && 二维码 + sb.append("
" + + "" + + "
" + + "
" + + "" + + venue.getName() + + "预定信息
"); + sb.append("
"); + sb.append(""); + return sb.toString(); + } + + private String ForEachCourse(List collect) { + StringBuffer sb = new StringBuffer(); + for (VenueLessonStatus v : collect){ + sb.append("'" + v.getLessonName() + "(" + v.getStartTime().substring(0,5) + "-" + v.getEndTime().substring(0,5) + ")"); + sb.append("【总计:" + v.getNum() + "," + (v.getLimitNum() == 0 ? "已约满】" : "剩余:" + v.getLimitNum()) + "】"); + sb.append("@预订用户:(" + v.getOrderUsers() + ")'"); + } + return sb.toString(); + } + + private String getEmptyStr(int i) { + StringBuffer sb = new StringBuffer(); + for (int j = 1 ; j < i; j ++){ + sb.append("'',"); + } + sb.append("''"); return sb.toString(); } diff --git a/service/src/main/java/com/sv/mapper/VenueLessonMapper.java b/service/src/main/java/com/sv/mapper/VenueLessonMapper.java index e359c8c..de49709 100644 --- a/service/src/main/java/com/sv/mapper/VenueLessonMapper.java +++ b/service/src/main/java/com/sv/mapper/VenueLessonMapper.java @@ -134,6 +134,13 @@ public interface VenueLessonMapper { */ void updateSaleNumBy(@Param("num")Integer num,@Param("lessonId") Integer lessonId); + /** + * APP获取当前预订时间列 + * @param venueId + * @return + */ + List getLessonTypes(@Param("venueId") Integer venueId); + /** * APP获取当前预订情况 * @param venueId diff --git a/service/src/main/java/com/sv/service/api/VenueLessonService.java b/service/src/main/java/com/sv/service/api/VenueLessonService.java index fad13c9..9476242 100644 --- a/service/src/main/java/com/sv/service/api/VenueLessonService.java +++ b/service/src/main/java/com/sv/service/api/VenueLessonService.java @@ -323,6 +323,10 @@ public class VenueLessonService extends BaseServiceImpl { public void updateSaleNum(Integer num,Integer lessonId){ venueLessonMapper.updateSaleNumBy(num,lessonId); } + @Transactional + public List getLessonTypes(Integer venueId) { + return venueLessonMapper.getLessonTypes(venueId); + } @Transactional public List getLessonOrder(Integer venueId){ diff --git a/service/src/main/java/com/sv/service/oms/VenueService.java b/service/src/main/java/com/sv/service/oms/VenueService.java index 6596396..da2e289 100644 --- a/service/src/main/java/com/sv/service/oms/VenueService.java +++ b/service/src/main/java/com/sv/service/oms/VenueService.java @@ -213,5 +213,10 @@ public class VenueService extends BaseServiceImpl { public void clearNumber(Integer id) { venueMapper.updateNumber(0, id); } + + @Transactional + public Venue getVenue(Integer id){ + return venueMapper.findById(id); + } } diff --git a/service/src/main/resources/mybatis/mapper/sv/VenueLessonMapper.xml b/service/src/main/resources/mybatis/mapper/sv/VenueLessonMapper.xml index df17f04..dab0105 100644 --- a/service/src/main/resources/mybatis/mapper/sv/VenueLessonMapper.xml +++ b/service/src/main/resources/mybatis/mapper/sv/VenueLessonMapper.xml @@ -604,7 +604,15 @@ - + + +
场馆课程日期时间总量预订剩余预约用户说明
"+ s.getVenueName() + ""+ s.getLessonName() + ""+ s.getSearchDate() + ""+ s.getStartTime() + "-" + s.getEndTime() + ""+ s.getNum() + ""+ s.getSaleNum() + ""+ s.getLimitNum() + ""+ s.getOrderUsers() + ""+ note + "