This commit is contained in:
2025-07-01 17:54:58 +08:00
commit 57dcd609e2
5136 changed files with 346184 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.zhwl</groupId>
<artifactId>zhwl-travel-agency</artifactId>
<version>3.8.7</version>
</parent>
<description>旅行社订单模块</description>
<artifactId>zhwl-travel-agency-ticket-order</artifactId>
<dependencies>
<dependency>
<groupId>com.zhwl</groupId>
<artifactId>zhwl-travel-agency-guide</artifactId>
</dependency>
<dependency>
<groupId>com.zhwl</groupId>
<artifactId>zhwl-ticket-order</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -0,0 +1,185 @@
package com.zhwl.travelagency.order.controller;
import com.zhwl.common.annotation.RepeatSubmit;
import com.zhwl.common.annotation.SelectDictText;
import com.zhwl.common.core.controller.BaseController;
import com.zhwl.common.core.domain.AjaxResult;
import com.zhwl.common.core.domain.ZdyTicketOrderVerificationHistory;
import com.zhwl.common.core.domain.entity.SysUser;
import com.zhwl.common.core.page.TableDataInfo;
import com.zhwl.common.utils.SecurityUtils;
import com.zhwl.common.utils.poi.ExcelUtil;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderBo;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderRefundBo;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderRefundCheckBo;
import com.zhwl.ticket.order.domain.vo.ZdyTicketOrderRefundVo;
import com.zhwl.ticket.order.domain.vo.ZdyTicketOrderVo;
import com.zhwl.ticket.order.dto.ZdyTicketOrderDto;
import com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto;
import com.zhwl.travelagency.order.domain.UserTouristTemplate;
import com.zhwl.travelagency.order.dto.ZdyTravelAgencyTicketDTO;
import com.zhwl.travelagency.order.service.IZdyTravelAgencyTicketService;
import com.zhwl.travelagency.order.vo.ZdyTravelAgencyTicketVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
import java.util.List;
/**
* 旅行社售卖门票
*
* @author wangxing
* @date 2024-06-24
*/
@SelectDictText
@RestController
@RequestMapping("/travelagency/ticket")
public class ZdyTravelAgencyTicketController extends BaseController {
@Autowired
private IZdyTravelAgencyTicketService zdyTravelAgencyTicketService;
/**
* 查询旅行社可售卖门票列表
*
* @param zdyTravelAgencyTicketDTO
* @return
*/
@PreAuthorize("@ss.hasPermi('travelagency:ticket:list')")
@PostMapping("/list")
public TableDataInfo list(@RequestBody ZdyTravelAgencyTicketDTO zdyTravelAgencyTicketDTO) {
List<ZdyTravelAgencyTicketVO> list = zdyTravelAgencyTicketService.selectSalesTickets(zdyTravelAgencyTicketDTO);
return getDataTable(list);
}
/**
* 旅行社下单接口
*/
@RepeatSubmit
@PostMapping("/order")
public AjaxResult order(@RequestBody ZdyTicketOrderBo zdyTicketOrder) {
return zdyTravelAgencyTicketService.order(zdyTicketOrder);
}
/**
* 下载游客模板
*/
@PostMapping("/download/tourist/template")
public void downloadTouristTemplate(HttpServletResponse response) {
ExcelUtil<UserTouristTemplate> util = new ExcelUtil<>(UserTouristTemplate.class);
util.exportExcel(response, Collections.emptyList(), "游客模板");
}
/**
* 导入游客信息
*/
@PostMapping("/import/tourist/data")
public AjaxResult importTouristData(MultipartFile file) throws Exception {
ExcelUtil<UserTouristTemplate> util = new ExcelUtil<>(UserTouristTemplate.class);
List<UserTouristTemplate> userList = util.importExcel(file.getInputStream());
List<UserTouristTemplate> list = zdyTravelAgencyTicketService.importData(userList);
return success(list);
}
/**
* 旅行社角色提交退款申请,如果不需要审核,直接可以退款
* 如果需要审核,则管理员角色需要点审核
* <p>
* 订单退款 申请
*/
@PreAuthorize("@ss.hasPermi('travelagency:ticketOrder:refund:apply')")
@PostMapping("/refund/apply")
public AjaxResult refundApply(@RequestBody ZdyTicketOrderRefundBo zdyTicketOrderRefundBo) throws Exception {
zdyTicketOrderRefundBo.setSysUserId(getUserId());
zdyTicketOrderRefundBo.setUserName(getLoginUser().getUser().getNickName());
return zdyTravelAgencyTicketService.refundApply(zdyTicketOrderRefundBo);
}
/**
* 订单退款 审核
*/
@PreAuthorize("@ss.hasPermi('travelagency:ticketOrder:refund:check')")
@PostMapping("/refund/check")
public AjaxResult refundCheck(@RequestBody ZdyTicketOrderRefundCheckBo zdyTicketOrderRefundCheckBo) throws Exception {
SysUser user = SecurityUtils.getLoginUser().getUser();
zdyTicketOrderRefundCheckBo.setUserName(user.getNickName());
return zdyTravelAgencyTicketService.refundCheck(zdyTicketOrderRefundCheckBo);
}
/**
* 管理员角色 主动退款
*/
@PreAuthorize("@ss.hasPermi('travelagency:ticketOrder:refund')")
@PostMapping("/active/refund")
public AjaxResult activeRefund(@RequestBody ZdyTicketOrderRefundBo zdyTicketOrderRefundBo) throws Exception {
zdyTicketOrderRefundBo.setSysUserId(getUserId());
zdyTicketOrderRefundBo.setUserName(getLoginUser().getUser().getNickName());
return zdyTravelAgencyTicketService.activeRefund(zdyTicketOrderRefundBo);
}
/**
* 查询旅行社订单列表
*
* @param zdyTicketOrderDto
* @return
*/
@SelectDictText
@PreAuthorize("@ss.hasPermi('travelagency:ticketOrder:list')")
@GetMapping("/order/list")
public TableDataInfo orderList(ZdyTicketOrderDto zdyTicketOrderDto) {
List<ZdyTicketOrderVo> list = zdyTravelAgencyTicketService.orderList(SecurityUtils.getDeptId(), zdyTicketOrderDto);
return getDataTable(list);
}
/**
* 查询旅行社订单详情
*
* @param id
* @return
*/
@PreAuthorize("@ss.hasPermi('travelagency:ticketOrder:detail')")
@GetMapping("/order/detail/{id}")
public AjaxResult orderDetail(@PathVariable("id") Long id) {
return success(zdyTravelAgencyTicketService.orderDetail(id));
}
/**
* 查询旅行社退款订单列表
*
* @param zdyTicketOrderRefundDto
* @return
*/
@PreAuthorize("@ss.hasPermi('travelagency:refund:ticketOrder:list')")
@GetMapping("/refund/order/list")
public TableDataInfo refundOrderList(ZdyTicketOrderRefundDto zdyTicketOrderRefundDto) {
List<ZdyTicketOrderRefundVo> list = zdyTravelAgencyTicketService.refundOrderList(SecurityUtils.getDeptId(), zdyTicketOrderRefundDto);
return getDataTable(list);
}
/**
* 查询旅行社退款订单详情
*
* @param id
* @return
*/
@PreAuthorize("@ss.hasPermi('travelagency:refund:ticketOrder:detail')")
@GetMapping("/refund/order/detail/{id}")
public AjaxResult refundOrderDetail(@PathVariable("id") Long id) {
return success(zdyTravelAgencyTicketService.refundOrderDetail(id));
}
/**
* 查询核销订单
*/
@PreAuthorize("@ss.hasPermi('travelagency:ticketOrderActivityHis:list')")
@GetMapping("/handVerificationlist")
public TableDataInfo handVerificationlist(ZdyTicketOrderVerificationHistory zdyTicketOrderActivityHistory) {
startPage();
List<ZdyTicketOrderVerificationHistory> list = zdyTravelAgencyTicketService.selectZdyTicketOrderVerificationHistoryList(zdyTicketOrderActivityHistory);
return getDataTable(list);
}
}

View File

@@ -0,0 +1,61 @@
package com.zhwl.travelagency.order.domain;
import com.zhwl.common.annotation.Excel;
import java.io.Serializable;
public class UserTouristTemplate implements Serializable {
private static final long serialVersionUID = -8753696202187451521L;
/**
* 主键
*/
private Long id;
/**
* 姓名
*/
@Excel(name = "姓名")
private String name;
/**
* 手机号
*/
@Excel(name = "手机号")
private String mobile;
/**
* 身份证号
*/
@Excel(name = "身份证号")
private String idCard;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}

View File

@@ -0,0 +1,147 @@
package com.zhwl.travelagency.order.domain;
import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zhwl.common.annotation.Excel;
import com.zhwl.common.core.domain.BaseEntity;
/**
* 旅行社销售记录对象 zdy_travel_agency_order_sales_record
*
* @author wangxing
* @date 2024-07-05
*/
public class ZdyTravelAgencyOrderSalesRecord extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
private Long id;
/**
* 汇总时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@Excel(name = "汇总时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date summaryTime;
/**
* 旅行社id
*/
@Excel(name = "旅行社id")
private Long travelAgencyId;
/**
* 门票id
*/
@Excel(name = "门票id")
private Long ticketId;
/**
* 销售订单数量
*/
@Excel(name = "销售订单数量")
private Integer salesOrderQuantity;
/**
* 销售金额
*/
@Excel(name = "销售金额")
private BigDecimal salesOrderPrice;
/**
* 退款订单数量
*/
@Excel(name = "退款订单数量")
private Integer refundOrderQuantity;
/**
* 退款金额
*/
@Excel(name = "退款金额")
private BigDecimal refundOrderPrice;
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setSummaryTime(Date summaryTime) {
this.summaryTime = summaryTime;
}
public Date getSummaryTime() {
return summaryTime;
}
public void setTravelAgencyId(Long travelAgencyId) {
this.travelAgencyId = travelAgencyId;
}
public Long getTravelAgencyId() {
return travelAgencyId;
}
public void setTicketId(Long ticketId) {
this.ticketId = ticketId;
}
public Long getTicketId() {
return ticketId;
}
public Integer getSalesOrderQuantity() {
return salesOrderQuantity;
}
public void setSalesOrderQuantity(Integer salesOrderQuantity) {
this.salesOrderQuantity = salesOrderQuantity;
}
public void setSalesOrderPrice(BigDecimal salesOrderPrice) {
this.salesOrderPrice = salesOrderPrice;
}
public BigDecimal getSalesOrderPrice() {
return salesOrderPrice;
}
public Integer getRefundOrderQuantity() {
return refundOrderQuantity;
}
public void setRefundOrderQuantity(Integer refundOrderQuantity) {
this.refundOrderQuantity = refundOrderQuantity;
}
public void setRefundOrderPrice(BigDecimal refundOrderPrice) {
this.refundOrderPrice = refundOrderPrice;
}
public BigDecimal getRefundOrderPrice() {
return refundOrderPrice;
}
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
.append("id", getId())
.append("summaryTime", getSummaryTime())
.append("travelAgencyId", getTravelAgencyId())
.append("ticketId", getTicketId())
.append("salesOrderQuantity", getSalesOrderQuantity())
.append("salesOrderPrice", getSalesOrderPrice())
.append("refundOrderQuantity", getRefundOrderQuantity())
.append("refundOrderPrice", getRefundOrderPrice())
.toString();
}
}

View File

@@ -0,0 +1,41 @@
package com.zhwl.travelagency.order.dto;
import com.zhwl.common.core.domain.BaseEntity;
/**
* @Title: GuideSaleSummaryDTO
* @Author wangtao
* @Date 2024/6/28 10:54
* @description:
*/
public class ZdyTravelAgencyOrderSalesRecordDTO extends BaseEntity {
private static final long serialVersionUID = 7851078152786319920L;
/**
* 旅行社id
*/
private Long travelAgencyId;
/**
* 门票名称
*/
private String ticketName;
public Long getTravelAgencyId() {
return travelAgencyId;
}
public void setTravelAgencyId(Long travelAgencyId) {
this.travelAgencyId = travelAgencyId;
}
public String getTicketName() {
return ticketName;
}
public void setTicketName(String ticketName) {
this.ticketName = ticketName;
}
}

View File

@@ -0,0 +1,40 @@
package com.zhwl.travelagency.order.dto;
import com.zhwl.common.core.domain.BaseEntity;
/**
* @Title: ZdyTravelAgencyTicketDTO
* @Author wangtao
* @Date 2024/6/28 15:01
* @description: 旅行社售卖门票
*/
public class ZdyTravelAgencyTicketDTO extends BaseEntity {
private static final long serialVersionUID = 5828220841929104642L;
/**
* 旅行社id
*/
private Long travelAgencyId;
/**
* 门票名称
*/
private String ticketName;
public Long getTravelAgencyId() {
return travelAgencyId;
}
public void setTravelAgencyId(Long travelAgencyId) {
this.travelAgencyId = travelAgencyId;
}
public String getTicketName() {
return ticketName;
}
public void setTicketName(String ticketName) {
this.ticketName = ticketName;
}
}

View File

@@ -0,0 +1,79 @@
package com.zhwl.travelagency.order.mapper;
import com.zhwl.common.annotation.DataScope;
import com.zhwl.travelagency.order.domain.ZdyTravelAgencyOrderSalesRecord;
import com.zhwl.travelagency.order.dto.ZdyTravelAgencyOrderSalesRecordDTO;
import com.zhwl.travelagency.order.vo.ZdyTravelAgencyOrderSalesRecordVO;
import java.util.List;
/**
* 旅行社销售记录Mapper接口
*
* @author wangxing
* @date 2024-07-05
*/
public interface ZdyTravelAgencyOrderSalesRecordMapper {
/**
* 查询旅行社销售记录
*
* @param id 旅行社销售记录主键
* @return 旅行社销售记录
*/
public ZdyTravelAgencyOrderSalesRecord selectZdyTravelAgencyOrderSalesRecordById(Long id);
/**
* 查询旅行社销售记录列表
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 旅行社销售记录集合
*/
public List<ZdyTravelAgencyOrderSalesRecord> selectZdyTravelAgencyOrderSalesRecordList(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord);
/**
* 查询旅行社销售记录列表
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 旅行社销售记录集合
*/
@DataScope(deptAlias = "i")
public List<ZdyTravelAgencyOrderSalesRecordVO> selectZdyTravelAgencyOrderSalesRecordListReport(ZdyTravelAgencyOrderSalesRecordDTO zdyTravelAgencyOrderSalesRecordDTO);
/**
* 新增旅行社销售记录
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 结果
*/
public int insertZdyTravelAgencyOrderSalesRecord(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord);
/**
* 修改旅行社销售记录
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 结果
*/
public int updateZdyTravelAgencyOrderSalesRecord(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord);
/**
* 删除旅行社销售记录
*
* @param id 旅行社销售记录主键
* @return 结果
*/
public int deleteZdyTravelAgencyOrderSalesRecordById(Long id);
/**
* 批量删除旅行社销售记录
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteZdyTravelAgencyOrderSalesRecordByIds(Long[] ids);
int insertAndUpdate(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord);
@DataScope(deptAlias = "i")
ZdyTravelAgencyOrderSalesRecordVO summary(ZdyTravelAgencyOrderSalesRecordDTO zdyTravelAgencyOrderSalesRecordDTO);
}

View File

@@ -0,0 +1,55 @@
package com.zhwl.travelagency.order.mapper;
import com.zhwl.common.annotation.DataScope;
import com.zhwl.ticket.order.domain.vo.ZdyTicketOrderRefundVo;
import com.zhwl.ticket.order.domain.vo.ZdyTicketOrderVo;
import com.zhwl.ticket.order.dto.ZdyTicketOrderDto;
import com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto;
import com.zhwl.travelagency.order.dto.ZdyTravelAgencyTicketDTO;
import com.zhwl.travelagency.order.vo.ZdyTravelAgencyTicketVO;
import java.util.List;
/**
* @Title: ZdyTravelAgencyTicketMapper
* @Author wangtao
* @Date 2024/6/28 15:09
* @description:
*/
public interface ZdyTravelAgencyTicketMapper {
@DataScope(deptAlias = "i")
List<ZdyTravelAgencyTicketVO> selectSalesTickets(ZdyTravelAgencyTicketDTO zdyTravelAgencyTicketDTO);
/**
* 查询旅行社门票订单
*
* @param zdyTicketOrderDto
* @return
*/
@DataScope(deptAlias = "d")
List<ZdyTicketOrderVo> selectZdyTicketOrderList(ZdyTicketOrderDto zdyTicketOrderDto);
/**
* 只查询旅行社自己的门票订单
*
* @param zdyTicketOrderDto
* @return
*/
List<ZdyTicketOrderVo> selectZdyTicketOrderListNoDataScope(ZdyTicketOrderDto zdyTicketOrderDto);
/**
* 查询旅行社门票退款订单
*/
@DataScope(deptAlias = "d")
List<ZdyTicketOrderRefundVo> selectZdyTicketOrderRefundList(ZdyTicketOrderRefundDto zdyTicketOrderRefundDto);
/**
* 只查询当前旅行社门票退款订单
*/
List<ZdyTicketOrderRefundVo> selectZdyTicketOrderRefundListNoDataScope(ZdyTicketOrderRefundDto zdyTicketOrderRefundDto);
}

View File

@@ -0,0 +1,75 @@
package com.zhwl.travelagency.order.service;
import com.zhwl.travelagency.order.domain.ZdyTravelAgencyOrderSalesRecord;
import com.zhwl.travelagency.order.dto.ZdyTravelAgencyOrderSalesRecordDTO;
import com.zhwl.travelagency.order.vo.ZdyTravelAgencyOrderSalesRecordVO;
import java.util.List;
/**
* 旅行社销售记录Service接口
*
* @author wangxing
* @date 2024-07-05
*/
public interface IZdyTravelAgencyOrderSalesRecordService {
/**
* 查询旅行社销售记录
*
* @param id 旅行社销售记录主键
* @return 旅行社销售记录
*/
public ZdyTravelAgencyOrderSalesRecord selectZdyTravelAgencyOrderSalesRecordById(Long id);
/**
* 查询旅行社销售记录列表
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 旅行社销售记录集合
*/
public List<ZdyTravelAgencyOrderSalesRecord> selectZdyTravelAgencyOrderSalesRecordList(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord);
/**
* 报表查询
*
* @param zdyTravelAgencyOrderSalesRecordDTO
* @return
*/
public List<ZdyTravelAgencyOrderSalesRecordVO> selectZdyTravelAgencyOrderSalesRecordListReport(ZdyTravelAgencyOrderSalesRecordDTO zdyTravelAgencyOrderSalesRecordDTO);
/**
* 新增旅行社销售记录
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 结果
*/
public int insertZdyTravelAgencyOrderSalesRecord(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord);
/**
* 修改旅行社销售记录
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 结果
*/
public int updateZdyTravelAgencyOrderSalesRecord(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord);
/**
* 批量删除旅行社销售记录
*
* @param ids 需要删除的旅行社销售记录主键集合
* @return 结果
*/
public int deleteZdyTravelAgencyOrderSalesRecordByIds(Long[] ids);
/**
* 删除旅行社销售记录信息
*
* @param id 旅行社销售记录主键
* @return 结果
*/
public int deleteZdyTravelAgencyOrderSalesRecordById(Long id);
public int insertAndUpdate(ZdyTravelAgencyOrderSalesRecord record);
public ZdyTravelAgencyOrderSalesRecordVO summary(ZdyTravelAgencyOrderSalesRecordDTO zdyTravelAgencyOrderSalesRecordDTO);
}

View File

@@ -0,0 +1,52 @@
package com.zhwl.travelagency.order.service;
import com.zhwl.common.core.domain.AjaxResult;
import com.zhwl.common.core.domain.ZdyTicketOrder;
import com.zhwl.common.core.domain.ZdyTicketOrderItem;
import com.zhwl.common.core.domain.ZdyTicketOrderVerificationHistory;
import com.zhwl.ticket.order.domain.ZdyTicketOrderRefund;
import com.zhwl.ticket.order.domain.ZdyTicketOrderRefundItem;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderBo;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderRefundBo;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderRefundCheckBo;
import com.zhwl.ticket.order.domain.vo.ZdyTicketOrderRefundVo;
import com.zhwl.ticket.order.domain.vo.ZdyTicketOrderVo;
import com.zhwl.ticket.order.dto.ZdyTicketOrderDto;
import com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto;
import com.zhwl.travelagency.order.domain.UserTouristTemplate;
import com.zhwl.travelagency.order.dto.ZdyTravelAgencyTicketDTO;
import com.zhwl.travelagency.order.vo.ZdyTravelAgencyTicketVO;
import java.util.List;
/**
* @Title: ZdyTravelAgencyTicketService
* @Author wangtao
* @Date 2024/6/28 15:05
* @description:
*/
public interface IZdyTravelAgencyTicketService {
List<ZdyTravelAgencyTicketVO> selectSalesTickets(ZdyTravelAgencyTicketDTO zdyTravelAgencyTicketDTO);
AjaxResult order(ZdyTicketOrderBo zdyTicketOrder);
List<UserTouristTemplate> importData(List<UserTouristTemplate> userTourist);
AjaxResult refundCheck(ZdyTicketOrderRefundCheckBo zdyTicketOrderRefundCheckBo);
AjaxResult refundApply(ZdyTicketOrderRefundBo zdyTicketOrderRefund);
AjaxResult activeRefund(ZdyTicketOrderRefundBo zdyTicketOrderRefund);
List<ZdyTicketOrderVo> orderList(Long deptId, ZdyTicketOrderDto zdyTicketOrderDto);
ZdyTicketOrderVo orderDetail(Long id);
List<ZdyTicketOrderRefundVo> refundOrderList(Long deptId, ZdyTicketOrderRefundDto zdyTicketOrderRefundDto);
ZdyTicketOrderRefundVo refundOrderDetail(Long id);
List<ZdyTicketOrderVerificationHistory> selectZdyTicketOrderVerificationHistoryList(ZdyTicketOrderVerificationHistory zdyTicketOrderActivityHistory);
}

View File

@@ -0,0 +1,130 @@
package com.zhwl.travelagency.order.service.impl;
import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
import com.zhwl.common.core.domain.model.LoginUser;
import com.zhwl.common.utils.SecurityUtils;
import com.zhwl.travelagency.account.service.ITravelAgencyCommonService;
import com.zhwl.travelagency.order.domain.ZdyTravelAgencyOrderSalesRecord;
import com.zhwl.travelagency.order.dto.ZdyTravelAgencyOrderSalesRecordDTO;
import com.zhwl.travelagency.order.mapper.ZdyTravelAgencyOrderSalesRecordMapper;
import com.zhwl.travelagency.order.service.IZdyTravelAgencyOrderSalesRecordService;
import com.zhwl.travelagency.order.vo.ZdyTravelAgencyOrderSalesRecordVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* 旅行社销售记录Service业务层处理
*
* @author wangxing
* @date 2024-07-05
*/
@Service
public class ZdyTravelAgencyOrderSalesRecordServiceImpl implements IZdyTravelAgencyOrderSalesRecordService {
@Autowired
private ZdyTravelAgencyOrderSalesRecordMapper zdyTravelAgencyOrderSalesRecordMapper;
@Autowired
private ITravelAgencyCommonService travelAgencyCommonService;
/**
* 查询旅行社销售记录
*
* @param id 旅行社销售记录主键
* @return 旅行社销售记录
*/
@Override
public ZdyTravelAgencyOrderSalesRecord selectZdyTravelAgencyOrderSalesRecordById(Long id) {
return zdyTravelAgencyOrderSalesRecordMapper.selectZdyTravelAgencyOrderSalesRecordById(id);
}
/**
* 查询旅行社销售记录列表
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 旅行社销售记录
*/
@Override
public List<ZdyTravelAgencyOrderSalesRecord> selectZdyTravelAgencyOrderSalesRecordList(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord) {
return zdyTravelAgencyOrderSalesRecordMapper.selectZdyTravelAgencyOrderSalesRecordList(zdyTravelAgencyOrderSalesRecord);
}
/**
* 报表查询
*
* @param zdyTravelAgencyOrderSalesRecordDTO 查询条件
* @return 旅行社销售记录
*/
@Override
public List<ZdyTravelAgencyOrderSalesRecordVO> selectZdyTravelAgencyOrderSalesRecordListReport(ZdyTravelAgencyOrderSalesRecordDTO zdyTravelAgencyOrderSalesRecordDTO) {
return zdyTravelAgencyOrderSalesRecordMapper.selectZdyTravelAgencyOrderSalesRecordListReport(zdyTravelAgencyOrderSalesRecordDTO);
}
/**
* 新增旅行社销售记录
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 结果
*/
@Override
public int insertZdyTravelAgencyOrderSalesRecord(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord) {
return zdyTravelAgencyOrderSalesRecordMapper.insertZdyTravelAgencyOrderSalesRecord(zdyTravelAgencyOrderSalesRecord);
}
/**
* 修改旅行社销售记录
*
* @param zdyTravelAgencyOrderSalesRecord 旅行社销售记录
* @return 结果
*/
@Override
public int updateZdyTravelAgencyOrderSalesRecord(ZdyTravelAgencyOrderSalesRecord zdyTravelAgencyOrderSalesRecord) {
return zdyTravelAgencyOrderSalesRecordMapper.updateZdyTravelAgencyOrderSalesRecord(zdyTravelAgencyOrderSalesRecord);
}
/**
* 批量删除旅行社销售记录
*
* @param ids 需要删除的旅行社销售记录主键
* @return 结果
*/
@Override
public int deleteZdyTravelAgencyOrderSalesRecordByIds(Long[] ids) {
return zdyTravelAgencyOrderSalesRecordMapper.deleteZdyTravelAgencyOrderSalesRecordByIds(ids);
}
/**
* 删除旅行社销售记录信息
*
* @param id 旅行社销售记录主键
* @return 结果
*/
@Override
public int deleteZdyTravelAgencyOrderSalesRecordById(Long id) {
return zdyTravelAgencyOrderSalesRecordMapper.deleteZdyTravelAgencyOrderSalesRecordById(id);
}
@Override
@Transactional
public int insertAndUpdate(ZdyTravelAgencyOrderSalesRecord record) {
return zdyTravelAgencyOrderSalesRecordMapper.insertAndUpdate(record);
}
/**
* 查询汇总信息
*
* @param zdyTravelAgencyOrderSalesRecordDTO
* @return
*/
public ZdyTravelAgencyOrderSalesRecordVO summary(ZdyTravelAgencyOrderSalesRecordDTO zdyTravelAgencyOrderSalesRecordDTO) {
ZdyTravelAgencyOrderSalesRecordVO summary = zdyTravelAgencyOrderSalesRecordMapper.summary(zdyTravelAgencyOrderSalesRecordDTO);
if (!Objects.isNull(summary)) {
BigDecimal salesOrderPrice = Objects.isNull(summary.getSalesOrderPrice()) ? BigDecimal.ZERO : summary.getSalesOrderPrice();
BigDecimal refundOrderPrice = Objects.isNull(summary.getRefundOrderPrice()) ? BigDecimal.ZERO : summary.getRefundOrderPrice();
summary.setActualOrderPrice(salesOrderPrice.subtract(refundOrderPrice));
}
return summary;
}
}

View File

@@ -0,0 +1,579 @@
package com.zhwl.travelagency.order.service.impl;
import cn.hutool.core.util.ObjUtil;
import com.alibaba.fastjson2.JSON;
import com.zhwl.cms.domain.ZdyArea;
import com.zhwl.cms.service.IZdyAreaService;
import com.zhwl.common.constant.TicketConstants;
import com.zhwl.common.core.domain.*;
import com.zhwl.common.core.domain.entity.SysDictData;
import com.zhwl.common.enums.DictTypeEnum;
import com.zhwl.common.exception.ServiceException;
import com.zhwl.common.utils.*;
import com.zhwl.common.utils.bean.BeanUtils;
import com.zhwl.common.utils.bean.BeanValidators;
import com.zhwl.ticket.order.domain.ZdyTicketOrderRefundItem;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderBo;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderPayBo;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderRefundBo;
import com.zhwl.ticket.order.domain.bo.ZdyTicketOrderRefundCheckBo;
import com.zhwl.ticket.order.domain.vo.*;
import com.zhwl.ticket.order.dto.ZdyTicketOrderDto;
import com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto;
import com.zhwl.ticket.order.service.IZdyOrderCheckService;
import com.zhwl.ticket.order.service.IZdyTicketOrderRefundService;
import com.zhwl.ticket.order.service.IZdyTicketOrderService;
import com.zhwl.ticket.order.service.IZdyTicketOrderVerificationHistoryService;
import com.zhwl.travelagency.account.domain.ZdyTravelAgencyInfo;
import com.zhwl.travelagency.account.domain.dto.RechargeDTO;
import com.zhwl.travelagency.account.enums.AccountBalanceOperatorTypeEnum;
import com.zhwl.travelagency.account.mapper.ZdyTravelAgencyInfoMapper;
import com.zhwl.travelagency.account.service.IZdyTravelAgencyInfoService;
import com.zhwl.travelagency.account.service.IZdyTravelAgencyTicketAuthorizationService;
import com.zhwl.travelagency.guide.domain.ZdyTravelAgencyGuide;
import com.zhwl.travelagency.guide.service.IZdyTravelAgencyGuideService;
import com.zhwl.travelagency.order.domain.UserTouristTemplate;
import com.zhwl.travelagency.order.domain.ZdyTravelAgencyOrderSalesRecord;
import com.zhwl.travelagency.order.dto.ZdyTravelAgencyTicketDTO;
import com.zhwl.travelagency.order.mapper.ZdyTravelAgencyTicketMapper;
import com.zhwl.travelagency.order.service.IZdyTravelAgencyOrderSalesRecordService;
import com.zhwl.travelagency.order.service.IZdyTravelAgencyTicketService;
import com.zhwl.travelagency.order.vo.ZdyTravelAgencyTicketVO;
import com.zhwl.user.mapper.ZdyUserTouristMapper;
import org.apache.commons.collections4.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.validation.Validator;
import java.math.BigDecimal;
import java.util.*;
import static com.zhwl.common.enums.ScenicOrderType.REFUND_STATUS_FOUR;
/**
* @Title: ZdyTravelAgencyTicketServiceImpl
* @Author wangtao
* @Date 2024/6/28 15:06
* @description:
*/
@Service
public class ZdyTravelAgencyTicketServiceImpl implements IZdyTravelAgencyTicketService {
private static final Logger LOG = LoggerFactory.getLogger(ZdyTravelAgencyTicketServiceImpl.class);
@Autowired
private ZdyTravelAgencyTicketMapper zdyTravelAgencyTicketMapper;
@Autowired
private ZdyTravelAgencyInfoMapper zdyTravelAgencyInfoMapper;
@Autowired
private IZdyTicketOrderService zdyTicketOrderService;
@Autowired
private IZdyTravelAgencyInfoService zdyTravelAgencyInfoService;
@Autowired
private ZdyUserTouristMapper zdyUserTouristMapper;
@Autowired
protected Validator validator;
@Autowired
private IZdyTicketOrderRefundService zdyTicketOrderRefundService;
@Autowired
private IZdyTravelAgencyGuideService zdyTravelAgencyGuideService;
@Autowired
private IZdyTravelAgencyOrderSalesRecordService zdyTravelAgencyOrderSalesRecordService;
@Autowired
private IZdyTravelAgencyTicketAuthorizationService zdyTravelAgencyTicketAuthorizationService;
@Autowired
private IZdyAreaService zdyAreaService;
@Autowired
private IZdyTicketOrderVerificationHistoryService zdyTicketOrderVerificationHistoryService;
@Autowired
private IZdyOrderCheckService orderCheckService;
/**
* 查询可售卖的门票列表
*
* @param zdyTravelAgencyTicketDTO
* @return
*/
@Override
public List<ZdyTravelAgencyTicketVO> selectSalesTickets(ZdyTravelAgencyTicketDTO zdyTravelAgencyTicketDTO) {
List<ZdyTravelAgencyTicketVO> zdyTravelAgencyTicketVOS = zdyTravelAgencyTicketMapper.selectSalesTickets(zdyTravelAgencyTicketDTO);
for (ZdyTravelAgencyTicketVO zdyTicket : zdyTravelAgencyTicketVOS) {
if (StringUtils.isNotEmpty(zdyTicket.getRefundRule())) {
Optional<SysDictData> refundTypeDict = DictUtils.getDictDataOption(DictTypeEnum.REFUND_TYPE,
zdyTicket.getRefundRule());
refundTypeDict.ifPresent(sysDictData -> {
zdyTicket.setRefundRuleName(sysDictData.getDictLabel());
zdyTicket.setRefundRemark(sysDictData.getRemark());
});
}
//门票分类
if (StringUtils.isNotEmpty(zdyTicket.getClassify())) {
zdyTicket.setClassifyName(DictUtils.getDictLabel(DictTypeEnum.TICKET_TYPE.getType(), zdyTicket.getClassify()));
}
//实名制
if (StringUtils.isNotEmpty(zdyTicket.getAuthenticationType())) {
zdyTicket.setAuthenticationTypeLabel(DictUtils.getDictLabel(DictTypeEnum.AUTHENTICATION_TYPE.getType(), zdyTicket.getAuthenticationType()));
}
}
return zdyTravelAgencyTicketVOS;
}
/**
* 旅行社账户下单
*
* @param zdyTicketOrder
* @return
*/
@Override
@Transactional
public AjaxResult order(ZdyTicketOrderBo zdyTicketOrder) {
LOG.info("旅行社下单入参【{}】", JSON.toJSONString(zdyTicketOrder));
validateOrder(zdyTicketOrder);
zdyTicketOrder.setUserId(0L);
zdyTicketOrder.setOrderSource(TicketConstants.ORDER_SOURCE_TRAVEL_AGENCY);
zdyTicketOrder.setCreateBy(SecurityUtils.getUserId().toString());
//查询导游所在 旅行社id
Long travelAgencyId = zdyTravelAgencyGuideService.selectZdyTravelAgencyGuideById(zdyTicketOrder.getTourId()).getTravelAgencyId();
zdyTicketOrder.setTravelAgencyId(travelAgencyId);
//新增主订单
OrderReturnVo orderReturnVo = zdyTicketOrderService.insertZdyTicketOrder(zdyTicketOrder);
LOG.info("旅行社下单返回【{}】", JSON.toJSONString(orderReturnVo));
//支付主订单
ZdyTicketOrderPayBo zdyTicketOrderPayBo = new ZdyTicketOrderPayBo();
BeanUtils.copyProperties(zdyTicketOrder, zdyTicketOrderPayBo);
zdyTicketOrderPayBo.setId(orderReturnVo.getId());
zdyTicketOrderService.payTicketOrder(zdyTicketOrderPayBo);
//构造订单统计信息
List<ZdyTicketOrderItem> orderItemList = orderReturnVo.getOrderItemList();
List<LxsOrderVo> lxsOrderVoList = new ArrayList<>();
orderItemList.forEach(item -> {
LxsOrderVo lxsOrderVo = LxsOrderVo.builder()
.type("1")//下单
.ticketName(item.getTicketName())
.orderTime(ObjUtil.isNull(item.getPaymentTime()) ? DateUtils.getNowDate() : item.getPaymentTime())
.buyQuantity(item.getBuyQuantity())
.totalPrice(item.getTotalPrice())
.ticketId(item.getTicketId())
.orderItemId(item.getId())
.build();
lxsOrderVoList.add(lxsOrderVo);
});
//新增销售汇总信息,方便后续统计
insertTravelAgencySalesRecords(travelAgencyId, lxsOrderVoList);
//开始扣减余额进行支付
try {
RechargeDTO rechargeDTO = new RechargeDTO();
rechargeDTO.setOrderNo(String.valueOf(orderReturnVo.getOrderCode()));
rechargeDTO.setId(travelAgencyId);
rechargeDTO.setOperatorType(AccountBalanceOperatorTypeEnum.XIA_DAN.getCode());
rechargeDTO.setAmount(BigDecimal.ZERO.subtract(zdyTicketOrder.getTotalPrice()));
zdyTravelAgencyInfoService.recharge(rechargeDTO);
} catch (Exception e) {
e.printStackTrace();
LOG.warn("下单扣减余额异常【{}】", e.getMessage());
throw new ServiceException("下单扣减余额异常【" + e.getMessage() + "");
}
return AjaxResult.success();
}
private void validateOrder(ZdyTicketOrderBo zdyTicketOrderBo) {
List<ZdyTicketOrderBo.ZdyTicketOrderItemParamBo> itemList = zdyTicketOrderBo.getOrderItemList();
if (CollectionUtils.isNotEmpty(itemList)) {
for (ZdyTicketOrderBo.ZdyTicketOrderItemParamBo zdyTicketOrderItemParamBo : itemList) {
//校验下游客跟购买数量是否一致
List<ZdyUserTourist> userIdcardList = zdyTicketOrderItemParamBo.getUserIdcardList();
if (CollectionUtils.isNotEmpty(userIdcardList)) {
//一票一码才校验
if (userIdcardList.size() != zdyTicketOrderItemParamBo.getBuyQuantity()) {
throw new ServiceException("购票数量与游客数量不符");
}
}
}
}
}
/**
* 导入游客数据
*
* @param userTouristList 游客数据
* @return
*/
@Override
public List<UserTouristTemplate> importData(List<UserTouristTemplate> userTouristList) {
if (CollectionUtils.isEmpty(userTouristList)) {
throw new ServiceException("导入游客数据不能为空!");
}
int successNum = 0;
int failureNum = 0;
StringBuilder successMsg = new StringBuilder();
StringBuilder failureMsg = new StringBuilder();
for (UserTouristTemplate userTouristTemplate : userTouristList) {
try {
// 验证是否存在这个用户
ZdyUserTourist u = zdyUserTouristMapper.selectZdyUserTouristByIdCardAndName(userTouristTemplate.getIdCard(), userTouristTemplate.getName());
if (StringUtils.isNull(u)) {
BeanValidators.validateWithException(validator, userTouristTemplate);
ZdyUserTourist userTourist = new ZdyUserTourist();
BeanUtils.copyProperties(userTouristTemplate, userTourist);
userTourist.setUserId(0L);
try {
userTourist.setCreateBy(SecurityUtils.getUsername());
} catch (Exception e) {
e.printStackTrace();
userTourist.setCreateBy("1");
}
userTourist.setCreateTime(DateUtils.getNowDate());
zdyUserTouristMapper.insertZdyUserTourist(userTourist);
userTouristTemplate.setId(userTourist.getId());
successNum++;
successMsg.append("<br/>").append(successNum).append("、账号 ").append(userTouristTemplate.getName()).append(" 导入成功");
} else {
//如果存在直接返回
userTouristTemplate.setId(u.getId());
}
} catch (Exception e) {
failureNum++;
String msg = "<br/>" + failureNum + "、账号 " + userTouristTemplate.getName() + " 导入失败:";
failureMsg.append(msg).append(e.getMessage());
LOG.error(msg, e);
}
}
if (failureNum > 0) {
failureMsg.insert(0, "很抱歉,导入失败!共 " + failureNum + " 条数据格式不正确,错误如下:");
throw new ServiceException(failureMsg.toString());
} else {
successMsg.insert(0, "恭喜您,数据已全部导入成功!共 " + successNum + " 条,数据如下:");
}
return userTouristList;
}
/**
* 退款申请
*
* @param zdyTicketOrderRefund
* @return
*/
@Override
@Transactional
public AjaxResult refundApply(ZdyTicketOrderRefundBo zdyTicketOrderRefund) {
LOG.info("旅行社退款申请入参【{}】", JSON.toJSONString(zdyTicketOrderRefund));
zdyTicketOrderRefund.setRefundSource(TicketConstants.ORDER_SOURCE_TRAVEL_AGENCY);
zdyTicketOrderRefund.setIsPay(Boolean.FALSE);
zdyTicketOrderRefund.setIsForce(Boolean.FALSE);
zdyTicketOrderRefund.setContent("申请退款");
OrderRefundReturnVo orderRefundReturnVo = zdyTicketOrderRefundService.addZdyTicketOrderRefund(zdyTicketOrderRefund);
return AjaxResult.success(orderRefundReturnVo.getId());
}
/**
* 退款审核
*
* @param zdyTicketOrderRefundCheckBo
* @return
*/
@Override
@Transactional
public AjaxResult refundCheck(ZdyTicketOrderRefundCheckBo zdyTicketOrderRefundCheckBo) {
LOG.info("管理员退款审核入参【{}】", JSON.toJSONString(zdyTicketOrderRefundCheckBo));
OrderRefundReturnVo orderRefundReturnVo = zdyTicketOrderRefundService.refundCheck(zdyTicketOrderRefundCheckBo);
LOG.info("管理员退款审核返回【{}】", JSON.toJSONString(orderRefundReturnVo));
//审核通过
if (Objects.equals(zdyTicketOrderRefundCheckBo.getRefundStatus(), REFUND_STATUS_FOUR.getStatus())) {
LOG.info("管理员退款审核通过,统计销售订单");
//查询退款主订单
ZdyTicketOrderRefundVo zdyTicketOrderRefund1 = zdyTicketOrderRefundService.selectZdyTicketOrderRefundById(zdyTicketOrderRefundCheckBo.getId());
//查询主订单
ZdyTicketOrder zdyTicketOrder = zdyTicketOrderService.selectZdyTicketOrderById(zdyTicketOrderRefund1.getOrderId());
//查询旅行社id
Long travelAgencyId = zdyTicketOrder.getTravelAgencyId();
//构造订单统计信息
List<ZdyTicketOrderRefundItem> orderRefundItemList = orderRefundReturnVo.getOrderRefundItemList();
List<LxsOrderVo> lxsOrderVoList = new ArrayList<>();
orderRefundItemList.forEach(item -> {
LxsOrderVo lxsOrderVo = LxsOrderVo.builder()
.type("2")//退票
.ticketName(item.getTicketName())
.refundTime(zdyTicketOrderRefund1.getRefundTime())
.refundQuantity(item.getRefundQuantity())
.refundTotalPrice(item.getActualPrice())
.ticketId(item.getTicketId())
.orderRefundItemId(item.getId())
.build();
lxsOrderVoList.add(lxsOrderVo);
});
insertTravelAgencySalesRecords(travelAgencyId, lxsOrderVoList);
LOG.info("旅行社审核通过退款操作账户余额开始");
try {
RechargeDTO rechargeDTO = new RechargeDTO();
rechargeDTO.setId(travelAgencyId);
rechargeDTO.setOperatorType(AccountBalanceOperatorTypeEnum.TUI_KUAN.getCode());
rechargeDTO.setAmount(lxsOrderVoList.stream().map(LxsOrderVo::getRefundTotalPrice).reduce(BigDecimal::add).get());
rechargeDTO.setOrderNo(orderRefundReturnVo.getRefundCode());
zdyTravelAgencyInfoService.recharge(rechargeDTO);
} catch (Exception e) {
e.printStackTrace();
LOG.warn("旅行社审核通过退款操作账户余额异常【{}】", e.getMessage());
throw new ServiceException("旅行社审核通过退款操作账户余额异常【" + e.getMessage() + "");
}
}
return AjaxResult.success(orderRefundReturnVo);
}
/**
* 管理员主动退款
*
* @param zdyTicketOrderRefundBo
* @return
*/
@Override
@Transactional
public AjaxResult activeRefund(ZdyTicketOrderRefundBo zdyTicketOrderRefundBo) {
LOG.info("主动退款入参【{}】", JSON.toJSONString(zdyTicketOrderRefundBo));
zdyTicketOrderRefundBo.setRefundSource(TicketConstants.ORDER_SOURCE_TRAVEL_AGENCY);
zdyTicketOrderRefundBo.setIsPay(Boolean.TRUE);
zdyTicketOrderRefundBo.setIsForce(Boolean.FALSE);
zdyTicketOrderRefundBo.setContent("主动退款");
OrderRefundReturnVo orderRefundReturnVo = zdyTicketOrderRefundService.addZdyTicketOrderRefund(zdyTicketOrderRefundBo);
LOG.info("主动退款新增退单单返回【{}】", JSON.toJSONString(orderRefundReturnVo));
List<ZdyTicketOrderRefundItem> orderRefundItemList = orderRefundReturnVo.getOrderRefundItemList();
List<LxsOrderVo> lxsOrderVoList = new ArrayList<>();
orderRefundItemList.forEach(item -> {
LxsOrderVo lxsOrderVo = LxsOrderVo.builder()
.type("2")//退票
.ticketName(item.getTicketName())
.refundTime(orderRefundReturnVo.getRefundTime())
.refundQuantity(item.getRefundQuantity())
.refundTotalPrice(item.getActualPrice())
.ticketId(item.getTicketId())
.orderRefundItemId(item.getId())
.build();
lxsOrderVoList.add(lxsOrderVo);
});
//查询退款主单
ZdyTicketOrderRefundVo zdyTicketOrderRefundVo = zdyTicketOrderRefundService.selectZdyTicketOrderRefundById(orderRefundReturnVo.getId());
//查询旅行社id
Long travelAgencyId = zdyTicketOrderRefundVo.getTravelAgencyId();
//新增销售汇总记录
insertTravelAgencySalesRecords(travelAgencyId, lxsOrderVoList);
//旅行社退款操作账户余额开始
try {
RechargeDTO rechargeDTO = new RechargeDTO();
rechargeDTO.setId(travelAgencyId);
rechargeDTO.setOrderNo(orderRefundReturnVo.getRefundCode());
rechargeDTO.setOperatorType(AccountBalanceOperatorTypeEnum.TUI_KUAN.getCode());
rechargeDTO.setAmount(orderRefundReturnVo.getRefundTotal());
zdyTravelAgencyInfoService.recharge(rechargeDTO);
} catch (Exception e) {
e.printStackTrace();
LOG.warn("旅行社订单退款异常【{}】", e.getMessage());
throw new ServiceException("旅行社订单退款异常【" + e.getMessage() + "");
}
return AjaxResult.success();
}
private void insertTravelAgencySalesRecords(Long travelAgencyId, List<LxsOrderVo> lxsOrderVoList) {
//lxsOrderVoList可能包含多张门票
//同一时间,旅行社,门票,表中只有一条数据
for (LxsOrderVo lxsOrderVo : lxsOrderVoList) {
ZdyTravelAgencyOrderSalesRecord record = new ZdyTravelAgencyOrderSalesRecord();
record.setTravelAgencyId(travelAgencyId);
record.setTicketId(lxsOrderVo.getTicketId());
record.setSalesOrderQuantity(Objects.isNull(lxsOrderVo.getBuyQuantity()) ? 0 : lxsOrderVo.getBuyQuantity());
record.setSalesOrderPrice(Objects.isNull(lxsOrderVo.getTotalPrice()) ? BigDecimal.ZERO : lxsOrderVo.getTotalPrice());
record.setRefundOrderQuantity(Objects.isNull(lxsOrderVo.getRefundQuantity()) ? 0 : lxsOrderVo.getRefundQuantity());
record.setRefundOrderPrice(Objects.isNull(lxsOrderVo.getRefundTotalPrice()) ? BigDecimal.ZERO : lxsOrderVo.getRefundTotalPrice());
//两个时间同时只会有一个有值
Date orderTime = lxsOrderVo.getOrderTime();
Date refundTime = lxsOrderVo.getRefundTime();
record.setSummaryTime(Objects.isNull(orderTime) ? refundTime : orderTime);
if (Objects.isNull(record.getSummaryTime())) {
record.setSummaryTime(DateUtils.getNowDate());
}
LOG.info("新增销售汇总记录【{}】", JSON.toJSONString(record));
zdyTravelAgencyOrderSalesRecordService.insertAndUpdate(record);
}
}
/**
* 查询旅行社订单列表
*
* @param zdyTicketOrderDto
* @return
*/
@Override
public List<ZdyTicketOrderVo> orderList(Long deptId, ZdyTicketOrderDto zdyTicketOrderDto) {
zdyTicketOrderDto.setOrderSource(TicketConstants.ORDER_SOURCE_TRAVEL_AGENCY);
ZdyTravelAgencyInfo travelAgencyInfo = zdyTravelAgencyInfoMapper.getByDeptId(deptId);
PageUtils.startPage();
List<ZdyTicketOrderVo> zdyTicketOrderVos = null;
if (travelAgencyInfo != null) {
//旅行社账户登录,只查询当前旅行社的门票订单
zdyTicketOrderDto.setTravelAgencyId(travelAgencyInfo.getId());
zdyTicketOrderVos = zdyTravelAgencyTicketMapper.selectZdyTicketOrderListNoDataScope(zdyTicketOrderDto);
} else {
//运营公司或者景区登录根据部门权限查询
zdyTicketOrderVos = zdyTravelAgencyTicketMapper.selectZdyTicketOrderList(zdyTicketOrderDto);
}
//处理订单附表和明细数据
for (ZdyTicketOrderVo vo : zdyTicketOrderVos) {
//设置旅行社名称
String travelAgencyName = null;
if (ObjUtil.isNotNull(travelAgencyInfo)) {
travelAgencyName = travelAgencyInfo.getName();
} else {
travelAgencyName = getTravelAgencyName(vo.getTravelAgencyId());
}
vo.setTravelAgencyName(travelAgencyName);
//设置客源地名称
vo.setTouristSource(getTouristSourceName(vo.getTouristSource()));
//设置导游联系方式
vo.setMobilePhone(getTravelAgencyGuidePhone(vo.getTourId()));
for (ZdyTicketOrderItem zdyTicketOrderItem : vo.getOrderItemList()) {
orderCheckService.resetResultZdyTicketOrderItem(zdyTicketOrderItem);
//考虑到会修改结算价格修改之后再去zdy_travel_agency_ticket_authorization表查询时会出现数据不一致的问题
//这里结算价格直接使用订单单价
zdyTicketOrderItem.setSettlementPrice(zdyTicketOrderItem.getPrice());
}
}
return zdyTicketOrderVos;
}
@Override
public ZdyTicketOrderVo orderDetail(Long id) {
ZdyTicketOrderVo vo = zdyTicketOrderService.selectZdyTicketOrderById(id);
//设置旅行社名称
vo.setTravelAgencyName(getTravelAgencyName(vo.getTravelAgencyId()));
//设置客源地名称
vo.setTouristSource(getTouristSourceName(vo.getTouristSource()));
//设置导游联系方式
vo.setMobilePhone(getTravelAgencyGuidePhone(vo.getTourId()));
List<ZdyTicketOrderItem> orderItemList = vo.getOrderItemList();
if (CollectionUtils.isNotEmpty(orderItemList)) {
for (ZdyTicketOrderItem zdyTicketOrderItem : orderItemList) {
//考虑到会修改结算价格修改之后再去zdy_travel_agency_ticket_authorization表查询时会出现数据不一致的问题
//这里结算价格直接使用订单单价
zdyTicketOrderItem.setSettlementPrice(zdyTicketOrderItem.getPrice());
}
}
return vo;
}
/**
* @param zdyTicketOrderRefundDto
* @return
*/
@Override
public List<ZdyTicketOrderRefundVo> refundOrderList(Long deptId, ZdyTicketOrderRefundDto zdyTicketOrderRefundDto) {
zdyTicketOrderRefundDto.setRefundSource(TicketConstants.ORDER_SOURCE_TRAVEL_AGENCY);
ZdyTravelAgencyInfo travelAgencyInfo = zdyTravelAgencyInfoMapper.getByDeptId(deptId);
PageUtils.startPage();
List<ZdyTicketOrderRefundVo> zdyTicketOrderRefundVos = null;
if (travelAgencyInfo != null) {
//旅行社账户登录,只查询当前旅行社的门票订单
zdyTicketOrderRefundDto.setTravelAgencyId(travelAgencyInfo.getId());
zdyTicketOrderRefundVos = zdyTravelAgencyTicketMapper.selectZdyTicketOrderRefundListNoDataScope(zdyTicketOrderRefundDto);
} else {
//运营公司或者景区登录根据部门权限查询
zdyTicketOrderRefundVos = zdyTravelAgencyTicketMapper.selectZdyTicketOrderRefundList(zdyTicketOrderRefundDto);
}
//处理退款订单明细数据
for (ZdyTicketOrderRefundVo vo : zdyTicketOrderRefundVos) {
//设置旅行社名称
String travelAgencyName = null;
if (ObjUtil.isNotNull(travelAgencyInfo)) {
travelAgencyName = travelAgencyInfo.getName();
} else {
travelAgencyName = getTravelAgencyName(vo.getTravelAgencyId());
}
vo.setTravelAgencyName(travelAgencyName);
List<ZdyTicketOrderRefundItem> orderRefundItemList = vo.getOrderRefundItemList();
if (CollectionUtils.isNotEmpty(orderRefundItemList)) {
for (ZdyTicketOrderRefundItem refundItem : orderRefundItemList) {
orderCheckService.resetZdyTicketOrderRefundItem(refundItem);
// ZdyTravelAgencyTicketAuthorization ticketAuthorization = zdyTravelAgencyTicketAuthorizationService.selectByTravelAgencyIdAndTicketId(vo.getTravelAgencyId(), refundItem.getTicketId());
// //设置旅行社门票授权时填写的结算价格
// if (!Objects.isNull(ticketAuthorization)) {
// refundItem.setSettlementPrice(ticketAuthorization.getSettlementPrice());
// }
refundItem.setSettlementPrice(refundItem.getPrice());
}
}
}
return zdyTicketOrderRefundVos;
}
@Override
public ZdyTicketOrderRefundVo refundOrderDetail(Long id) {
ZdyTicketOrderRefundVo vo = zdyTicketOrderRefundService.selectZdyTicketOrderRefundById(id);
//设置旅行社名称
vo.setTravelAgencyName(getTravelAgencyName(vo.getTravelAgencyId()));
List<ZdyTicketOrderRefundItem> orderRefundItemList = vo.getOrderRefundItemList();
if (CollectionUtils.isNotEmpty(orderRefundItemList)) {
for (ZdyTicketOrderRefundItem refundItem : orderRefundItemList) {
// ZdyTravelAgencyTicketAuthorization ticketAuthorization = zdyTravelAgencyTicketAuthorizationService.selectByTravelAgencyIdAndTicketId(vo.getTravelAgencyId(), refundItem.getTicketId());
// //设置旅行社门票授权时填写的结算价格
// if (!Objects.isNull(ticketAuthorization)) {
// refundItem.setSettlementPrice(ticketAuthorization.getSettlementPrice());
// }
refundItem.setSettlementPrice(refundItem.getPrice());
}
}
return vo;
}
/**
* 查询核销记录
*
* @param zdyTicketOrderActivityHistory
* @return
*/
@Override
public List<ZdyTicketOrderVerificationHistory> selectZdyTicketOrderVerificationHistoryList(ZdyTicketOrderVerificationHistory zdyTicketOrderActivityHistory) {
List<ZdyTicketOrderVerificationHistory> zdyTicketOrderVerificationHistories = zdyTicketOrderVerificationHistoryService.selectZdyTicketOrderVerificationHistoryList(zdyTicketOrderActivityHistory);
return zdyTicketOrderVerificationHistories;
}
/**
* 根据id 获取旅行社名称
*
* @param travelAgencyId 旅行社 id
* @return
*/
private String getTravelAgencyName(Long travelAgencyId) {
ZdyTravelAgencyInfo zdyTravelAgencyInfo = zdyTravelAgencyInfoService.selectZdyTravelAgencyInfoById(travelAgencyId);
return ObjUtil.isNotNull(zdyTravelAgencyInfo) ? zdyTravelAgencyInfo.getName() : null;
}
/**
* 根据客源地编号获取客源地名称
*
* @param touristSourceNo 行政区域编号
* @return
*/
private String getTouristSourceName(String touristSourceNo) {
ZdyArea zdyArea = zdyAreaService.selectZdyAreaByAreaCode(Long.parseLong(touristSourceNo));
return ObjUtil.isNotNull(zdyArea) ? zdyArea.getName() : null;
}
/**
* 获取旅行社导游联系方式
*
* @param travelAgencyGuideId 旅行社导游id
* @return
*/
private String getTravelAgencyGuidePhone(Long travelAgencyGuideId) {
ZdyTravelAgencyGuide guide = zdyTravelAgencyGuideService.selectZdyTravelAgencyGuideById(travelAgencyGuideId);
return ObjUtil.isNotNull(guide) ? guide.getPhone() : null;
}
}

View File

@@ -0,0 +1,135 @@
package com.zhwl.travelagency.order.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* @Title: ZdyTravelAgencyOrderSalesRecordVO
* @Author wangtao
* @Date 2024/7/5 14:22
* @description: 销售汇总vo
*/
public class ZdyTravelAgencyOrderSalesRecordVO implements Serializable {
private static final long serialVersionUID = -2830704910370475958L;
/**
* 汇总时间
*/
@JsonFormat(pattern = "yyyy-MM-dd")
private Date summaryTime;
/**
* 门票名称
*/
private String ticketName;
/**
* 门票销售价格
*/
private BigDecimal ticketSalesPrice;
/**
* 门票结算价格
*/
private BigDecimal ticketSettlementPrice;
/**
* 销售订单数量
*/
private Integer salesOrderQuantity;
/**
* 销售金额
*/
private BigDecimal salesOrderPrice;
/**
* 退款订单数量
*/
private Integer refundOrderQuantity;
/**
* 退款金额
*/
private BigDecimal refundOrderPrice;
/**
* 实收金额
*/
private BigDecimal actualOrderPrice;
public Date getSummaryTime() {
return summaryTime;
}
public void setSummaryTime(Date summaryTime) {
this.summaryTime = summaryTime;
}
public String getTicketName() {
return ticketName;
}
public void setTicketName(String ticketName) {
this.ticketName = ticketName;
}
public Integer getSalesOrderQuantity() {
return salesOrderQuantity;
}
public void setSalesOrderQuantity(Integer salesOrderQuantity) {
this.salesOrderQuantity = salesOrderQuantity;
}
public BigDecimal getSalesOrderPrice() {
return salesOrderPrice;
}
public void setSalesOrderPrice(BigDecimal salesOrderPrice) {
this.salesOrderPrice = salesOrderPrice;
}
public Integer getRefundOrderQuantity() {
return refundOrderQuantity;
}
public void setRefundOrderQuantity(Integer refundOrderQuantity) {
this.refundOrderQuantity = refundOrderQuantity;
}
public BigDecimal getRefundOrderPrice() {
return refundOrderPrice;
}
public void setRefundOrderPrice(BigDecimal refundOrderPrice) {
this.refundOrderPrice = refundOrderPrice;
}
public BigDecimal getActualOrderPrice() {
return actualOrderPrice;
}
public void setActualOrderPrice(BigDecimal actualOrderPrice) {
this.actualOrderPrice = actualOrderPrice;
}
public BigDecimal getTicketSalesPrice() {
return ticketSalesPrice;
}
public void setTicketSalesPrice(BigDecimal ticketSalesPrice) {
this.ticketSalesPrice = ticketSalesPrice;
}
public BigDecimal getTicketSettlementPrice() {
return ticketSettlementPrice;
}
public void setTicketSettlementPrice(BigDecimal ticketSettlementPrice) {
this.ticketSettlementPrice = ticketSettlementPrice;
}
}

View File

@@ -0,0 +1,29 @@
package com.zhwl.travelagency.order.vo;
import com.zhwl.common.core.domain.ZdyTicket;
import java.math.BigDecimal;
/**
* @Title: TravelAgencyTicketVO
* @Author wangtao
* @Date 2024/6/28 15:16
* @description:
*/
public class ZdyTravelAgencyTicketVO extends ZdyTicket {
private static final long serialVersionUID = -3002555977255176038L;
/**
* 结算价格
*/
private BigDecimal settlementPrice;
public BigDecimal getSettlementPrice() {
return settlementPrice;
}
public void setSettlementPrice(BigDecimal settlementPrice) {
this.settlementPrice = settlementPrice;
}
}

View File

@@ -0,0 +1,254 @@
<?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.zhwl.travelagency.order.mapper.ZdyTravelAgencyOrderSalesRecordMapper">
<resultMap type="ZdyTravelAgencyOrderSalesRecord" id="ZdyTravelAgencyOrderSalesRecordResult">
<result property="id" column="id"/>
<result property="summaryTime" column="summary_time"/>
<result property="travelAgencyId" column="travel_agency_id"/>
<result property="ticketId" column="ticket_id"/>
<result property="salesOrderQuantity" column="sales_order_quantity"/>
<result property="salesOrderPrice" column="sales_order_price"/>
<result property="refundOrderQuantity" column="refund_order_quantity"/>
<result property="refundOrderPrice" column="refund_order_price"/>
</resultMap>
<resultMap type="com.zhwl.travelagency.order.vo.ZdyTravelAgencyOrderSalesRecordVO"
id="ZdyTravelAgencyOrderSalesRecordResultVO">
<result property="summaryTime" column="summary_time"/>
<result property="ticketName" column="ticket_name"/>
<result property="ticketSalesPrice" column="ticket_sales_price"/>
<result property="ticketSettlementPrice" column="ticket_settlement_price"/>
<result property="salesOrderQuantity" column="sales_order_quantity"/>
<result property="salesOrderPrice" column="sales_order_price"/>
<result property="refundOrderQuantity" column="refund_order_quantity"/>
<result property="refundOrderPrice" column="refund_order_price"/>
</resultMap>
<sql id="selectZdyTravelAgencyOrderSalesRecordVo">
select id,
summary_time,
travel_agency_id,
ticket_id,
sales_order_quantity,
sales_order_price,
refund_order_quantity,
refund_order_price
from zdy_travel_agency_order_sales_record
</sql>
<select id="selectZdyTravelAgencyOrderSalesRecordList" parameterType="ZdyTravelAgencyOrderSalesRecord"
resultMap="ZdyTravelAgencyOrderSalesRecordResult">
<include refid="selectZdyTravelAgencyOrderSalesRecordVo"/>
<where>
<if test="summaryTime != null ">
and summary_time = #{summaryTime}
</if>
<if test="travelAgencyId != null ">
and travel_agency_id = #{travelAgencyId}
</if>
<if test="ticketId != null ">
and ticket_id = #{ticketId}
</if>
<if test="salesOrderQuantity != null ">
and sales_order_quantity = #{salesOrderQuantity}
</if>
<if test="salesOrderPrice != null ">
and sales_order_price = #{salesOrderPrice}
</if>
<if test="refundOrderQuantity != null ">
and refund_order_quantity = #{refundOrderQuantity}
</if>
<if test="refundOrderPrice != null ">
and refund_order_price = #{refundOrderPrice}
</if>
</where>
</select>
<select id="selectZdyTravelAgencyOrderSalesRecordListReport"
parameterType="com.zhwl.travelagency.order.dto.ZdyTravelAgencyOrderSalesRecordDTO"
resultMap="ZdyTravelAgencyOrderSalesRecordResultVO">
select summary_time,
b.name ticket_name,
b.sales_rice ticket_sales_price,
c.settlement_price ticket_settlement_price,
sales_order_quantity,
sales_order_price,
refund_order_quantity,
refund_order_price
from zdy_travel_agency_order_sales_record a
left join zdy_ticket b on a.ticket_id = b.id
left join zdy_travel_agency_ticket_authorization c on c.travel_agency_id=a.travel_agency_id and c.ticket_id=a.ticket_id
left join zdy_travel_agency_info i on i.id = a.travel_agency_id
<where>
<if test="travelAgencyId != null ">
and a.travel_agency_id = #{travelAgencyId}
</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(a.summary_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
and date_format(a.summary_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
</if>
<if test="ticketName != null and ticketName != ''">
and b.name like concat('%',#{ticketName},'%')
</if>
${params.dataScope}
</where>
order by summary_time desc
</select>
<select id="selectZdyTravelAgencyOrderSalesRecordById" parameterType="Long"
resultMap="ZdyTravelAgencyOrderSalesRecordResult">
<include refid="selectZdyTravelAgencyOrderSalesRecordVo"/>
where id = #{id}
</select>
<insert id="insertZdyTravelAgencyOrderSalesRecord" parameterType="ZdyTravelAgencyOrderSalesRecord"
useGeneratedKeys="true"
keyProperty="id">
insert into zdy_travel_agency_order_sales_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="summaryTime != null">summary_time,
</if>
<if test="travelAgencyId != null">travel_agency_id,
</if>
<if test="ticketId != null">ticket_id,
</if>
<if test="salesOrderQuantity != null">sales_order_quantity,
</if>
<if test="salesOrderPrice != null">sales_order_price,
</if>
<if test="refundOrderQuantity != null">refund_order_quantity,
</if>
<if test="refundOrderPrice != null">refund_order_price,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="summaryTime != null">#{summaryTime},
</if>
<if test="travelAgencyId != null">#{travelAgencyId},
</if>
<if test="ticketId != null">#{ticketId},
</if>
<if test="salesOrderQuantity != null">#{salesOrderQuantity},
</if>
<if test="salesOrderPrice != null">#{salesOrderPrice},
</if>
<if test="refundOrderQuantity != null">#{refundOrderQuantity},
</if>
<if test="refundOrderPrice != null">#{refundOrderPrice},
</if>
</trim>
</insert>
<update id="updateZdyTravelAgencyOrderSalesRecord" parameterType="ZdyTravelAgencyOrderSalesRecord">
update zdy_travel_agency_order_sales_record
<trim prefix="SET" suffixOverrides=",">
<if test="summaryTime != null">summary_time =
#{summaryTime},
</if>
<if test="travelAgencyId != null">travel_agency_id =
#{travelAgencyId},
</if>
<if test="ticketId != null">ticket_id =
#{ticketId},
</if>
<if test="salesOrderQuantity != null">sales_order_quantity =
#{salesOrderQuantity},
</if>
<if test="salesOrderPrice != null">sales_order_price =
#{salesOrderPrice},
</if>
<if test="refundOrderQuantity != null">refund_order_quantity =
#{refundOrderQuantity},
</if>
<if test="refundOrderPrice != null">refund_order_price =
#{refundOrderPrice},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteZdyTravelAgencyOrderSalesRecordById" parameterType="Long">
delete
from zdy_travel_agency_order_sales_record
where id = #{id}
</delete>
<delete id="deleteZdyTravelAgencyOrderSalesRecordByIds" parameterType="String">
delete from zdy_travel_agency_order_sales_record where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<insert id="insertAndUpdate"
parameterType="com.zhwl.travelagency.order.domain.ZdyTravelAgencyOrderSalesRecord">
insert into zdy_travel_agency_order_sales_record (
summary_time,
travel_agency_id,
ticket_id,
sales_order_quantity,
sales_order_price,
refund_order_quantity,
refund_order_price
)
values
(
#{summaryTime},
#{travelAgencyId},
#{ticketId},
#{salesOrderQuantity},
#{salesOrderPrice},
#{refundOrderQuantity},
#{refundOrderPrice}
)
on duplicate key
update
<trim suffixOverrides=",">
summary_time = summary_time,
travel_agency_id = travel_agency_id,
ticket_id = ticket_id,
<if test="salesOrderQuantity!=null">
sales_order_quantity = ifnull(sales_order_quantity,0) + values(sales_order_quantity),
</if>
<if test="salesOrderPrice!=null">
sales_order_price = ifnull(sales_order_price,0) + values(sales_order_price),
</if>
<if test="refundOrderQuantity!=null">
refund_order_quantity = ifnull(refund_order_quantity,0) + values(refund_order_quantity),
</if>
<if test="refundOrderPrice!=null">
refund_order_price =ifnull(refund_order_price,0) + values(refund_order_price),
</if>
</trim>
</insert>
<select id="summary" parameterType="com.zhwl.travelagency.order.dto.ZdyTravelAgencyOrderSalesRecordDTO"
resultMap="ZdyTravelAgencyOrderSalesRecordResultVO">
select sum(ifnull(sales_order_quantity, 0)) sales_order_quantity,
sum(ifnull(sales_order_price, 0)) sales_order_price,
sum(ifnull(refund_order_quantity, 0)) refund_order_quantity,
sum(ifnull(refund_order_price, 0)) refund_order_price
from zdy_travel_agency_order_sales_record a left join zdy_ticket b on a.ticket_id = b.id
left join zdy_travel_agency_info i on a.travel_agency_id = i.id
<where>
<if test="travelAgencyId != null ">
and a.travel_agency_id = #{travelAgencyId}
</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(a.summary_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
and date_format(a.summary_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
</if>
<if test="ticketName != null and ticketName != ''">
and b.name like concat('%',#{ticketName},'%')
</if>
${params.dataScope}
</where>
</select>
</mapper>

View File

@@ -0,0 +1,740 @@
<?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.zhwl.travelagency.order.mapper.ZdyTravelAgencyTicketMapper">
<resultMap type="com.zhwl.travelagency.order.vo.ZdyTravelAgencyTicketVO" id="TravelAgencyTicketVOResult">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="scenicId" column="scenic_id"/>
<result property="salesRice" column="sales_rice"/>
<result property="price" column="price"/>
<result property="image" column="image"/>
<result property="classify" column="classify"/>
<result property="groundingFlag" column="grounding_flag"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="remark" column="remark"/>
<result property="scenicName" column="scenic_name"/>
<result property="delFlag" column="del_flag"/>
<result property="inventory" column="inventory"/>
<result property="flag" column="flag"/>
<result property="minPrice" column="minPrice"/>
<result property="refundRule" column="refund_rule"/>
<result property="refundRuleName" column="refundRuleName"/>
<result property="isFee" column="is_fee"/>
<result property="classifyName" column="classifyName"/>
<result property="isOrder" column="is_order"/>
<result property="validityStartTime" column="validity_start_time"/>
<result property="validityEndTime" column="validity_end_time"/>
<result property="groupId" column="group_id"/>
<result property="bookingNotice" column="booking_notice"/>
<result property="beforeDay" column="before_day"/>
<result property="isOrderQuantity" column="is_order_quantity"/>
<result property="orderQuantity" column="order_quantity"/>
<result property="authenticationType" column="authentication_type"/>
<result property="verifySettings" column="verify_settings"/>
<result property="isPurchaseDate" column="is_purchase_date"/>
<result property="purchStartDate" column="purch_start_date"/>
<result property="purchEndDate" column="purch_end_date"/>
<result property="ticketValidityPeriod" column="ticket_validity_period"/>
<result property="buyPeriodDay" column="buy_period_day"/>
<result property="adjust" column="adjust"/>
<result property="groupName" column="groupName"/>
<result property="groupId" column="group_id"/>
<result property="classifyName" column="classifyName"/>
<result property="admissionAddress" column="admission_address"/>
<result property="admissionTime" column="admission_time"/>
<result property="sales" column="sales"/>
<result property="image11" column="image11"/>
<result property="image43" column="image43"/>
<result property="feeType" column="fee_type"/>
<result property="deductionFees" column="deduction_fees"/>
<result property="deductionFeesUnit" column="deduction_fees_unit"/>
<result property="refundDay" column="refund_day"/>
<result property="qrcodeRule" column="qrcode_rule"/>
<result property="isRefundCheck" column="is_refund_check"/>
<result property="settlementPrice" column="settlement_price11"/>
</resultMap>
<resultMap type="ZdyTicketOrderVo" id="ZdyTicketOrderResult">
<result property="id" column="id"/>
<result property="orderCode" column="order_code"/>
<result property="orderPrepayId" column="order_prepay_id"/>
<result property="scenicId" column="scenic_id"/>
<result property="userId" column="user_id"/>
<result property="buyQuantity" column="buy_quantity"/>
<result property="totalPrice" column="total_price"/>
<result property="orderSource" column="order_source"/>
<result property="paymentType" column="payment_type"/>
<result property="paymentMethod" column="payment_method"/>
<result property="paymentTime" column="payment_time"/>
<result property="refundStatus" column="refund_status"/>
<result property="refundTime" column="refund_time"/>
<result property="verificationType" column="verification_type"/>
<result property="verificationTime" column="verification_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"/>
<result property="delFlag" column="del_flag"/>
<result property="userName" column="userName"/>
<result property="mobilePhone" column="mobilePhone"/>
<result property="identityCard" column="identityCard"/>
<result property="scenicName" column="scenicName"/>
<result property="tradeSession" column="trade_session"/>
<result property="tradeSession" column="trade_session"/>
<result property="tourId" column="tour_id"/>
<result property="touristSource" column="tourist_source"/>
<result property="toursNum" column="tours_num"/>
<result property="travelAgencyId" column="travel_agency_id"/>
<result property="paymentScene" column="payment_scene"/>
<collection property="orderItemList" javaType="java.util.List" ofType="ZdyTicketOrderItem"
select="selectZdyOrderItemByOrderId" column="id"/>
</resultMap>
<select id="selectZdyOrderItemByOrderId" parameterType="Long"
resultMap="ZdyTicketOrderItemResult">
select a.*,
CASE
WHEN a.user_id = 0 THEN
a.user_name
ELSE u.`name`
END user_name,
u.mobile AS mobilePhone,
CASE
WHEN a.user_id = 0 THEN
a.identity_card
ELSE u.id_card
END identity_card
from zdy_ticket_order_item a
left join zdy_user u on u.id = a.user_id
where a.order_id = #{id}
</select>
<resultMap type="ZdyTicketOrderItem" id="ZdyTicketOrderItemResult">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="orderCode" column="order_code"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="identityCard" column="identity_card"/>
<result property="price" column="price"/>
<result property="buyQuantity" column="buy_quantity"/>
<result property="totalPrice" column="total_price"/>
<result property="paymentType" column="payment_type"/>
<result property="paymentMethod" column="payment_method"/>
<result property="paymentTime" column="payment_time"/>
<result property="refundStatus" column="refund_status"/>
<result property="refundTime" column="refund_time"/>
<result property="verificationType" column="verification_type"/>
<result property="verificationTime" column="verification_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"/>
<result property="delFlag" column="del_flag"/>
<result property="ticketId" column="ticket_id"/>
<result property="scenicId" column="scenic_id"/>
<result property="classify" column="classify"/>
<result property="ticketName" column="ticket_name"/>
<result property="groupId" column="group_id"/>
<result property="authenticationType" column="authentication_type"/>
<result property="qrcodeRule" column="qrcode_rule"/>
<result property="refundRule" column="refund_rule"/>
<result property="refundDay" column="refund_day"/>
<result property="isFee" column="is_fee"/>
<result property="feeType" column="fee_type"/>
<result property="deductionFees" column="deduction_fees"/>
<result property="deductionFeesUnit" column="deduction_fees_unit"/>
<result property="deductionJson" column="deduction_json"/>
<result property="orderSource" column="order_source"/>
<result property="tourId" column="tour_id"/>
<result property="mobilePhone" column="mobilePhone"/>
<result property="isRefundCheck" column="is_refund_check"/>
<result property="settlementPrice" column="settlement_price"/>
<result property="tradeSession" column="trade_session"/>
<result property="applicablePeriod" column="applicable_period"/>
<result property="timeQuantum" column="time_quantum"/>
<result property="deptId" column="dept_id"/>
<collection property="ticketOrderDetailList" javaType="java.util.List" ofType="ZdyTicketOrderDetailReturnVo"
select="selectZdyOrderDetailByOrderId" column="id"/>
</resultMap>
<resultMap type="ZdyTicketOrderDetailReturnVo" id="ZdyTicketOrderDetailResult">
<result property="id" column="id"/>
<result property="orderItemId" column="order_item_id"/>
<result property="ticketId" column="ticket_id"/>
<result property="userTouristId" column="user_tourist_id"/>
<result property="identityCard" column="identityCard"/>
<result property="userName" column="userName"/>
<result property="mobilePhone" column="mobilePhone"/>
<result property="ticketPrice" column="ticket_price"/>
<result property="buyQuantity" column="buy_quantity"/>
<result property="orderTime" column="order_time"/>
<result property="paymentType" column="payment_type"/>
<result property="paymentMethod" column="payment_method"/>
<result property="paymentTime" column="payment_time"/>
<result property="refundEndTime" column="refund_end_time"/>
<result property="verificationCode" column="verification_code"/>
<result property="availableStartTime" column="available_start_time"/>
<result property="availableEndTime" column="available_end_time"/>
<result property="verificationType" column="verification_type"/>
<result property="verificationTime" column="verification_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"/>
<result property="productTotalPrice" column="product_total_price"/>
<result property="payableAmount" column="payable_amount"/>
<result property="actuaAmount" column="actua_amount"/>
<result property="verificationUserId" column="verification_user_id"/>
<result property="verificationUserName" column="verification_user_name"/>
<result property="refundStatus" column="refund_status"/>
<result property="verificationMun" column="verification_mun"/>
<result property="delFlag" column="del_flag"/>
<result property="canVerificationMun" column="can_verification_mun"/>
<result property="identityCard" column="identityCard"/>
<result property="userName" column="userName"/>
<result property="mobilePhone" column="mobilePhone"/>
<result property="activationStatus" column="activation_status"/>
<result property="activationTime" column="activation_time"/>
</resultMap>
<select id="selectZdyOrderDetailByOrderId" parameterType="Long"
resultMap="ZdyTicketOrderDetailResult">
select d.*,
CASE
WHEN d.user_tourist_id = 0 THEN
d.user_name
ELSE u.`name`
END userName,
u.mobile as mobilePhone,
CASE
WHEN d.user_tourist_id = 0 THEN
d.identity_card
ELSE u.id_card
END identityCard
from zdy_ticket_order_detail d
LEFT JOIN zdy_user_tourist u ON u.id = d.user_tourist_id
where d.order_item_id = #{id}
order by d.verification_type
</select>
<resultMap type="ZdyTicketRefundRule" id="ZdyTicketRefundRuleResult">
<result property="id" column="sub_id"/>
<result property="ticketId" column="sub_ticket_id"/>
<result property="day" column="sub_day"/>
<result property="deductionFees" column="sub_deduction_fees"/>
<result property="deductionFeesUnit" column="sub_deduction_fees_unit"/>
</resultMap>
<resultMap type="ZdyTicketOrderRefundVo" id="ZdyTicketOrderRefundResult">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="refundCode" column="refund_code"/>
<result property="orderPrepayId" column="order_prepay_id"/>
<result property="userId" column="user_id"/>
<result property="refundQuantity" column="refund_quantity"/>
<result property="totalPrice" column="total_price"/>
<result property="totalFee" column="total_fee"/>
<result property="actualPrice" column="actual_price"/>
<result property="refundStatus" column="refund_status"/>
<result property="refundTime" column="refund_time"/>
<result property="personalRefundType" column="personal_refund_type"/>
<result property="businessRefundType" column="business_refund_type"/>
<result property="refundDescribe" column="refund_describe"/>
<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"/>
<result property="userName" column="userName"/>
<result property="userPhone" column="userPhone"/>
<result property="tourId" column="tour_id"/>
<result property="refundSource" column="refund_source"/>
<result property="travelAgencyId" column="travel_agency_id"/>
<result property="orderTime" column="orderTime"/>
<result property="orderCode" column="orderCode"/>
<collection property="orderRefundItemList" javaType="java.util.List" ofType="ZdyTicketOrderRefundItem"
select="selectZdyTicketOrderRefundItemByRefundId" column="id"/>
</resultMap>
<resultMap type="ZdyTicketOrderRefundItem" id="ZdyTicketOrderRefundItemResult">
<result property="id" column="id"/>
<result property="refundId" column="refund_id"/>
<result property="orderItemId" column="order_item_id"/>
<result property="ticketClassify" column="ticket_classify"/>
<result property="ticketId" column="ticket_id"/>
<result property="refundQuantity" column="refund_quantity"/>
<result property="totalPrice" column="total_price"/>
<result property="totalFee" column="total_fee"/>
<result property="actualPrice" column="actual_price"/>
<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"/>
<result property="ticketName" column="ticket_name"/>
<result property="settlementPrice" column="settlement_price"/>
<result property="deptId" column="dept_id"/>
<collection property="refundDetailList" javaType="java.util.List" ofType="ZdyTicketOrderRefundDetail"
select="selectZdyTicketOrderRefundDetailByRefundId" column="id"/>
</resultMap>
<resultMap type="ZdyTicketOrderRefundDetail" id="ZdyTicketOrderRefundDetailResult">
<result property="id" column="id"/>
<result property="orderDetailId" column="order_detail_id"/>
<result property="refundItemId" column="refund_item_id"/>
</resultMap>
<!-- a.grounding_flag = 1 虽已授权但是下架,这里查询已上架的门票 -->
<select id="selectSalesTickets" parameterType="com.zhwl.travelagency.order.dto.ZdyTravelAgencyTicketDTO"
resultMap="TravelAgencyTicketVOResult">
select a.*,b.settlement_price as settlement_price11
from zdy_ticket a
inner join zdy_travel_agency_ticket_authorization b on a.id = b.ticket_id
left join zdy_travel_agency_info i on b.travel_agency_id = i.id
<where>
a.del_flag = '0' and a.grounding_flag = 1
<if test="ticketName != null and ticketName!=''">
and a.name like concat('%', #{ticketName},'%')
</if>
<if test="travelAgencyId != null">
and b.travel_agency_id = #{travelAgencyId}
</if>
${params.dataScope}
</where>
</select>
<select id="selectZdyTicketRefundRuleByTicketId" parameterType="Long"
resultMap="ZdyTicketRefundRuleResult">
select id as sub_id,
ticket_id as sub_ticket_id, day as sub_day, deduction_fees as sub_deduction_fees, deduction_fees_unit as sub_deduction_fees_unit
from zdy_ticket_refund_rule
where ticket_id = #{id}
</select>
<select id="selectZdyTicketOrderList" parameterType="com.zhwl.ticket.order.dto.ZdyTicketOrderDto"
resultMap="ZdyTicketOrderResult">
SELECT
a.id,
a.order_code,
a.order_prepay_id,
a.scenic_id,
a.user_id,
a.buy_quantity,
a.total_price,
a.order_source,
a.payment_type,
a.payment_method,
a.payment_time,
a.refund_status,
a.refund_time,
a.verification_type,
a.verification_time,
a.create_by,
a.create_time,
a.update_by,
a.update_time,
a.del_flag,
CASE
WHEN a.user_id = 0 THEN
a.user_name ELSE u.`name`
END userName,
u.mobile AS mobilePhone,
CASE
WHEN a.user_id = 0 THEN
a.identity_card ELSE u.id_card
END identityCard,
zs.scenic_name AS scenicName,
a.trade_session,
a.tour_id,
a.tourist_source,
a.tours_num,
a.travel_agency_id,
a.payment_scene
FROM
zdy_ticket_order a
LEFT JOIN zdy_user u ON u.id = a.user_id
LEFT JOIN zdy_scenic zs ON zs.id = a.scenic_id
<where>
a.del_flag = '0'
<if test="orderCode != null and orderCode != ''">
and a.order_code = #{orderCode}
</if>
<if test="orderPrepayId != null and orderPrepayId != ''">
and a.order_prepay_id = #{orderPrepayId}
</if>
<if test="userId != null">
and a.user_id = #{userId}
</if>
<if test="paymentType != null and paymentType != ''">
and a.payment_type = #{paymentType}
</if>
<if test="paymentMethod != null and paymentMethod != ''">
and a.payment_method = #{paymentMethod}
</if>
<if test="orderSource != null and orderSource != ''">
and a.order_source = #{orderSource}
</if>
<if test="travelAgencyId != null ">
and a.travel_agency_id = #{travelAgencyId}
</if>
<if test="buyer != null and buyer != ''">
and (a.user_name like concat('%', #{buyer}, '%') or u.name like concat('%', #{buyer}, '%'))
</if>
<if test="noOrderSource != null and noOrderSource != ''">
and a.order_source != #{noOrderSource}
</if>
AND a.id IN (SELECT DISTINCT item.order_id
FROM
zdy_ticket_order_detail detail
LEFT JOIN zdy_ticket_order_item item ON item.id = detail.order_item_id
LEFT JOIN zdy_user_tourist ut ON ut.id = detail.user_tourist_id
left join sys_dept d on d.dept_id = item.dept_id
<where>
<if test="verificationType != null and verificationType != ''">
and detail.verification_type = #{verificationType}
</if>
<if test="verificationCode != null and verificationCode != ''">
and (detail.verification_code = #{verificationCode} or item.order_code = #{verificationCode})
</if>
<if test="orderStartTime != null and orderEndTime != null">
and detail.order_time between #{orderStartTime} and #{orderEndTime}
</if>
<if test="userName != null and userName != ''">
and (detail.user_name like concat('%', #{userName}, '%') or ut.`name` like concat('%', #{userName},
'%') or item.user_name like concat('%', #{userName}, '%'))
</if>
<if test="mobilePhone != null and mobilePhone != ''">
and ut.mobile = #{mobilePhone}
</if>
<if test="identityCard != null and identityCard != ''">
and (detail.identity_card = #{identityCard} or ut.id_card = #{identityCard} or item.identity_card =
#{identityCard})
</if>
<if test="refundStatus != null and refundStatus != ''">
and detail.refund_status IN ( 0, 100, 3 )
</if>
<if test="ticketName != null and ticketName != ''">
and item.ticket_name like concat('%', #{ticketName}, '%')
</if>
<if test="classifyList != null and classifyList != ''">
and (item.classify in
<foreach item="classify" collection="classifyList" open="(" separator="," close=")">
#{classify}
</foreach>
)
</if>
<if test="activationStatus != null and activationStatus != ''">
and detail.activation_status = #{activationStatus}
</if>
<if test="activationStartTime != null and activationEndTime != null">
and detail.activation_time between #{activationStartTime} and #{activationEndTime}
</if>
${params.dataScope}
</where>
)
</where>
order by a.id desc
</select>
<select id="selectZdyTicketOrderListNoDataScope" parameterType="com.zhwl.ticket.order.dto.ZdyTicketOrderDto"
resultMap="ZdyTicketOrderResult">
SELECT
a.id,
a.order_code,
a.order_prepay_id,
a.scenic_id,
a.user_id,
a.buy_quantity,
a.total_price,
a.order_source,
a.payment_type,
a.payment_method,
a.payment_time,
a.refund_status,
a.refund_time,
a.verification_type,
a.verification_time,
a.create_by,
a.create_time,
a.update_by,
a.update_time,
a.del_flag,
CASE
WHEN a.user_id = 0 THEN
a.user_name ELSE u.`name`
END userName,
u.mobile AS mobilePhone,
CASE
WHEN a.user_id = 0 THEN
a.identity_card ELSE u.id_card
END identityCard,
zs.scenic_name AS scenicName,
a.trade_session,
a.tour_id,
a.tourist_source,
a.tours_num,
a.travel_agency_id,
a.payment_scene
FROM
zdy_ticket_order a
LEFT JOIN zdy_user u ON u.id = a.user_id
LEFT JOIN zdy_scenic zs ON zs.id = a.scenic_id
<where>
a.del_flag = '0'
<if test="orderCode != null and orderCode != ''">
and a.order_code = #{orderCode}
</if>
<if test="orderPrepayId != null and orderPrepayId != ''">
and a.order_prepay_id = #{orderPrepayId}
</if>
<if test="userId != null">
and a.user_id = #{userId}
</if>
<if test="paymentType != null and paymentType != ''">
and a.payment_type = #{paymentType}
</if>
<if test="paymentMethod != null and paymentMethod != ''">
and a.payment_method = #{paymentMethod}
</if>
<if test="orderSource != null and orderSource != ''">
and a.order_source = #{orderSource}
</if>
<if test="travelAgencyId != null ">
and a.travel_agency_id = #{travelAgencyId}
</if>
<if test="buyer != null and buyer != ''">
and (a.user_name like concat('%', #{buyer}, '%') or u.name like concat('%', #{buyer}, '%'))
</if>
<if test="noOrderSource != null and noOrderSource != ''">
and a.order_source != #{noOrderSource}
</if>
AND a.id IN (SELECT DISTINCT item.order_id
FROM
zdy_ticket_order_detail detail
LEFT JOIN zdy_ticket_order_item item ON item.id = detail.order_item_id
LEFT JOIN zdy_user_tourist ut ON ut.id = detail.user_tourist_id
left join sys_dept d on d.dept_id = item.dept_id
<where>
<if test="verificationType != null and verificationType != ''">
and detail.verification_type = #{verificationType}
</if>
<if test="verificationCode != null and verificationCode != ''">
and (detail.verification_code = #{verificationCode} or item.order_code = #{verificationCode})
</if>
<if test="orderStartTime != null and orderEndTime != null">
and detail.order_time between #{orderStartTime} and #{orderEndTime}
</if>
<if test="userName != null and userName != ''">
and (detail.user_name like concat('%', #{userName}, '%') or ut.`name` like concat('%', #{userName},
'%') or item.user_name like concat('%', #{userName}, '%'))
</if>
<if test="mobilePhone != null and mobilePhone != ''">
and ut.mobile = #{mobilePhone}
</if>
<if test="identityCard != null and identityCard != ''">
and (detail.identity_card = #{identityCard} or ut.id_card = #{identityCard} or item.identity_card =
#{identityCard})
</if>
<if test="refundStatus != null and refundStatus != ''">
and detail.refund_status IN ( 0, 100, 3 )
</if>
<if test="ticketName != null and ticketName != ''">
and item.ticket_name like concat('%', #{ticketName}, '%')
</if>
<if test="classifyList != null and classifyList != ''">
and (item.classify in
<foreach item="classify" collection="classifyList" open="(" separator="," close=")">
#{classify}
</foreach>
)
</if>
<if test="activationStatus != null and activationStatus != ''">
and detail.activation_status = #{activationStatus}
</if>
<if test="activationStartTime != null and activationEndTime != null">
and detail.activation_time between #{activationStartTime} and #{activationEndTime}
</if>
</where>
)
</where>
order by a.id desc
</select>
<select id="selectZdyTicketOrderRefundList" parameterType="com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto"
resultMap="ZdyTicketOrderRefundResult">
<include refid="selectZdyTicketOrderRefundVo"/>
<where>
tor.del_flag = '0'
<if test="orderId != null and orderId != ''">
and tor.order_id = #{orderId}
</if>
<if test="refundCode != null and refundCode != ''">
and tor.refund_code = #{refundCode}
</if>
<if test="orderPrepayId != null ">
and tor.order_prepay_id = #{orderPrepayId}
</if>
<if test="userId != null ">
and tor.user_id = #{userId}
</if>
<if test="refundStatus != null and refundStatus != ''">
and tor.refund_status = #{refundStatus}
</if>
<if test="orderCode != null and orderCode != ''">
and o.order_code = #{orderCode}
</if>
<if test="userName != null and userName != ''">
and (us.name like concat('%',#{userName},'%') or us.nickname like concat('%',#{userName},'%'))
</if>
<if test="refundStartTime != null and refundEndTime != null">
and tor.create_time between #{refundStartTime} and #{refundEndTime}
</if>
<if test="tourId != null">
and tor.tour_id = #{tourId}
</if>
<if test="refundSource != null and refundSource != ''">
and tor.refund_source = #{refundSource}
</if>
<if test="travelAgencyId != null">
and o.travel_agency_id = #{travelAgencyId}
</if>
AND tor.id IN (SELECT DISTINCT item.refund_id
FROM
zdy_ticket_order_refund_item item
left join sys_dept d on d.dept_id = item.dept_id
<where>
${params.dataScope}
</where>
)
</where>
order by tor.create_time desc
</select>
<sql id="selectZdyTicketOrderRefundVo">
SELECT tor.id,
tor.order_id,
tor.refund_code,
tor.order_prepay_id,
tor.user_id,
tor.refund_quantity,
tor.total_price,
tor.total_fee,
tor.actual_price,
tor.refund_status,
tor.refund_time,
tor.personal_refund_type,
tor.business_refund_type,
tor.refund_describe,
tor.create_time,
tor.update_time,
tor.create_by,
tor.tour_id,
o.order_code as orderCode,
tor.refund_source,
o.travel_agency_id,
o.create_time orderTime,
CASE
WHEN (us.NAME IS NULL OR us.NAME = '') THEN
us.nickname
ELSE us.NAME
END AS userName,
us.mobile AS userPhone
FROM zdy_ticket_order_refund tor
LEFT JOIN zdy_ticket_order o ON o.id = tor.order_id
LEFT JOIN zdy_user us ON us.id = tor.user_id
</sql>
<select id="selectZdyTicketOrderRefundDetailByRefundId" parameterType="Long"
resultMap="ZdyTicketOrderRefundDetailResult">
select *
from zdy_ticket_order_refund_detail
where refund_item_id = #{id}
</select>
<select id="selectZdyTicketOrderRefundListNoDataScope"
parameterType="com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto"
resultMap="ZdyTicketOrderRefundResult">
<include refid="selectZdyTicketOrderRefundVo"/>
<where>
tor.del_flag = '0'
<if test="orderId != null and orderId != ''">
and tor.order_id = #{orderId}
</if>
<if test="refundCode != null and refundCode != ''">
and tor.refund_code = #{refundCode}
</if>
<if test="orderPrepayId != null ">
and tor.order_prepay_id = #{orderPrepayId}
</if>
<if test="userId != null ">
and tor.user_id = #{userId}
</if>
<if test="refundStatus != null and refundStatus != ''">
and tor.refund_status = #{refundStatus}
</if>
<if test="orderCode != null and orderCode != ''">
and o.order_code = #{orderCode}
</if>
<if test="userName != null and userName != ''">
and (us.name like concat('%',#{userName},'%') or us.nickname like concat('%',#{userName},'%'))
</if>
<if test="refundStartTime != null and refundEndTime != null">
and tor.create_time between #{refundStartTime} and #{refundEndTime}
</if>
<if test="tourId != null">
and tor.tour_id = #{tourId}
</if>
<if test="refundSource != null and refundSource != ''">
and tor.refund_source = #{refundSource}
</if>
<if test="travelAgencyId != null">
and o.travel_agency_id = #{travelAgencyId}
</if>
AND tor.id IN (SELECT DISTINCT item.refund_id
FROM
zdy_ticket_order_refund_item item
left join sys_dept d on d.dept_id = item.dept_id
)
</where>
order by tor.create_time desc
</select>
<select id="selectZdyTicketOrderRefundItemByRefundId" parameterType="Long"
resultMap="ZdyTicketOrderRefundItemResult">
SELECT tor.id,
tor.order_item_id,
tor.refund_id,
tor.ticket_id,
tor.refund_quantity,
tor.total_price,
tor.total_fee,
tor.actual_price,
tor.create_time,
tor.update_time,
tor.ticket_classify,
tor.ticket_name,
tor.dept_id,
o.order_code as orderCode
FROM zdy_ticket_order_refund_item tor
LEFT JOIN zdy_ticket_order_item o ON o.id = tor.order_item_id
where tor.refund_id = #{id}
</select>
</mapper>

View File

@@ -0,0 +1,254 @@
<?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.zhwl.travelagency.order.mapper.ZdyTravelAgencyOrderSalesRecordMapper">
<resultMap type="ZdyTravelAgencyOrderSalesRecord" id="ZdyTravelAgencyOrderSalesRecordResult">
<result property="id" column="id"/>
<result property="summaryTime" column="summary_time"/>
<result property="travelAgencyId" column="travel_agency_id"/>
<result property="ticketId" column="ticket_id"/>
<result property="salesOrderQuantity" column="sales_order_quantity"/>
<result property="salesOrderPrice" column="sales_order_price"/>
<result property="refundOrderQuantity" column="refund_order_quantity"/>
<result property="refundOrderPrice" column="refund_order_price"/>
</resultMap>
<resultMap type="com.zhwl.travelagency.order.vo.ZdyTravelAgencyOrderSalesRecordVO"
id="ZdyTravelAgencyOrderSalesRecordResultVO">
<result property="summaryTime" column="summary_time"/>
<result property="ticketName" column="ticket_name"/>
<result property="ticketSalesPrice" column="ticket_sales_price"/>
<result property="ticketSettlementPrice" column="ticket_settlement_price"/>
<result property="salesOrderQuantity" column="sales_order_quantity"/>
<result property="salesOrderPrice" column="sales_order_price"/>
<result property="refundOrderQuantity" column="refund_order_quantity"/>
<result property="refundOrderPrice" column="refund_order_price"/>
</resultMap>
<sql id="selectZdyTravelAgencyOrderSalesRecordVo">
select id,
summary_time,
travel_agency_id,
ticket_id,
sales_order_quantity,
sales_order_price,
refund_order_quantity,
refund_order_price
from zdy_travel_agency_order_sales_record
</sql>
<select id="selectZdyTravelAgencyOrderSalesRecordList" parameterType="ZdyTravelAgencyOrderSalesRecord"
resultMap="ZdyTravelAgencyOrderSalesRecordResult">
<include refid="selectZdyTravelAgencyOrderSalesRecordVo"/>
<where>
<if test="summaryTime != null ">
and summary_time = #{summaryTime}
</if>
<if test="travelAgencyId != null ">
and travel_agency_id = #{travelAgencyId}
</if>
<if test="ticketId != null ">
and ticket_id = #{ticketId}
</if>
<if test="salesOrderQuantity != null ">
and sales_order_quantity = #{salesOrderQuantity}
</if>
<if test="salesOrderPrice != null ">
and sales_order_price = #{salesOrderPrice}
</if>
<if test="refundOrderQuantity != null ">
and refund_order_quantity = #{refundOrderQuantity}
</if>
<if test="refundOrderPrice != null ">
and refund_order_price = #{refundOrderPrice}
</if>
</where>
</select>
<select id="selectZdyTravelAgencyOrderSalesRecordListReport"
parameterType="com.zhwl.travelagency.order.dto.ZdyTravelAgencyOrderSalesRecordDTO"
resultMap="ZdyTravelAgencyOrderSalesRecordResultVO">
select summary_time,
b.name ticket_name,
b.sales_rice ticket_sales_price,
c.settlement_price ticket_settlement_price,
sales_order_quantity,
sales_order_price,
refund_order_quantity,
refund_order_price
from zdy_travel_agency_order_sales_record a
left join zdy_ticket b on a.ticket_id = b.id
left join zdy_travel_agency_ticket_authorization c on c.travel_agency_id=a.travel_agency_id and c.ticket_id=a.ticket_id
left join zdy_travel_agency_info i on i.id = a.travel_agency_id
<where>
<if test="travelAgencyId != null ">
and a.travel_agency_id = #{travelAgencyId}
</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(a.summary_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
and date_format(a.summary_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
</if>
<if test="ticketName != null and ticketName != ''">
and b.name like concat('%',#{ticketName},'%')
</if>
${params.dataScope}
</where>
order by summary_time desc
</select>
<select id="selectZdyTravelAgencyOrderSalesRecordById" parameterType="Long"
resultMap="ZdyTravelAgencyOrderSalesRecordResult">
<include refid="selectZdyTravelAgencyOrderSalesRecordVo"/>
where id = #{id}
</select>
<insert id="insertZdyTravelAgencyOrderSalesRecord" parameterType="ZdyTravelAgencyOrderSalesRecord"
useGeneratedKeys="true"
keyProperty="id">
insert into zdy_travel_agency_order_sales_record
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="summaryTime != null">summary_time,
</if>
<if test="travelAgencyId != null">travel_agency_id,
</if>
<if test="ticketId != null">ticket_id,
</if>
<if test="salesOrderQuantity != null">sales_order_quantity,
</if>
<if test="salesOrderPrice != null">sales_order_price,
</if>
<if test="refundOrderQuantity != null">refund_order_quantity,
</if>
<if test="refundOrderPrice != null">refund_order_price,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="summaryTime != null">#{summaryTime},
</if>
<if test="travelAgencyId != null">#{travelAgencyId},
</if>
<if test="ticketId != null">#{ticketId},
</if>
<if test="salesOrderQuantity != null">#{salesOrderQuantity},
</if>
<if test="salesOrderPrice != null">#{salesOrderPrice},
</if>
<if test="refundOrderQuantity != null">#{refundOrderQuantity},
</if>
<if test="refundOrderPrice != null">#{refundOrderPrice},
</if>
</trim>
</insert>
<update id="updateZdyTravelAgencyOrderSalesRecord" parameterType="ZdyTravelAgencyOrderSalesRecord">
update zdy_travel_agency_order_sales_record
<trim prefix="SET" suffixOverrides=",">
<if test="summaryTime != null">summary_time =
#{summaryTime},
</if>
<if test="travelAgencyId != null">travel_agency_id =
#{travelAgencyId},
</if>
<if test="ticketId != null">ticket_id =
#{ticketId},
</if>
<if test="salesOrderQuantity != null">sales_order_quantity =
#{salesOrderQuantity},
</if>
<if test="salesOrderPrice != null">sales_order_price =
#{salesOrderPrice},
</if>
<if test="refundOrderQuantity != null">refund_order_quantity =
#{refundOrderQuantity},
</if>
<if test="refundOrderPrice != null">refund_order_price =
#{refundOrderPrice},
</if>
</trim>
where id = #{id}
</update>
<delete id="deleteZdyTravelAgencyOrderSalesRecordById" parameterType="Long">
delete
from zdy_travel_agency_order_sales_record
where id = #{id}
</delete>
<delete id="deleteZdyTravelAgencyOrderSalesRecordByIds" parameterType="String">
delete from zdy_travel_agency_order_sales_record where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<insert id="insertAndUpdate"
parameterType="com.zhwl.travelagency.order.domain.ZdyTravelAgencyOrderSalesRecord">
insert into zdy_travel_agency_order_sales_record (
summary_time,
travel_agency_id,
ticket_id,
sales_order_quantity,
sales_order_price,
refund_order_quantity,
refund_order_price
)
values
(
#{summaryTime},
#{travelAgencyId},
#{ticketId},
#{salesOrderQuantity},
#{salesOrderPrice},
#{refundOrderQuantity},
#{refundOrderPrice}
)
on duplicate key
update
<trim suffixOverrides=",">
summary_time = summary_time,
travel_agency_id = travel_agency_id,
ticket_id = ticket_id,
<if test="salesOrderQuantity!=null">
sales_order_quantity = ifnull(sales_order_quantity,0) + values(sales_order_quantity),
</if>
<if test="salesOrderPrice!=null">
sales_order_price = ifnull(sales_order_price,0) + values(sales_order_price),
</if>
<if test="refundOrderQuantity!=null">
refund_order_quantity = ifnull(refund_order_quantity,0) + values(refund_order_quantity),
</if>
<if test="refundOrderPrice!=null">
refund_order_price =ifnull(refund_order_price,0) + values(refund_order_price),
</if>
</trim>
</insert>
<select id="summary" parameterType="com.zhwl.travelagency.order.dto.ZdyTravelAgencyOrderSalesRecordDTO"
resultMap="ZdyTravelAgencyOrderSalesRecordResultVO">
select sum(ifnull(sales_order_quantity, 0)) sales_order_quantity,
sum(ifnull(sales_order_price, 0)) sales_order_price,
sum(ifnull(refund_order_quantity, 0)) refund_order_quantity,
sum(ifnull(refund_order_price, 0)) refund_order_price
from zdy_travel_agency_order_sales_record a left join zdy_ticket b on a.ticket_id = b.id
left join zdy_travel_agency_info i on a.travel_agency_id = i.id
<where>
<if test="travelAgencyId != null ">
and a.travel_agency_id = #{travelAgencyId}
</if>
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
and date_format(a.summary_time,'%y%m%d') &gt;= date_format(#{params.beginTime},'%y%m%d')
</if>
<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
and date_format(a.summary_time,'%y%m%d') &lt;= date_format(#{params.endTime},'%y%m%d')
</if>
<if test="ticketName != null and ticketName != ''">
and b.name like concat('%',#{ticketName},'%')
</if>
${params.dataScope}
</where>
</select>
</mapper>

View File

@@ -0,0 +1,740 @@
<?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.zhwl.travelagency.order.mapper.ZdyTravelAgencyTicketMapper">
<resultMap type="com.zhwl.travelagency.order.vo.ZdyTravelAgencyTicketVO" id="TravelAgencyTicketVOResult">
<result property="id" column="id"/>
<result property="name" column="name"/>
<result property="scenicId" column="scenic_id"/>
<result property="salesRice" column="sales_rice"/>
<result property="price" column="price"/>
<result property="image" column="image"/>
<result property="classify" column="classify"/>
<result property="groundingFlag" column="grounding_flag"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="remark" column="remark"/>
<result property="scenicName" column="scenic_name"/>
<result property="delFlag" column="del_flag"/>
<result property="inventory" column="inventory"/>
<result property="flag" column="flag"/>
<result property="minPrice" column="minPrice"/>
<result property="refundRule" column="refund_rule"/>
<result property="refundRuleName" column="refundRuleName"/>
<result property="isFee" column="is_fee"/>
<result property="classifyName" column="classifyName"/>
<result property="isOrder" column="is_order"/>
<result property="validityStartTime" column="validity_start_time"/>
<result property="validityEndTime" column="validity_end_time"/>
<result property="groupId" column="group_id"/>
<result property="bookingNotice" column="booking_notice"/>
<result property="beforeDay" column="before_day"/>
<result property="isOrderQuantity" column="is_order_quantity"/>
<result property="orderQuantity" column="order_quantity"/>
<result property="authenticationType" column="authentication_type"/>
<result property="verifySettings" column="verify_settings"/>
<result property="isPurchaseDate" column="is_purchase_date"/>
<result property="purchStartDate" column="purch_start_date"/>
<result property="purchEndDate" column="purch_end_date"/>
<result property="ticketValidityPeriod" column="ticket_validity_period"/>
<result property="buyPeriodDay" column="buy_period_day"/>
<result property="adjust" column="adjust"/>
<result property="groupName" column="groupName"/>
<result property="groupId" column="group_id"/>
<result property="classifyName" column="classifyName"/>
<result property="admissionAddress" column="admission_address"/>
<result property="admissionTime" column="admission_time"/>
<result property="sales" column="sales"/>
<result property="image11" column="image11"/>
<result property="image43" column="image43"/>
<result property="feeType" column="fee_type"/>
<result property="deductionFees" column="deduction_fees"/>
<result property="deductionFeesUnit" column="deduction_fees_unit"/>
<result property="refundDay" column="refund_day"/>
<result property="qrcodeRule" column="qrcode_rule"/>
<result property="isRefundCheck" column="is_refund_check"/>
<result property="settlementPrice" column="settlement_price11"/>
</resultMap>
<resultMap type="ZdyTicketOrderVo" id="ZdyTicketOrderResult">
<result property="id" column="id"/>
<result property="orderCode" column="order_code"/>
<result property="orderPrepayId" column="order_prepay_id"/>
<result property="scenicId" column="scenic_id"/>
<result property="userId" column="user_id"/>
<result property="buyQuantity" column="buy_quantity"/>
<result property="totalPrice" column="total_price"/>
<result property="orderSource" column="order_source"/>
<result property="paymentType" column="payment_type"/>
<result property="paymentMethod" column="payment_method"/>
<result property="paymentTime" column="payment_time"/>
<result property="refundStatus" column="refund_status"/>
<result property="refundTime" column="refund_time"/>
<result property="verificationType" column="verification_type"/>
<result property="verificationTime" column="verification_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"/>
<result property="delFlag" column="del_flag"/>
<result property="userName" column="userName"/>
<result property="mobilePhone" column="mobilePhone"/>
<result property="identityCard" column="identityCard"/>
<result property="scenicName" column="scenicName"/>
<result property="tradeSession" column="trade_session"/>
<result property="tradeSession" column="trade_session"/>
<result property="tourId" column="tour_id"/>
<result property="touristSource" column="tourist_source"/>
<result property="toursNum" column="tours_num"/>
<result property="travelAgencyId" column="travel_agency_id"/>
<result property="paymentScene" column="payment_scene"/>
<collection property="orderItemList" javaType="java.util.List" ofType="ZdyTicketOrderItem"
select="selectZdyOrderItemByOrderId" column="id"/>
</resultMap>
<select id="selectZdyOrderItemByOrderId" parameterType="Long"
resultMap="ZdyTicketOrderItemResult">
select a.*,
CASE
WHEN a.user_id = 0 THEN
a.user_name
ELSE u.`name`
END user_name,
u.mobile AS mobilePhone,
CASE
WHEN a.user_id = 0 THEN
a.identity_card
ELSE u.id_card
END identity_card
from zdy_ticket_order_item a
left join zdy_user u on u.id = a.user_id
where a.order_id = #{id}
</select>
<resultMap type="ZdyTicketOrderItem" id="ZdyTicketOrderItemResult">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="orderCode" column="order_code"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="identityCard" column="identity_card"/>
<result property="price" column="price"/>
<result property="buyQuantity" column="buy_quantity"/>
<result property="totalPrice" column="total_price"/>
<result property="paymentType" column="payment_type"/>
<result property="paymentMethod" column="payment_method"/>
<result property="paymentTime" column="payment_time"/>
<result property="refundStatus" column="refund_status"/>
<result property="refundTime" column="refund_time"/>
<result property="verificationType" column="verification_type"/>
<result property="verificationTime" column="verification_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"/>
<result property="delFlag" column="del_flag"/>
<result property="ticketId" column="ticket_id"/>
<result property="scenicId" column="scenic_id"/>
<result property="classify" column="classify"/>
<result property="ticketName" column="ticket_name"/>
<result property="groupId" column="group_id"/>
<result property="authenticationType" column="authentication_type"/>
<result property="qrcodeRule" column="qrcode_rule"/>
<result property="refundRule" column="refund_rule"/>
<result property="refundDay" column="refund_day"/>
<result property="isFee" column="is_fee"/>
<result property="feeType" column="fee_type"/>
<result property="deductionFees" column="deduction_fees"/>
<result property="deductionFeesUnit" column="deduction_fees_unit"/>
<result property="deductionJson" column="deduction_json"/>
<result property="orderSource" column="order_source"/>
<result property="tourId" column="tour_id"/>
<result property="mobilePhone" column="mobilePhone"/>
<result property="isRefundCheck" column="is_refund_check"/>
<result property="settlementPrice" column="settlement_price"/>
<result property="tradeSession" column="trade_session"/>
<result property="applicablePeriod" column="applicable_period"/>
<result property="timeQuantum" column="time_quantum"/>
<result property="deptId" column="dept_id"/>
<collection property="ticketOrderDetailList" javaType="java.util.List" ofType="ZdyTicketOrderDetailReturnVo"
select="selectZdyOrderDetailByOrderId" column="id"/>
</resultMap>
<resultMap type="ZdyTicketOrderDetailReturnVo" id="ZdyTicketOrderDetailResult">
<result property="id" column="id"/>
<result property="orderItemId" column="order_item_id"/>
<result property="ticketId" column="ticket_id"/>
<result property="userTouristId" column="user_tourist_id"/>
<result property="identityCard" column="identityCard"/>
<result property="userName" column="userName"/>
<result property="mobilePhone" column="mobilePhone"/>
<result property="ticketPrice" column="ticket_price"/>
<result property="buyQuantity" column="buy_quantity"/>
<result property="orderTime" column="order_time"/>
<result property="paymentType" column="payment_type"/>
<result property="paymentMethod" column="payment_method"/>
<result property="paymentTime" column="payment_time"/>
<result property="refundEndTime" column="refund_end_time"/>
<result property="verificationCode" column="verification_code"/>
<result property="availableStartTime" column="available_start_time"/>
<result property="availableEndTime" column="available_end_time"/>
<result property="verificationType" column="verification_type"/>
<result property="verificationTime" column="verification_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"/>
<result property="productTotalPrice" column="product_total_price"/>
<result property="payableAmount" column="payable_amount"/>
<result property="actuaAmount" column="actua_amount"/>
<result property="verificationUserId" column="verification_user_id"/>
<result property="verificationUserName" column="verification_user_name"/>
<result property="refundStatus" column="refund_status"/>
<result property="verificationMun" column="verification_mun"/>
<result property="delFlag" column="del_flag"/>
<result property="canVerificationMun" column="can_verification_mun"/>
<result property="identityCard" column="identityCard"/>
<result property="userName" column="userName"/>
<result property="mobilePhone" column="mobilePhone"/>
<result property="activationStatus" column="activation_status"/>
<result property="activationTime" column="activation_time"/>
</resultMap>
<select id="selectZdyOrderDetailByOrderId" parameterType="Long"
resultMap="ZdyTicketOrderDetailResult">
select d.*,
CASE
WHEN d.user_tourist_id = 0 THEN
d.user_name
ELSE u.`name`
END userName,
u.mobile as mobilePhone,
CASE
WHEN d.user_tourist_id = 0 THEN
d.identity_card
ELSE u.id_card
END identityCard
from zdy_ticket_order_detail d
LEFT JOIN zdy_user_tourist u ON u.id = d.user_tourist_id
where d.order_item_id = #{id}
order by d.verification_type
</select>
<resultMap type="ZdyTicketRefundRule" id="ZdyTicketRefundRuleResult">
<result property="id" column="sub_id"/>
<result property="ticketId" column="sub_ticket_id"/>
<result property="day" column="sub_day"/>
<result property="deductionFees" column="sub_deduction_fees"/>
<result property="deductionFeesUnit" column="sub_deduction_fees_unit"/>
</resultMap>
<resultMap type="ZdyTicketOrderRefundVo" id="ZdyTicketOrderRefundResult">
<result property="id" column="id"/>
<result property="orderId" column="order_id"/>
<result property="refundCode" column="refund_code"/>
<result property="orderPrepayId" column="order_prepay_id"/>
<result property="userId" column="user_id"/>
<result property="refundQuantity" column="refund_quantity"/>
<result property="totalPrice" column="total_price"/>
<result property="totalFee" column="total_fee"/>
<result property="actualPrice" column="actual_price"/>
<result property="refundStatus" column="refund_status"/>
<result property="refundTime" column="refund_time"/>
<result property="personalRefundType" column="personal_refund_type"/>
<result property="businessRefundType" column="business_refund_type"/>
<result property="refundDescribe" column="refund_describe"/>
<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"/>
<result property="userName" column="userName"/>
<result property="userPhone" column="userPhone"/>
<result property="tourId" column="tour_id"/>
<result property="refundSource" column="refund_source"/>
<result property="travelAgencyId" column="travel_agency_id"/>
<result property="orderTime" column="orderTime"/>
<result property="orderCode" column="orderCode"/>
<collection property="orderRefundItemList" javaType="java.util.List" ofType="ZdyTicketOrderRefundItem"
select="selectZdyTicketOrderRefundItemByRefundId" column="id"/>
</resultMap>
<resultMap type="ZdyTicketOrderRefundItem" id="ZdyTicketOrderRefundItemResult">
<result property="id" column="id"/>
<result property="refundId" column="refund_id"/>
<result property="orderItemId" column="order_item_id"/>
<result property="ticketClassify" column="ticket_classify"/>
<result property="ticketId" column="ticket_id"/>
<result property="refundQuantity" column="refund_quantity"/>
<result property="totalPrice" column="total_price"/>
<result property="totalFee" column="total_fee"/>
<result property="actualPrice" column="actual_price"/>
<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"/>
<result property="ticketName" column="ticket_name"/>
<result property="settlementPrice" column="settlement_price"/>
<result property="deptId" column="dept_id"/>
<collection property="refundDetailList" javaType="java.util.List" ofType="ZdyTicketOrderRefundDetail"
select="selectZdyTicketOrderRefundDetailByRefundId" column="id"/>
</resultMap>
<resultMap type="ZdyTicketOrderRefundDetail" id="ZdyTicketOrderRefundDetailResult">
<result property="id" column="id"/>
<result property="orderDetailId" column="order_detail_id"/>
<result property="refundItemId" column="refund_item_id"/>
</resultMap>
<!-- a.grounding_flag = 1 虽已授权但是下架,这里查询已上架的门票 -->
<select id="selectSalesTickets" parameterType="com.zhwl.travelagency.order.dto.ZdyTravelAgencyTicketDTO"
resultMap="TravelAgencyTicketVOResult">
select a.*,b.settlement_price as settlement_price11
from zdy_ticket a
inner join zdy_travel_agency_ticket_authorization b on a.id = b.ticket_id
left join zdy_travel_agency_info i on b.travel_agency_id = i.id
<where>
a.del_flag = '0' and a.grounding_flag = 1
<if test="ticketName != null and ticketName!=''">
and a.name like concat('%', #{ticketName},'%')
</if>
<if test="travelAgencyId != null">
and b.travel_agency_id = #{travelAgencyId}
</if>
${params.dataScope}
</where>
</select>
<select id="selectZdyTicketRefundRuleByTicketId" parameterType="Long"
resultMap="ZdyTicketRefundRuleResult">
select id as sub_id,
ticket_id as sub_ticket_id, day as sub_day, deduction_fees as sub_deduction_fees, deduction_fees_unit as sub_deduction_fees_unit
from zdy_ticket_refund_rule
where ticket_id = #{id}
</select>
<select id="selectZdyTicketOrderList" parameterType="com.zhwl.ticket.order.dto.ZdyTicketOrderDto"
resultMap="ZdyTicketOrderResult">
SELECT
a.id,
a.order_code,
a.order_prepay_id,
a.scenic_id,
a.user_id,
a.buy_quantity,
a.total_price,
a.order_source,
a.payment_type,
a.payment_method,
a.payment_time,
a.refund_status,
a.refund_time,
a.verification_type,
a.verification_time,
a.create_by,
a.create_time,
a.update_by,
a.update_time,
a.del_flag,
CASE
WHEN a.user_id = 0 THEN
a.user_name ELSE u.`name`
END userName,
u.mobile AS mobilePhone,
CASE
WHEN a.user_id = 0 THEN
a.identity_card ELSE u.id_card
END identityCard,
zs.scenic_name AS scenicName,
a.trade_session,
a.tour_id,
a.tourist_source,
a.tours_num,
a.travel_agency_id,
a.payment_scene
FROM
zdy_ticket_order a
LEFT JOIN zdy_user u ON u.id = a.user_id
LEFT JOIN zdy_scenic zs ON zs.id = a.scenic_id
<where>
a.del_flag = '0'
<if test="orderCode != null and orderCode != ''">
and a.order_code = #{orderCode}
</if>
<if test="orderPrepayId != null and orderPrepayId != ''">
and a.order_prepay_id = #{orderPrepayId}
</if>
<if test="userId != null">
and a.user_id = #{userId}
</if>
<if test="paymentType != null and paymentType != ''">
and a.payment_type = #{paymentType}
</if>
<if test="paymentMethod != null and paymentMethod != ''">
and a.payment_method = #{paymentMethod}
</if>
<if test="orderSource != null and orderSource != ''">
and a.order_source = #{orderSource}
</if>
<if test="travelAgencyId != null ">
and a.travel_agency_id = #{travelAgencyId}
</if>
<if test="buyer != null and buyer != ''">
and (a.user_name like concat('%', #{buyer}, '%') or u.name like concat('%', #{buyer}, '%'))
</if>
<if test="noOrderSource != null and noOrderSource != ''">
and a.order_source != #{noOrderSource}
</if>
AND a.id IN (SELECT DISTINCT item.order_id
FROM
zdy_ticket_order_detail detail
LEFT JOIN zdy_ticket_order_item item ON item.id = detail.order_item_id
LEFT JOIN zdy_user_tourist ut ON ut.id = detail.user_tourist_id
left join sys_dept d on d.dept_id = item.dept_id
<where>
<if test="verificationType != null and verificationType != ''">
and detail.verification_type = #{verificationType}
</if>
<if test="verificationCode != null and verificationCode != ''">
and (detail.verification_code = #{verificationCode} or item.order_code = #{verificationCode})
</if>
<if test="orderStartTime != null and orderEndTime != null">
and detail.order_time between #{orderStartTime} and #{orderEndTime}
</if>
<if test="userName != null and userName != ''">
and (detail.user_name like concat('%', #{userName}, '%') or ut.`name` like concat('%', #{userName},
'%') or item.user_name like concat('%', #{userName}, '%'))
</if>
<if test="mobilePhone != null and mobilePhone != ''">
and ut.mobile = #{mobilePhone}
</if>
<if test="identityCard != null and identityCard != ''">
and (detail.identity_card = #{identityCard} or ut.id_card = #{identityCard} or item.identity_card =
#{identityCard})
</if>
<if test="refundStatus != null and refundStatus != ''">
and detail.refund_status IN ( 0, 100, 3 )
</if>
<if test="ticketName != null and ticketName != ''">
and item.ticket_name like concat('%', #{ticketName}, '%')
</if>
<if test="classifyList != null and classifyList != ''">
and (item.classify in
<foreach item="classify" collection="classifyList" open="(" separator="," close=")">
#{classify}
</foreach>
)
</if>
<if test="activationStatus != null and activationStatus != ''">
and detail.activation_status = #{activationStatus}
</if>
<if test="activationStartTime != null and activationEndTime != null">
and detail.activation_time between #{activationStartTime} and #{activationEndTime}
</if>
${params.dataScope}
</where>
)
</where>
order by a.id desc
</select>
<select id="selectZdyTicketOrderListNoDataScope" parameterType="com.zhwl.ticket.order.dto.ZdyTicketOrderDto"
resultMap="ZdyTicketOrderResult">
SELECT
a.id,
a.order_code,
a.order_prepay_id,
a.scenic_id,
a.user_id,
a.buy_quantity,
a.total_price,
a.order_source,
a.payment_type,
a.payment_method,
a.payment_time,
a.refund_status,
a.refund_time,
a.verification_type,
a.verification_time,
a.create_by,
a.create_time,
a.update_by,
a.update_time,
a.del_flag,
CASE
WHEN a.user_id = 0 THEN
a.user_name ELSE u.`name`
END userName,
u.mobile AS mobilePhone,
CASE
WHEN a.user_id = 0 THEN
a.identity_card ELSE u.id_card
END identityCard,
zs.scenic_name AS scenicName,
a.trade_session,
a.tour_id,
a.tourist_source,
a.tours_num,
a.travel_agency_id,
a.payment_scene
FROM
zdy_ticket_order a
LEFT JOIN zdy_user u ON u.id = a.user_id
LEFT JOIN zdy_scenic zs ON zs.id = a.scenic_id
<where>
a.del_flag = '0'
<if test="orderCode != null and orderCode != ''">
and a.order_code = #{orderCode}
</if>
<if test="orderPrepayId != null and orderPrepayId != ''">
and a.order_prepay_id = #{orderPrepayId}
</if>
<if test="userId != null">
and a.user_id = #{userId}
</if>
<if test="paymentType != null and paymentType != ''">
and a.payment_type = #{paymentType}
</if>
<if test="paymentMethod != null and paymentMethod != ''">
and a.payment_method = #{paymentMethod}
</if>
<if test="orderSource != null and orderSource != ''">
and a.order_source = #{orderSource}
</if>
<if test="travelAgencyId != null ">
and a.travel_agency_id = #{travelAgencyId}
</if>
<if test="buyer != null and buyer != ''">
and (a.user_name like concat('%', #{buyer}, '%') or u.name like concat('%', #{buyer}, '%'))
</if>
<if test="noOrderSource != null and noOrderSource != ''">
and a.order_source != #{noOrderSource}
</if>
AND a.id IN (SELECT DISTINCT item.order_id
FROM
zdy_ticket_order_detail detail
LEFT JOIN zdy_ticket_order_item item ON item.id = detail.order_item_id
LEFT JOIN zdy_user_tourist ut ON ut.id = detail.user_tourist_id
left join sys_dept d on d.dept_id = item.dept_id
<where>
<if test="verificationType != null and verificationType != ''">
and detail.verification_type = #{verificationType}
</if>
<if test="verificationCode != null and verificationCode != ''">
and (detail.verification_code = #{verificationCode} or item.order_code = #{verificationCode})
</if>
<if test="orderStartTime != null and orderEndTime != null">
and detail.order_time between #{orderStartTime} and #{orderEndTime}
</if>
<if test="userName != null and userName != ''">
and (detail.user_name like concat('%', #{userName}, '%') or ut.`name` like concat('%', #{userName},
'%') or item.user_name like concat('%', #{userName}, '%'))
</if>
<if test="mobilePhone != null and mobilePhone != ''">
and ut.mobile = #{mobilePhone}
</if>
<if test="identityCard != null and identityCard != ''">
and (detail.identity_card = #{identityCard} or ut.id_card = #{identityCard} or item.identity_card =
#{identityCard})
</if>
<if test="refundStatus != null and refundStatus != ''">
and detail.refund_status IN ( 0, 100, 3 )
</if>
<if test="ticketName != null and ticketName != ''">
and item.ticket_name like concat('%', #{ticketName}, '%')
</if>
<if test="classifyList != null and classifyList != ''">
and (item.classify in
<foreach item="classify" collection="classifyList" open="(" separator="," close=")">
#{classify}
</foreach>
)
</if>
<if test="activationStatus != null and activationStatus != ''">
and detail.activation_status = #{activationStatus}
</if>
<if test="activationStartTime != null and activationEndTime != null">
and detail.activation_time between #{activationStartTime} and #{activationEndTime}
</if>
</where>
)
</where>
order by a.id desc
</select>
<select id="selectZdyTicketOrderRefundList" parameterType="com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto"
resultMap="ZdyTicketOrderRefundResult">
<include refid="selectZdyTicketOrderRefundVo"/>
<where>
tor.del_flag = '0'
<if test="orderId != null and orderId != ''">
and tor.order_id = #{orderId}
</if>
<if test="refundCode != null and refundCode != ''">
and tor.refund_code = #{refundCode}
</if>
<if test="orderPrepayId != null ">
and tor.order_prepay_id = #{orderPrepayId}
</if>
<if test="userId != null ">
and tor.user_id = #{userId}
</if>
<if test="refundStatus != null and refundStatus != ''">
and tor.refund_status = #{refundStatus}
</if>
<if test="orderCode != null and orderCode != ''">
and o.order_code = #{orderCode}
</if>
<if test="userName != null and userName != ''">
and (us.name like concat('%',#{userName},'%') or us.nickname like concat('%',#{userName},'%'))
</if>
<if test="refundStartTime != null and refundEndTime != null">
and tor.create_time between #{refundStartTime} and #{refundEndTime}
</if>
<if test="tourId != null">
and tor.tour_id = #{tourId}
</if>
<if test="refundSource != null and refundSource != ''">
and tor.refund_source = #{refundSource}
</if>
<if test="travelAgencyId != null">
and o.travel_agency_id = #{travelAgencyId}
</if>
AND tor.id IN (SELECT DISTINCT item.refund_id
FROM
zdy_ticket_order_refund_item item
left join sys_dept d on d.dept_id = item.dept_id
<where>
${params.dataScope}
</where>
)
</where>
order by tor.create_time desc
</select>
<sql id="selectZdyTicketOrderRefundVo">
SELECT tor.id,
tor.order_id,
tor.refund_code,
tor.order_prepay_id,
tor.user_id,
tor.refund_quantity,
tor.total_price,
tor.total_fee,
tor.actual_price,
tor.refund_status,
tor.refund_time,
tor.personal_refund_type,
tor.business_refund_type,
tor.refund_describe,
tor.create_time,
tor.update_time,
tor.create_by,
tor.tour_id,
o.order_code as orderCode,
tor.refund_source,
o.travel_agency_id,
o.create_time orderTime,
CASE
WHEN (us.NAME IS NULL OR us.NAME = '') THEN
us.nickname
ELSE us.NAME
END AS userName,
us.mobile AS userPhone
FROM zdy_ticket_order_refund tor
LEFT JOIN zdy_ticket_order o ON o.id = tor.order_id
LEFT JOIN zdy_user us ON us.id = tor.user_id
</sql>
<select id="selectZdyTicketOrderRefundDetailByRefundId" parameterType="Long"
resultMap="ZdyTicketOrderRefundDetailResult">
select *
from zdy_ticket_order_refund_detail
where refund_item_id = #{id}
</select>
<select id="selectZdyTicketOrderRefundListNoDataScope"
parameterType="com.zhwl.ticket.order.dto.ZdyTicketOrderRefundDto"
resultMap="ZdyTicketOrderRefundResult">
<include refid="selectZdyTicketOrderRefundVo"/>
<where>
tor.del_flag = '0'
<if test="orderId != null and orderId != ''">
and tor.order_id = #{orderId}
</if>
<if test="refundCode != null and refundCode != ''">
and tor.refund_code = #{refundCode}
</if>
<if test="orderPrepayId != null ">
and tor.order_prepay_id = #{orderPrepayId}
</if>
<if test="userId != null ">
and tor.user_id = #{userId}
</if>
<if test="refundStatus != null and refundStatus != ''">
and tor.refund_status = #{refundStatus}
</if>
<if test="orderCode != null and orderCode != ''">
and o.order_code = #{orderCode}
</if>
<if test="userName != null and userName != ''">
and (us.name like concat('%',#{userName},'%') or us.nickname like concat('%',#{userName},'%'))
</if>
<if test="refundStartTime != null and refundEndTime != null">
and tor.create_time between #{refundStartTime} and #{refundEndTime}
</if>
<if test="tourId != null">
and tor.tour_id = #{tourId}
</if>
<if test="refundSource != null and refundSource != ''">
and tor.refund_source = #{refundSource}
</if>
<if test="travelAgencyId != null">
and o.travel_agency_id = #{travelAgencyId}
</if>
AND tor.id IN (SELECT DISTINCT item.refund_id
FROM
zdy_ticket_order_refund_item item
left join sys_dept d on d.dept_id = item.dept_id
)
</where>
order by tor.create_time desc
</select>
<select id="selectZdyTicketOrderRefundItemByRefundId" parameterType="Long"
resultMap="ZdyTicketOrderRefundItemResult">
SELECT tor.id,
tor.order_item_id,
tor.refund_id,
tor.ticket_id,
tor.refund_quantity,
tor.total_price,
tor.total_fee,
tor.actual_price,
tor.create_time,
tor.update_time,
tor.ticket_classify,
tor.ticket_name,
tor.dept_id,
o.order_code as orderCode
FROM zdy_ticket_order_refund_item tor
LEFT JOIN zdy_ticket_order_item o ON o.id = tor.order_item_id
where tor.refund_id = #{id}
</select>
</mapper>