Преглед на файлове

Merge branch 'master' of ssh://192.168.8.213:10022/miaxis/zzjs

Althars123 преди 3 години
родител
ревизия
fd0b50d1f5
променени са 15 файла, в които са добавени 395 реда и са изтрити 34 реда
  1. 31 8
      zzjs-admin/src/main/java/com/miaxis/app/controller/collection/AppletCollectionInfoController.java
  2. 11 4
      zzjs-admin/src/main/java/com/miaxis/app/controller/teachingVideo/AppletTeachingVideoInfoController.java
  3. 9 0
      zzjs-common/src/main/java/com/miaxis/common/strategy/Strategy.java
  4. 58 0
      zzjs-common/src/main/java/com/miaxis/common/strategy/StrategyManager.java
  5. 0 7
      zzjs-service/src/main/java/com/miaxis/car/domain/UsedCarInfo.java
  6. 7 4
      zzjs-service/src/main/java/com/miaxis/collection/domain/CollectionInfo.java
  7. 1 0
      zzjs-service/src/main/java/com/miaxis/collection/mapper/CollectionInfoMapper.java
  8. 11 4
      zzjs-service/src/main/java/com/miaxis/collection/service/ICollectionInfoService.java
  9. 59 6
      zzjs-service/src/main/java/com/miaxis/collection/service/impl/CollectionInfoServiceImpl.java
  10. 14 0
      zzjs-service/src/main/java/com/miaxis/collection/strategy/BaseStrategy.java
  11. 71 0
      zzjs-service/src/main/java/com/miaxis/collection/strategy/CarStrategy.java
  12. 54 0
      zzjs-service/src/main/java/com/miaxis/collection/strategy/VideoStrategy.java
  13. 46 0
      zzjs-service/src/main/java/com/miaxis/collection/vo/AppletCollectionVo.java
  14. 22 0
      zzjs-service/src/main/resources/mapper/collection/CollectionInfoMapper.xml
  15. 1 1
      zzjs-service/src/main/resources/mapper/teachingVideo/TeachingVideoInfoMapper.xml

+ 31 - 8
zzjs-admin/src/main/java/com/miaxis/app/controller/collection/AppletCollectionInfoController.java

@@ -1,7 +1,6 @@
 package com.miaxis.app.controller.collection;
 
 import com.miaxis.collection.service.ICollectionInfoService;
-import com.miaxis.collection.vo.CollectionCustomerVo;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
@@ -13,7 +12,6 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.Arrays;
-import java.util.List;
 
 /**
  * 【小程序-收藏管理】Controller
@@ -35,16 +33,41 @@ public class AppletCollectionInfoController extends BaseController {
      */
     @GetMapping("/collectionList")
     @ApiOperation("查询用户收藏列表")
+    @ApiImplicitParam(name = "collectionType", value = "收藏类别", dataType = "string", required = true)
+    public Response collectionList(String collectionType) {
+        //当前用户
+        UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
+        return collectionInfoService.collectionList(userInfo,collectionType);
+    }
+
+    /**
+     * 通用收藏接口
+     * @param id
+     * @param collectionType
+     * @return
+     */
+    @PutMapping(value = Constants.STUDENT_PREFIX+"/collectionBusiness")
+    @ApiOperation("通用收藏接口")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "pageNum", value = "当前页码", dataType = "int", paramType = "query", required = false),
-            @ApiImplicitParam(name = "pageSize", value = "每页数据量", dataType = "int", paramType = "query", required = false),
+            @ApiImplicitParam(name = "id", value = "收藏id", dataType = "int", required = true),
+            @ApiImplicitParam(name = "collectionType", value = "收藏类别", dataType = "string", required = true),
     })
-    public ResponsePageInfo<CollectionCustomerVo> collectionList() {
-        startPage();
+    public Response collectionOperation(Long id, String collectionType){
         //当前用户
         UserInfo userInfo = SecurityUtils.getLoginUser().getStudent();
-        List<CollectionCustomerVo> list = collectionInfoService.collectionList(userInfo);
-        return toResponsePageInfo(list);
+        return collectionInfoService.collectionOperation(userInfo,id,collectionType);
+    }
+
+    /**
+     * 通用取消收藏
+     */
+    @DeleteMapping(value = "/collectionCancel/{ids}")
+    @ApiOperation("通用取消收藏")
+    public Response collectionCancel(
+            @ApiParam(name = "ids", value = "ids", required = true)
+            @PathVariable("ids") Long[] ids
+    ){
+        return toResponse(collectionInfoService.removeByIds(Arrays.asList(ids)) ? 1 : 0);
     }
 
 

+ 11 - 4
zzjs-admin/src/main/java/com/miaxis/app/controller/teachingVideo/AppletTeachingVideoInfoController.java

@@ -7,14 +7,12 @@ import com.miaxis.common.core.domain.Response;
 import com.miaxis.teachingVideo.domain.TeachingVideoTypeInfo;
 import com.miaxis.teachingVideo.service.ITeachingVideoInfoService;
 import com.miaxis.teachingVideo.service.ITeachingVideoTypeInfoService;
+import com.miaxis.teachingVideo.vo.TeachingVideoInfoVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 /**
  * 【教学视频】Controller
@@ -49,6 +47,15 @@ public class AppletTeachingVideoInfoController extends BaseController {
         return teachingVideoInfoService.queryTeachingVideoInfoList(pid);
     }
 
+    @GetMapping(value = "/{id}")
+    @ApiOperation("获取教学视频详细信息")
+    public Response<TeachingVideoInfoVo> getInfo(
+            @ApiParam(name = "id", value = "教学视频参数", required = true)
+            @PathVariable("id") Long id
+    ){
+        return teachingVideoInfoService.getTeachingVideoDetailsById(id);
+    }
+
 
     /**
      * 关键字搜索教学视频

+ 9 - 0
zzjs-common/src/main/java/com/miaxis/common/strategy/Strategy.java

@@ -0,0 +1,9 @@
+package com.miaxis.common.strategy;
+
+/**
+ * @author wwl
+ * @date 2021/7/26 15:27
+ */
+public interface Strategy {
+    String getName();
+}

+ 58 - 0
zzjs-common/src/main/java/com/miaxis/common/strategy/StrategyManager.java

@@ -0,0 +1,58 @@
+package com.miaxis.common.strategy;
+
+import lombok.extern.slf4j.Slf4j;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * 收藏列表策略管理
+ * @author wwl
+ * @date 2021/7/26 15:29
+ */
+@Slf4j
+public class StrategyManager {
+
+    private static StrategyManager strategyManager = new StrategyManager();
+    private Map<String, Strategy> strategyMap = new HashMap<>();
+    private Map<String, Strategy> defaultStrategyMap = new HashMap<>();
+
+    private StrategyManager() {
+    }
+
+    public static StrategyManager getInstance() {
+        return strategyManager;
+    }
+
+    public void register(Strategy strategy) {
+        this.register(strategy, false);
+    }
+
+    //策略注册
+    public void register(Strategy strategy, boolean isDefault) {
+        String strategyName = strategy.getName();
+        strategyMap.put(strategyName, strategy);
+        if (isDefault) {
+            defaultStrategyMap.put(strategyName, strategy);
+        }
+    }
+
+    public void unload(Strategy strategy) {
+        String strategyName = strategy.getName();
+        Strategy defaultStrategy = defaultStrategyMap.get(strategyName);
+        if (defaultStrategy != null) {
+            strategyMap.put(strategyName, defaultStrategy);
+        } else {
+            strategyMap.remove(strategyName);
+        }
+    }
+
+    /**
+     * 获取策略
+     * @param strategyName
+     * @return
+     */
+    public Strategy getStrategy(String strategyName) {
+        return strategyMap.get(strategyName);
+    }
+}

+ 0 - 7
zzjs-service/src/main/java/com/miaxis/car/domain/UsedCarInfo.java

@@ -1,11 +1,8 @@
 package com.miaxis.car.domain;
 
-import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
-import com.google.gson.JsonObject;
 import com.miaxis.common.core.domain.BaseBusinessEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -136,9 +133,5 @@ public class UsedCarInfo extends BaseBusinessEntity implements Serializable {
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     private String status;
 
-    @TableField(typeHandler = JacksonTypeHandler.class)
-    @ApiModelProperty(value = "ceshi")
-    private JsonObject testA;
-
 
 }

+ 7 - 4
zzjs-service/src/main/java/com/miaxis/collection/domain/CollectionInfo.java

@@ -30,9 +30,12 @@ public class CollectionInfo extends BaseBusinessEntity {
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
-    /** 商家id---(对应customer_info表id) */
-    @TableField("customer_id")
-    @ApiModelProperty(value = "商家id")
-    private Long customerId;
+    @TableField("collection_id")
+    @ApiModelProperty(value = "收藏id---(对应类别表id)")
+    private Long collectionId;
+
+    @TableField("collection_type")
+    @ApiModelProperty(value = "收藏类别")
+    private String collectionType;
 
 }

+ 1 - 0
zzjs-service/src/main/java/com/miaxis/collection/mapper/CollectionInfoMapper.java

@@ -10,4 +10,5 @@ import com.miaxis.collection.domain.CollectionInfo;
  * @Version 1.0
  */
 public interface CollectionInfoMapper extends BaseMapper<CollectionInfo> {
+
 }

+ 11 - 4
zzjs-service/src/main/java/com/miaxis/collection/service/ICollectionInfoService.java

@@ -2,12 +2,9 @@ package com.miaxis.collection.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.miaxis.collection.domain.CollectionInfo;
-import com.miaxis.collection.vo.CollectionCustomerVo;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
 
-import java.util.List;
-
 /**
  * 收藏Service接口
  * @Author wwl
@@ -19,9 +16,10 @@ public interface ICollectionInfoService extends IService<CollectionInfo> {
     /**
      * 查询用户收藏列表
      * @param userInfo
+     * @param collectionType
      * @return
      */
-    List<CollectionCustomerVo> collectionList(UserInfo userInfo);
+    Response collectionList(UserInfo userInfo, String collectionType);
 
     /**
      * applet
@@ -39,4 +37,13 @@ public interface ICollectionInfoService extends IService<CollectionInfo> {
      * @return
      */
     Response removeCollectionByIds(Long userId,Long[] ids);
+
+    /**
+     * 通用收藏接口
+     * @param userInfo
+     * @param id
+     * @param collectionType
+     * @return
+     */
+    Response collectionOperation(UserInfo userInfo, Long id, String collectionType);
 }

+ 59 - 6
zzjs-service/src/main/java/com/miaxis/collection/service/impl/CollectionInfoServiceImpl.java

@@ -1,19 +1,22 @@
 package com.miaxis.collection.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.miaxis.collection.domain.CollectionInfo;
 import com.miaxis.collection.mapper.CollectionInfoMapper;
 import com.miaxis.collection.service.ICollectionInfoService;
-import com.miaxis.collection.vo.CollectionCustomerVo;
+import com.miaxis.collection.strategy.BaseStrategy;
+import com.miaxis.collection.vo.AppletCollectionVo;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.exception.CustomException;
-import com.miaxis.customer.mapper.CustomerInfoMapper;
+import com.miaxis.common.strategy.StrategyManager;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
@@ -28,18 +31,44 @@ public class CollectionInfoServiceImpl extends ServiceImpl<CollectionInfoMapper,
 
     private final CollectionInfoMapper collectionInfoMapper;
 
-    private final CustomerInfoMapper customerInfoMapper;
 
 
     /**
      * 查询用户收藏列表
+     *
      * @param userInfo
+     * @param collectionType
      * @return
      */
     @Override
     @SneakyThrows
-    public List<CollectionCustomerVo> collectionList(UserInfo userInfo) {
-        return customerInfoMapper.getCollectionList(userInfo.getId());
+    public Response collectionList(UserInfo userInfo,String collectionType) {
+        //返回list
+        ArrayList<AppletCollectionVo> collectionVos = new ArrayList<>();
+
+        //根据收藏列表list
+        List<CollectionInfo> collectionInfos;
+
+        if ("1".equals(collectionType)){
+            collectionInfos = collectionInfoMapper
+                    .selectList(new QueryWrapper<CollectionInfo>()
+                            .eq("user_id", userInfo.getId()));
+        }else{
+            collectionInfos = collectionInfoMapper
+                    .selectList(new QueryWrapper<CollectionInfo>()
+                            .eq("user_id", userInfo.getId())
+                            .eq("collection_type",collectionType));
+        }
+
+        for (CollectionInfo collectionInfo : collectionInfos) {
+            //获取对应策略
+            BaseStrategy baseStrategy = (BaseStrategy) StrategyManager.getInstance().getStrategy(collectionInfo.getCollectionType());
+            //策略不存在
+            if (baseStrategy == null) continue;
+            AppletCollectionVo collectionVo = baseStrategy.getCollectionVo(collectionInfo.getId(),collectionInfo.getCollectionId());
+            collectionVos.add(collectionVo);
+        }
+        return Response.success(collectionVos);
     }
 
     /**
@@ -61,7 +90,7 @@ public class CollectionInfoServiceImpl extends ServiceImpl<CollectionInfoMapper,
                 //保存收藏表
                 CollectionInfo collectionInfo = new CollectionInfo();
                 collectionInfo.setUserId(userInfo.getId());
-                collectionInfo.setCustomerId(id);
+                collectionInfo.setCollectionId(id);
                 collectionInfoMapper.insert(collectionInfo);
             }
             return Response.success();
@@ -94,4 +123,28 @@ public class CollectionInfoServiceImpl extends ServiceImpl<CollectionInfoMapper,
     }
 
 
+    /**
+     * 通用收藏接口
+     * @param userInfo
+     * @param id
+     * @param collectionType
+     * @return
+     */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Response collectionOperation(UserInfo userInfo, Long id, String collectionType) {
+        try{
+            //保存收藏表
+            CollectionInfo collectionInfo = new CollectionInfo();
+            collectionInfo.setUserId(userInfo.getId());
+            collectionInfo.setCollectionId(id);
+            collectionInfo.setCollectionType(collectionType);
+            collectionInfoMapper.insert(collectionInfo);
+            return Response.success();
+        }catch (Exception e){
+            throw new CustomException("系统异常");
+        }
+    }
+
+
 }

+ 14 - 0
zzjs-service/src/main/java/com/miaxis/collection/strategy/BaseStrategy.java

@@ -0,0 +1,14 @@
+package com.miaxis.collection.strategy;
+
+import com.miaxis.collection.vo.AppletCollectionVo;
+import com.miaxis.common.strategy.Strategy;
+
+/**
+ * 策略接口
+ * @author wwl
+ * @date 2021/7/26 15:30
+ */
+public interface BaseStrategy extends Strategy{
+
+    AppletCollectionVo getCollectionVo(Long id,Long collectionId);
+}

+ 71 - 0
zzjs-service/src/main/java/com/miaxis/collection/strategy/CarStrategy.java

@@ -0,0 +1,71 @@
+package com.miaxis.collection.strategy;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.miaxis.car.domain.CarBrandInfo;
+import com.miaxis.car.domain.UsedCarFile;
+import com.miaxis.car.domain.UsedCarInfo;
+import com.miaxis.car.mapper.UsedCarFileMapper;
+import com.miaxis.car.service.ICarBrandInfoService;
+import com.miaxis.car.service.IUsedCarInfoService;
+import com.miaxis.collection.vo.AppletCollectionVo;
+import com.miaxis.common.strategy.StrategyManager;
+import com.miaxis.file.domain.FileInfo;
+import com.miaxis.file.service.IFileInfoService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * car策略具体实现
+ * @author wwl
+ * @date 2021/7/26 15:38
+ */
+@Component
+@RequiredArgsConstructor
+public class CarStrategy implements BaseStrategy {
+
+    private final IUsedCarInfoService usedCarInfoService;
+
+    private final UsedCarFileMapper usedCarFileMapper;
+
+    private final IFileInfoService fileInfoService;
+
+    private final ICarBrandInfoService carBrandInfoService;
+
+    /**
+     * @PostConstruct:容器初始化时执行该方法
+     */
+    @PostConstruct
+    public void register() {
+        StrategyManager.getInstance().register(this, true);
+    }
+
+    @Override
+    public String getName() {
+        return "car";
+    }
+
+    @Override
+    public AppletCollectionVo getCollectionVo(Long id,Long collectionId) {
+        UsedCarInfo carInfo = usedCarInfoService.getById(collectionId);
+        UsedCarFile usedCarFile = usedCarFileMapper.selectOne(new QueryWrapper<UsedCarFile>()
+                .eq("used_car_id", collectionId)
+                .eq("sign", "main"));
+        FileInfo fileInfo = new FileInfo();
+        if (usedCarFile != null){
+            fileInfo = fileInfoService.getById(usedCarFile.getFileId());
+        }
+        CarBrandInfo brandInfo = carBrandInfoService.getById(carInfo.getCarBrand());
+        AppletCollectionVo appletCollectionVo = new AppletCollectionVo();
+        appletCollectionVo.setId(id);
+        appletCollectionVo.setCollectionId(collectionId);
+        appletCollectionVo.setTitle(brandInfo.getName() + "--"+carInfo.getCarSeries());
+        appletCollectionVo.setIntroduction(carInfo.getVehicleIntroduction());
+        appletCollectionVo.setPrice(carInfo.getSellingPrice());
+        appletCollectionVo.setFileUrl(fileInfo.getFileUrl());
+        appletCollectionVo.setCollectionType("car");
+
+        return appletCollectionVo;
+    }
+}

+ 54 - 0
zzjs-service/src/main/java/com/miaxis/collection/strategy/VideoStrategy.java

@@ -0,0 +1,54 @@
+package com.miaxis.collection.strategy;
+
+import com.miaxis.collection.vo.AppletCollectionVo;
+import com.miaxis.common.strategy.StrategyManager;
+import com.miaxis.file.domain.FileInfo;
+import com.miaxis.file.service.IFileInfoService;
+import com.miaxis.teachingVideo.domain.TeachingVideoInfo;
+import com.miaxis.teachingVideo.service.ITeachingVideoInfoService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+
+/**
+ * video策略具体实现
+ * @author wwl
+ * @date 2021/7/26 15:38
+ */
+@Component
+@RequiredArgsConstructor
+public class VideoStrategy implements BaseStrategy {
+
+    private final ITeachingVideoInfoService teachingVideoInfoService;//学车视频
+
+    private final IFileInfoService fileInfoService;
+
+    /**
+     * @PostConstruct:容器初始化时执行该方法
+     */
+    @PostConstruct
+    public void register() {
+        StrategyManager.getInstance().register(this, true);
+    }
+
+    @Override
+    public String getName() {
+        return "video";
+    }
+
+
+    @Override
+    public AppletCollectionVo getCollectionVo(Long id,Long collectionId) {
+        TeachingVideoInfo videoInfo = teachingVideoInfoService.getById(collectionId);
+        FileInfo fileInfo = fileInfoService.getById(videoInfo.getCoverFileId());
+        AppletCollectionVo appletCollectionVo = new AppletCollectionVo();
+        appletCollectionVo.setId(id);
+        appletCollectionVo.setCollectionId(collectionId);
+        appletCollectionVo.setTitle(videoInfo.getTitle());
+        appletCollectionVo.setIntroduction(videoInfo.getVideoDescribe());
+        appletCollectionVo.setFileUrl(fileInfo.getFileUrl());
+        appletCollectionVo.setCollectionType("video");
+        return appletCollectionVo;
+    }
+}

+ 46 - 0
zzjs-service/src/main/java/com/miaxis/collection/vo/AppletCollectionVo.java

@@ -0,0 +1,46 @@
+package com.miaxis.collection.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * applet 收藏对象返回参
+ * @author wwl
+ * @version 1.0
+ * @date 2021/7/26 14:01
+ */
+@Data
+@ApiModel(value = "AppletCollectionVo", description = "收藏对象返回参")
+public class AppletCollectionVo implements Serializable {
+
+    @TableId(value = "id")
+    private Long id;
+
+    @TableField("collection_id")
+    @ApiModelProperty(value = "收藏id---(对应类别表id)")
+    private Long collectionId;
+
+    @ApiModelProperty(value = "标题内容")
+    private String title;
+
+    @ApiModelProperty(value = "描述")
+    private String introduction;
+
+    @ApiModelProperty(value = "封面访问地址")
+    private String fileUrl;
+
+    @ApiModelProperty(value = "价格")
+    private BigDecimal price;
+
+    @TableField("collection_type")
+    @ApiModelProperty(value = "收藏类别")
+    private String collectionType;
+
+}

+ 22 - 0
zzjs-service/src/main/resources/mapper/collection/CollectionInfoMapper.xml

@@ -0,0 +1,22 @@
+<?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.miaxis.collection.mapper.CollectionInfoMapper">
+
+    <resultMap type="CollectionInfo" id="CollectionInfoResult">
+        <result property="id"    column="id"    />
+        <result property="userId"    column="user_id"    />
+        <result property="collectionId"    column="collection_id"    />
+        <result property="collectionType"    column="collection_type"    />
+        <result property="createTime"    column="create_time"    />
+        <result property="updateTime"    column="update_time"    />
+    </resultMap>
+
+    <sql id="selectCollectionInfoVo">
+        select * from collection_info
+    </sql>
+
+
+
+</mapper>

+ 1 - 1
zzjs-service/src/main/resources/mapper/teachingVideo/TeachingVideoInfoMapper.xml

@@ -127,7 +127,7 @@
         WHERE
           vi.`shelf_status` = 0
 	      AND vi.`status` = 0
-	      AND vi.`title` like concat('%', #{keyword}, '%') or vi.`video_describe` like concat('%', #{keyword}, '%')
+	      AND (vi.`title` like concat('%', #{keyword}, '%') or vi.`video_describe` like concat('%', #{keyword}, '%'))
     </select>
 
 </mapper>