bihuisong hai 1 ano
pai
achega
b393bf8c50

+ 8 - 0
ruoyi-admin/src/main/java/com/ruoyi/web/controller/knowledge/JnbKnowledgeBaserController.java

@@ -112,4 +112,12 @@ public class JnbKnowledgeBaserController extends BaseController {
         List<JnbKnowledgeBaseVO> list = jnbKnowledgeBaseService.knowledgePayList(jnbKnowledgeBaseVO);
         return getDataTable(list);
     }
+
+    /**
+     * 判断是否已经购买知识库
+     */
+    @GetMapping("/knowledgePay")
+    public AjaxResult knowledgePay(JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        return jnbKnowledgeBaseService.knowledgePay(jnbKnowledgeBaseVO);
+    }
 }

+ 2 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/mapper/JnbKnowledgeBaseMapper.java

@@ -67,4 +67,6 @@ public interface JnbKnowledgeBaseMapper {
     List<JnbKnowledgeBaseVO> popularKnowledgeList(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
 
     List<JnbKnowledgeBaseVO> knowledgePayList(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
+
+    void updateWatchNum(Long id);
 }

+ 4 - 1
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/service/IJnbKnowledgeBaseService.java

@@ -1,6 +1,7 @@
 package com.sooka.jnb.knowledge.service;
 
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.sooka.jnb.knowledge.dto.JnbKnowledgeBaseDTO;
 import com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO;
 
@@ -19,7 +20,7 @@ public interface IJnbKnowledgeBaseService {
      * @param id 知识库主键
      * @return 知识库
      */
-    public JnbKnowledgeBaseVO selectJnbKnowledgeBaseById(Long id);
+    public AjaxResult selectJnbKnowledgeBaseById(Long id);
 
     /**
      * 查询知识库列表
@@ -66,4 +67,6 @@ public interface IJnbKnowledgeBaseService {
     List<JnbKnowledgeBaseVO> popularKnowledgeList(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
 
     List<JnbKnowledgeBaseVO> knowledgePayList(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
+
+    AjaxResult knowledgePay(JnbKnowledgeBaseVO jnbKnowledgeBaseVO);
 }

+ 34 - 2
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/service/impl/JnbKnowledgeBaseServiceImpl.java

@@ -4,6 +4,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.DateUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
@@ -14,6 +15,8 @@ import com.sooka.jnb.knowledge.mapper.JnbKnowledgeBaseImgMapper;
 import com.sooka.jnb.knowledge.mapper.JnbKnowledgeBaseMapper;
 import com.sooka.jnb.knowledge.service.IJnbKnowledgeBaseService;
 import com.sooka.jnb.knowledge.vo.JnbKnowledgeBaseVO;
+import com.sooka.jnb.my.domain.ScoreOperate;
+import com.sooka.jnb.my.service.IScoreService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -30,6 +33,9 @@ public class JnbKnowledgeBaseServiceImpl implements IJnbKnowledgeBaseService {
     private JnbKnowledgeBaseMapper jnbKnowledgeBaseMapper;
     @Autowired
     private JnbKnowledgeBaseImgMapper jnbKnowledgeBaseImgMapper;
+    @Autowired
+    private IScoreService service;
+
     /**
      * 查询知识库j
      *
@@ -37,8 +43,9 @@ public class JnbKnowledgeBaseServiceImpl implements IJnbKnowledgeBaseService {
      * @return 知识库
      */
     @Override
-    public JnbKnowledgeBaseVO selectJnbKnowledgeBaseById(Long id) {
-        return jnbKnowledgeBaseMapper.selectJnbKnowledgeBaseById(id);
+    public AjaxResult selectJnbKnowledgeBaseById(Long id) {
+        jnbKnowledgeBaseMapper.updateWatchNum(id);
+        return AjaxResult.success(jnbKnowledgeBaseMapper.selectJnbKnowledgeBaseById(id));
     }
 
     /**
@@ -144,4 +151,29 @@ public class JnbKnowledgeBaseServiceImpl implements IJnbKnowledgeBaseService {
     public List<JnbKnowledgeBaseVO> knowledgePayList(JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
         return jnbKnowledgeBaseMapper.knowledgePayList(jnbKnowledgeBaseVO);
     }
+
+    @Override
+    public AjaxResult knowledgePay(JnbKnowledgeBaseVO jnbKnowledgeBaseVO) {
+        ScoreOperate scoreOperate = new ScoreOperate();
+        scoreOperate.setUserId(jnbKnowledgeBaseVO.getUserId());
+        scoreOperate.setScoreNum(Integer.valueOf(Math.toIntExact(jnbKnowledgeBaseVO.getIntegral())));
+        scoreOperate.setRelevance("1");
+        scoreOperate.setRelevanceDataId(jnbKnowledgeBaseVO.getId().toString());
+        int count = service.knowledgeWhetherToPay(jnbKnowledgeBaseVO.getCreateId(), jnbKnowledgeBaseVO.getId().toString());
+        if (count > 0) {
+            return AjaxResult.success();
+        } else {
+            if (!service.verifyScore(scoreOperate)) {
+                return AjaxResult.error("积分不足");
+            } else {
+                if (service.reduceScore(scoreOperate) > 0) {
+                    scoreOperate.setUserId(jnbKnowledgeBaseVO.getCreateId());
+                    service.addScore(scoreOperate);
+                } else {
+                    return AjaxResult.error("减少积分失败!");
+                }
+            }
+        }
+        return AjaxResult.success();
+    }
 }

+ 6 - 0
sooka-jnb/src/main/java/com/sooka/jnb/knowledge/vo/JnbKnowledgeBaseVO.java

@@ -97,6 +97,12 @@ public class JnbKnowledgeBaseVO {
     private String createId;
 
     /**
+     * 被扣除积分人id
+     */
+    @Excel(name = "被扣除积分人id")
+    private String userId;
+
+    /**
      * 是否付费(1:已付费;0:未付费)
      */
     @Excel(name = "是否付费(1:已付费;0:未付费)")

+ 3 - 0
sooka-jnb/src/main/java/com/sooka/jnb/my/mapper/ScoreMapper.java

@@ -1,6 +1,7 @@
 package com.sooka.jnb.my.mapper;
 
 import com.sooka.jnb.my.domain.ScoreOperate;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
@@ -21,4 +22,6 @@ public interface ScoreMapper {
     Map<String, Long> soleVerify(String userId);
 
     List<ScoreOperate> getList(ScoreOperate score);
+
+    int knowledgeWhetherToPay(@Param("userId") String userId,@Param("relevanceDataId") String relevanceDataId);
 }

+ 3 - 0
sooka-jnb/src/main/java/com/sooka/jnb/my/service/IScoreService.java

@@ -1,6 +1,7 @@
 package com.sooka.jnb.my.service;
 
 import com.sooka.jnb.my.domain.ScoreOperate;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -75,4 +76,6 @@ public interface IScoreService {
      * @return boolean 用户存在返回true,不存在则返回false
      */
     boolean soleVerify(String userId);
+
+    int knowledgeWhetherToPay(String userId, String relevanceDataId);
 }

+ 5 - 0
sooka-jnb/src/main/java/com/sooka/jnb/my/service/impl/ScoreServiceImpl.java

@@ -87,6 +87,11 @@ public class ScoreServiceImpl implements IScoreService {
     }
 
     @Override
+    public int knowledgeWhetherToPay(String userId, String relevanceDataId) {
+        return scoreMapper.knowledgeWhetherToPay(userId,relevanceDataId);
+    }
+
+    @Override
     public boolean verifyScore(ScoreOperate score) {
         return scoreMapper.getScore(score.getUserId()).getScoreNum() >= score.getScoreNum();
     }

+ 3 - 0
sooka-jnb/src/main/resources/mapper/knowledge/JnbKnowledgeBaseMapper.xml

@@ -163,4 +163,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select kb.* FROM jnb_knowledge_base kb  LEFT JOIN jnb_score_operate so on so.relevance_data_id = kb.id
         WHERE so.relevance = 1 AND so.user_id  = #{createId}
     </select>
+    <update id="updateWatchNum">
+        update jnb_knowledge_base set watch_num = watch_num + 1 where id = #{id}
+    </update>
 </mapper>

+ 5 - 1
sooka-jnb/src/main/resources/mapper/my/ScoreMapper.xml

@@ -92,5 +92,9 @@
     <select id="soleVerify" parameterType="string" resultType="map">
         select count(1) as personSum from jnb_score where user_id = #{userId}
     </select>
-    
+
+    <!-- 查询知识库是否付费 -->
+    <select id="knowledgeWhetherToPay" resultType="integer">
+        select count(1) from jnb_score_operate where user_id = #{userId} and relevance_data_id = #{relevanceDataId}
+    </select>
 </mapper>