按天复制课程

This commit is contained in:
limqhz
2021-03-28 23:53:10 +08:00
parent c04a284369
commit 8ae8ef1c90
8 changed files with 209 additions and 10 deletions

View File

@@ -20,3 +20,10 @@ export function remove(ids) {
export function save(params) {
return http.post('/venue/lesson', params)
}
/**
* 复制课程
*/
export function copy(params) {
return http.post('/venue/lesson/copy', params)
}

View File

@@ -84,6 +84,7 @@
<el-button size="small" type="text" @click="handleEdit(scope.row.id)">编辑</el-button>
<el-button size="small" type="text" v-if="scope.row.saleNum > 0" @click="handleInfo(scope.row.id)">预约记录</el-button>
<el-button size="small" type="text" @click="showimg(scope.row.id)">复制</el-button>
<el-button size="small" type="text" @click="showCopyByDay(scope.row.id)">按天复制</el-button>
<el-button size="small" v-if="scope.row.saleNum <= 0" type="text" class="danger" @click="handleDelete(scope.row)">删除</el-button>
</template>
</el-table-column>
@@ -124,6 +125,29 @@
<el-button @click="dialogFormVisible = false"> </el-button>
</div>
</el-dialog>
<el-dialog title="复制该课程所在日期的所有课程到目标日期范围" :visible.sync="dialogFormByDay">
<div class="dialog_div">
<span>选择复制起期</span>
<el-date-picker
class="filter-item" v-model="copyParam.leftDate" type="date" placeholder="选择复制起期"
:picker-options="startDatePicker"
value-format="yyyy-MM-dd" format="yyyy-MM-dd">
</el-date-picker>
</div>
<div class="dialog_div">
<span>选择复制止期</span>
<el-date-picker
class="filter-item" v-model="copyParam.rightDate" type="date" placeholder="选择复制止期"
:picker-options="endDatePicker"
value-format="yyyy-MM-dd" format="yyyy-MM-dd">
</el-date-picker>
</div>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="copyLessonByDay">保存</el-button>
<el-button @click="dialogFormByDay = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
@@ -137,7 +161,7 @@
<script>
import { findByVenueType } from '@/api//coach'
import { remove, find, save } from '@/api//venue/lesson'
import { remove, find, save, copy } from '@/api//venue/lesson'
import waves from '@/directive/waves.js' // 水波纹指令
import Pagination from '@/components/Pagination'
import moment from 'moment'
@@ -152,6 +176,7 @@ export default {
return {
coaches: [],
dialogFormVisible: false,
dialogFormByDay: false,
params: {
search_eq_v$venueId: undefined,
search_eq_v$date: undefined,
@@ -162,11 +187,18 @@ export default {
leftTime: undefined,
rightTime: undefined
},
copyParam: {
lessonId: undefined,
leftDate: '',
rightDate: ''
},
pickerOptions: {
disabledDate(time) {
return Date.now() > time
disabledDate(date) {
return Date.now() > date
}
},
startDatePicker: this.beginDate(),
endDatePicker: this.processDate(),
time: undefined,
times: '',
data: '',
@@ -223,9 +255,44 @@ export default {
this.dialogFormVisible = true
this.findById(id)
},
/**
* 按天复制
*/
showCopyByDay(id) {
this.copyParam.lessonId = id
this.dialogFormByDay = true
},
onDateChange(value) {
},
beginDate() {
const self = this
return {
disabledDate(time) {
if (self.copyParam.rightDate && time.getTime() > Date.now()) {
return new Date(self.form.rightDate).getTime() < time.getTime()
} else {
return time.getTime() < Date.now()
}
}
}
},
processDate() {
const self = this
return {
disabledDate(time) {
if (self.copyParam.leftDate) {
return new Date(self.copyParam.leftDate).getTime() > time.getTime()
} else {
return time.getTime() < Date.now()
}
}
}
},
onTimeChange(value) {
if (value) {
this.form.startTime = value[0] + ':00.000'
@@ -265,6 +332,31 @@ export default {
this.dialogFormVisible = false
},
/**
* 保存复制的课程
*/
copyLessonByDay() {
if (this.copyParam.leftDate === '' || this.copyParam.leftDate === null) {
this.$message({
message: '请选择起始日期!',
type: 'warning'
})
return
}
if (this.copyParam.rightDate === '' || this.copyParam.rightDate === null) {
this.$message({
message: '请选择结束日期!',
type: 'warning'
})
return
}
copy(this.copyParam).then(response => {
this.$refs.pagination.handleSearch()
}).finally(() => {
this.dialogFormByDay = false
})
},
/**
* 查询复制课程信息
*/

View File

@@ -1,18 +1,22 @@
package com.sv.oms.controller;
import com.sv.dto.oms.VenueLessonOmsDTO;
import com.sv.service.api.util.DateUtilCard;
import com.ydd.framework.core.common.Pagination;
import com.ydd.framework.core.common.dto.ResponseDTO;
import com.ydd.oms.controller.OmsController;
import com.sv.entity.VenueLesson;
import com.sv.service.oms.VenueLessonService;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
/**
* Controller - 场馆课程
@@ -51,7 +55,7 @@ public class VenueLessonController extends OmsController {
*/
@RequestMapping(value = "/venue/lesson", method = RequestMethod.POST)
public ResponseDTO save(VenueLessonOmsDTO venueLesson) throws ParseException {
venueLessonService.save(venueLesson);
venueLessonService. save(venueLesson);
return ResponseDTO.ok("保存成功");
}
@@ -64,4 +68,16 @@ public class VenueLessonController extends OmsController {
return ResponseDTO.ok("删除成功");
}
/**
* 复制课程
*/
@RequestMapping(value = "/venue/lesson/copy", method = RequestMethod.POST)
public ResponseDTO copy(@RequestParam("lessonId") Integer lessonId,@RequestParam("leftDate") String leftDate,@RequestParam("rightDate") String rightDate) throws ParseException {
DateUtils.parseDate(leftDate,"YYYY-MM-DD");
Date start = DateUtilCard.getDateFromStr(leftDate);
Date end = DateUtilCard.getDateFromStr(rightDate);
venueLessonService.copy(lessonId,start,end);
return ResponseDTO.ok("保存成功");
}
}

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF8"?>
<configuration>
<jmxConfigurator />
<property name="LOG_HOME" value="/home/logs/oms_log"/>
<property name="LOG_HOME" value="~/home/logs/oms_log"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">

View File

@@ -8,6 +8,7 @@ import com.sv.entity.MemberLessonTicket;
import com.sv.entity.VenueLesson;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
@@ -140,4 +141,13 @@ public interface VenueLessonMapper {
* @return
*/
List<VenueLessonStatus> getLessonStatus(@Param("venueId") Integer venueId);
/**
* 查询课程当天所有的信息
* @param venueId
* @return
*/
List<VenueLesson> getCopyLesson(@Param("venueId") Integer venueId,@Param("date") Date date);
void copyImg(@Param("id") Integer id,@Param("nId") Integer nId);
}

View File

@@ -2,13 +2,17 @@ package com.sv.service.api.util;
import com.enums.VipTypeEnum;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalTime;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class DateUtilCard {
private final static SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd");
public static Date getYear(Date date){
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
@@ -131,4 +135,25 @@ public class DateUtilCard {
}
return endTime;
}
public static Date getDateFromStr(String date){
try {
Date res = sdf.parse(date);
return res;
} catch (ParseException e) {
return null;
}
}
public static String getStrFromDate(Date date){
return sdf.format(date);
}
public static Date addOneDay(Date date){
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(calendar.DATE,1); //把日期往后增加一天,整数 往后推,负数往前移动
return calendar.getTime(); //这个时间就是日期往后推一天的结果
}
}

View File

@@ -5,11 +5,13 @@ import com.github.pagehelper.PageHelper;
import com.sv.dto.oms.VenueLessonOmsDTO;
import com.sv.entity.Platform;
import com.sv.entity.VenueLesson;
import com.sv.entity.VenueLessonTag;
import com.sv.entity.VenueLessonTicket;
import com.sv.exception.oms.OmsException;
import com.sv.mapper.VenueLessonMapper;
import com.sv.mapper.VenueLessonTagMapper;
import com.sv.mapper.VenueLessonTicketMapper;
import com.sv.service.api.util.DateUtilCard;
import com.sv.service.common.OSSClientUtil;
import com.sv.service.common.PlatformService;
import com.sv.service.common.RedisLock;
@@ -31,10 +33,8 @@ import redis.clients.jedis.Jedis;
import javax.annotation.Resource;
import java.io.InputStream;
import java.time.format.DateTimeFormatter;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.function.Consumer;
import static com.sv.entity.Constants.LESSON_TICKET_LOCK_KEY;
@@ -300,5 +300,30 @@ public class VenueLessonService extends BaseServiceImpl {
return venueLessonMapper.countByCoachId(id);
}
/**
* copy课程
* @param lessonId
* @param start
* @param end
*/
@Transactional(readOnly = false)
public void copy(Integer lessonId, Date start, Date end) {
VenueLesson byId = venueLessonMapper.findById(lessonId);
List<VenueLesson> copyLesson = venueLessonMapper.getCopyLesson(byId.getVenueId(), byId.getDate());
if (copyLesson != null && copyLesson.size() > 0){
while (!start.after(end)){
for (VenueLesson x : copyLesson) {
Integer oldId = x.getId();
x.setId(null);
x.setModifiedId(999);
x.setModifiedTime(new Date());
x.setDate(start);
venueLessonMapper.insert(x);
venueLessonMapper.copyImg(oldId, x.getId());
}
start = DateUtilCard.addOneDay(start);
}
}
}
}

View File

@@ -622,4 +622,28 @@
and a.venue_id = #{venueId}
</select>
<!-- api 查询需要copy的信息 -->
<select id="getCopyLesson" resultMap="VenueLessonMap">
SELECT
*
FROM
sv_venue_lesson
WHERE
date = #{date}
AND venue_id = #{venueId}
AND deleted = 0
</select>
<!-- copy -->
<update id="copyImg">
INSERT INTO sv_venue_lesson_image
(lesson_id,url,platform_id,created_id,modified_id,created_time,modified_time,deleted)
(
SELECT
#{nId},url,platform_id,created_id,'999',created_time,modified_time,deleted
FROM sv_venue_lesson_image where sv_venue_lesson_image.deleted = 0
AND sv_venue_lesson_image.lesson_id = #{id}
)
</update>
</mapper>