退款列表、部分接口修改

This commit is contained in:
Jerry Yan 2024-12-19 10:35:25 +08:00
parent 19e9d547fa
commit eaf16c48c4
16 changed files with 211 additions and 70 deletions

View File

@ -0,0 +1,65 @@
package com.ycwl.basic.controller.pc;
import com.github.pagehelper.PageInfo;
import com.ycwl.basic.model.mobile.order.RefundOrderReq;
import com.ycwl.basic.model.pc.order.entity.OrderEntity;
import com.ycwl.basic.model.pc.order.req.OrderReqQuery;
import com.ycwl.basic.model.pc.order.resp.OrderRespVO;
import com.ycwl.basic.service.pc.OrderService;
import com.ycwl.basic.utils.ApiResponse;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* @Authorlongbinbin
* @Date2024/12/3 13:49
*/
@RestController
@RequestMapping("/api/refund/v1")
@Api(tags = "退款订单管理")
public class RefundController {
@Autowired
private OrderService orderService;
@ApiOperation(value = "审核退款", notes = "审核退款")
@PostMapping("/auditRefundOrder")
public ApiResponse<?> auditRefundOrder(@RequestBody RefundOrderReq refundOrderReq) {
return orderService.auditRefundOrder(refundOrderReq);
}
@ApiOperation("分页查询订单")
@PostMapping("page")
public ApiResponse<PageInfo<OrderRespVO>> pageQuery(@RequestBody OrderReqQuery query) {
return orderService.refundPageQuery(query);
}
@ApiOperation("订单列表查询")
@PostMapping("list")
public ApiResponse<List<OrderRespVO>> list(@RequestBody OrderReqQuery query) {
return orderService.list(query);
}
@ApiOperation("订单详情查询")
@GetMapping("detail/{id}")
public ApiResponse<OrderRespVO> detail(@PathVariable("id") Long orderId) {
return orderService.detail(orderId);
}
@ApiOperation("订单备注")
@PostMapping("remark/{id}")
public ApiResponse<?> updateRemark(@PathVariable("id") Long orderId, @RequestBody OrderEntity query) {
orderService.remarkOrder(orderId, query);
return ApiResponse.success(null);
}
}

View File

@ -36,4 +36,6 @@ public interface OrderMapper {
List<OrderAppRespVO> appList(OrderAppPageReq orderReqQuery); List<OrderAppRespVO> appList(OrderAppPageReq orderReqQuery);
OrderAppRespVO appDetail(Long id); OrderAppRespVO appDetail(Long id);
List<OrderRespVO> refundList(OrderReqQuery query);
} }

View File

@ -1,10 +1,12 @@
package com.ycwl.basic.mapper; package com.ycwl.basic.mapper;
import com.ycwl.basic.model.mobile.scenic.content.ContentPageVO;
import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity; import com.ycwl.basic.model.pc.template.entity.TemplateConfigEntity;
import com.ycwl.basic.model.pc.template.entity.TemplateEntity; import com.ycwl.basic.model.pc.template.entity.TemplateEntity;
import com.ycwl.basic.model.pc.template.req.TemplateReqQuery; import com.ycwl.basic.model.pc.template.req.TemplateReqQuery;
import com.ycwl.basic.model.pc.template.resp.TemplateRespVO; import com.ycwl.basic.model.pc.template.resp.TemplateRespVO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
@ -30,4 +32,6 @@ public interface TemplateMapper {
int deleteConfigByTemplateId(Long templateId); int deleteConfigByTemplateId(Long templateId);
int deleteConfigById(Long id); int deleteConfigById(Long id);
List<TemplateEntity> listByScenicId(Long scenicId); List<TemplateEntity> listByScenicId(Long scenicId);
List<ContentPageVO> listFor(@Param("scenicId") Long scenicId, @Param("faceId") Long faceId);
} }

View File

@ -45,4 +45,5 @@ public class VideoGoodsDetailVO {
private Integer isBuy; private Integer isBuy;
@ApiModelProperty("镜头数") @ApiModelProperty("镜头数")
private Integer lensNum; private Integer lensNum;
private Long faceId;
} }

View File

@ -15,20 +15,18 @@ import java.math.BigDecimal;
public class ContentPageVO { public class ContentPageVO {
@ApiModelProperty("内容名称") @ApiModelProperty("内容名称")
private String name; private String name;
// @ApiModelProperty("景区id") @ApiModelProperty("景区id")
// private Long scenicId; private Long scenicId;
// @ApiModelProperty("景区名称") @ApiModelProperty("景区名称")
// private String scenicName; private String scenicName;
// @ApiModelProperty("经度")
// private BigDecimal longitude;
// @ApiModelProperty("纬度")
// private BigDecimal latitude;
@ApiModelProperty("内容类型 0模版 1:成片视频 2:源素材 ") @ApiModelProperty("内容类型 0模版 1:成片视频 2:源素材 ")
private Integer contentType; private Integer contentType;
@ApiModelProperty("源素材类型 1:视频 2:图片") @ApiModelProperty("源素材类型 1:视频 2:图片")
private Integer sourceType; private Integer sourceType;
@ApiModelProperty("内容id contentType为0或1时才有值") @ApiModelProperty("内容id contentType为0或1时才有值")
private Long contentId; private Long contentId;
@ApiModelProperty("模版id")
private Long templateId;
@ApiModelProperty("模版封面图片 contentType为0或1时才有值") @ApiModelProperty("模版封面图片 contentType为0或1时才有值")
private String templateCoverUrl; private String templateCoverUrl;
@ApiModelProperty("是否购买0未购买1已购买") @ApiModelProperty("是否购买0未购买1已购买")

View File

@ -22,6 +22,7 @@ public class TaskRespVO {
*/ */
@ApiModelProperty("执行任务的机器ID") @ApiModelProperty("执行任务的机器ID")
private Long workerId; private Long workerId;
private Long faceId;
/** /**
* 用户ID可以不和用户关联 * 用户ID可以不和用户关联
*/ */

View File

@ -84,4 +84,6 @@ public class TemplateRespVO {
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date updateTime; private Date updateTime;
private List<TemplateRespVO> children; private List<TemplateRespVO> children;
private BigDecimal price;
private Integer sort;
} }

View File

@ -133,46 +133,29 @@ public class AppScenicServiceImpl implements AppScenicService {
@Override @Override
public ApiResponse<List<ContentPageVO>> contentList(Long faceId) { public ApiResponse<List<ContentPageVO>> contentList(Long faceId) {
JwtInfo worker = JwtTokenUtil.getWorker(); JwtInfo worker = JwtTokenUtil.getWorker();
//查询原素材
List<ContentPageVO> contentList = new ArrayList<>();
FaceRespVO faceRespVO = faceMapper.getById(faceId); FaceRespVO faceRespVO = faceMapper.getById(faceId);
if (StringUtils.isBlank(faceRespVO.getMatchSampleIds())) {
return ApiResponse.success(new ArrayList<>());
}
HashMap<Long, String> videoMap = new HashMap<>(); List<ContentPageVO> contentList = templateMapper.listFor(faceRespVO.getScenicId(), faceId);
VideoReqQuery videoReqQuery = new VideoReqQuery(); contentList.forEach(contentPageVO -> {
videoReqQuery.setFaceId(faceId); if (contentPageVO.getContentType() == 1) {
videoReqQuery.setMemberId(worker.getUserId()); VideoReqQuery videoReqQuery = new VideoReqQuery();
//查询成片vlog videoReqQuery.setScenicId(contentPageVO.getScenicId());
List<VideoRespVO> videoList = videoMapper.list(videoReqQuery); videoReqQuery.setTemplateId(contentPageVO.getTemplateId());
videoList.forEach(videoRespVO -> { videoReqQuery.setMemberId(worker.getUserId());
ContentPageVO contentPageVO = new ContentPageVO(); List<VideoRespVO> videoList = videoMapper.list(videoReqQuery);
contentPageVO.setName(videoRespVO.getTemplateName()); if (!videoList.isEmpty()) {
contentPageVO.setContentType(1); contentPageVO.setContentId(videoList.get(0).getId());
contentPageVO.setContentId(videoRespVO.getId()); }
contentPageVO.setTemplateCoverUrl(videoRespVO.getTemplateCoverUrl());
contentPageVO.setIsBuy(videoRespVO.getIsBuy());
contentList.add(contentPageVO);
videoMap.put(videoRespVO.getTemplateId(),"");
});
TemplateReqQuery templateReqQuery = new TemplateReqQuery();
templateReqQuery.setScenicId(faceRespVO.getScenicId());
List<TemplateRespVO> list = templateMapper.list(templateReqQuery);
list.forEach(templateRespVO -> {
Long templateId = templateRespVO.getId();
if (!videoMap.containsKey(templateId)) {
ContentPageVO contentPageVO = new ContentPageVO();
contentPageVO.setName(templateRespVO.getName());
contentPageVO.setContentType(0);
contentPageVO.setContentId(templateId);
contentPageVO.setTemplateCoverUrl(templateRespVO.getCoverUrl());
contentList.add(contentPageVO);
} }
}); });
SourceReqQuery sourceReqQuery = new SourceReqQuery(); SourceReqQuery sourceReqQuery = new SourceReqQuery();
videoReqQuery.setScenicId(faceRespVO.getScenicId()); sourceReqQuery.setScenicId(faceRespVO.getScenicId());
videoReqQuery.setMemberId(worker.getUserId()); sourceReqQuery.setMemberId(worker.getUserId());
//查询源素材 //查询源素材
List<SourceRespVO> sourceList = sourceMapper.listGroupByType(sourceReqQuery); List<SourceRespVO> sourceList = sourceMapper.listGroupByType(sourceReqQuery);
sourceList.forEach(sourceRespVO -> { sourceList.forEach(sourceRespVO -> {

View File

@ -1,5 +1,7 @@
package com.ycwl.basic.service.impl.mobile; package com.ycwl.basic.service.impl.mobile;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ycwl.basic.constant.BaseContextHandler; import com.ycwl.basic.constant.BaseContextHandler;
import com.ycwl.basic.mapper.*; import com.ycwl.basic.mapper.*;
import com.ycwl.basic.model.jwt.JwtInfo; import com.ycwl.basic.model.jwt.JwtInfo;
@ -10,12 +12,14 @@ import com.ycwl.basic.model.pc.scenic.resp.ScenicRespVO;
import com.ycwl.basic.model.pc.source.req.SourceReqQuery; import com.ycwl.basic.model.pc.source.req.SourceReqQuery;
import com.ycwl.basic.model.pc.source.resp.SourceRespVO; import com.ycwl.basic.model.pc.source.resp.SourceRespVO;
import com.ycwl.basic.model.pc.task.req.TaskReqQuery; import com.ycwl.basic.model.pc.task.req.TaskReqQuery;
import com.ycwl.basic.model.pc.task.resp.TaskRespVO;
import com.ycwl.basic.model.pc.video.req.VideoReqQuery; import com.ycwl.basic.model.pc.video.req.VideoReqQuery;
import com.ycwl.basic.model.pc.video.resp.VideoRespVO; import com.ycwl.basic.model.pc.video.resp.VideoRespVO;
import com.ycwl.basic.service.mobile.GoodsService; import com.ycwl.basic.service.mobile.GoodsService;
import com.ycwl.basic.utils.ApiResponse; import com.ycwl.basic.utils.ApiResponse;
import com.ycwl.basic.utils.DateUtils; import com.ycwl.basic.utils.DateUtils;
import com.ycwl.basic.utils.JwtTokenUtil; import com.ycwl.basic.utils.JwtTokenUtil;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -23,6 +27,7 @@ import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
/** /**
@ -197,8 +202,16 @@ public class GoodsServiceImpl implements GoodsService {
DecimalFormat df = new DecimalFormat("0.00"); DecimalFormat df = new DecimalFormat("0.00");
goodsDetailVO.setPrice(templatePrice==null?"":df.format(templatePrice.setScale(2, RoundingMode.HALF_UP))); goodsDetailVO.setPrice(templatePrice==null?"":df.format(templatePrice.setScale(2, RoundingMode.HALF_UP)));
goodsDetailVO.setIsBuy(videoRespVO.getIsBuy()); goodsDetailVO.setIsBuy(videoRespVO.getIsBuy());
ScenicDeviceCountVO scenicDeviceCountVO = deviceMapper.deviceCountByScenicId(videoRespVO.getScenicId(), -1L); TaskRespVO taskRespVO = taskMapper.getById(videoRespVO.getTaskId());
goodsDetailVO.setLensNum(scenicDeviceCountVO.getTotalDeviceCount()); JSONObject paramJson = JSON.parseObject(taskRespVO.getTaskParams());
long deviceCount;
if (paramJson == null) {
deviceCount = 1;
} else {
deviceCount = paramJson.keySet().stream().filter(StringUtils::isNumeric).count();
}
goodsDetailVO.setLensNum((int) deviceCount);
goodsDetailVO.setFaceId(taskRespVO.getFaceId());
return ApiResponse.success(goodsDetailVO); return ApiResponse.success(goodsDetailVO);
} }

View File

@ -342,4 +342,12 @@ public class OrderServiceImpl implements OrderService {
orderOperationMapper.add(orderOperationEntity); orderOperationMapper.add(orderOperationEntity);
} }
@Override
public ApiResponse<PageInfo<OrderRespVO>> refundPageQuery(OrderReqQuery query) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
List<OrderRespVO> list = orderMapper.refundList(query);
PageInfo<OrderRespVO> pageInfo = new PageInfo<>(list);
return ApiResponse.success(pageInfo);
}
} }

View File

@ -57,4 +57,6 @@ public interface OrderService {
ApiResponse<?> auditRefundOrder(RefundOrderReq refundOrderReq); ApiResponse<?> auditRefundOrder(RefundOrderReq refundOrderReq);
void remarkOrder(Long orderId, OrderEntity query); void remarkOrder(Long orderId, OrderEntity query);
ApiResponse<PageInfo<OrderRespVO>> refundPageQuery(OrderReqQuery query);
} }

View File

@ -14,7 +14,7 @@ spring:
datasource: # 数据源的相关配置 datasource: # 数据源的相关配置
type: com.zaxxer.hikari.HikariDataSource # 数据源类型HikariCP type: com.zaxxer.hikari.HikariDataSource # 数据源类型HikariCP
driver-class-name: com.mysql.cj.jdbc.Driver # mysql驱动 driver-class-name: com.mysql.cj.jdbc.Driver # mysql驱动
url: jdbc:mysql://106.14.162.214:3306/zt?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true url: jdbc:mysql://127.0.0.1:3306/zt?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: zt username: zt
password: ZhEnTuAi2024zHeNtUaI password: ZhEnTuAi2024zHeNtUaI
hikari: hikari:

View File

@ -1,22 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"> <configuration debug="false">
<!-- appender是configuration的子节点是负责写日志的组件。 -->
<!-- ConsoleAppender把日志输出到控制台 -->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- 默认情况下,每个日志事件都会立即刷新到基础输出流。 这种默认方法更安全因为如果应用程序在没有正确关闭appender的情况下退出则日志事件不会丢失。
但是为了显着增加日志记录吞吐量您可能希望将immediateFlush属性设置为false -->
<!--<immediateFlush>true</immediateFlush>-->
<encoder> <encoder>
<!-- %37():如果字符没有37个字符长度,则左侧用空格补齐 --> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} (%-5level) (%-40.40(%logger{40})) : %msg%n</pattern>
<!-- %-37():如果字符没有37个字符长度,则右侧用空格补齐 -->
<!-- %15.15():如果记录的线程字符长度小于15(第一个)则用空格在左侧补齐,如果字符长度大于15(第二个),则从开头开始截断多余的字符 -->
<!-- %-40.40():如果记录的logger字符长度小于40(第一个)则用空格在右侧补齐,如果字符长度大于40(第二个),则从开头开始截断多余的字符 -->
<!-- %msg日志打印详情 -->
<!-- %n:换行符 -->
<!-- %highlight():转换说明符以粗体红色显示其级别为ERROR的事件红色为WARNBLUE为INFO以及其他级别的默认颜色。 -->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) --- [%15.15(%thread)] %cyan(%-40.40(%logger{40})) : %msg%n</pattern>
<!-- 控制台也要使用UTF-8不要使用GBK否则会中文乱码 -->
<charset>UTF-8</charset> <charset>UTF-8</charset>
</encoder> </encoder>
</appender> </appender>
@ -116,13 +103,7 @@
</encoder> </encoder>
</appender> </appender>
<!--给定记录器的每个启用的日志记录请求都将转发到该记录器中的所有appender以及层次结构中较高的appender不用在意level值 <root level="WARN">
换句话说appender是从记录器层次结构中附加地继承的。
例如如果将控制台appender添加到根记录器则所有启用的日志记录请求将至少在控制台上打印。
如果另外将文件追加器添加到记录器例如L则对L和L'子项启用的记录请求将打印在文件和控制台上。
通过将记录器的additivity标志设置为false可以覆盖此默认行为以便不再添加appender累积-->
<!-- configuration中最多允许一个root别的logger如果没有设置级别则从父级别root继承 -->
<root level="INFO">
<appender-ref ref="STDOUT" /> <appender-ref ref="STDOUT" />
</root> </root>

View File

@ -131,7 +131,7 @@
</delete> </delete>
<select id="list" resultMap="PCBaseResultMap"> <select id="list" resultMap="PCBaseResultMap">
select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code, select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, o.goods_type, oi.goods_id refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, o.goods_type, oi.goods_id, o.create_at
from `order` AS o from `order` AS o
left join member m on o.member_id = m.id left join member m on o.member_id = m.id
left join scenic s on o.scenic_id = s.id left join scenic s on o.scenic_id = s.id
@ -324,4 +324,75 @@
left join scenic sc on (o.goods_type='1' and vd.scenic_id=sc.id) or (o.goods_type='2' and sr.scenic_id=sc.id) left join scenic sc on (o.goods_type='1' and vd.scenic_id=sc.id) or (o.goods_type='2' and sr.scenic_id=sc.id)
where o.id = #{id} where o.id = #{id}
</select> </select>
<select id="refundList" resultType="com.ycwl.basic.model.pc.order.resp.OrderRespVO">
select distinct o.id, o.scenic_id, s.name as scenic_name, o.member_id,m.nickname ,m.real_name , o.openid, o.price, pay_price, remark, o.broker_id, o.promo_code,
refund_reason, refund_status, o.`status`, refund_at, pay_at, cancel_at,oi.id oiId, o.goods_type, oi.goods_id, o.create_at
from `order` AS o
left join member m on o.member_id = m.id
left join scenic s on o.scenic_id = s.id
left join order_item oi on o.id = oi.order_id
left join source sr on o.goods_type='2' and oi.goods_id = sr.id
left join video vd on o.goods_type='1' and oi.goods_id = vd.id
<where>
o.refund_status != 0
<if test="id!= null ">
and o.id = #{id}
</if>
<if test="scenicId != null">
and o.scenic_id = #{scenicId}
</if>
<if test="memberNickname!= null and memberNickname!=''">
and m.nickname like concat('%',#{memberNickname},'%')
</if>
<if test="memberRealName!= null and memberRealName!=''">
and m.real_name like concat('%',#{memberRealName},'%')
</if>
<if test="price!= null ">
and o.price = #{price}
</if>
<if test="payPrice!= null ">
and pay_price = #{payPrice}
</if>
<if test="remark!= null and remark!= ''">
and remark like concat('%',#{remark},'%')
</if>
<if test="brokerId!= null ">
and o.broker_id = #{brokerId}
</if>
<if test="promoCode!= null and promoCode!= ''">
and o.promo_code like concat('%',#{promoCode},'%')
</if>
<if test="refundReason!= null and refundReason!= ''">
and refund_reason like concat('%',#{refundReason},'%')
</if>
<if test="status!= null ">
and o.`status` = #{status}
</if>
<if test="startCreateTime!= null ">
and o.create_at >= #{startCreateTime}
</if>
<if test="endCreateTime!= null ">
and o.create_at &lt;= #{endCreateTime}
</if>
<if test="startPayTime!= null ">
and pay_at &gt;= #{startPayTime}
</if>
<if test="endPayTime!= null ">
and pay_at &lt;= #{endPayTime}
</if>
<if test="startRefundTime!= null ">
and refund_at &gt;= #{startRefundTime}
</if>
<if test="endRefundTime!= null ">
and refund_at &lt;= #{endRefundTime}
</if>
<if test="startCancelTime!= null ">
and cancel_at &gt;= #{startCancelTime}
</if>
<if test="endCancelTime!= null ">
and cancel_at &lt;= #{endCancelTime}
</if>
</where>
order by o.create_at desc
</select>
</mapper> </mapper>

View File

@ -54,7 +54,7 @@
delete from task where id = #{id} delete from task where id = #{id}
</delete> </delete>
<select id="list" resultType="com.ycwl.basic.model.pc.task.resp.TaskRespVO"> <select id="list" resultType="com.ycwl.basic.model.pc.task.resp.TaskRespVO">
select id, worker_id, member_id, template_id, scenic_id, task_params, video_url, `status`, result, create_time, update_time, start_time, end_time select id, worker_id, face_id, member_id, template_id, scenic_id, task_params, video_url, `status`, result, create_time, update_time, start_time, end_time
from task from task
<where> <where>
<if test="workerId!= null">and worker_id = #{workerId} </if> <if test="workerId!= null">and worker_id = #{workerId} </if>
@ -67,7 +67,7 @@ from task
</where> </where>
</select> </select>
<select id="getById" resultType="com.ycwl.basic.model.pc.task.resp.TaskRespVO"> <select id="getById" resultType="com.ycwl.basic.model.pc.task.resp.TaskRespVO">
select id, worker_id, member_id, template_id, scenic_id, task_params, video_url, `status`, result, create_time, update_time select id, worker_id, face_id, member_id, template_id, scenic_id, task_params, video_url, `status`, result, create_time, update_time
from task from task
where id = #{id} where id = #{id}
</select> </select>

View File

@ -63,7 +63,7 @@
delete from template_config where id = #{id} delete from template_config where id = #{id}
</delete> </delete>
<select id="list" resultType="com.ycwl.basic.model.pc.template.resp.TemplateRespVO"> <select id="list" resultType="com.ycwl.basic.model.pc.template.resp.TemplateRespVO">
select t.id, t.scenic_id, s.name as scenic_name, t.`name`, t.cover_url, t.status, t.create_time, t.update_time select t.id, t.scenic_id, s.name as scenic_name, t.`name`, t.cover_url, t.status, t.create_time, t.update_time, t.price, t.sort
from template t left join scenic s on s.id = t.scenic_id from template t left join scenic s on s.id = t.scenic_id
<where> <where>
pid = 0 pid = 0
@ -79,7 +79,7 @@
</where> </where>
</select> </select>
<select id="getById" resultType="com.ycwl.basic.model.pc.template.resp.TemplateRespVO"> <select id="getById" resultType="com.ycwl.basic.model.pc.template.resp.TemplateRespVO">
select t.id, t.scenic_id, s.name as scenic_name, t.`name`, pid, is_placeholder, source_url, luts, overlays, audios, frame_rate, speed, t.cover_url, t.status, t.create_time, t.update_time select t.id, t.scenic_id, s.name as scenic_name, t.`name`, pid, is_placeholder, source_url, luts, overlays, audios, frame_rate, speed, t.cover_url, t.status, t.create_time, t.update_time, t.price, t.sort
from template t left join scenic s on s.id = t.scenic_id from template t left join scenic s on s.id = t.scenic_id
where t.id = #{id} where t.id = #{id}
</select> </select>
@ -96,4 +96,14 @@
from template from template
where scenic_id = #{scenicId} and pid = 0 where scenic_id = #{scenicId} and pid = 0
</select> </select>
<select id="listFor" resultType="com.ycwl.basic.model.mobile.scenic.content.ContentPageVO">
select t.id templateId, t.scenic_id, s.name as scenic_name, t.`name`, pid, t.cover_url templateCoverUrl,
1 as sourceType,
(select IF(count(1) > 0,1,0) from video left join task on video.task_id = task.id where video.template_id=t.id and task.face_id = #{faceId}) contentType,
(select count(1) from video left join task on video.task_id = task.id where video.template_id=t.id and task.face_id = #{faceId} and video.is_buy = 1) isBuy,
t.create_time, t.price
from template t left join scenic s on s.id = t.scenic_id
where t.scenic_id = #{scenicId} and pid = 0 and t.status = 1
order by sort
</select>
</mapper> </mapper>