Przeglądaj źródła

Merge branch 'feature_product' into 'feature_drools'

Feature product



See merge request !1029

xuexiaobo 6 lat temu
rodzic
commit
7d60c4dc40

+ 5 - 1
mooctest-site-server/pom.xml

@@ -43,7 +43,11 @@
             <artifactId>oauth2-dubbo-api</artifactId>
             <version>1.0.21</version>
         </dependency>
-
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.47</version>
+        </dependency>
         <!--dubbo-service-api-->
         <!--dubbo-dependency-->
         <!-- https://mvnrepository.com/artifact/io.dubbo.springboot/spring-boot-starter-dubbo -->

+ 1 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/configure/ShiroConfiguration.java

@@ -109,6 +109,7 @@ public class ShiroConfiguration {
         filterChainDefinitionManager.put("/api/mobileLogin", "anon");
         filterChainDefinitionManager.put("/api/case/nodeList", "anon");
         filterChainDefinitionManager.put("/api/payEmail", "anon");
+        filterChainDefinitionManager.put("/api/product/send", "anon");
 
         filterChainDefinitionManager.put("/logout", "anon");
         filterChainDefinitionManager.put("/api/dev/**", "anon");

+ 33 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/ctrl/ProductController.java

@@ -0,0 +1,33 @@
+package cn.iselab.mooctest.site.web.ctrl;
+
+import cn.iselab.mooctest.site.service.User2ThemeService;
+import cn.iselab.mooctest.site.service.UserPackageService;
+import cn.iselab.mooctest.site.web.data.response.ResponseVO;
+import cn.iselab.mooctest.site.web.data.response.ServerCode;
+import cn.iselab.mooctest.site.web.logic.ProductProcessLogic;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.xml.ws.Response;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.4 13:29
+ */
+@Slf4j
+@RestController
+public class ProductController {
+    @Autowired
+    private ProductProcessLogic productProcessLogic;
+
+    @RequestMapping(value = "/api/product/send", method = RequestMethod.POST)
+    public ResponseVO<Boolean> senderProduct(@RequestBody JSONObject productDetails){
+        log.info("productDetails:" + productDetails.toString());
+        return new ResponseVO<>(ServerCode.SUCCESS, productProcessLogic.sendProduct(productDetails));
+    }
+}

+ 2 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/data/CaseExtendsVO.java

@@ -35,4 +35,6 @@ public class CaseExtendsVO extends CaseVO {
     private VisitControlAttr visitControlAttr;
 
     private VerifyMessage hasPurchase;
+    //包含此题的ThemeId
+    private List<Long> themeIds;
 }

+ 11 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/ProductProcessLogic.java

@@ -0,0 +1,11 @@
+package cn.iselab.mooctest.site.web.logic;
+
+import com.alibaba.fastjson.JSONObject;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 0:57
+ */
+public interface ProductProcessLogic {
+    boolean sendProduct(JSONObject productDetails);
+}

+ 1 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/drools/CaseExtendsDroolsVarifyLogicImpl.java

@@ -45,6 +45,7 @@ public class CaseExtendsDroolsVarifyLogicImpl implements CaseExtendsDroolsVarify
         List<Long> userHasBuyTheme = user2ThemeService.findByUserId(userId).stream().map(User2Theme::getThemeId).collect(Collectors.toList());
         List<Long> themeHasTheCase = themeService.getThemeEntityRelationsByEntityId(caseExtendsVO.getId(),EntityTypeEnum.CASE).stream().map(ThemeEntityRelations::getThemeId).collect(Collectors.toList());
         List<Long> roleList = user2RoleService.getByUserId(userId).stream().map(User2Role::getRoleId).collect(Collectors.toList());
+        caseExtendsVO.setThemeIds(themeHasTheCase);
         boolean hasBuy =  themeHasTheCase.stream()
                 .filter(userHasBuyTheme::contains).collect(Collectors.toList()).size() != 0;
         KieSession kieSession = droolsWithDBService.getKieBase("theme").newKieSession();

+ 55 - 0
mooctest-site-server/src/main/java/cn/iselab/mooctest/site/web/logic/impl/ProductProcessLogicImpl.java

@@ -0,0 +1,55 @@
+package cn.iselab.mooctest.site.web.logic.impl;
+
+import cn.iselab.mooctest.site.dao.User2SalesPackageDao;
+import cn.iselab.mooctest.site.service.OpenId2UserIdService;
+import cn.iselab.mooctest.site.service.User2ThemeService;
+import cn.iselab.mooctest.site.web.logic.ProductProcessLogic;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: xuexb
+ * @Date: 2019.7.5 1:00
+ */
+@Slf4j
+@Service
+public class ProductProcessLogicImpl implements ProductProcessLogic {
+
+    @Autowired
+    private OpenId2UserIdService openId2UserIdService;
+
+    @Autowired
+    private User2ThemeService user2ThemeService;
+
+    @Autowired
+    private User2SalesPackageDao user2SalesPackageDao;
+
+
+    @Override
+    public boolean sendProduct(JSONObject productDetails) {
+        log.info("productDetails: "+productDetails);
+        try{
+            JSONArray entities = productDetails.getJSONArray("product2entities");
+            Long userId = openId2UserIdService.findUserIdByOpenId(productDetails.getString("user"));
+            log.info("userId"+userId);
+            for (int i=0; i<entities.size(); i++) {
+                JSONObject entity = entities.getJSONObject(i);
+                switch (entity.getString("entityType")){//根据不同Type进行不同处理
+                    case "THEME":
+                        if (user2ThemeService.findByUserIdAndThemeId(userId, entity.getLong("entityId"))==null)
+                            user2ThemeService.createRelation(userId, entity.getLong("entityId"));//关联不存在则建立关联
+                        break;
+                    case "USERPACKAGE":
+                        break;
+                }
+            }
+        }catch (Exception e){
+            log.error("添加关联出错", e);
+            return false;
+        }
+        return true;
+    }
+}