Explorar el Código

将保存公司信息和员工合并在一起处理,防止出现事务问题

wuxw hace 7 años
padre
commit
5d1149bd53

+ 61 - 16
Api/src/main/java/com/java110/api/listener/store/SaveStoreServiceListener.java

@@ -10,9 +10,7 @@ import com.java110.core.annotation.Java110Listener;
 import com.java110.core.context.DataFlowContext;
 import com.java110.entity.center.AppService;
 import com.java110.event.service.api.ServiceDataFlowEvent;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
+import org.springframework.http.*;
 
 /**
  * 保存商户信息
@@ -87,18 +85,18 @@ public class SaveStoreServiceListener extends AbstractServiceApiDataFlowListener
 
         //校验json 格式中是否包含 name,email,levelCd,tel
         Assert.jsonObjectHaveKey(paramIn,"businessStore","请求参数中未包含businessStore 节点,请确认");
-
-
-        JSONObject business = JSONObject.parseObject("{}");
-        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_STORE_INFO);
-        business.put(CommonConstant.HTTP_SEQ,1);
-        business.put(CommonConstant.HTTP_INVOKE_MODEL,CommonConstant.HTTP_INVOKE_MODEL_S);
-
-        business.put(CommonConstant.HTTP_BUSINESS_DATAS,refreshParamIn(paramIn));
+        JSONObject paramObj = JSONObject.parseObject(paramIn);
         HttpHeaders header = new HttpHeaders();
         dataFlowContext.getRequestCurrentHeaders().put(CommonConstant.HTTP_USER_ID,"-1");
         dataFlowContext.getRequestCurrentHeaders().put(CommonConstant.HTTP_ORDER_TYPE_CD,"D");
-        String paramInObj = super.restToCenterProtocol(business,dataFlowContext.getRequestCurrentHeaders()).toJSONString();
+        JSONArray businesses = new JSONArray();
+        //添加商户
+        businesses.add(addStore(paramObj));
+        //添加员工
+        businesses.add(addStaff(paramObj));
+
+
+        String paramInObj = super.restToCenterProtocol(businesses,dataFlowContext.getRequestCurrentHeaders()).toJSONString();
 
         //将 rest header 信息传递到下层服务中去
         super.freshHttpHeader(header,dataFlowContext.getRequestCurrentHeaders());
@@ -107,18 +105,65 @@ public class SaveStoreServiceListener extends AbstractServiceApiDataFlowListener
         //http://user-service/test/sayHello
         super.doRequest(dataFlowContext, service, httpEntity);
 
-        super.doResponse(dataFlowContext);
+        //super.doResponse(dataFlowContext);
+
+        if(dataFlowContext.getResponseEntity().getStatusCode() != HttpStatus.OK){
+            return;
+        }
+        String resData = dataFlowContext.getResponseEntity().getBody().toString();
+        ResponseEntity<String> responseEntity = new ResponseEntity<String>(JSONArray.parseArray(resData).get(0).toString(), HttpStatus.OK);
+        dataFlowContext.setResponseEntity(responseEntity);
+
 
     }
 
+    /**
+     * 添加商户
+     * @param paramInJson
+     * @return
+     */
+    private JSONObject addStore(JSONObject paramInJson){
+        JSONObject business = JSONObject.parseObject("{}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_STORE_INFO);
+        business.put(CommonConstant.HTTP_SEQ,1);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL,CommonConstant.HTTP_INVOKE_MODEL_S);
+
+        business.put(CommonConstant.HTTP_BUSINESS_DATAS,refreshParamIn(paramInJson));
+
+        return business;
+
+    }
+
+    /**
+     * 添加员工
+     * @param paramInJson
+     * @return
+     */
+    private JSONObject addStaff(JSONObject paramInJson){
+
+        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
+        business.put(CommonConstant.HTTP_BUSINESS_TYPE_CD, BusinessTypeConstant.BUSINESS_TYPE_SAVE_STORE_USER);
+        business.put(CommonConstant.HTTP_SEQ,2);
+        business.put(CommonConstant.HTTP_INVOKE_MODEL,CommonConstant.HTTP_INVOKE_MODEL_S);
+        JSONArray businessStoreUsers = new JSONArray();
+        JSONObject businessStoreUser = new JSONObject();
+        businessStoreUser.put("storeId","-1");
+        businessStoreUser.put("storeUserId","-1");
+        businessStoreUser.put("userId",paramInJson.getJSONObject("businessStore").getString("userId"));
+        businessStoreUser.put("relCd",StoreUserRelConstant.REL_ADMIN);
+        businessStoreUsers.add(businessStoreUser);
+        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessStoreUser",businessStoreUsers);
+
+        return business;
+    }
 
     /**
      * 对请求报文处理
-     * @param paramIn
+     * @param paramObj
      * @return
      */
-    private JSONObject refreshParamIn(String paramIn){
-        JSONObject paramObj = JSONObject.parseObject(paramIn);
+    private JSONObject refreshParamIn(JSONObject paramObj){
+
         if(paramObj.containsKey("businessStore")){
             JSONObject businessStoreObj = paramObj.getJSONObject("businessStore");
             businessStoreObj.put("storeId","-1");

+ 72 - 0
OrderService/src/main/java/com/java110/order/listener/RefreshStaffStoreIdFromSaveStoreInfoListener.java

@@ -0,0 +1,72 @@
+package com.java110.order.listener;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.constant.BusinessTypeConstant;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.entity.order.Business;
+import com.java110.event.app.order.Ordered;
+import com.java110.event.center.event.InvokeBusinessBSuccessEvent;
+import com.java110.event.center.listener.DataFlowListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.List;
+
+/**
+ *
+ * 刷新 员工的storeId
+ * Created by Administrator on 2019/3/30.
+ */
+@Java110Listener(name = "refreshStaffStoreIdFromSaveStoreInfoListener")
+public class RefreshStaffStoreIdFromSaveStoreInfoListener implements DataFlowListener<InvokeBusinessBSuccessEvent>,Ordered {
+
+    private final static Logger logger = LoggerFactory.getLogger(RefreshStaffStoreIdFromSaveStoreInfoListener.class);
+
+    @Override
+    public int getOrder() {
+        return 2;
+    }
+
+    @Override
+    public void soService(InvokeBusinessBSuccessEvent event) {
+
+        Business business = event.getBusiness();
+        if(!BusinessTypeConstant.BUSINESS_TYPE_SAVE_STORE_INFO.equals(business.getBusinessTypeCd())){
+            return ;
+        }
+        List<Business> businessList = event.getDataFlow().getBusinessList();
+        JSONObject businessResponseData = event.getBusinessResponseData();
+
+        if(!businessResponseData.containsKey("storeId")) {
+            return;
+        }
+
+        String storeId = businessResponseData.getString("storeId");
+
+        for(Business tmpBusiness : businessList){
+            if(!BusinessTypeConstant.BUSINESS_TYPE_SAVE_STORE_USER.equals(tmpBusiness.getBusinessTypeCd())){
+                continue;
+            }
+
+            JSONArray businessStoreUsers = tmpBusiness.getData().getJSONArray("businessStoreUser");
+            dealBusinessStoreUserStoreId(businessStoreUsers,storeId);
+        }
+    }
+
+
+    /**
+     * businessStoreUser 中storeId 为负数的问题
+     * @param businessStoreUsers
+     */
+    private void dealBusinessStoreUserStoreId(JSONArray businessStoreUsers,String storeId){
+        for(int bStoreUserIndex = 0 ; bStoreUserIndex < businessStoreUsers.size();bStoreUserIndex ++){
+            JSONObject businessStoreUser = businessStoreUsers.getJSONObject(bStoreUserIndex);
+
+            if(!businessStoreUser.containsKey("storeId") || "-1".equals(businessStoreUser.getString("storeId"))){
+                businessStoreUser.put("storeId",storeId);
+            }
+
+        }
+    }
+}

+ 8 - 3
WebService/src/main/java/com/java110/web/smo/impl/CompanyServiceSMOImpl.java

@@ -112,16 +112,21 @@ public class CompanyServiceSMOImpl extends BaseComponentSMO implements ICompanyS
 
         reqJson.put("businessStoreCerdentials",businessStoreCerdentials);
 
+
+
         responseEntity = this.callCenterService(restTemplate,pd,reqJson.toJSONString(), ServiceConstant.SERVICE_API_URL+"/api/save.store.info", HttpMethod.POST);
 
-        if(responseEntity.getStatusCode() != HttpStatus.OK){
+       /* if(responseEntity.getStatusCode() != HttpStatus.OK){
             return responseEntity;
         }
+
+        JSONObject resStoreInfo = JSONObject.parseObject(responseEntity.getBody().toString());
         //将现用户添加为商户管理员
         JSONObject staffInfo = new JSONObject();
         staffInfo.put("userId",pd.getUserId());
-        staffInfo.put("storeId",pd.getUserId());
-
+        staffInfo.put("storeId",resStoreInfo.getString("storeId"));
+        responseEntity = this.callCenterService(restTemplate,pd,staffInfo.toJSONString(), ServiceConstant.SERVICE_API_URL+"/api/user.staff.add", HttpMethod.POST);
+*/
 
         return responseEntity;
     }