Эх сурвалжийг харах

Merge branch 'master' of http://218.85.55.253:3000/miaxis/zzjs

小么熊🐻 3 жил өмнө
parent
commit
5e1b22b1a9
21 өөрчлөгдсөн 571 нэмэгдсэн , 36 устгасан
  1. 31 8
      zzjs-admin/src/main/java/com/miaxis/app/controller/collection/AppletCollectionInfoController.java
  2. 12 5
      zzjs-admin/src/main/java/com/miaxis/app/controller/teachingVideo/AppletTeachingVideoInfoController.java
  3. 5 0
      zzjs-admin/src/main/java/com/miaxis/pc/controller/teachingVideo/TeachingVideoInfoController.java
  4. 2 1
      zzjs-admin/src/main/resources/application-dev.yml
  5. 1 0
      zzjs-admin/src/main/resources/application-prod.yml
  6. 9 0
      zzjs-common/src/main/java/com/miaxis/common/strategy/Strategy.java
  7. 58 0
      zzjs-common/src/main/java/com/miaxis/common/strategy/StrategyManager.java
  8. 3 0
      zzjs-common/src/main/java/com/miaxis/common/utils/VodSignature.java
  9. 88 0
      zzjs-common/src/main/java/com/miaxis/common/utils/rsa/RsaUtils.java
  10. 76 0
      zzjs-common/src/main/java/com/miaxis/common/utils/rsa/test.java
  11. 0 7
      zzjs-service/src/main/java/com/miaxis/car/domain/UsedCarInfo.java
  12. 7 4
      zzjs-service/src/main/java/com/miaxis/collection/domain/CollectionInfo.java
  13. 1 0
      zzjs-service/src/main/java/com/miaxis/collection/mapper/CollectionInfoMapper.java
  14. 11 4
      zzjs-service/src/main/java/com/miaxis/collection/service/ICollectionInfoService.java
  15. 59 6
      zzjs-service/src/main/java/com/miaxis/collection/service/impl/CollectionInfoServiceImpl.java
  16. 14 0
      zzjs-service/src/main/java/com/miaxis/collection/strategy/BaseStrategy.java
  17. 71 0
      zzjs-service/src/main/java/com/miaxis/collection/strategy/CarStrategy.java
  18. 54 0
      zzjs-service/src/main/java/com/miaxis/collection/strategy/VideoStrategy.java
  19. 46 0
      zzjs-service/src/main/java/com/miaxis/collection/vo/AppletCollectionVo.java
  20. 22 0
      zzjs-service/src/main/resources/mapper/collection/CollectionInfoMapper.xml
  21. 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;
 package com.miaxis.app.controller.collection;
 
 
 import com.miaxis.collection.service.ICollectionInfoService;
 import com.miaxis.collection.service.ICollectionInfoService;
-import com.miaxis.collection.vo.CollectionCustomerVo;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.constant.Constants;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.Response;
@@ -13,7 +12,6 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.bind.annotation.*;
 
 
 import java.util.Arrays;
 import java.util.Arrays;
-import java.util.List;
 
 
 /**
 /**
  * 【小程序-收藏管理】Controller
  * 【小程序-收藏管理】Controller
@@ -35,16 +33,41 @@ public class AppletCollectionInfoController extends BaseController {
      */
      */
     @GetMapping("/collectionList")
     @GetMapping("/collectionList")
     @ApiOperation("查询用户收藏列表")
     @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({
     @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();
         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);
     }
     }
 
 
 
 

+ 12 - 5
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.domain.TeachingVideoTypeInfo;
 import com.miaxis.teachingVideo.service.ITeachingVideoInfoService;
 import com.miaxis.teachingVideo.service.ITeachingVideoInfoService;
 import com.miaxis.teachingVideo.service.ITeachingVideoTypeInfoService;
 import com.miaxis.teachingVideo.service.ITeachingVideoTypeInfoService;
+import com.miaxis.teachingVideo.vo.TeachingVideoInfoVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import io.swagger.annotations.ApiParam;
 import lombok.AllArgsConstructor;
 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
  * 【教学视频】Controller
@@ -24,7 +22,7 @@ import org.springframework.web.bind.annotation.RestController;
  */
  */
 @RestController
 @RestController
 @AllArgsConstructor
 @AllArgsConstructor
-@RequestMapping(Constants.STUDENT_PREFIX+"/teachingVideo/info")
+@RequestMapping(Constants.OPEN_PREFIX+"/teachingVideo/info")
 @Api(tags={"【小程序-教学视频】"})
 @Api(tags={"【小程序-教学视频】"})
 public class AppletTeachingVideoInfoController extends BaseController {
 public class AppletTeachingVideoInfoController extends BaseController {
 
 
@@ -49,6 +47,15 @@ public class AppletTeachingVideoInfoController extends BaseController {
         return teachingVideoInfoService.queryTeachingVideoInfoList(pid);
         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);
+    }
+
 
 
     /**
     /**
      * 关键字搜索教学视频
      * 关键字搜索教学视频

+ 5 - 0
zzjs-admin/src/main/java/com/miaxis/pc/controller/teachingVideo/TeachingVideoInfoController.java

@@ -5,6 +5,8 @@ import com.miaxis.common.core.controller.BaseController;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.domain.Response;
 import com.miaxis.common.core.page.ResponsePageInfo;
 import com.miaxis.common.core.page.ResponsePageInfo;
 import com.miaxis.common.enums.BusinessTypeEnum;
 import com.miaxis.common.enums.BusinessTypeEnum;
+import com.miaxis.common.exception.CustomException;
+import com.miaxis.common.utils.StringUtils;
 import com.miaxis.teachingVideo.domain.TeachingVideoInfo;
 import com.miaxis.teachingVideo.domain.TeachingVideoInfo;
 import com.miaxis.teachingVideo.dto.TeachingVideoInfoDto;
 import com.miaxis.teachingVideo.dto.TeachingVideoInfoDto;
 import com.miaxis.teachingVideo.service.ITeachingVideoInfoService;
 import com.miaxis.teachingVideo.service.ITeachingVideoInfoService;
@@ -92,6 +94,9 @@ public class TeachingVideoInfoController extends BaseController {
     @ApiOperation("封面上传")
     @ApiOperation("封面上传")
     public Response coverUp(MultipartFile coverFile,
     public Response coverUp(MultipartFile coverFile,
                             @ApiParam(name = "fileId",value = "云点播fileId",required = true) @RequestParam("fileId") String fileId){
                             @ApiParam(name = "fileId",value = "云点播fileId",required = true) @RequestParam("fileId") String fileId){
+        if (StringUtils.isEmpty(fileId)){
+            throw new CustomException("视频文件未上传");
+        }
         return teachingVideoInfoService.coverUp(fileId,coverFile);
         return teachingVideoInfoService.coverUp(fileId,coverFile);
     }
     }
 
 

+ 2 - 1
zzjs-admin/src/main/resources/application-dev.yml

@@ -104,7 +104,8 @@ cos:
     bucket: ap-shanghai
     bucket: ap-shanghai
     bucketName: t1-1305573081
     bucketName: t1-1305573081
     path: https://t1-1305573081.file.myqcloud.com
     path: https://t1-1305573081.file.myqcloud.com
-    preffix: t1
+    preffix: test
+    classId: 843437
 
 
 
 
 # 微信支付
 # 微信支付

+ 1 - 0
zzjs-admin/src/main/resources/application-prod.yml

@@ -105,6 +105,7 @@ cos:
     bucketName: t1-1305573081
     bucketName: t1-1305573081
     path: https://t1-1305573081.file.myqcloud.com
     path: https://t1-1305573081.file.myqcloud.com
     preffix: t1
     preffix: t1
+    classId: 843436
 
 
 
 
 # 微信支付
 # 微信支付

+ 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);
+    }
+}

+ 3 - 0
zzjs-common/src/main/java/com/miaxis/common/utils/VodSignature.java

@@ -14,6 +14,8 @@ public class VodSignature {
     private String secretId;
     private String secretId;
     @Value("${cos.secretKey}")
     @Value("${cos.secretKey}")
     private String secretKey;
     private String secretKey;
+    @Value("${cos.classId}")
+    private String classId;
     private long effectTime =3600 * 24 * 2;
     private long effectTime =3600 * 24 * 2;
     private static final String HMAC_ALGORITHM = "HmacSHA1"; //签名算法
     private static final String HMAC_ALGORITHM = "HmacSHA1"; //签名算法
     private static final String CONTENT_CHARSET = "UTF-8";
     private static final String CONTENT_CHARSET = "UTF-8";
@@ -30,6 +32,7 @@ public class VodSignature {
         // 生成原始参数字符串
         // 生成原始参数字符串
         long endTime = (System.currentTimeMillis() / 1000 + effectTime);// 签名有效期:2天
         long endTime = (System.currentTimeMillis() / 1000 + effectTime);// 签名有效期:2天
         contextStr += "secretId=" + java.net.URLEncoder.encode(secretId, "utf8");
         contextStr += "secretId=" + java.net.URLEncoder.encode(secretId, "utf8");
+        contextStr += "&classId=" + classId;
         contextStr += "&currentTimeStamp=" + System.currentTimeMillis() / 1000;
         contextStr += "&currentTimeStamp=" + System.currentTimeMillis() / 1000;
         contextStr += "&expireTime=" + endTime;
         contextStr += "&expireTime=" + endTime;
         contextStr += "&random=" + new Random().nextInt(java.lang.Integer.MAX_VALUE);
         contextStr += "&random=" + new Random().nextInt(java.lang.Integer.MAX_VALUE);

+ 88 - 0
zzjs-common/src/main/java/com/miaxis/common/utils/rsa/RsaUtils.java

@@ -0,0 +1,88 @@
+package com.miaxis.common.utils.rsa;
+
+
+import java.security.Key;
+import java.security.KeyPair;
+import java.security.KeyPairGenerator;
+import java.security.interfaces.RSAPrivateKey;
+import java.security.interfaces.RSAPublicKey;
+import java.util.HashMap;
+import java.util.Map;
+import sun.misc.BASE64Decoder;
+import sun.misc.BASE64Encoder;
+
+/**
+ * 引进的包都是Java自带的jar包
+ * 秘钥相关包
+ * base64 编解码
+ * 这里只用到了编码
+ */
+
+public class RsaUtils {
+
+
+
+    public static final String KEY_ALGORITHM = "RSA";
+    //public static final String SIGNATURE_ALGORITHM = "MD5withRSA";
+    private static final String PUBLIC_KEY = "RSAPublicKey";
+    private static final String PRIVATE_KEY = "RSAPrivateKey";
+
+    //获得公钥
+    public static String getPublicKey(Map<String, Object> keyMap) throws Exception {
+        //获得map中的公钥对象 转为key对象
+        Key key = (Key) keyMap.get(PUBLIC_KEY);
+        //byte[] publicKey = key.getEncoded();
+        //编码返回字符串
+        return encryptBASE64(key.getEncoded());
+    }
+
+    //获得私钥
+    public static String getPrivateKey(Map<String, Object> keyMap) throws Exception {
+        //获得map中的私钥对象 转为key对象
+        Key key = (Key) keyMap.get(PRIVATE_KEY);
+        //byte[] privateKey = key.getEncoded();
+        //编码返回字符串
+        return encryptBASE64(key.getEncoded());
+    }
+
+    //解码返回byte
+    public static byte[] decryptBASE64(String key) throws Exception {
+        return (new BASE64Decoder()).decodeBuffer(key);
+    }
+
+    //编码返回字符串
+    public static String encryptBASE64(byte[] key) throws Exception {
+        return (new BASE64Encoder()).encodeBuffer(key);
+    }
+
+    //map对象中存放公私钥
+    public static Map<String, Object> initKey() throws Exception {
+        //获得对象 KeyPairGenerator 参数 RSA 1024个字节
+        KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
+        keyPairGen.initialize(1024);
+        //通过对象 KeyPairGenerator 获取对象KeyPair
+        KeyPair keyPair = keyPairGen.generateKeyPair();
+
+        //通过对象 KeyPair 获取RSA公私钥对象RSAPublicKey RSAPrivateKey
+        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
+        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
+        //公私钥对象存入map中
+        Map<String, Object> keyMap = new HashMap<String, Object>(2);
+        keyMap.put(PUBLIC_KEY, publicKey);
+        keyMap.put(PRIVATE_KEY, privateKey);
+        return keyMap;
+    }
+
+    public static void main(String[] args) {
+        Map<String, Object> keyMap;
+        try {
+            keyMap = initKey();
+            String publicKey = getPublicKey(keyMap);
+            System.out.println(publicKey);
+            String privateKey = getPrivateKey(keyMap);
+            System.out.println(privateKey);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 76 - 0
zzjs-common/src/main/java/com/miaxis/common/utils/rsa/test.java

@@ -0,0 +1,76 @@
+package com.miaxis.common.utils.rsa;
+
+
+import org.springframework.util.Base64Utils;
+
+import java.io.UnsupportedEncodingException;
+import java.nio.charset.StandardCharsets;
+import java.security.*;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.security.spec.X509EncodedKeySpec;
+import java.util.Base64;
+
+public class test {
+
+
+    static String  private_key = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAMLNHTgsyYOXDJVF8r4qCyb+8Uw4" +
+            "XKq8aThAhUIaPYIop+HJxETGbXk3e0o46i4iOX8RTv0i3jmhL6W0mSxy9ismfXPP7VtKgEt6VnMm" +
+            "ufsrQ2kcXyRsKmuwUd3rTH5gniXwLdIPF8V5ujiSq94nPHok1krDMWbss8Q7lcH2kQFHAgMBAAEC" +
+            "gYBh6Eu2TzRdMg79+7EciO8gA2Tt5SoWGipcPnl7lsqxX5O5dPpzgrPFB/CshlyVIVh6mA12Rw8g" +
+            "MfZLt7CA2asFdgGHfgCvMjsCnL2U1Nf1QFnsnGXmFXeVUvdy7XPILi75rVyOEAw+/f3KzjSA7B3w" +
+            "URE8M2QlIUcjm8LLyCVC4QJBAO+taJH7pVZGVn2upsOk14X08QU0lsQ7ufe/8VXe+IujwGMh34U6" +
+            "BHGV7grodtA7TvQ3mDggQLHB2+IxBWdDCrcCQQDQEVMI+CD7afEyN9rK/MAJwevtxNaTyEd1bhKw" +
+            "t6WKr1YbAdUz2gvnpCQjD1Gqt5yXHKu279msX9W4euXePG3xAkBUCYZn4UdIp+L9sHZSlQLoukik" +
+            "HZtbdOGw58Ez7blSJPl5CNB5wyz5sqtDcdzvCEyXvsKFs3FbonB5r9yIJ26jAkEAugGC1dXcxmWj" +
+            "dl1wf18M3qw6GkmJ+ntlRpmso8bJev3cYDB3RO99DQw0MhOT0qZqmrzK1bP+SJc0HMPhk5c6QQJA" +
+            "WRLIxmeM/P9X2mDjMrI46Wnn27QoKGgYSHdPxmLD0y7NUytf5HyCsY2vhA9FZcnikibax7SwzC/B" +
+            "D7yOXFAy/Q==";
+    static String public_key ="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCzR04LMmDlwyVRfK+Kgsm/vFMOFyqvGk4QIVC" +
+            "Gj2CKKfhycRExm15N3tKOOouIjl/EU79It45oS+ltJkscvYrJn1zz+1bSoBLelZzJrn7K0NpHF8k" +
+            "bCprsFHd60x+YJ4l8C3SDxfFebo4kqveJzx6JNZKwzFm7LPEO5XB9pEBRwIDAQAB";
+
+    public static void main(String[] args) throws Exception {
+        String content  = "我很666";
+        // 进行签名服务
+        Signature signature = Signature.getInstance("SHA256withRSA");
+        KeyFactory kf = KeyFactory.getInstance("RSA");
+        PrivateKey privateKey =  kf.generatePrivate(new PKCS8EncodedKeySpec(Base64.getDecoder().decode(private_key)));
+
+        signature.initSign(privateKey);
+        signature.update(content.getBytes("UTF-8"));
+        byte[] signedData = signature.sign();
+        String base64Str =  Base64.getEncoder().encodeToString(signedData);
+        System.out.println("签名值为:"+base64Str);
+
+        //验签
+
+        PublicKey publicKey =  kf.generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(public_key)));
+        signature.initVerify(publicKey);
+        // 把我们构造的验签名串更新到签名器中
+        signature.update(content.toString().getBytes(StandardCharsets.UTF_8));
+        Boolean result = signature.verify(Base64Utils.decodeFromString(base64Str));
+        System.out.println("签名结果:"+result);
+
+
+    }
+
+    public Boolean validateSign(String openId , String isVip ,String sign) throws Exception{
+        //rsa 公钥
+        String publicKeyBase64 ="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCzR04LMmDlwyVRfK+Kgsm/vFMOFyqvGk4QIVC" +
+                "Gj2CKKfhycRExm15N3tKOOouIjl/EU79It45oS+ltJkscvYrJn1zz+1bSoBLelZzJrn7K0NpHF8k" +
+                "bCprsFHd60x+YJ4l8C3SDxfFebo4kqveJzx6JNZKwzFm7LPEO5XB9pEBRwIDAQAB";
+        // 构造被签名串
+        String verifyString = openId+ isVip;
+        KeyFactory kf = KeyFactory.getInstance("RSA");
+        PublicKey publicKey =  kf.generatePublic(new X509EncodedKeySpec(Base64.getDecoder().decode(publicKeyBase64)));
+        Signature signature = Signature.getInstance("SHA256withRSA");
+        signature.initVerify(publicKey);
+        // 把我们构造的被签名串更新到签名器中
+        signature.update(verifyString.getBytes("UTF-8"));
+        return signature.verify(Base64Utils.decodeFromString(sign));
+
+    }
+
+
+}

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

@@ -1,11 +1,8 @@
 package com.miaxis.car.domain;
 package com.miaxis.car.domain;
 
 
-import cn.hutool.json.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 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 com.miaxis.common.core.domain.BaseBusinessEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
@@ -136,9 +133,5 @@ public class UsedCarInfo extends BaseBusinessEntity implements Serializable {
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     @ApiModelProperty(value = "状态  0:有效(默认)、1:失效 (伪删除)")
     private String status;
     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")
     @ApiModelProperty(value = "用户id")
     private Long userId;
     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
  * @Version 1.0
  */
  */
 public interface CollectionInfoMapper extends BaseMapper<CollectionInfo> {
 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.baomidou.mybatisplus.extension.service.IService;
 import com.miaxis.collection.domain.CollectionInfo;
 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.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.core.domain.entity.UserInfo;
 
 
-import java.util.List;
-
 /**
 /**
  * 收藏Service接口
  * 收藏Service接口
  * @Author wwl
  * @Author wwl
@@ -19,9 +16,10 @@ public interface ICollectionInfoService extends IService<CollectionInfo> {
     /**
     /**
      * 查询用户收藏列表
      * 查询用户收藏列表
      * @param userInfo
      * @param userInfo
+     * @param collectionType
      * @return
      * @return
      */
      */
-    List<CollectionCustomerVo> collectionList(UserInfo userInfo);
+    Response collectionList(UserInfo userInfo, String collectionType);
 
 
     /**
     /**
      * applet
      * applet
@@ -39,4 +37,13 @@ public interface ICollectionInfoService extends IService<CollectionInfo> {
      * @return
      * @return
      */
      */
     Response removeCollectionByIds(Long userId,Long[] ids);
     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;
 package com.miaxis.collection.service.impl;
 
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.miaxis.collection.domain.CollectionInfo;
 import com.miaxis.collection.domain.CollectionInfo;
 import com.miaxis.collection.mapper.CollectionInfoMapper;
 import com.miaxis.collection.mapper.CollectionInfoMapper;
 import com.miaxis.collection.service.ICollectionInfoService;
 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.Response;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.core.domain.entity.UserInfo;
 import com.miaxis.common.exception.CustomException;
 import com.miaxis.common.exception.CustomException;
-import com.miaxis.customer.mapper.CustomerInfoMapper;
+import com.miaxis.common.strategy.StrategyManager;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.SneakyThrows;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.annotation.Transactional;
 
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 
 
@@ -28,18 +31,44 @@ public class CollectionInfoServiceImpl extends ServiceImpl<CollectionInfoMapper,
 
 
     private final CollectionInfoMapper collectionInfoMapper;
     private final CollectionInfoMapper collectionInfoMapper;
 
 
-    private final CustomerInfoMapper customerInfoMapper;
 
 
 
 
     /**
     /**
      * 查询用户收藏列表
      * 查询用户收藏列表
+     *
      * @param userInfo
      * @param userInfo
+     * @param collectionType
      * @return
      * @return
      */
      */
     @Override
     @Override
     @SneakyThrows
     @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 collectionInfo = new CollectionInfo();
                 collectionInfo.setUserId(userInfo.getId());
                 collectionInfo.setUserId(userInfo.getId());
-                collectionInfo.setCustomerId(id);
+                collectionInfo.setCollectionId(id);
                 collectionInfoMapper.insert(collectionInfo);
                 collectionInfoMapper.insert(collectionInfo);
             }
             }
             return Response.success();
             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
         WHERE
           vi.`shelf_status` = 0
           vi.`shelf_status` = 0
 	      AND vi.`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>
     </select>
 
 
 </mapper>
 </mapper>