学习培训订单及明细

This commit is contained in:
zhangheng 2023-11-27 15:22:18 +08:00
parent 3c99d157f6
commit 3e098ff77d
19 changed files with 2318 additions and 0 deletions

View File

@ -0,0 +1,101 @@
package com.xinelu.manage.controller.trainingorder;
import com.xinelu.common.annotation.Log;
import com.xinelu.common.core.controller.BaseController;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.core.page.TableDataInfo;
import com.xinelu.common.enums.BusinessType;
import com.xinelu.manage.domain.trainingorder.TrainingOrder;
import com.xinelu.manage.domain.trainingorderitemdirectory.TrainingOrderItemDirectory;
import com.xinelu.manage.service.trainingorder.ITrainingOrderService;
import com.xinelu.manage.vo.trainingorder.TrainingOrderVO;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.Objects;
/**
* 学习培训订单Controller
*
* @author xinyilu
* @date 2023-04-20
*/
@RestController
@RequestMapping("/system/trainingOrder")
public class TrainingOrderController extends BaseController {
@Resource
private ITrainingOrderService trainingOrderService;
/**
* 查询学习培训订单列表
*/
@PreAuthorize("@ss.hasPermi('system:trainingOrder:list')")
@GetMapping("/list")
public TableDataInfo list(TrainingOrderVO trainingOrder) {
startPage();
List<TrainingOrderVO> list = trainingOrderService.selectTrainingOrderList(trainingOrder);
return getDataTable(list);
}
/**
* 获取学习培训订单详细信息
*/
@PreAuthorize("@ss.hasPermi('system:trainingOrder:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(trainingOrderService.selectTrainingOrderById(id));
}
/**
* 新增学习培训订单
*/
@PreAuthorize("@ss.hasPermi('system:trainingOrder:add')")
@Log(title = "学习培训订单", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody TrainingOrder trainingOrder) {
return toAjax(trainingOrderService.insertTrainingOrder(trainingOrder));
}
/**
* 修改学习培训订单
*/
@PreAuthorize("@ss.hasPermi('system:trainingOrder:edit')")
@Log(title = "学习培训订单", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
public AjaxResult edit(@RequestBody TrainingOrder trainingOrder) {
return toAjax(trainingOrderService.updateTrainingOrder(trainingOrder));
}
/**
* 删除学习培训订单
*/
@PreAuthorize("@ss.hasPermi('system:trainingOrder:remove')")
@Log(title = "学习培训订单", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public AjaxResult remove(@PathVariable Long[] ids) {
return toAjax(trainingOrderService.deleteTrainingOrderByIds(ids));
}
/**
* 退款信息查询
*/
@GetMapping("/refundInformation")
public AjaxResult selectRefundInformation(Long id) {
if (Objects.isNull(id)) {
return AjaxResult.error("请选择需要退款的信息!");
}
return trainingOrderService.selectRefundInformation(id);
}
/**
* 查询学习培训订单明细章节记录视频学习和直播课程的章节信息列表
*/
@GetMapping("/orderItemDirectory")
public TableDataInfo selectTrainingOrderItemDirectoryList(TrainingOrderItemDirectory trainingOrderItemDirectory) {
startPage();
List<TrainingOrderItemDirectory> list = trainingOrderService.selectTrainingOrderItemDirectoryList(trainingOrderItemDirectory);
return getDataTable(list);
}
}

View File

@ -0,0 +1,134 @@
package com.xinelu.manage.domain.trainingorder;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 学习培训订单主对象 training_order
*
* @author xinyilu
* @date 2023-04-20
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "学习培训订单主对象", description = "training_order")
public class TrainingOrder extends BaseDomain implements Serializable {
private static final long serialVersionUID = -3426704831943215090L;
/**
* 主键id
*/
private Long id;
/**
* 护理站id
*/
@ApiModelProperty(value = "护理站id")
@Excel(name = "护理站id")
@NotNull(message = "护理站id不能为空", groups = {Insert.class})
private Long nurseStationId;
/**
* 护理员表id
*/
@ApiModelProperty(value = "护理员表id")
@Excel(name = "护理员表id")
@NotNull(message = "护理员表id不能为空", groups = {Insert.class})
private Long nurseStationPersonId;
/**
* 护理员姓名
*/
@ApiModelProperty(value = "护理员姓名")
@Excel(name = "护理员姓名")
private String nursePersonName;
/**
* 订单编号
*/
@ApiModelProperty(value = "订单编号")
@Excel(name = "订单编号")
private String trainingOrderNo;
/**
* 订单状态待付款WAIT_PAY已付款PAY退款中WAIT_REFUND已退款REFUNDED已取消CANCEL
*/
@ApiModelProperty(value = "订单状态待付款WAIT_PAY已付款PAY退款中WAIT_REFUND已退款REFUNDED已取消CANCEL")
@Excel(name = "订单状态待付款WAIT_PAY已付款PAY退款中WAIT_REFUND已退款REFUNDED已取消CANCEL")
private String trainingOrderStatus;
/**
* 订单金额
*/
@ApiModelProperty(value = "订单金额")
@Excel(name = "订单金额")
@NotNull(message = "订单金额不能为空", groups = {Insert.class})
private BigDecimal trainingOrderAmount;
/**
* 下单方式手机AppMOBILE_APP微信小程序WECHAT_APPLET支付宝小程序ALI_PAY_APPLET
*/
@ApiModelProperty(value = "下单方式手机AppMOBILE_APP微信小程序WECHAT_APPLET支付宝小程序ALI_PAY_APPLET")
@Excel(name = "下单方式手机AppMOBILE_APP微信小程序WECHAT_APPLET支付宝小程序ALI_PAY_APPLET")
@NotBlank(message = "下单方式不能为空", groups = {Insert.class})
private String trainingOrderChannel;
/**
* 下单时间yyyy-MM-dd HH:mm:ss
*/
@ApiModelProperty(value = "下单时间yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "下单时间yyyy-MM-dd HH:mm:ss", width = 30, dateFormat = "yyyy-MM-dd")
private LocalDateTime trainingOrderTime;
/**
* 是否删除标识01
*/
private Integer delFlag;
/**
* 备注信息
*/
private String remark;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("nurseStationId", getNurseStationId())
.append("nurseStationPersonId", getNurseStationPersonId())
.append("nursePersonName", getNursePersonName())
.append("trainingOrderNo", getTrainingOrderNo())
.append("trainingOrderStatus", getTrainingOrderStatus())
.append("trainingOrderAmount", getTrainingOrderAmount())
.append("trainingOrderChannel", getTrainingOrderChannel())
.append("trainingOrderTime", getTrainingOrderTime())
.append("remark", getRemark())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,207 @@
package com.xinelu.manage.domain.trainingorderdetails;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import com.xinelu.common.custominterface.Insert;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalTime;
/**
* 学习培训订单明细对象 training_order_details
*
* @author xinyilu
* @date 2023-04-20
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "学习培训订单明细对象", description = "training_order_details")
public class TrainingOrderDetails extends BaseDomain implements Serializable {
private static final long serialVersionUID = -6948216195579112151L;
/**
* 主键id
*/
private Long id;
/**
* 培训订单主表id
*/
@ApiModelProperty(value = "培训订单主表id")
@Excel(name = "培训订单主表id")
private Long trainingOrderId;
/**
* 订单编号
*/
@ApiModelProperty(value = "订单编号")
@Excel(name = "订单编号")
private String trainingOrderNo;
/**
* 培训项目表id
*/
@ApiModelProperty(value = "培训项目表id")
@Excel(name = "培训项目表id")
@NotNull(message = "培训项目表id不能为空", groups = {Insert.class})
private Long trainingItemId;
/**
* 培训项目父级id
*/
private Long trainingParentId;
/**
* 培训项目标题
*/
@ApiModelProperty(value = "培训项目标题")
@Excel(name = "培训项目标题")
@NotBlank(message = "培训项目标题不能为空", groups = {Insert.class})
private String trainingItemTitle;
/**
* 培训项目编号
*/
@ApiModelProperty(value = "培训项目编号")
@Excel(name = "培训项目编号")
@NotBlank(message = "培训项目编号不能为空", groups = {Insert.class})
private String trainingItemCode;
/**
* 培训项目价格
*/
@ApiModelProperty(value = "培训项目价格")
@Excel(name = "培训项目价格")
@NotNull(message = "培训项目价格不能为空", groups = {Insert.class})
private BigDecimal trainingItemPrice;
/**
* 培训项目logo图片路径
*/
@ApiModelProperty(value = "培训项目logo图片路径")
@Excel(name = "培训项目logo图片路径")
@NotBlank(message = "培训项目logo图片路径不能为空", groups = {Insert.class})
private String trainingItemCoverUrl;
/**
* 培训项目海报图片路径
*/
@ApiModelProperty(value = "培训项目海报图片路径")
@Excel(name = "培训项目海报图片路径")
@NotBlank(message = "培训项目海报图片路径不能为空", groups = {Insert.class})
private String trainingItemPosterUrl;
/**
* 培训项目类型视频学习VIDEO_LEARNING图文学习GRAPHIC_LEARNING直播课程LIVE_COURSES线下培训OFFLINE_TRAINING,学习培训项目组LEARNING_ITEM_GROUP
*/
@ApiModelProperty(value = "培训项目类型视频学习VIDEO_LEARNING图文学习GRAPHIC_LEARNING直播课程LIVE_COURSES线下培训OFFLINE_TRAINING,学习培训项目组LEARNING_ITEM_GROUP")
@Excel(name = "培训项目类型视频学习VIDEO_LEARNING图文学习GRAPHIC_LEARNING直播课程LIVE_COURSES线下培训OFFLINE_TRAINING,学习培训项目组LEARNING_ITEM_GROUP")
@NotBlank(message = "培训项目类型不能为空", groups = {Insert.class})
private String trainingItemType;
/**
* 培训项目详情视频学习和直播课程培训类型使用
*/
@ApiModelProperty(value = "培训项目详情,视频学习和直播课程培训类型使用")
@Excel(name = "培训项目详情,视频学习和直播课程培训类型使用")
private String trainingItemDetails;
/**
* 培训项目内容图文学习类型使用主要存放图文学习类型的内容
*/
@ApiModelProperty(value = "培训项目内容,图文学习类型使用,主要存放图文学习类型的内容")
@Excel(name = "培训项目内容,图文学习类型使用,主要存放图文学习类型的内容")
private String trainingItemContent;
/**
* 培训项目日期格式yyyy-MM-dd直播课程和线下培训类型使用
*/
@ApiModelProperty(value = "培训项目日期格式yyyy-MM-dd直播课程和线下培训类型使用")
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "培训项目日期格式yyyy-MM-dd直播课程和线下培训类型使用", width = 30, dateFormat = "yyyy-MM-dd")
private LocalDate trainingItemDate;
/**
* 培训项目开始时间格式HH:mm:ss直播课程和线下培训类型使用
*/
@ApiModelProperty(value = "培训项目开始时间格式HH:mm:ss直播课程和线下培训类型使用")
@JsonFormat(pattern = "HH:mm:ss")
@Excel(name = "培训项目开始时间格式HH:mm:ss直播课程和线下培训类型使用", width = 30, dateFormat = "yyyy-MM-dd")
private LocalTime trainingItemStartTime;
/**
* 培训项目结束时间格式HH:mm:ss直播课程和线下培训类型使用
*/
@ApiModelProperty(value = "培训项目结束时间格式HH:mm:ss直播课程和线下培训类型使用")
@JsonFormat(pattern = "HH:mm:ss")
@Excel(name = "培训项目结束时间格式HH:mm:ss直播课程和线下培训类型使用", width = 30, dateFormat = "yyyy-MM-dd")
private LocalTime trainingItemEndTime;
/**
* 培训项目地址线下培训类型使用存放线下培训的地址
*/
@ApiModelProperty(value = "培训项目地址,线下培训类型使用,存放线下培训的地址")
@Excel(name = "培训项目地址,线下培训类型使用,存放线下培训的地址")
private String trainingItemAddress;
/**
* 报名须知线下培训使用存放线下报名须知信息
*/
@ApiModelProperty(value = "报名须知,线下培训使用,存放线下报名须知信息")
@Excel(name = "报名须知,线下培训使用,存放线下报名须知信息")
private String trainingItemNotes;
/**
* 培训项目排序
*/
private Integer trainingItemSort;
/**
* 删除标识01
*/
private Integer delFlag;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("trainingOrderId", getTrainingOrderId())
.append("trainingOrderNo", getTrainingOrderNo())
.append("trainingItemId", getTrainingItemId())
.append("trainingItemTitle", getTrainingItemTitle())
.append("trainingItemCode", getTrainingItemCode())
.append("trainingItemPrice", getTrainingItemPrice())
.append("trainingItemCoverUrl", getTrainingItemCoverUrl())
.append("trainingItemPosterUrl", getTrainingItemPosterUrl())
.append("trainingItemType", getTrainingItemType())
.append("trainingItemDetails", getTrainingItemDetails())
.append("trainingItemContent", getTrainingItemContent())
.append("trainingItemDate", getTrainingItemDate())
.append("trainingItemStartTime", getTrainingItemStartTime())
.append("trainingItemEndTime", getTrainingItemEndTime())
.append("trainingItemAddress", getTrainingItemAddress())
.append("trainingItemNotes", getTrainingItemNotes())
.append("delFlag", getDelFlag())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,121 @@
package com.xinelu.manage.domain.trainingorderitemdirectory;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.common.core.domain.BaseDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.time.LocalTime;
/**
* 学习培训订单明细章节记录视频学习和直播课程的章节信息对象 training_order_item_directory
*
* @author xinyilu
* @date 2023-04-20
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "学习培训订单明细章节,记录视频学习和直播课程的章节信息对象", description = "training_order_item_directory")
public class TrainingOrderItemDirectory extends BaseDomain implements Serializable {
private static final long serialVersionUID = -8514498637237874587L;
/**
* 主键id
*/
private Long id;
/**
* 培训订单明细表id
*/
@ApiModelProperty(value = "培训订单明细表id")
@Excel(name = "培训订单明细表id")
private Long trainingOrderDetailsId;
/**
* 订单编号
*/
@ApiModelProperty(value = "订单编号")
@Excel(name = "订单编号")
private String trainingOrderNo;
/**
* 培训项目章节表id
*/
@ApiModelProperty(value = "培训项目章节表id")
@Excel(name = "培训项目章节表id")
private Long trainingItemDirectoryId;
/**
* 培训项目章节录名称
*/
@ApiModelProperty(value = "培训项目章节录名称")
@Excel(name = "培训项目章节录名称")
private String itemDirectoryName;
/**
* 培训项目章节编码
*/
@ApiModelProperty(value = "培训项目章节编码")
@Excel(name = "培训项目章节编码")
private String itemDirectoryCode;
/**
* 培训项目章节标题
*/
@ApiModelProperty(value = "培训项目章节标题")
@Excel(name = "培训项目章节标题")
private String itemDirectoryTitle;
/**
* 培训项目章节视频存放地址
*/
private String itemDirectoryUrl;
/**
* 培训章节视频时长
*/
@JsonFormat(pattern = "HH:mm:ss")
@DateTimeFormat(pattern = "HH:mm:ss")
private LocalTime itemDirectoryVideoDuration;
/**
* 培训项目章节内容简介
*/
@ApiModelProperty(value = "培训项目章节内容简介")
@Excel(name = "培训项目章节内容简介")
private String itemDirectoryIntroduce;
/**
* 未观看NOT_WATCHED已观看WATCHED已看完FINISHED_READING
*/
private String itemDirectoryWatchStatus;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("trainingOrderDetailsId", getTrainingOrderDetailsId())
.append("trainingOrderNo", getTrainingOrderNo())
.append("trainingItemDirectoryId", getTrainingItemDirectoryId())
.append("itemDirectoryName", getItemDirectoryName())
.append("itemDirectoryCode", getItemDirectoryCode())
.append("itemDirectoryTitle", getItemDirectoryTitle())
.append("itemDirectoryIntroduce", getItemDirectoryIntroduce())
.append("createBy", getCreateBy())
.append("createTime", getCreateTime())
.append("updateBy", getUpdateBy())
.append("updateTime", getUpdateTime())
.toString();
}
}

View File

@ -0,0 +1,162 @@
package com.xinelu.manage.mapper.trainingorder;
import com.xinelu.manage.domain.trainingorder.TrainingOrder;
import com.xinelu.manage.dto.trainingitem.NurseAppletPersonTrainingItemDTO;
import com.xinelu.manage.vo.TrainingRefundOrderVO;
import com.xinelu.manage.vo.trainingorder.NurseAppletPersonTrainingOrderItemVO;
import com.xinelu.manage.vo.trainingorder.TrainingOrderVO;
import com.xinelu.manage.vo.trainingorderdetails.NurseAppletPersonTrainingOrderDetailsVO;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
/**
* 学习培训订单Mapper接口
*
* @author xinyilu
* @date 2023-04-20
*/
public interface TrainingOrderMapper {
/**
* 查询学习培训订单
*
* @param id 学习培训订单主键
* @return 学习培训订单
*/
TrainingOrder selectTrainingOrderById(Long id);
/**
* 查询学习培训订单列表
*
* @param trainingOrder 学习培训订单
* @return 学习培训订单集合
*/
List<TrainingOrder> selectTrainingOrderList(TrainingOrder trainingOrder);
/**
* 新增学习培训订单
*
* @param trainingOrder 学习培训订单
* @return 结果
*/
int insertTrainingOrder(TrainingOrder trainingOrder);
/**
* 修改学习培训订单
*
* @param trainingOrder 学习培训订单
* @return 结果
*/
int updateTrainingOrder(TrainingOrder trainingOrder);
/**
* 删除学习培训订单
*
* @param id 学习培训订单主键
* @return 结果
*/
int deleteTrainingOrderById(Long id);
/**
* 批量删除学习培训订单
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteTrainingOrderByIds(Long[] ids);
/**
* 查询已购买的学习培训集合
*
* @param trainingOrder 已购买的学习培训
* @return java.util.List<com.xinyilu.base.vo.trainingitem.NurseAppletPersonTrainingItemVO>
**/
List<NurseAppletPersonTrainingOrderDetailsVO> selectTrainingOrderVideoList(NurseAppletPersonTrainingItemDTO trainingOrder);
/**
* 查询已购买的学习培训详情
*
* @param trainingOrder 已购买的学习培训
* @return java.util.List<com.xinyilu.base.vo.trainingitem.NurseAppletPersonTrainingItemVO>
**/
NurseAppletPersonTrainingOrderItemVO selectTrainingOrderVideoDetailsList(NurseAppletPersonTrainingItemDTO trainingOrder);
/**
* 查询学习培训订单列表
*
* @param trainingOrder 学习培训订单
* @return 学习培训订单集合
*/
List<TrainingOrderVO> selectTrainingOrderVOList(TrainingOrderVO trainingOrder);
/**
* 查询学习培训订单
*
* @param id 学习培训订单主键
* @return 学习培训订单
*/
TrainingOrderVO selectTrainingOrderVoById(Long id);
/**
* 根据订单编号查询学习培训订单信息
*
* @param trainingOrderNo 订单编号
* @return 学习培训订单信息
*/
TrainingOrder getTrainingOrderInfoByOrderNo(String trainingOrderNo);
/**
* 修改学习培训订单状态
*
* @param trainingOrderStatus 订单状态
* @param trainingOrderNo 订单编号
* @return 数量
*/
int updateTrainingOrderStatus(@Param("trainingOrderStatus") String trainingOrderStatus, @Param("trainingOrderNo") String trainingOrderNo);
/**
* 根据订单状态查未支付的学习订单集合
*
* @param trainingOrderStatus 订单状态
* @param trainingOrderList 订单集合
* @return 未支付的订单信息集合
*/
List<TrainingOrder> getWaitPayTrainingOrderList(@Param("trainingOrderStatus") String trainingOrderStatus, @Param("trainingOrderList") List<String> trainingOrderList);
/**
* 查询超过两小时未支付的学习培训订单信息
*
* @param time 超时时间
* @param trainingOrderStatus 订单状态
* @return 学习培训订单信息集合
*/
List<TrainingOrder> getWaitPayTrainingOrderListByTime(@Param("time") LocalDateTime time, @Param("trainingOrderStatus") String trainingOrderStatus);
/**
* 批量更新学习培训订单状态
*
* @param orderNoList 学习培训订单列表信息
* @param trainingOrderStatus 订单状态
* @return 更新数量
*/
int updateBatchTrainingOrderStatus(@Param("orderNoList") List<String> orderNoList, @Param("trainingOrderStatus") String trainingOrderStatus);
/**
* 查询已退款成功但是本地系统未修改退款状态的学习培训订单
*
* @param trainingOrderStatus 学习培训订单状态
* @param refundStatus 退款状态
* @return 学习培训订单集合
*/
List<TrainingRefundOrderVO> getTrainingRefundOrderList(@Param("trainingOrderStatus") String trainingOrderStatus, @Param("refundStatus") String refundStatus);
/**
* 退款信息查询
*
* @param id 学习培训订单主键
* @param trainingItemType 学习培训订单类型
* @return 结果
*/
TrainingOrderVO selectRefundInformation(@Param("id") Long id, @Param("trainingItemType") String trainingItemType);
}

View File

@ -0,0 +1,95 @@
package com.xinelu.manage.mapper.trainingorderitemdirectory;
import com.xinelu.manage.domain.trainingorderitemdirectory.TrainingOrderItemDirectory;
import com.xinelu.manage.vo.trainingorderitemdirectory.TrainingOrderItemDirectoryInfoVO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 学习培训订单明细章节记录视频学习和直播课程的章节信息Mapper接口
*
* @author xinyilu
* @date 2023-04-20
*/
public interface TrainingOrderItemDirectoryMapper {
/**
* 查询学习培训订单明细章节记录视频学习和直播课程的章节信息
*
* @param id 学习培训订单明细章节记录视频学习和直播课程的章节信息主键
* @return 学习培训订单明细章节记录视频学习和直播课程的章节信息
*/
TrainingOrderItemDirectory selectTrainingOrderItemDirectoryById(Long id);
/**
* 查询学习培训订单明细章节记录视频学习和直播课程的章节信息列表
*
* @param trainingOrderItemDirectory 学习培训订单明细章节记录视频学习和直播课程的章节信息
* @return 学习培训订单明细章节记录视频学习和直播课程的章节信息集合
*/
List<TrainingOrderItemDirectory> selectTrainingOrderItemDirectoryList(TrainingOrderItemDirectory trainingOrderItemDirectory);
/**
* 新增学习培训订单明细章节记录视频学习和直播课程的章节信息
*
* @param trainingOrderItemDirectory 学习培训订单明细章节记录视频学习和直播课程的章节信息
* @return 结果
*/
int insertTrainingOrderItemDirectory(TrainingOrderItemDirectory trainingOrderItemDirectory);
/**
* 修改学习培训订单明细章节记录视频学习和直播课程的章节信息
*
* @param trainingOrderItemDirectory 学习培训订单明细章节记录视频学习和直播课程的章节信息
* @return 结果
*/
int updateTrainingOrderItemDirectory(TrainingOrderItemDirectory trainingOrderItemDirectory);
/**
* 删除学习培训订单明细章节记录视频学习和直播课程的章节信息
*
* @param id 学习培训订单明细章节记录视频学习和直播课程的章节信息主键
* @return 结果
*/
int deleteTrainingOrderItemDirectoryById(Long id);
/**
* 批量删除学习培训订单明细章节记录视频学习和直播课程的章节信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
int deleteTrainingOrderItemDirectoryByIds(Long[] ids);
/**
* 批量新增学习培训订单明细章节记录视频学习和直播课程的章节信息
*
* @param trainingOrderItemDirectoryList 学习培训订单明细章节信息集合记录视频学习和直播课程的章节信息
* @return int
**/
int insertTrainingOrderItemDirectoryList(List<TrainingOrderItemDirectory> trainingOrderItemDirectoryList);
/**
* 修改学习培训订单明细章节记录视频学习和直播课程的章节信息
*
* @param trainingItemDirectoryId 培训项目章节表id
* @param trainingOrderNo 订单编号
* @param itemDirectoryWatchStatus 视频状态
* @return int
**/
int updatePersonTrainingOrderItemDirectory(@Param("trainingItemDirectoryId") Long trainingItemDirectoryId, @Param("trainingOrderNo") String trainingOrderNo, @Param("itemDirectoryWatchStatus") String itemDirectoryWatchStatus);
/**
* 查询订单表章节是否购买过
*
* @param nurseStationPersonId 护理站人员id
* @param trainingItemId 培训项目表id
* @param trainingItemDirectoryIdList 培训项目章节表id集合
* @param trainingOrderStatus 订单状态待付款WAIT_PAY已付款PAY退款中WAIT_REFUND已退款REFUNDED已取消CANCEL',
* @return com.xinyilu.base.vo.trainingorderitemdirectory.TrainingOrderItemDirectoryInfoVO
**/
List<TrainingOrderItemDirectoryInfoVO> getTrainingOrderItemDirectoryList(@Param("nurseStationPersonId") Long nurseStationPersonId,
@Param("trainingItemId") Long trainingItemId,
@Param("trainingItemDirectoryIdList") List<Long> trainingItemDirectoryIdList,
@Param("trainingOrderStatus") String trainingOrderStatus);
}

View File

@ -0,0 +1,72 @@
package com.xinelu.manage.service.trainingorder;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.trainingorder.TrainingOrder;
import com.xinelu.manage.domain.trainingorderitemdirectory.TrainingOrderItemDirectory;
import com.xinelu.manage.vo.trainingorder.TrainingOrderVO;
import java.util.List;
/**
* 学习培训订单Service接口
*
* @author xinyilu
* @date 2023-04-20
*/
public interface ITrainingOrderService {
/**
* 查询学习培训订单
*
* @param id 学习培训订单主键
* @return 学习培训订单
*/
TrainingOrderVO selectTrainingOrderById(Long id);
/**
* 查询学习培训订单列表
*
* @param trainingOrder 学习培训订单
* @return 学习培训订单集合
*/
List<TrainingOrderVO> selectTrainingOrderList(TrainingOrderVO trainingOrder);
/**
* 新增学习培训订单
*
* @param trainingOrder 学习培训订单
* @return 结果
*/
int insertTrainingOrder(TrainingOrder trainingOrder);
/**
* 修改学习培训订单
*
* @param trainingOrder 学习培训订单
* @return 结果
*/
int updateTrainingOrder(TrainingOrder trainingOrder);
/**
* 批量删除学习培训订单
*
* @param ids 需要删除的学习培训订单主键集合
* @return 结果
*/
int deleteTrainingOrderByIds(Long[] ids);
/**
* 退款信息查询
*
* @param id 学习培训订单主键
* @return 结果
*/
AjaxResult selectRefundInformation(Long id);
/**
* 查询订单明细章节信息
*
* @param trainingOrderItemDirectory 查询学习培训订单明细章节
* @return List<TrainingOrderItemDirectory>
*/
List<TrainingOrderItemDirectory> selectTrainingOrderItemDirectoryList(TrainingOrderItemDirectory trainingOrderItemDirectory);
}

View File

@ -0,0 +1,113 @@
package com.xinelu.manage.service.trainingorder.impl;
import com.xinelu.manage.domain.trainingorder.TrainingOrder;
import com.xinelu.manage.domain.trainingorderitemdirectory.TrainingOrderItemDirectory;
import com.xinelu.manage.mapper.trainingorder.TrainingOrderMapper;
import com.xinelu.manage.mapper.trainingorderitemdirectory.TrainingOrderItemDirectoryMapper;
import com.xinelu.manage.service.trainingorder.ITrainingOrderService;
import com.xinelu.manage.vo.trainingorder.TrainingOrderVO;
import com.xinelu.common.constant.Constants;
import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.common.enums.TrainingItemTypeEnum;
import com.xinelu.common.utils.SecurityUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.List;
/**
* 学习培训订单Service业务层处理
*
* @author xinyilu
* @date 2023-04-20
*/
@Service
public class TrainingOrderServiceImpl implements ITrainingOrderService {
@Resource
private TrainingOrderMapper trainingOrderMapper;
@Resource
private TrainingOrderItemDirectoryMapper trainingOrderItemDirectoryMapper;
/**
* 查询学习培训订单
*
* @param id 学习培训订单主键
* @return 学习培训订单
*/
@Override
public TrainingOrderVO selectTrainingOrderById(Long id) {
return trainingOrderMapper.selectTrainingOrderVoById(id);
}
/**
* 查询学习培训订单列表
*
* @param trainingOrder 学习培训订单
* @return 学习培训订单
*/
@Override
public List<TrainingOrderVO> selectTrainingOrderList(TrainingOrderVO trainingOrder) {
trainingOrder.setTrainingParentId(Constants.TRAINING_PARENT_ID);
return trainingOrderMapper.selectTrainingOrderVOList(trainingOrder);
}
/**
* 新增学习培训订单
*
* @param trainingOrder 学习培训订单
* @return 结果
*/
@Override
public int insertTrainingOrder(TrainingOrder trainingOrder) {
trainingOrder.setCreateTime(LocalDateTime.now());
trainingOrder.setCreateBy(SecurityUtils.getUsername());
return trainingOrderMapper.insertTrainingOrder(trainingOrder);
}
/**
* 修改学习培训订单
*
* @param trainingOrder 学习培训订单
* @return 结果
*/
@Override
public int updateTrainingOrder(TrainingOrder trainingOrder) {
trainingOrder.setUpdateTime(LocalDateTime.now());
trainingOrder.setUpdateBy(SecurityUtils.getUsername());
return trainingOrderMapper.updateTrainingOrder(trainingOrder);
}
/**
* 批量删除学习培训订单
*
* @param ids 需要删除的学习培训订单主主键
* @return 结果
*/
@Override
public int deleteTrainingOrderByIds(Long[] ids) {
return trainingOrderMapper.deleteTrainingOrderByIds(ids);
}
/**
* 退款信息查询
*
* @param id 学习培训订单主键
* @return 结果
*/
@Override
public AjaxResult selectRefundInformation(Long id) {
return AjaxResult.success(trainingOrderMapper.selectRefundInformation(id, TrainingItemTypeEnum.LEARNING_ITEM_GROUP.getInfo()));
}
/**
* 查询订单明细章节信息
*
* @param trainingOrderItemDirectory 查询学习培训订单明细章节
* @return List<TrainingOrderItemDirectory>
*/
@Override
public List<TrainingOrderItemDirectory> selectTrainingOrderItemDirectoryList(TrainingOrderItemDirectory trainingOrderItemDirectory) {
return trainingOrderItemDirectoryMapper.selectTrainingOrderItemDirectoryList(trainingOrderItemDirectory);
}
}

View File

@ -0,0 +1,30 @@
package com.xinelu.manage.vo;
import lombok.Data;
import java.io.Serializable;
/**
* @Description 学习培训订单退款返回值实体类
* @Author 纪寒
* @Date 2023-04-24 14:30:16
* @Version 1.0
*/
@Data
public class TrainingRefundOrderVO implements Serializable {
private static final long serialVersionUID = 8293128390665523720L;
/**
* 学习培训订单编号
*/
private String trainingOrderNo;
/**
* 学习培训订单状态
*/
private String trainingOrderStatus;
/**
* 学习培训退款单号
*/
private String outRefundNo;
}

View File

@ -0,0 +1,50 @@
package com.xinelu.manage.vo.trainingorder;
import com.xinelu.manage.domain.trainingorderdetails.TrainingOrderDetails;
import com.xinelu.manage.vo.trainingorderitemdirectory.TrainingOrderItemDirectoryVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.List;
/**
* @author ljh
* @version 1.0
* Create by 2023/4/25 9:18
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class NurseAppletPersonTrainingOrderItemVO extends TrainingOrderDetails implements Serializable {
private static final long serialVersionUID = 4974378984559961673L;
/**
* 学习培训订单明细章节记录视频学习和直播课程的章节信息对象 training_order_item_directory
*/
List<TrainingOrderItemDirectoryVO> trainingOrderItemDirectoryVOList;
/**
* 学习培训项目信息对象主键id
*/
private Long trainingItemId;
/**
* 学习培训项目章节对象主键id
*/
private Long trainingItemDirectoryId;
/**
* 订单状态待付款WAIT_PAY已付款PAY退款中WAIT_REFUND已退款REFUNDED已取消CANCEL
*/
private String trainingOrderStatus;
/**
* 订单编号
*/
private String trainingOrderNo;
/**
* 订单主表id
*/
private Long trainingOrderId;
}

View File

@ -0,0 +1,45 @@
package com.xinelu.manage.vo.trainingorder;
import com.xinelu.manage.domain.trainingorder.TrainingOrder;
import com.xinelu.manage.vo.trainingorderdetails.TrainingOrderDetailsVO;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 学习培训订单主对象 training_order
*
* @author zh
* @date 2023-04-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TrainingOrderVO extends TrainingOrder {
private static final long serialVersionUID = 8026313682395475801L;
/**
* 订单id
*/
private Long trainingOrderId;
/**
* 护理站名称
*/
private String nurseStationName;
/**
* 培训项目标题
*/
private String trainingItemTitle;
/**
* 订单明细
*/
private List<TrainingOrderDetailsVO> trainingOrderDetailsList;
/**
* 学习培训课程父id
*/
private Long trainingParentId;
}

View File

@ -0,0 +1,74 @@
package com.xinelu.manage.vo.trainingorderdetails;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.manage.domain.trainingorderdetails.TrainingOrderDetails;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @author ljh
* @version 1.0
* Create by 2023/4/25 9:46
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class NurseAppletPersonTrainingOrderDetailsVO extends TrainingOrderDetails implements Serializable {
private static final long serialVersionUID = 4344236010800105022L;
/**
* 订单明细主键id
*/
private Long trainingOrderDetailsId;
/**
* 订单主键id
*/
private Long trainingOrderId;
/**
* 护理站id
*/
private Long nurseStationId;
/**
* 护理员表id
*/
private Long nurseStationPersonId;
/**
* 护理员姓名
*/
private String nursePersonName;
/**
* 订单状态待付款WAIT_PAY已付款PAY退款中WAIT_REFUND已退款REFUNDED已取消CANCEL
*/
private String trainingOrderStatus;
/**
* 订单金额
*/
private BigDecimal trainingOrderAmount;
/**
* 下单方式手机AppMOBILE_APP微信小程序WECHAT_APPLET支付宝小程序ALI_PAY_APPLET
*/
private String trainingOrderChannel;
/**
* 下单时间yyyy-MM-dd HH:mm:ss
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime trainingOrderTime;
/**
* 是否删除标识01
*/
private Integer delFlag;
}

View File

@ -0,0 +1,25 @@
package com.xinelu.manage.vo.trainingorderdetails;
import lombok.Data;
import java.io.Serializable;
/**
* @author ljh
* @version 1.0
* Create by 2023/4/26 9:38
*/
@Data
public class TrainingDetailsByOrderVO implements Serializable {
private static final long serialVersionUID = -3764420224976771260L;
/**
* 培训订单主表id
*/
private Long trainingOrderId;
/**
* 订单编号
*/
private String trainingOrderNo;
}

View File

@ -0,0 +1,22 @@
package com.xinelu.manage.vo.trainingorderdetails;
import com.xinelu.manage.domain.trainingorderdetails.TrainingOrderDetails;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* 学习培训订单明细对象 training_order_details
*
* @author xinyilu
* @date 2023-04-24
*/
@Data
@EqualsAndHashCode(callSuper = true)
public class TrainingOrderDetailsVO extends TrainingOrderDetails {
private static final long serialVersionUID = 8581670163836081338L;
/**
* 主键id
*/
private Long trainingOrderDetailsId;
}

View File

@ -0,0 +1,61 @@
package com.xinelu.manage.vo.trainingorderdetails;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* @Description 待支付的学习培训订单详情信息实体类
* @Author 纪寒
* @Date 2023-04-27 09:43:43
* @Version 1.0
*/
@Data
public class WaitPayTrainingOrderDetailsVO implements Serializable {
private static final long serialVersionUID = -8690776626721258896L;
/**
* 学习培训课程包名称
*/
private String trainingItemTitle;
/**
* 学习培训课程包名称
*/
private String trainingItemCoverUrl;
/**
* 学习培训课程包价格
*/
private BigDecimal trainingOrderAmount;
/**
* 学习培训订单编号
*/
private String trainingOrderNo;
/**
* 护理员姓名
*/
private String nursePersonName;
/**
* 护理员id
*/
private Long nurseStationPersonId;
/**
* 培训学习订单
*/
private String trainingOrderStatus;
/**
* 下单时间
*/
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime trainingOrderTime;
}

View File

@ -0,0 +1,80 @@
package com.xinelu.manage.vo.trainingorderitemdirectory;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalTime;
/**
* @author ljh
* @version 1.0
* Create by 2023/4/26 10:36
*/
@Data
public class TrainingOrderItemDirectoryInfoVO implements Serializable {
private static final long serialVersionUID = -1196792067821850227L;
/**
* 培训项目表id
**/
private Long trainingItemId;
/**
* 培训订单主表id
**/
private Long trainingOrderId;
/**
* 培训项目类型视频学习VIDEO_LEARNING图文学习GRAPHIC_LEARNING直播课程LIVE_COURSES线下培训OFFLINE_TRAINING学习培训项目组LEARNING_ITEM_GROUP',
**/
private String trainingItemType;
/**
* 培训项目章节表id
**/
private Long trainingItemDirectoryId;
/**
* 订单编号
**/
private String trainingOrderNo;
/**
* 未观看NOT_WATCHED已观看WATCHED已看完FINISHED_READING
**/
private String itemDirectoryWatchStatus;
/**
* 护理站id
*/
private Long nurseStationId;
/**
* 护理站人员id
*/
private Long nurseStationPersonId;
/**
* 护理站人员名称
*/
private String nursePersonName;
/**
* 订单状态待付款WAIT_PAY已付款PAY退款中WAIT_REFUND已退款REFUNDED已取消CANCEL
*/
private String trainingOrderStatus;
/**
* 观看日期格式yyyy-MM-dd
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate watchDate;
/**
* 培训项目观看时间点格式HH:mm:ss视频学习类型使用
*/
@JsonFormat(pattern = "HH:mm:ss")
private LocalTime watchTime;
}

View File

@ -0,0 +1,70 @@
package com.xinelu.manage.vo.trainingorderitemdirectory;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xinelu.common.annotation.Excel;
import com.xinelu.manage.domain.trainingorderitemdirectory.TrainingOrderItemDirectory;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalTime;
/**
* @author ljh
* @version 1.0
* Create by 2023/4/21 22:59
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class TrainingOrderItemDirectoryVO extends TrainingOrderItemDirectory implements Serializable {
private static final long serialVersionUID = -8067388610816174007L;
/**
* 观看日期格式yyyy-MM-dd
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private LocalDate watchDate;
/**
* 培训项目观看时间点格式HH:mm:ss视频学习类型使用
*/
@JsonFormat(pattern = "HH:mm:ss")
private LocalTime watchTime;
/**
* 培训项目表id
*/
@ApiModelProperty(value = "培训项目表id")
@Excel(name = "培训项目表id")
private Long trainingItemId;
/**
* 培训项目章节标题
*/
@ApiModelProperty(value = "培训项目章节标题")
@Excel(name = "培训项目章节标题")
private String itemDirectoryTitle;
/**
* 培训项目章节视频存放地址
*/
@ApiModelProperty(value = "培训项目章节视频存放地址")
@Excel(name = "培训项目章节视频存放地址")
private String itemDirectoryUrl;
/**
* 培训章节视频时长
*/
@JsonFormat(pattern = "HH:mm:ss")
private LocalTime itemDirectoryVideoDuration;
/**
* 培训项目章节排序
*/
@ApiModelProperty(value = "培训项目章节排序")
@Excel(name = "培训项目章节排序")
private Integer itemDirectorySort;
}

View File

@ -0,0 +1,561 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinelu.manage.mapper.trainingorder.TrainingOrderMapper">
<resultMap type="TrainingOrder" id="TrainingOrderResult">
<result property="id" column="id"/>
<result property="nurseStationId" column="nurse_station_id"/>
<result property="nurseStationPersonId" column="nurse_station_person_id"/>
<result property="nursePersonName" column="nurse_person_name"/>
<result property="trainingOrderNo" column="training_order_no"/>
<result property="trainingOrderStatus" column="training_order_status"/>
<result property="trainingOrderAmount" column="training_order_amount"/>
<result property="trainingOrderChannel" column="training_order_channel"/>
<result property="trainingOrderTime" column="training_order_time"/>
<result property="remark" column="remark"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<resultMap type="com.xinelu.manage.vo.trainingorder.NurseAppletPersonTrainingOrderItemVO"
id="NurseAppletPersonTrainingOrderItemVOResult">
<result property="trainingOrderId" column="training_order_id"/>
<result property="trainingOrderNo" column="training_order_no"/>
<result property="trainingItemId" column="training_item_id"/>
<result property="trainingParentId" column="training_parent_id"/>
<result property="trainingItemTitle" column="training_item_title"/>
<result property="trainingItemCode" column="training_item_code"/>
<result property="trainingItemPrice" column="training_item_price"/>
<result property="trainingItemCoverUrl" column="training_item_cover_url"/>
<result property="trainingItemPosterUrl" column="training_item_poster_url"/>
<result property="trainingItemType" column="training_item_type"/>
<result property="trainingItemDetails" column="training_item_details"/>
<result property="trainingItemContent" column="training_item_content"/>
<result property="trainingItemDate" column="training_item_date"/>
<result property="trainingItemStartTime" column="training_item_start_time"/>
<result property="trainingItemEndTime" column="training_item_end_time"/>
<result property="trainingItemAddress" column="training_item_address"/>
<result property="trainingItemNotes" column="training_item_notes"/>
<result property="trainingItemSort" column="training_item_sort"/>
<result property="trainingOrderStatus" column="training_order_status"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<collection property="trainingOrderItemDirectoryVOList" javaType="java.util.List"
resultMap="TrainingItemDirectoryResult"/>
</resultMap>
<resultMap type="com.xinelu.manage.vo.trainingorderitemdirectory.TrainingOrderItemDirectoryVO"
id="TrainingItemDirectoryResult">
<result property="id" column="trainingItemDirectoryId"/>
<result property="trainingItemDirectoryId" column="training_item_directory_id"/>
<result property="trainingOrderNo" column="training_order_no"/>
<result property="trainingItemId" column="training_item_id"/>
<result property="itemDirectoryName" column="item_directory_name"/>
<result property="itemDirectoryCode" column="item_directory_code"/>
<result property="itemDirectoryTitle" column="item_directory_title"/>
<result property="itemDirectoryUrl" column="item_directory_url"/>
<result property="itemDirectoryVideoDuration" column="item_directory_video_duration"/>
<result property="itemDirectoryIntroduce" column="item_directory_introduce"/>
<result property="trainingItemDirectoryId" column="training_item_directory_id"/>
<result property="trainingOrderNo" column="training_order_no"/>
<result property="itemDirectoryWatchStatus" column="item_directory_watch_status"/>
<result property="itemDirectorySort" column="item_directory_sort"/>
<result property="watchDate" column="watch_date"/>
<result property="watchTime" column="watch_time"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<resultMap type="com.xinelu.manage.vo.trainingorder.TrainingOrderVO" id="TrainingOrderVOResult">
<result property="trainingOrderId" column="trainingOrderId"/>
<result property="nurseStationId" column="nurse_station_id"/>
<result property="nurseStationPersonId" column="nurse_station_person_id"/>
<result property="nursePersonName" column="nurse_person_name"/>
<result property="trainingOrderNo" column="training_order_no"/>
<result property="trainingOrderStatus" column="training_order_status"/>
<result property="trainingOrderAmount" column="training_order_amount"/>
<result property="trainingOrderChannel" column="training_order_channel"/>
<result property="trainingOrderTime" column="training_order_time"/>
<result property="nurseStationName" column="nurse_station_name"/>
<result property="remark" column="remark"/>
<collection property="trainingOrderDetailsList" javaType="java.util.List"
resultMap="trainingOrderDetailsResult"/>
</resultMap>
<resultMap type="com.xinelu.manage.vo.trainingorderdetails.TrainingOrderDetailsVO" id="trainingOrderDetailsResult">
<result property="trainingOrderDetailsId" column="trainingOrderDetailsId"/>
<result property="trainingOrderId" column="training_order_id"/>
<result property="trainingOrderNo" column="training_order_no"/>
<result property="trainingItemId" column="training_item_id"/>
<result property="trainingParentId" column="training_parent_id"/>
<result property="trainingItemTitle" column="training_item_title"/>
<result property="trainingItemCode" column="training_item_code"/>
<result property="trainingItemPrice" column="training_item_price"/>
<result property="trainingItemCoverUrl" column="training_item_cover_url"/>
<result property="trainingItemPosterUrl" column="training_item_poster_url"/>
<result property="trainingItemType" column="training_item_type"/>
<result property="trainingItemDetails" column="training_item_details"/>
<result property="trainingItemContent" column="training_item_content"/>
<result property="trainingItemDate" column="training_item_date"/>
<result property="trainingItemStartTime" column="training_item_start_time"/>
<result property="trainingItemEndTime" column="training_item_end_time"/>
<result property="trainingItemAddress" column="training_item_address"/>
<result property="trainingItemNotes" column="training_item_notes"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<sql id="selectTrainingOrderVo">
select id,
nurse_station_id,
nurse_station_person_id,
nurse_person_name,
training_order_no,
training_order_status,
training_order_amount,
training_order_channel,
training_order_time,
remark,
del_flag,
create_by,
create_time,
update_by,
update_time
from training_order
</sql>
<select id="selectTrainingOrderList" parameterType="TrainingOrder" resultMap="TrainingOrderResult">
<include refid="selectTrainingOrderVo"/>
<where>
<if test="nurseStationId != null ">
and nurse_station_id = #{nurseStationId}
</if>
<if test="nurseStationPersonId != null ">
and nurse_station_person_id = #{nurseStationPersonId}
</if>
<if test="nursePersonName != null and nursePersonName != ''">
and nurse_person_name like concat('%', #{nursePersonName}, '%')
</if>
<if test="trainingOrderNo != null and trainingOrderNo != ''">
and training_order_no = #{trainingOrderNo}
</if>
<if test="trainingOrderStatus != null and trainingOrderStatus != ''">
and training_order_status = #{trainingOrderStatus}
</if>
<if test="trainingOrderAmount != null ">
and training_order_amount = #{trainingOrderAmount}
</if>
<if test="trainingOrderChannel != null and trainingOrderChannel != ''">
and training_order_channel = #{trainingOrderChannel}
</if>
<if test="trainingOrderTime != null ">
and training_order_time = #{trainingOrderTime}
</if>
</where>
</select>
<select id="selectTrainingOrderById" parameterType="Long"
resultMap="TrainingOrderResult">
<include refid="selectTrainingOrderVo"/>
where id = #{id}
</select>
<insert id="insertTrainingOrder" parameterType="TrainingOrder" useGeneratedKeys="true"
keyProperty="id">
insert into training_order
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="nurseStationId != null">nurse_station_id,
</if>
<if test="nurseStationPersonId != null">nurse_station_person_id,
</if>
<if test="nursePersonName != null">nurse_person_name,
</if>
<if test="trainingOrderNo != null">training_order_no,
</if>
<if test="trainingOrderStatus != null">training_order_status,
</if>
<if test="trainingOrderAmount != null">training_order_amount,
</if>
<if test="trainingOrderChannel != null">training_order_channel,
</if>
<if test="trainingOrderTime != null">training_order_time,
</if>
<if test="remark != null">remark,
</if>
<if test="delFlag != null">del_flag,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="nurseStationId != null">#{nurseStationId},
</if>
<if test="nurseStationPersonId != null">#{nurseStationPersonId},
</if>
<if test="nursePersonName != null">#{nursePersonName},
</if>
<if test="trainingOrderNo != null">#{trainingOrderNo},
</if>
<if test="trainingOrderStatus != null">#{trainingOrderStatus},
</if>
<if test="trainingOrderAmount != null">#{trainingOrderAmount},
</if>
<if test="trainingOrderChannel != null">#{trainingOrderChannel},
</if>
<if test="trainingOrderTime != null">#{trainingOrderTime},
</if>
<if test="remark != null">#{remark},
</if>
<if test="delFlag != null">#{delFlag},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
</trim>
</insert>
<update id="updateTrainingOrder" parameterType="TrainingOrder">
update training_order
<trim prefix="SET" suffixOverrides=",">
<if test="nurseStationId != null">nurse_station_id =
#{nurseStationId},
</if>
<if test="nurseStationPersonId != null">nurse_station_person_id =
#{nurseStationPersonId},
</if>
<if test="nursePersonName != null">nurse_person_name =
#{nursePersonName},
</if>
<if test="trainingOrderNo != null">training_order_no =
#{trainingOrderNo},
</if>
<if test="trainingOrderStatus != null">training_order_status =
#{trainingOrderStatus},
</if>
<if test="trainingOrderAmount != null">training_order_amount =
#{trainingOrderAmount},
</if>
<if test="trainingOrderChannel != null">training_order_channel =
#{trainingOrderChannel},
</if>
<if test="trainingOrderTime != null">training_order_time =
#{trainingOrderTime},
</if>
<if test="remark != null">remark =
#{remark},
</if>
<if test="delFlag != null">del_flag =
#{delFlag},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteTrainingOrderById" parameterType="Long">
delete
from training_order
where id = #{id}
</delete>
<delete id="deleteTrainingOrderByIds" parameterType="String">
delete from training_order where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<select id="selectTrainingOrderVideoList"
parameterType="com.xinelu.manage.dto.trainingitem.NurseAppletPersonTrainingItemDTO"
resultType="com.xinelu.manage.vo.trainingorderdetails.NurseAppletPersonTrainingOrderDetailsVO">
SELECT
t.id trainingOrderId,
t.nurse_station_id,
t.nurse_station_person_id,
t.nurse_person_name,
t.training_order_status,
t.training_order_time,
tod.id trainingOrderDetailsId,
tod.training_order_no,
tod.training_item_id,
tod.training_parent_id,
tod.training_item_title,
tod.training_item_code,
tod.training_item_price,
tod.training_item_cover_url,
tod.training_item_poster_url,
tod.training_item_type,
tod.training_item_details,
tod.training_item_content,
tod.del_flag
FROM
training_order t
LEFT JOIN training_order_details tod ON t.training_order_no = tod.training_order_no
<where>
<if test="trainingOrderDetailsId != null ">
and tod.id = #{trainingOrderDetailsId}
</if>
<if test="trainingItemId != null ">
and tod.training_item_id = #{trainingItemId}
</if>
<if test="trainingParentId != null ">
and tod.training_parent_id = #{trainingParentId}
</if>
<if test="trainingItemType != null and trainingItemType != ''">
and tod.training_item_type &lt;&gt; #{trainingItemType}
</if>
<if test="trainingOrderStatus != null and trainingOrderStatus != ''">
and t.training_order_status = #{trainingOrderStatus}
</if>
<if test="nurseStationPersonId != null ">
and t.nurse_station_person_id = #{nurseStationPersonId}
</if>
<if test="trainingOrderNo != null and trainingOrderNo != ''">
and t.training_order_no = #{trainingOrderNo}
</if>
AND t.del_flag = 0
AND tod.del_flag = 0
</where>
ORDER BY
t.training_order_time DESC
</select>
<select id="selectTrainingOrderVideoDetailsList"
parameterType="com.xinelu.manage.dto.trainingitem.NurseAppletPersonTrainingItemDTO"
resultMap="NurseAppletPersonTrainingOrderItemVOResult">
SELECT
tod.training_order_id,
tod.training_order_no,
tod.training_item_id,
tod.training_parent_id,
tod.training_item_title,
tod.training_item_code,
tod.training_item_price,
tod.training_item_cover_url,
tod.training_item_poster_url,
tod.training_item_type,
tod.training_item_details,
tod.training_item_content,
toid.training_item_directory_id,
toid.item_directory_code,
toid.training_order_no,
toid.item_directory_name,
toid.item_directory_title,
toid.item_directory_video_duration,
toid.item_directory_url,
toid.item_directory_introduce,
toid.item_directory_watch_status,
( SELECT watch_time FROM training_item_watch_record WHERE training_item_directory_id =
toid.training_item_directory_id AND training_order_id = tod.training_order_id) watch_time,
(select training_order_status from training_order where training_order_no = tod.training_order_no)
training_order_status
FROM
training_order_details tod
LEFT JOIN training_order_item_directory toid ON tod.training_order_no = toid.training_order_no
<where>
<if test="trainingItemId != null ">
and tod.training_item_id = #{trainingItemId}
</if>
<if test="trainingOrderDetailsId != null ">
and toid.training_order_details_id = #{trainingOrderDetailsId}
</if>
<if test="trainingItemType != null and trainingItemType != ''">
and tod.training_item_type = #{trainingItemType}
</if>
<if test="trainingOrderNo != null and trainingOrderNo != ''">
and tod.training_order_no = #{trainingOrderNo}
</if>
AND tod.del_flag = 0
</where>
</select>
<select id="selectTrainingOrderVOList" parameterType="com.xinelu.manage.vo.trainingorder.TrainingOrderVO"
resultType="com.xinelu.manage.vo.trainingorder.TrainingOrderVO">
select tor.id,
tor.nurse_station_id,
tor.nurse_station_person_id,
tor.nurse_person_name,
tor.training_order_no,
tor.training_order_status,
tor.training_order_amount,
tor.training_order_channel,
tor.training_order_time,
tor.remark,
( select training_item_title from training_order_details
where training_order_no = tor.training_order_no
and training_parent_id = #{trainingParentId} ) trainingItemTitle,
ns.nurse_station_name
from training_order tor
left join nurse_station ns on tor.nurse_station_id = ns.id
<where>
<if test="nurseStationId != null ">
and tor.nurse_station_id = #{nurseStationId}
</if>
<if test="nurseStationPersonId != null ">
and tor.nurse_station_person_id = #{nurseStationPersonId}
</if>
<if test="nursePersonName != null and nursePersonName != ''">
and tor.nurse_person_name like concat('%', #{nursePersonName}, '%')
</if>
<if test="trainingOrderNo != null and trainingOrderNo != ''">
and tor.training_order_no = #{trainingOrderNo}
</if>
<if test="trainingOrderStatus != null and trainingOrderStatus != ''">
and tor.training_order_status = #{trainingOrderStatus}
</if>
<if test="trainingOrderTime != null ">
and tor.training_order_time = #{trainingOrderTime}
</if>
AND tor.del_flag = 0
</where>
order by tor.training_order_time desc
</select>
<select id="getTrainingOrderInfoByOrderNo" parameterType="string" resultType="trainingOrder">
<include refid="selectTrainingOrderVo"/>
where training_order_no = #{trainingOrderNo}
</select>
<update id="updateTrainingOrderStatus" parameterType="string">
update training_order
set training_order_status = #{trainingOrderStatus},
update_time = now()
where del_flag = 0
and training_order_no = #{trainingOrderNo}
and training_order_status &lt;&gt; #{trainingOrderStatus}
</update>
<select id="getWaitPayTrainingOrderList" parameterType="string" resultType="trainingOrder">
select
id,
nurse_station_person_id,
training_order_no,
training_order_status,
training_order_amount,
training_order_channel,
training_order_time
from
training_order
<where>
del_flag = 0 and training_order_status = #{trainingOrderStatus}
<if test="trainingOrderList != null and trainingOrderList.size() > 0">
and training_order_no in
<foreach collection="trainingOrderList" item="trainingOrderNo" open="(" separator="," close=")">
#{trainingOrderNo}
</foreach>
</if>
</where>
</select>
<select id="getWaitPayTrainingOrderListByTime" resultType="trainingOrder">
select id,
nurse_station_person_id,
training_order_no,
training_order_status,
training_order_amount,
training_order_channel,
training_order_time
from training_order
where del_flag = 0
and training_order_time &lt;= #{time}
and training_order_status = #{trainingOrderStatus}
</select>
<update id="updateBatchTrainingOrderStatus">
update training_order set training_order_status = #{trainingOrderStatus}, update_time = now()
where
del_flag = 0
and training_order_status &lt;&gt; #{trainingOrderStatus}
and training_order_no in
<foreach collection="orderNoList" item="trainingOrderNo" open="(" separator="," close=")">
#{trainingOrderNo}
</foreach>
</update>
<select id="getTrainingRefundOrderList" resultType="com.xinelu.manage.vo.TrainingRefundOrderVO">
SELECT tr.training_order_no,
tr.training_order_status,
rf.out_refund_no
FROM training_order tr
INNER JOIN refund_info rf ON tr.training_order_no = rf.order_no
WHERE tr.training_order_status = #{trainingOrderStatus}
AND rf.wechat_refund_status = #{refundStatus}
AND tr.del_flag = 0
</select>
<select id="selectTrainingOrderVoById" resultType="com.xinelu.manage.vo.trainingorder.TrainingOrderVO"
resultMap="TrainingOrderVOResult">
select tod.id trainingOrderDetailsId,
tod.training_parent_id,
tod.training_item_title,
tod.training_item_code,
tod.training_item_price,
tod.training_item_cover_url,
tod.training_item_poster_url,
tod.training_item_type,
tod.training_item_details,
tod.training_item_content,
tor.id trainingOrderId,
tor.nurse_station_id,
tor.nurse_station_person_id,
tor.nurse_person_name,
tor.training_order_no,
tor.training_order_status,
tor.training_order_amount,
tor.training_order_channel,
tor.training_order_time,
tor.remark,
ns.nurse_station_name
from training_order tor
left join training_order_details tod ON tor.training_order_no = tod.training_order_no
left join nurse_station ns on tor.nurse_station_id = ns.id
where tor.id = #{id}
AND tor.del_flag = 0
AND tod.del_flag = 0
</select>
<select id="selectRefundInformation" resultType="com.xinelu.manage.vo.trainingorder.TrainingOrderVO">
select tor.nurse_person_name,
tor.training_order_no,
tor.training_order_status,
tor.training_order_amount,
(select training_item_title
from training_order_details
where training_order_no = tor.training_order_no
and training_item_type = #{trainingItemType}) trainingItemTitle,
ns.nurse_station_name
from training_order tor
left join nurse_station ns on tor.nurse_station_id = ns.id
where tor.id = #{id}
</select>
</mapper>

View File

@ -0,0 +1,295 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xinelu.manage.mapper.trainingorderitemdirectory.TrainingOrderItemDirectoryMapper">
<resultMap type="TrainingOrderItemDirectory" id="TrainingOrderItemDirectoryResult">
<result property="id" column="id"/>
<result property="trainingOrderDetailsId" column="training_order_details_id"/>
<result property="trainingOrderNo" column="training_order_no"/>
<result property="trainingItemDirectoryId" column="training_item_directory_id"/>
<result property="itemDirectoryName" column="item_directory_name"/>
<result property="itemDirectoryCode" column="item_directory_code"/>
<result property="itemDirectoryTitle" column="item_directory_title"/>
<result property="itemDirectoryVideoDuration" column="item_directory_video_duration"/>
<result property="itemDirectoryIntroduce" column="item_directory_introduce"/>
<result property="itemDirectoryWatchStatus" column="item_directory_watch_status"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<sql id="selectTrainingOrderItemDirectoryVo">
select id,
training_order_details_id,
training_order_no,
training_item_directory_id,
item_directory_name,
item_directory_code,
item_directory_title,
item_directory_url,
item_directory_video_duration,
item_directory_introduce,
item_directory_watch_status,
create_by,
create_time,
update_by,
update_time
from training_order_item_directory
</sql>
<select id="selectTrainingOrderItemDirectoryList" parameterType="TrainingOrderItemDirectory"
resultMap="TrainingOrderItemDirectoryResult">
<include refid="selectTrainingOrderItemDirectoryVo"/>
<where>
<if test="trainingOrderDetailsId != null ">
and training_order_details_id = #{trainingOrderDetailsId}
</if>
<if test="trainingOrderNo != null and trainingOrderNo != ''">
and training_order_no = #{trainingOrderNo}
</if>
<if test="trainingItemDirectoryId != null ">
and training_item_directory_id = #{trainingItemDirectoryId}
</if>
<if test="itemDirectoryName != null and itemDirectoryName != ''">
and item_directory_name like concat('%', #{itemDirectoryName}, '%')
</if>
<if test="itemDirectoryCode != null and itemDirectoryCode != ''">
and item_directory_code = #{itemDirectoryCode}
</if>
<if test="itemDirectoryTitle != null and itemDirectoryTitle != ''">
and item_directory_title = #{itemDirectoryTitle}
</if>
<if test="itemDirectoryIntroduce != null and itemDirectoryIntroduce != ''">
and item_directory_introduce = #{itemDirectoryIntroduce}
</if>
<if test="itemDirectoryWatchStatus != null and itemDirectoryWatchStatus != ''">
and item_directory_watch_status = #{itemDirectoryWatchStatus}
</if>
</where>
</select>
<select id="selectTrainingOrderItemDirectoryById" parameterType="Long"
resultMap="TrainingOrderItemDirectoryResult">
<include refid="selectTrainingOrderItemDirectoryVo"/>
where id = #{id}
</select>
<insert id="insertTrainingOrderItemDirectory" parameterType="TrainingOrderItemDirectory" useGeneratedKeys="true"
keyProperty="id">
insert into training_order_item_directory
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="trainingOrderDetailsId != null">training_order_details_id,
</if>
<if test="trainingOrderNo != null">training_order_no,
</if>
<if test="trainingItemDirectoryId != null">training_item_directory_id,
</if>
<if test="itemDirectoryName != null">item_directory_name,
</if>
<if test="itemDirectoryCode != null">item_directory_code,
</if>
<if test="itemDirectoryTitle != null">item_directory_title,
</if>
<if test="itemDirectoryUrl != null">item_directory_url,
</if>
<if test="itemDirectoryVideoDuration != null">item_directory_video_duration,
</if>
<if test="itemDirectoryIntroduce != null">item_directory_introduce,
</if>
<if test="itemDirectoryWatchStatus != null">item_directory_watch_status,
</if>
<if test="createBy != null">create_by,
</if>
<if test="createTime != null">create_time,
</if>
<if test="updateBy != null">update_by,
</if>
<if test="updateTime != null">update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="trainingOrderDetailsId != null">#{trainingOrderDetailsId},
</if>
<if test="trainingOrderNo != null">#{trainingOrderNo},
</if>
<if test="trainingItemDirectoryId != null">#{trainingItemDirectoryId},
</if>
<if test="itemDirectoryName != null">#{itemDirectoryName},
</if>
<if test="itemDirectoryCode != null">#{itemDirectoryCode},
</if>
<if test="itemDirectoryTitle != null">#{itemDirectoryTitle},
</if>
<if test="itemDirectoryUrl != null">#{itemDirectoryUrl},
</if>
<if test="itemDirectoryVideoDuration != null">#{itemDirectoryVideoDuration},
</if>
<if test="itemDirectoryIntroduce != null">#{itemDirectoryIntroduce},
</if>
<if test="itemDirectoryWatchStatus != null">#{itemDirectoryWatchStatus},
</if>
<if test="createBy != null">#{createBy},
</if>
<if test="createTime != null">#{createTime},
</if>
<if test="updateBy != null">#{updateBy},
</if>
<if test="updateTime != null">#{updateTime},
</if>
</trim>
</insert>
<update id="updateTrainingOrderItemDirectory" parameterType="TrainingOrderItemDirectory">
update training_order_item_directory
<trim prefix="SET" suffixOverrides=",">
<if test="trainingOrderDetailsId != null">training_order_details_id =
#{trainingOrderDetailsId},
</if>
<if test="trainingOrderNo != null">training_order_no =
#{trainingOrderNo},
</if>
<if test="trainingItemDirectoryId != null">training_item_directory_id =
#{trainingItemDirectoryId},
</if>
<if test="itemDirectoryName != null">item_directory_name =
#{itemDirectoryName},
</if>
<if test="itemDirectoryCode != null">item_directory_code =
#{itemDirectoryCode},
</if>
<if test="itemDirectoryTitle != null">item_directory_title =
#{itemDirectoryTitle},
</if>
<if test="itemDirectoryUrl != null">item_directory_url =
#{itemDirectoryUrl},
</if>
<if test="itemDirectoryVideoDuration != null">item_directory_video_duration =
#{itemDirectoryVideoDuration},
</if>
<if test="itemDirectoryIntroduce != null">item_directory_introduce =
#{itemDirectoryIntroduce},
</if>
<if test="itemDirectoryWatchStatus != null">item_directory_watch_status =
#{itemDirectoryWatchStatus},
</if>
<if test="createBy != null">create_by =
#{createBy},
</if>
<if test="createTime != null">create_time =
#{createTime},
</if>
<if test="updateBy != null">update_by =
#{updateBy},
</if>
<if test="updateTime != null">update_time =
#{updateTime},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteTrainingOrderItemDirectoryById" parameterType="Long">
delete
from training_order_item_directory
where id = #{id}
</delete>
<delete id="deleteTrainingOrderItemDirectoryByIds" parameterType="String">
delete from training_order_item_directory where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<insert id="insertTrainingOrderItemDirectoryList" parameterType="java.util.List">
insert into training_order_item_directory(
training_order_details_id,
training_order_no,
training_item_directory_id,
item_directory_name,
item_directory_code,
item_directory_title,
item_directory_url,
item_directory_video_duration,
item_directory_introduce,
item_directory_watch_status,
create_by,
create_time,
update_by,
update_time
) values
<foreach item="trainingOrderItemDirectory" index="index" collection="list" separator=",">
(
#{trainingOrderItemDirectory.trainingOrderDetailsId},
#{trainingOrderItemDirectory.trainingOrderNo},
#{trainingOrderItemDirectory.trainingItemDirectoryId},
#{trainingOrderItemDirectory.itemDirectoryName},
#{trainingOrderItemDirectory.itemDirectoryCode},
#{trainingOrderItemDirectory.itemDirectoryTitle},
#{trainingOrderItemDirectory.itemDirectoryUrl},
#{trainingOrderItemDirectory.itemDirectoryVideoDuration},
#{trainingOrderItemDirectory.itemDirectoryIntroduce},
#{trainingOrderItemDirectory.itemDirectoryWatchStatus},
#{trainingOrderItemDirectory.createBy},
#{trainingOrderItemDirectory.createTime},
#{trainingOrderItemDirectory.updateBy},
#{trainingOrderItemDirectory.updateTime}
)
</foreach>
</insert>
<update id="updatePersonTrainingOrderItemDirectory" parameterType="TrainingOrderItemDirectory">
UPDATE training_order_item_directory
SET item_directory_watch_status = #{itemDirectoryWatchStatus},
update_time = now()
WHERE training_order_no = #{trainingOrderNo}
AND training_item_directory_id = #{trainingItemDirectoryId}
</update>
<select id="getTrainingOrderItemDirectoryList"
resultType="com.xinelu.manage.vo.trainingorderitemdirectory.TrainingOrderItemDirectoryInfoVO">
SELECT
t.nurse_station_id,
t.nurse_station_person_id,
t.nurse_person_name,
t.training_order_status,
tod.training_item_id,
tod.training_item_type,
tod.training_order_id,
toid.training_item_directory_id,
toid.training_order_no,
toid.item_directory_watch_status,
(SELECT watch_time FROM training_item_watch_record WHERE training_item_directory_id =
toid.training_item_directory_id AND training_order_id = tod.training_order_id) watch_time
FROM
training_order_item_directory toid
LEFT JOIN training_order_details tod ON toid.training_order_no = tod.training_order_no
LEFT JOIN training_order t ON tod.training_order_no = t.training_order_no
<where>
<if test="nurseStationPersonId != null ">
and t.nurse_station_person_id = #{nurseStationPersonId}
</if>
<if test="trainingOrderStatus != null and trainingOrderStatus != ''">
and t.training_order_status = #{trainingOrderStatus}
</if>
<if test="trainingItemId != null ">
and tod.training_item_id = #{trainingItemId}
</if>
<if test="trainingItemDirectoryIdList != null and trainingItemDirectoryIdList.size() > 0">
and toid.training_item_directory_id in
<foreach item="trainingItemDirectoryId" collection="trainingItemDirectoryIdList" open="(" separator=","
close=")">
#{trainingItemDirectoryId}
</foreach>
</if>
AND t.del_flag = 0
AND tod.del_flag = 0
</where>
GROUP BY
toid.training_item_directory_id
</select>
</mapper>