1
0

3 Коммиты e7a67525b3 ... 87abdfb824

Автор SHA1 Сообщение Дата
  zyp 87abdfb824 zyp 1 неделя назад
  zyp fb8553e947 Merge remote-tracking branch 'origin/master' 1 неделя назад
  zyp e78edf77e1 Revert "zyp" 1 неделя назад

+ 95 - 120
fs-service/src/main/java/com/fs/course/service/impl/FsUserCourseVideoServiceImpl.java

@@ -667,126 +667,105 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
     }
     private R handleRoom(FsUserCourseVideoAddKfUParam param,FsUser user) {
         //查询客户列表
-//        List<QwExternalContact> contacts = qwExternalContactMapper.selectQwExternalContactListVOByfsUserId(user.getUserId());
-//        log.info("查出来的企微客户数量:"+contacts.size());
-//        if (!contacts.isEmpty()){
-//            //找出对应销售匹配的客户
-//            QwExternalContact matchedContact = contacts.stream()
-//                    .filter(contact -> contact.getQwUserId().equals(Long.parseLong(param.getQwUserId())))
-//                    .findFirst()
-//                    .orElse(null);
-//
-//            if (matchedContact!=null){
-//                log.info("匹配到的第一个企微用户:"+matchedContact.getUserId());
-//                log.info("企微id:"+matchedContact.getId());
-//                log.info("用户:"+param.getVideoId());
-//                log.info("企微用户:"+param.getQwUserId());
-//                param.setQwExternalId(matchedContact.getId());
-//                FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideoByExt(matchedContact.getId(), param.getVideoId(),param.getQwUserId());
-//                if (log==null){
-//                    createWatchLog(param);
-//                }
-//                return R.error(567,"群聊通用链接").put("qwExternalId", matchedContact.getId());
-//            }
-//        }
+        List<QwExternalContact> contacts = qwExternalContactMapper.selectQwExternalContactListVOByfsUserId(user.getUserId());
+        log.info("查出来的企微客户数量:"+contacts.size());
+        if (!contacts.isEmpty()){
+            //找出对应销售匹配的客户
+            QwExternalContact matchedContact = contacts.stream()
+                    .filter(contact -> contact.getQwUserId().equals(Long.parseLong(param.getQwUserId())))
+                    .findFirst()
+                    .orElse(null);
+
+            if (matchedContact!=null){
+                log.info("匹配到的第一个企微用户:"+matchedContact.getUserId());
+                log.info("企微id:"+matchedContact.getId());
+                log.info("用户:"+param.getVideoId());
+                log.info("企微用户:"+param.getQwUserId());
+                param.setQwExternalId(matchedContact.getId());
+                FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideoByExt(matchedContact.getId(), param.getVideoId(),param.getQwUserId());
+                if (log==null){
+                    createWatchLog(param);
+                }
+                return R.error(567,"群聊通用链接").put("qwExternalId", matchedContact.getId());
+            }
+        }
 
         String msg = "<div style=\"color: red;margin-bottom: 15px;font-weight: bold;\">本课程为群会员独享<br>请长按二维码</div>\n" +
                 "\t\t\t\t\t<div style=\"color: #999;font-size: 14px;font-weight: bold;\">添加伴学助手免费领取会员权限</div>";
 
-        FsCourseLink courseLink = courseLinkMapper.selectFsCourseLinkByLink(param.getLink());
-
-        if (courseLink == null || StringUtils.isEmpty(courseLink.getChatId())) {
-            return R.error("参数有误");
-        }
-        QwGroupChat qwGroupChat = qwGroupChatMapper.selectQwGroupChatByChatId(courseLink.getChatId());
-        if (qwGroupChat == null) {
-            logger.error("群聊不存在,chatId: {}", courseLink.getChatId());
-            return R.error("群聊不存在!");
-        }
-        SopUserLogsInfo sopUserLogsInfo = new SopUserLogsInfo();
-        sopUserLogsInfo.setChatId(courseLink.getChatId());
-        List<QwGroupChatUser> qwGroupChatUsers = qwGroupChatUserMapper.selectByChatId(sopUserLogsInfo);
-
-        if (qwGroupChatUsers == null || qwGroupChatUsers.isEmpty()) {
-            logger.error("群聊用户为空,chatId: {}", courseLink.getChatId());
-            return R.error("群聊用户为空!");
-        }
-        // 构建查询条件
-        QueryWrapper<QwExternalContact> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("user_id", qwGroupChat.getOwner());
-        queryWrapper.eq("name", user.getNickName());
-        queryWrapper.eq("corp_id", param.getCorpId());
-        queryWrapper.eq("status", 0);
-
-        QwExternalContact qwExternalContact = qwExternalContactMapper.selectOne(queryWrapper);
-
-        if (qwExternalContact == null) {
-            return R.error("未查询到客户!");
-        }
-        // 检查客户是否在群中
-        boolean isInGroup = qwGroupChatUsers.stream()
-                .anyMatch(e -> e.getUserId() != null && e.getUserId().equals(qwExternalContact.getExternalUserId()));
-
-        if (!isInGroup) {
-            logger.error("客户不在群:{},里面:{}", qwGroupChat.getChatId(), qwExternalContact.getExternalUserId());
-            return R.error("客户不在群聊!");
-        }
-
-        logger.info("外部联系人数据:{}", qwExternalContact);
-        Long qwExternalId = qwExternalContact.getId();
-
-        FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideoByExt(qwExternalId, param.getVideoId(),param.getQwUserId());
-        if (log==null ){
-            logger.info("看课记录为空弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId()+qwExternalId+":"+param.getVideoId()+":"+param.getQwUserId());
-            return addCustomerService(param.getQwUserId(),msg);
-        }
-        //判断外部联系人有没有绑定userId
-        if (qwExternalContact.getFsUserId()!=null){
-            //有客户有小程序id  但 登录的小程序id和根据外部联系人id查出来的小程序id不一致
-            if (!qwExternalContact.getFsUserId().equals(param.getUserId())) {
-                logger.info("小程序id不一致空弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId());
-                return addCustomerService(param.getQwUserId(),msg);
-            }
-            List<QwExternalContact> qwExternalContacts = qwExternalContactMapper.selectQwExternalContactByMiniUserId(param.getUserId());
-            //匹配客户公司id
-            if (qwExternalContacts.stream().noneMatch(contact -> contact.getCorpId().equals(param.getCorpId()))){
-                logger.info("未匹配上公司空弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId());
-                return addCustomerService(param.getQwUserId(),msg);
-            }
+        return addCustomerService(param.getQwUserId(),msg);
 
-            //看课记录中userId为0绑定userId
-            if (log.getUserId()==null||log.getUserId().equals(0L) || !log.getUserId().equals(param.getUserId())){
-                log.setUserId(param.getUserId());
-            }
-
-            log.setUpdateTime(new Date());
-            courseWatchLogMapper.updateFsCourseWatchLog(log);
-
-            iSopUserLogsInfoService.updateSopUserInfoByExternalId(qwExternalContact.getId(),param.getUserId());
-            fsUserCompanyBindService.bindFsUser(user.getUserId(), qwExternalId, log.getLogId());
-
-        }else {
-            //没绑定fsUser直接绑定fsUser
-            QwExternalContact contact = new QwExternalContact();
-            contact.setId(qwExternalId);
-            contact.setFsUserId(param.getUserId());
-            qwExternalContactMapper.updateQwExternalContact(contact);
-            iSopUserLogsInfoService.updateSopUserInfoByExternalId(qwExternalId,param.getUserId());
-            FsUser fsUser = new FsUser();
-            fsUser.setUserId(user.getUserId());
-            fsUser.setIsAddQw(1);
-            fsUserMapper.updateFsUser(fsUser);
-            //绑定上之后 更新观看记录
-            //看课记录中userId为0绑定userId
-            if (log.getUserId()==null||log.getUserId().equals(0L) || !log.getUserId().equals(param.getUserId())){
-                log.setUserId(param.getUserId());
-            }
-            log.setUpdateTime(new Date());
-            courseWatchLogMapper.updateFsCourseWatchLog(log);
-            fsUserCompanyBindService.bindFsUser(fsUser.getUserId(), qwExternalId, log.getLogId());
-        }
-
-        return R.error(567,"群聊通用链接").put("qwExternalId", qwExternalContact.getId());
+//        QwGroupChatDetailsResult result = qwApiService.groupChatDetails(courseLink.getChatId(), param.getCorpId());
+//        if(result.getErrCode() != 0){
+//            log.info("企微接口请求失败,请联系管理员:" +result.getErrMsg());
+//            return R.error("不是此群成员");
+//        }
+//        List<QwGroupChatDetailsResult.Member> collect = result.getGroupChat().getMemberList().stream().filter(e -> e.getType() == 2).collect(Collectors.toList());
+//        if(collect.isEmpty()){
+//            logger.info("群聊里面为空弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId());
+//            return addCustomerService(param.getQwUserId(),msg);
+//        }
+//        Optional<QwGroupChatDetailsResult.Member> optional = collect.stream().filter(e -> e.getName().equals(user.getNickName()) || e.getName().equals(param.getNickName())).findFirst();
+//        if(!optional.isPresent()){
+//            logger.info("昵称未匹配上弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId());
+//
+//            return addCustomerService(param.getQwUserId(),msg);
+//        }
+//        QwGroupChatDetailsResult.Member member = optional.get();
+//        QwExternalContact qwExternalContact = qwExternalContactMapper.selectOne(new QueryWrapper<QwExternalContact>().eq("user_id", result.getGroupChat().getOwner()).eq("external_user_id", member.getUserId()));
+//        if(qwExternalContact==null){
+//            logger.info("外部联系人为空弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId()+":"+member.getUserId()+param.getNickName());
+//            return addCustomerService(param.getQwUserId(),msg);
+//        }
+//        Long qwExternalId = qwExternalContact.getId();
+//        log.info("外部联系人数据:{}", qwExternalContact);
+////        addCompanyCompanyFsUser(param);
+//        FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideoByExt(qwExternalId, param.getVideoId(),param.getQwUserId());
+//        if (log==null ){
+//            logger.info("看课记录为空弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId()+qwExternalId+":"+param.getVideoId()+":"+param.getQwUserId());
+//            return addCustomerService(param.getQwUserId(),msg);
+//        }
+//        //判断外部联系人有没有绑定userId
+//        if (qwExternalContact.getFsUserId()!=null){
+//            //有客户有小程序id  但 登录的小程序id和根据外部联系人id查出来的小程序id不一致
+//            if (!qwExternalContact.getFsUserId().equals(param.getUserId())) {
+//                logger.info("小程序id不一致空弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId());
+//                return addCustomerService(param.getQwUserId(),msg);
+//            }
+//            List<QwExternalContact> qwExternalContacts = qwExternalContactMapper.selectQwExternalContactByMiniUserId(param.getUserId());
+//            //匹配客户公司id
+//            if (qwExternalContacts.stream().noneMatch(contact -> contact.getCorpId().equals(param.getCorpId()))){
+//                logger.info("未匹配上公司空弹二维码:"+param.getCorpId()+":"+param.getQwUserId()+":"+param.getChatId()+":"+param.getUserId());
+//                return addCustomerService(param.getQwUserId(),msg);
+//            }
+//
+//            //看课记录中userId为0绑定userId
+//            if (log.getUserId()==null||log.getUserId().equals(0L) || !log.getUserId().equals(param.getUserId())){
+//                log.setUserId(param.getUserId());
+//            }
+//
+//            log.setUpdateTime(new Date());
+//            courseWatchLogMapper.updateFsCourseWatchLog(log);
+//
+//            iSopUserLogsInfoService.updateSopUserInfoByExternalId(qwExternalId,param.getUserId());
+//        }else {
+//            //没绑定fsUser直接绑定fsUser
+//            QwExternalContact contact = new QwExternalContact();
+//            contact.setId(qwExternalId);
+//            contact.setFsUserId(param.getUserId());
+//            qwExternalContactMapper.updateQwExternalContact(contact);
+//            FsUser fsUser = new FsUser();
+//            fsUser.setUserId(user.getUserId());
+//            fsUser.setIsAddQw(1);
+//            fsUserMapper.updateFsUser(fsUser);
+//            //绑定上之后 更新观看记录
+//            //看课记录中userId为0绑定userId
+//            log.setUserId(param.getUserId());
+//            log.setUpdateTime(new Date());
+//            courseWatchLogMapper.updateFsCourseWatchLog(log);
+//        }
+//
+//        return R.error(567,"群聊通用链接").put("qwExternalId", qwExternalContact.getId());
     }
 
     private void createWatchLog(FsUserCourseVideoAddKfUParam param) {
@@ -1347,10 +1326,6 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
             return R.error("未识别到用户信息");
         }
 
-        if (user.getStatus()==0){
-            return R.error("会员被停用,无权限,请联系客服!");
-        }
-
         FsCourseWatchLog log = courseWatchLogMapper.getWatchCourseVideoByFsUser(param.getUserId(), param.getVideoId(), param.getCompanyUserId());
         if (log == null) {
             return R.error("无记录");
@@ -1368,7 +1343,7 @@ public class FsUserCourseVideoServiceImpl implements IFsUserCourseVideoService
 
         if (log.getRewardType() != null ) {
             if (log.getRewardType() == 1){
-                FsCourseRedPacketLog fsCourseRedPacketLog = redPacketLogMapper.selectFsCourseRedPacketLogByTemporary(param.getVideoId(), param.getUserId());
+                FsCourseRedPacketLog fsCourseRedPacketLog = redPacketLogMapper.selectUserFsCourseRedPacketLog(param.getVideoId(), param.getUserId(),param.getPeriodId());
                 if(fsCourseRedPacketLog != null && fsCourseRedPacketLog.getStatus() == 1) {
                     return R.error("已领取该课程奖励,不可重复领取!");
                 }

+ 88 - 0
fs-service/src/main/resources/application-config-fzbt.yml

@@ -0,0 +1,88 @@
+baidu:
+  token: 1231321232
+  back-domain: admin.muyi88.com
+#配置
+logging:
+  level:
+    org.springframework.web: INFO
+    com.github.binarywang.demo.wx.cp: DEBUG
+    me.chanjar.weixin: DEBUG
+wx:
+  miniapp:
+    configs:
+  cp:
+    corpId: wwb2a1055fb6c9a7c2
+    appConfigs:
+      - agentId: 1000005
+        secret: ec7okROXJqkNafq66-L6aKNv0asTzQIG0CYrj3vyBbo
+        token: PPKOdAlCoMO
+        aesKey: PKvaxtpSv8NGpfTDm7VUHIK8Wok2ESyYX24qpXJAdMP
+  pay:
+    appId: wx73f85f8d62769119 #微信公众号或者小程序等的appid
+    mchId: 1611402045 #微信支付商户号
+    mchKey: 8cab128997a3547c1363b0898b877f38 #微信支付商户密钥
+    subAppId:  #服务商模式下的子商户公众账号ID
+    subMchId:  #服务商模式下的子商户号
+    keyPath: c:\\cert\\apiclient_cert.p12 # p12证书的位置,可以指定绝对路径,也可以指定类路径(以classpath:开头)
+    notifyUrl: https://userapp.his.runtzh.com/app/wxpay/wxPayNotify
+  mp:
+    useRedis: false
+    redisConfig:
+      host: 127.0.0.1
+      port: 6379
+      timeout: 2000
+    configs:
+      - appId: wx3a8d1258ae7b6d96 # 第一个公众号的appid  //公众号名称:海带边
+        secret: 47826b97c415974d61d770c1a022c947 # 公众号的appsecret
+        token: PPKOdAlCoMO # 接口配置里的Token值
+        aesKey: Eswa6VjwtVMCcw03qZy6fWllgrv5aytIA1SZPEU0kU2 # 接口配置里的EncodingAESKey值
+aifabu:  #爱链接
+  appKey: 7b471be905ab17e00f3b858c6710dd117601d008
+watch:
+  watchUrl: watch.ylrzcloud.com/prod-api
+#  account: tcloud
+#  password: mdf-m2h_6yw2$hq
+  account1: ccif #866655060138751
+  password1: cp-t5or_6xw7$mt
+  account2: tcloud #rt500台
+  password2: mdf-m2h_6yw2$hq
+  account3: whr
+  password3: v9xsKuqn_$d2y
+
+fs :
+  commonApi: http://172.27.0.17:8010
+  jwt:
+    # 加密秘钥
+    secret: f4e2e52034348f86b67cde581c0f9eb5
+    # token有效时长,7天,单位秒
+    expire: 31536000
+    header: AppToken
+nuonuo:
+  key: 10924508
+  secret: A2EB20764D304D16
+
+
+  # 存储捅配置
+tencent_cloud_config:
+  secret_id: AKIDiMq9lDf2EOM9lIfqqfKo7FNgM5meD0sT
+  secret_key: u5SuS80342xzx8FRBukza9lVNHKNMSaB
+  bucket: myhk-1323137866
+  app_id: 1323137866
+  region: ap-chongqing
+  proxy: myhk
+cloud_host:
+  company_name: 福州白兔
+  projectCode: FZBT
+#看课授权时显示的头像
+headerImg:
+  imgUrl: https://fs-1346741853.cos.ap-chengdu.myqcloud.com/fs/20250323/6189704f2e134b84ad9c9e7c9999f103.jpg
+ipad:
+  ipadUrl: http://qwipad.fjbaitu.com
+  aiApi: http://152.136.202.157:3000/api
+  voiceApi:
+  commonApi:
+wx_miniapp_temp:
+  pay_order_temp_id: VXEvKaGNPFuJmhWK9O_QPrTZxe9umDCukq-maI8Vdek
+  inquiry_temp_id: 9POPYeqhI48LOPvq-Rfoklze7H-9SlunJKh10Qt4_2I
+
+

+ 151 - 0
fs-service/src/main/resources/application-druid-fzbt.yml

@@ -0,0 +1,151 @@
+# 数据源配置
+spring:
+    profiles:
+        include: config-fzbt,common
+    # redis 配置
+    redis:
+        host: 172.27.0.17
+        port: 6379
+        # 数据库索引
+        database: 0
+        # 密码
+        password: zGn7Vrto9ZthdLnn
+        # 连接超时时间
+        timeout: 10s
+        lettuce:
+            pool:
+                # 连接池中的最小空闲连接
+                min-idle: 0
+                # 连接池中的最大空闲连接
+                max-idle: 8
+                # 连接池的最大数据库连接数
+                max-active: 100
+                # #连接池最大阻塞等待时间(使用负值表示没有限制)
+                max-wait: -1ms
+    datasource:
+        mysql:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                  url: jdbc:mysql://172.27.0.17:3306/his?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                  username: root
+                  password: zGn7Vrto9ZthdLnn
+                # 从库数据源
+                slave:
+                    # 从数据源开关/默认关闭
+                    enabled: false
+                    url:
+                    username:
+                    password:
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+        sop:
+            type: com.alibaba.druid.pool.DruidDataSource
+            driverClassName: com.mysql.cj.jdbc.Driver
+            druid:
+                # 主库数据源
+                master:
+                    url: jdbc:mysql://172.27.0.17:3306/sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: zGn7Vrto9ZthdLnn
+                read:
+                    url: jdbc:mysql://172.27.0.17:3306/sop?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
+                    username: root
+                    password: zGn7Vrto9ZthdLnn
+                # 初始连接数
+                initialSize: 5
+                # 最小连接池数量
+                minIdle: 10
+                # 最大连接池数量
+                maxActive: 20
+                # 配置获取连接等待超时的时间
+                maxWait: 60000
+                # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+                timeBetweenEvictionRunsMillis: 60000
+                # 配置一个连接在池中最小生存的时间,单位是毫秒
+                minEvictableIdleTimeMillis: 300000
+                # 配置一个连接在池中最大生存的时间,单位是毫秒
+                maxEvictableIdleTimeMillis: 900000
+                # 配置检测连接是否有效
+                validationQuery: SELECT 1 FROM DUAL
+                testWhileIdle: true
+                testOnBorrow: false
+                testOnReturn: false
+                webStatFilter:
+                    enabled: true
+                statViewServlet:
+                    enabled: true
+                    # 设置白名单,不填则允许所有访问
+                    allow:
+                    url-pattern: /druid/*
+                    # 控制台管理用户名和密码
+                    login-username: fs
+                    login-password: 123456
+                filter:
+                    stat:
+                        enabled: true
+                        # 慢SQL记录
+                        log-slow-sql: true
+                        slow-sql-millis: 1000
+                        merge-sql: true
+                    wall:
+                        config:
+                            multi-statement-allow: true
+rocketmq:
+    name-server: rmq-16xj8o92zp.rocketmq.cd.qcloud.tencenttdmq.com:8080
+    producer:
+        group: my-producer-group
+        access-key: ak16xj8o92zp984557f83ba2 # 替换为实际的 accessKey
+        secret-key: sk2ff1c6b15b74b888 # 替换为实际的 secretKey
+    consumer:
+        group: common-group
+        access-key: ak16xj8o92zp984557f83ba2 # 替换为实际的 accessKey
+        secret-key: sk2ff1c6b15b74b888 # 替换为实际的 secretKey
+openIM:
+    secret: openIM123
+    userID: imAdmin
+    url: https://im.muyi88.com/api
+#是否使用新im
+im:
+    type: OPENIM
+#是否为新商户,新商户不走mpOpenId
+isNewWxMerchant: true

+ 1 - 1
fs-user-app/src/main/java/com/fs/app/controller/CourseController.java

@@ -63,7 +63,7 @@ public class CourseController extends  AppBaseController{
         }
     }
 
-//    @Cacheable(value = "getProductCateByPid", key = "#pid")
+    @Cacheable(value = "getProductCateByPid", key = "#pid")
     @ApiOperation("获取子分类")
     @GetMapping("/getProductCateByPid")
     public R getProductCateByPid(@RequestParam(value="pid") Long pid){