Explorar o código

商户成员功能实现

wuxw7 %!s(int64=8) %!d(string=hai) anos
pai
achega
9685bf8dd9

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 269 - 710
.idea/workspace.xml


+ 26 - 0
MerchantService/src/main/java/com/java110/merchant/dao/IMerchantMemberServiceDao.java

@@ -1,5 +1,6 @@
 package com.java110.merchant.dao;
 
+import com.java110.entity.merchant.BoMerchantMember;
 import com.java110.entity.merchant.MerchantMember;
 
 /**
@@ -15,4 +16,29 @@ public interface IMerchantMemberServiceDao {
      * @throws RuntimeException
      */
     public MerchantMember queryDataToMerchantMember(MerchantMember merchantMember) throws RuntimeException ;
+
+
+    /**
+     * 保存过程数据
+     * @param boMerchantMember 成员信息
+     * @return
+     * @throws RuntimeException
+     */
+    public long saveDataToBoMerchantMember(BoMerchantMember boMerchantMember) throws RuntimeException;
+
+    /**
+     * 根据过程数据 保存实例数据
+     * @param boMerchantMember
+     * @return
+     * @throws RuntimeException
+     */
+    public long saveDataToMerchant(BoMerchantMember boMerchantMember) throws RuntimeException;
+
+    /**
+     * 根据过程数据失效实例数据
+     * @param boMerchantMember
+     * @return
+     * @throws RuntimeException
+     */
+    public long deleteDataToMerchant(BoMerchantMember boMerchantMember) throws RuntimeException;
 }

+ 82 - 6
MerchantService/src/main/java/com/java110/merchant/dao/impl/MerchantMemberServiceDaoImpl.java

@@ -3,13 +3,16 @@ package com.java110.merchant.dao.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.log.LoggerEngine;
 import com.java110.core.base.dao.BaseServiceDao;
+import com.java110.entity.merchant.BoMerchantMember;
 import com.java110.entity.merchant.Merchant;
 import com.java110.entity.merchant.MerchantMember;
 import com.java110.merchant.dao.IMerchantMemberServiceDao;
+import org.springframework.stereotype.Service;
 
 /**
  * Created by wuxw on 2017/8/30.
  */
+@Service("merchantMemberServiceDaoImpl")
 public class MerchantMemberServiceDaoImpl extends BaseServiceDao implements IMerchantMemberServiceDao {
 
     /**
@@ -20,17 +23,90 @@ public class MerchantMemberServiceDaoImpl extends BaseServiceDao implements IMer
      */
     @Override
     public MerchantMember queryDataToMerchantMember(MerchantMember merchantMember) throws RuntimeException {
-            LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.queryDataToMerchantMember】查询数据入参 : " + JSONObject.toJSONString(merchantMember));
             //为了保险起见,再测检测reqList 是否有值
             if(merchantMember == null){
-                LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.queryDataToMerchantMember】查询数据出错 : " + JSONObject.toJSONString(merchantMember));
-                throw new IllegalArgumentException("请求参数错误,merchant : " + JSONObject.toJSONString(merchantMember));
+                LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.queryDataToMerchantMember】查询数据出错 空" );
+                throw new IllegalArgumentException("请求参数错误,merchantMember : 空");
             }
 
-            MerchantMember newMerchantMember  = sqlSessionTemplate.selectOne("merchantMemberServiceDaoImpl.queryDataToMerchantMember",merchantMember);
+        LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.queryDataToMerchantMember】查询数据入参 : " + JSONObject.toJSONString(merchantMember));
 
-            LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.queryDataToMerchantMember】保存数据出参 :newMerchant " + JSONObject.toJSONString(newMerchantMember));
 
-            return newMerchantMember;
+        MerchantMember newMerchantMember  = sqlSessionTemplate.selectOne("merchantMemberServiceDaoImpl.queryDataToMerchantMember",merchantMember);
+
+        LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.queryDataToMerchantMember】保存数据出参 :newMerchant " + JSONObject.toJSONString(newMerchantMember));
+
+        return newMerchantMember;
+    }
+
+    /**
+     * 保存过程数据
+     * @param boMerchantMember 成员信息
+     * @return
+     * @throws RuntimeException
+     */
+    @Override
+    public long saveDataToBoMerchantMember(BoMerchantMember boMerchantMember) throws RuntimeException {
+
+        //为了保险起见,再测检测reqList 是否有值
+        if(boMerchantMember == null){
+            LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.saveDataToBoMerchantMember】查询数据出错 空" );
+            throw new IllegalArgumentException("请求参数错误,boMerchantMember : 空");
+        }
+
+        LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.saveDataToBoMerchantMember】保存数据入参 : "
+                + JSONObject.toJSONString(boMerchantMember));
+
+        long rownum  = sqlSessionTemplate.insert("merchantMemberServiceDaoImpl.saveDataToBoMerchantMember",boMerchantMember);
+
+        LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.saveDataToBoMerchantMember】保存数据记录数 : " + rownum);
+        return rownum;
+    }
+
+    /**
+     * 根据过程数据 保存实例数据
+     * @param boMerchantMember
+     * @return
+     * @throws RuntimeException
+     */
+    public long saveDataToMerchant(BoMerchantMember boMerchantMember) throws RuntimeException{
+
+        //为了保险起见,再测检测reqList 是否有值
+        if(boMerchantMember == null){
+            LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.saveDataToMerchant】查询数据出错 空" );
+            throw new IllegalArgumentException("请求参数错误,boMerchantMember : 空");
+        }
+
+        LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.saveDataToMerchant】保存数据入参 : "
+                + JSONObject.toJSONString(boMerchantMember));
+
+        long rownum  = sqlSessionTemplate.insert("merchantMemberServiceDaoImpl.saveDataToMerchant",boMerchantMember);
+
+        LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.saveDataToMerchant】保存数据记录数 : " + rownum);
+        return rownum;
+    }
+
+
+    /**
+     * 根据过程数据失效实例数据
+     * @param boMerchantMember
+     * @return
+     * @throws RuntimeException
+     */
+    public long deleteDataToMerchant(BoMerchantMember boMerchantMember) throws RuntimeException{
+        //为了保险起见,再测检测reqList 是否有值
+        if(boMerchantMember == null){
+            LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.deleteDataToMerchant】查询数据出错 空" );
+            throw new IllegalArgumentException("请求参数错误,boMerchantMember : 空");
+        }
+
+        LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.deleteDataToMerchant】删除数据入参 : "
+                + JSONObject.toJSONString(boMerchantMember));
+
+        long rownum  = sqlSessionTemplate.update("merchantMemberServiceDaoImpl.deleteDataToMerchant",boMerchantMember);
+
+        LoggerEngine.debug("----【MerchantMemberServiceDaoImpl.deleteDataToMerchant】删除数据记录数 : " + rownum);
+        return rownum;
+
     }
 }

+ 219 - 3
MerchantService/src/main/java/com/java110/merchant/rest/MerchantMemberServiceRest.java

@@ -2,9 +2,9 @@ package com.java110.merchant.rest;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.common.log.LoggerEngine;
+import com.java110.common.util.Assert;
 import com.java110.common.util.ProtocolUtil;
 import com.java110.core.base.controller.BaseController;
-import com.java110.entity.merchant.Merchant;
 import com.java110.entity.merchant.MerchantMember;
 import com.java110.feign.merchant.IMerchantMemberService;
 import com.java110.merchant.smo.IMerchantMemberServiceSMO;
@@ -31,7 +31,7 @@ public class MerchantMemberServiceRest extends BaseController implements IMercha
      * @param data
      * @return
      */
-    @RequestMapping("/merchantService/queryMerchantInfo")
+    @RequestMapping("/merchantMemberService/queryMerchantInfo")
     public String queryMerchantMember(@RequestParam("data") String data){
         LoggerEngine.debug("queryMerchantInfo入参:" + data);
 
@@ -49,7 +49,223 @@ public class MerchantMemberServiceRest extends BaseController implements IMercha
             LoggerEngine.error("服务处理出现异常:", e);
             resultMerchantInfo = ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"服务处理出现异常"+e,null);
         } finally {
-            LoggerEngine.debug("用户服务操作客户出参:" + resultMerchantInfo);
+            LoggerEngine.debug("商户成员操作出参:" + resultMerchantInfo);
+            return resultMerchantInfo;
+        }
+    }
+
+
+    /**
+     * 商户成员信息受理
+     * 协议:
+     * {
+     *     'boMerchantMember':[{}]
+     * }
+     * @param data
+     * @return
+     */
+    @RequestMapping("/merchantMemberService/soMerchantMemberService")
+    public String soMerchantMemberService(@RequestParam("data") String data){
+
+        LoggerEngine.debug("soMerchantMemberService入参:" + data);
+
+        String resultMerchantInfo = null;
+
+        JSONObject reqMerchantJSON = null;
+        try {
+            reqMerchantJSON = this.simpleValidateJSON(data);
+            //1.0规则校验,报文是否合法
+
+
+            //2.0 受理商户成员信息
+            resultMerchantInfo = iMerchantMemberServiceSMO.soMerchantMemberService(reqMerchantJSON);
+
+
+        } catch (Exception e) {
+            LoggerEngine.error("服务处理出现异常:", e);
+            resultMerchantInfo = ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"服务处理出现异常"+e,null);
+        } finally {
+            LoggerEngine.debug("商户成员操作商户成员出参:" + resultMerchantInfo);
+            return resultMerchantInfo;
+        }
+    }
+
+    /**
+     * 这个接口专门用于订单服务受理用,入参为 JSONObject
+     *
+     * 支持 多个 商户成员信息 受理
+     *
+     * 请求协议:
+     *
+     * {
+     "data": [
+     {
+     "actionTypeCd": "C1",
+     "boMerchant": [
+     {
+     "merchantId": "-1",
+     "name": "S",
+     "email": "-52",
+     "cellphone": "17797173942",
+     "realName": "wuxw",
+     "sex": "1",
+     "password": "123456",
+     "lanId": "863010",
+     "merchantAdress": "青海省西宁市城中区格兰小镇",
+     "merchantType": "1",
+     "openId": "",
+     "state": "ADD"
+     },
+     {
+     "merchantId": "123",
+     "name": "S",
+     "email": "-52",
+     "cellphone": "17797173942",
+     "realName": "wuxw",
+     "sex": "1",
+     "password": "123456",
+     "lanId": "863010",
+     "merchantAdress": "青海省西宁市城中区格兰小镇",
+     "merchantType": "1",
+     "openId": "",
+     "state": "DEL"
+     }
+     ],
+     "boMerchantAttr": [
+     {
+     "merchantId": "123",
+     "prodId": "-1",
+     "attrCd": "123344",
+     "value": "1",
+     "state": "ADD"
+     },
+     {
+     "merchantId": "123",
+     "prodId": "-1",
+     "attrCd": "123345",
+     "value": "1",
+     "state": "DEL"
+     }
+     ]
+     }
+     ]
+     }
+
+     *
+     * 返回协议:
+     *
+     * {
+     'RESULT_CODE': '0000',
+     'RESULT_MSG': '成功',
+     'RESULT_INFO': {}
+     }
+     * @param data
+     * @return
+     */
+    @Override
+    @RequestMapping("/merchantMemberService/soMerchantMemberServiceForOrderService")
+    public String soMerchantMemberServiceForOrderService(@RequestParam("data") String data) {
+        LoggerEngine.debug("soMerchantMemberService入参:" + data);
+
+        String resultMerchantInfo = null;
+
+        JSONObject reqMerchantJSON = null;
+        try {
+            reqMerchantJSON = this.simpleValidateJSON(data);
+            //1.0规则校验,报文是否合法
+
+
+            //2.0 受理商户成员信息
+            resultMerchantInfo = iMerchantMemberServiceSMO.soMerchantMemberServiceForOrderService(reqMerchantJSON);
+
+
+        } catch (Exception e) {
+            LoggerEngine.error("服务处理出现异常:", e);
+            resultMerchantInfo = ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"服务处理出现异常"+e,null);
+        } finally {
+            LoggerEngine.debug("商户成员操作商户成员出参:" + resultMerchantInfo);
+            return resultMerchantInfo;
+        }
+    }
+
+
+    /**
+     * 商户成员信息处理
+     * 协议:
+     *{
+     *     boMerchant:[{},{}]
+     * }
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/merchantMemberService/soBoMerchantMember")
+    public String soBoMerchantMember(@RequestParam("data") String data ) {
+        LoggerEngine.debug("soBoMerchantMember入参:" + data);
+
+        String resultMerchantInfo = null;
+
+        JSONObject reqMerchantJSON = null;
+        try {
+            reqMerchantJSON = this.simpleValidateJSON(data);
+            resultMerchantInfo = iMerchantMemberServiceSMO.soBoMerchantMember(data);
+        }catch (Exception e){
+            LoggerEngine.error("服务处理出现异常:", e);
+            resultMerchantInfo = ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"服务处理出现异常:"+e,null);
+        } finally {
+            LoggerEngine.debug("商户成员操作商户成员出参:" + resultMerchantInfo);
+            return resultMerchantInfo;
+        }
+    }
+
+
+    /**
+     * 作废订单,根据boId作废订单
+     *
+     * 接口协议:
+     *
+     * { 'data': [
+
+     {
+     'olId': '123456',
+     'boId': '222222',
+     'actionTypeCd': 'C1'
+     },
+     {
+     'olId': '123456',
+     'boId': '222222',
+     'actionTypeCd': 'C1'
+     },
+     {
+     'olId': '123456',
+     'boId': '222222',
+     'actionTypeCd': 'C1'
+     }
+     ] }
+     * @param data
+     * @return
+     */
+    @RequestMapping("/merchantMemberService/soDeleteMerchantMemberService")
+    public String soDeleteMerchantMemberService(@RequestParam("data") String data){
+
+        LoggerEngine.debug("作废订单入参:"+data);
+
+        String resultMerchantInfo = null;
+
+        JSONObject reqParam = null;
+
+        try{
+            reqParam = this.simpleValidateJSON(data);
+
+            Assert.isNull(reqParam,"data","传入报文错误,没有包含data节点"+reqParam);
+
+            //resultMerchantInfo = iMerchantMemberServiceSMO.soDeleteMerchantMember(reqParam.getJSONArray("data"));
+
+        }catch (Exception e){
+            LoggerEngine.error("服务处理出现异常:", e);
+            resultMerchantInfo = ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"服务处理出现异常"+e+data,null);
+        }finally {
+            LoggerEngine.debug("作废订单出参:" + resultMerchantInfo);
             return resultMerchantInfo;
         }
     }

+ 105 - 0
MerchantService/src/main/java/com/java110/merchant/smo/IMerchantMemberServiceSMO.java

@@ -1,7 +1,21 @@
 package com.java110.merchant.smo;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONPath;
+import com.java110.common.constant.StateConstant;
+import com.java110.common.log.LoggerEngine;
+import com.java110.common.util.Assert;
+import com.java110.common.util.ProtocolUtil;
+import com.java110.entity.merchant.BoMerchantMember;
 import com.java110.entity.merchant.Merchant;
 import com.java110.entity.merchant.MerchantMember;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.ObjectUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * Created by wuxw on 2017/8/30.
@@ -16,4 +30,95 @@ public interface IMerchantMemberServiceSMO {
      * @throws Exception
      */
     public String queryMerchantMember(MerchantMember merchantMember) throws Exception;
+
+
+
+    /**
+     * 保存商户成员信息
+     *
+     * @param merchantInfoJson 入参为商户成员信息json传
+     * @return
+     */
+    public String saveMerchantMember(String merchantInfoJson) throws Exception;
+
+
+    /**
+     * 所有服务处理类
+     * {
+     *
+     *     'boMerchantMember':[{}],
+     *     'boMerchantMemberAttr':[{}]
+     * }
+     *
+     * 返回报文:
+     *
+     * {'RESULT_CODE':'0000','RESULT_MSG':'成功','RESULT_INFO':{'merchantId':'7000123,718881991'}}
+     * @param merchantInfoJson
+     * @return
+     */
+    public String soMerchantMemberService(JSONObject merchantInfoJson) throws Exception;
+
+    /**
+     *
+     * 请求报文为:
+     *
+     * {
+     "data": [
+     {
+     "actionTypeCd": "C1",
+     "boMerchantMember": [{},{}],
+     "boMerchantMemberAttr": [{ }, {}]
+     },
+     {
+     "actionTypeCd": "C1",
+     "boMerchantMember": [{},{}],
+     "boMerchantMemberAttr": [{ }, {}]
+     }
+     ]
+     }
+
+     返回报文 :
+
+     { 'RESULT_CODE': '0000', 'RESULT_MSG': '成功', 'RESULT_INFO': {'merchant':[{'oldMerchantId':'-1','merchantId':'12345678'},{'oldMerchantId':'-2','merchantId':'12345678'}]} }
+     * @param mInfoJson
+     * @return
+     * @throws Exception
+     */
+    public String soMerchantMemberServiceForOrderService(JSONObject mInfoJson) throws Exception ;
+
+    /**
+     * {
+     *     boMerchantMember:[{},{}]
+     * }
+     * 客户信心处理
+     *
+     *
+     * @param boMerchantMembers
+     * @return 成功 会带上处理客户的客户ID
+     * {'RESULT_CODE':'0000','RESULT_MSG':'成功','RESULT_INFO':{'merchantId':'7000123,718881991'}}
+     * @throws Exception
+     */
+    public String soBoMerchantMember(String boMerchantMembers) throws Exception;
+    /**
+     * 将生成的merchantId 封装在map中返回
+     * ...
+     * merchantIdKey.put("merchantId-1","710020404040");
+     *
+     * ...
+     *
+     * key 为 merchantId 加原前的值
+     *
+     * merchantIdKey 如果为空不做处理
+     * @param boMerchantMembers 客户信息
+     * @param merchantIdKey merchantIdKeymap
+     * @return
+     * @throws Exception
+     */
+    public String soBoMerchantMember(String boMerchantMembers,Map merchantIdKey) throws Exception;
+
+
+
+
+
+
 }

+ 257 - 1
MerchantService/src/main/java/com/java110/merchant/smo/impl/MerchantMemberServiceSMOImpl.java

@@ -1,20 +1,31 @@
 package com.java110.merchant.smo.impl;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.JSONPath;
+import com.java110.common.constant.StateConstant;
 import com.java110.common.log.LoggerEngine;
+import com.java110.common.util.Assert;
 import com.java110.common.util.ProtocolUtil;
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.entity.merchant.BoMerchantMember;
 import com.java110.entity.merchant.Merchant;
 import com.java110.entity.merchant.MerchantMember;
 import com.java110.merchant.dao.IMerchantMemberServiceDao;
 import com.java110.merchant.smo.IMerchantMemberServiceSMO;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.util.ObjectUtils;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * 商户成员
  * Created by wuxw on 2017/8/30.
  */
-public class MerchantMemberServiceSMOImpl implements IMerchantMemberServiceSMO {
+public class MerchantMemberServiceSMOImpl extends BaseServiceSMO implements IMerchantMemberServiceSMO {
 
     @Autowired
     IMerchantMemberServiceDao iMerchantMemberServiceDao;
@@ -38,6 +49,251 @@ public class MerchantMemberServiceSMOImpl implements IMerchantMemberServiceSMO {
     }
 
 
+
+    /**
+     * 保存商户成员信息
+     *
+     * @param merchantInfoJson 入参为商户成员信息json传
+     * @return
+     */
+    public String saveMerchantMember(String merchantInfoJson) throws Exception{
+
+        JSONObject reqMerchantJSON = null;
+        try {
+            reqMerchantJSON = this.simpleValidateJSON(merchantInfoJson);
+            //boMerchantMember增加Action (动作)
+            if (reqMerchantJSON.containsKey("boMerchantMember")) {
+                JSONObject boMerchantMember = reqMerchantJSON.getJSONObject("boMerchantMember");
+                boMerchantMember.put("state", StateConstant.STATE_ADD);
+            }
+        } catch (RuntimeException e) {
+            //返回异常信息
+            return e.getMessage();
+        }
+        return soMerchantMemberService(reqMerchantJSON);
+    }
+
+
+    /**
+     * 所有服务处理类
+     * {
+     *
+     *     'boMerchantMember':[{}],
+     *     'boMerchantMemberAttr':[{}]
+     * }
+     *
+     * 返回报文:
+     *
+     * {'RESULT_CODE':'0000','RESULT_MSG':'成功','RESULT_INFO':{'merchantId':'7000123,718881991'}}
+     * @param merchantInfoJson
+     * @return
+     */
+    public String soMerchantMemberService(JSONObject merchantInfoJson) throws Exception{
+        LoggerEngine.debug("商户成员服务操作客户入参:" + merchantInfoJson);
+        JSONObject paramJson = new JSONObject();
+
+        JSONObject resultInfo = null;
+
+        //存放生成的merchantId 主键为 merchantId-1 71000010100
+        Map merchantIdKey = new HashMap();
+
+        if (merchantInfoJson == null){
+            throw new IllegalArgumentException("soMerchantMemberService 入参 为空"+merchantInfoJson);
+        }
+        // 客户信息处理 处理boMerchantMember节点
+        doProcessBoMerchantMember(merchantInfoJson,paramJson,merchantIdKey,resultInfo);
+
+        return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_SUCCESS,"成功",resultInfo);
+
+    }
+
+    /**
+     *
+     * 请求报文为:
+     *
+     * {
+     "data": [
+     {
+     "actionTypeCd": "C1",
+     "boMerchantMember": [{},{}],
+     "boMerchantMemberAttr": [{ }, {}]
+     },
+     {
+     "actionTypeCd": "C1",
+     "boMerchantMember": [{},{}],
+     "boMerchantMemberAttr": [{ }, {}]
+     }
+     ]
+     }
+
+     返回报文 :
+
+     { 'RESULT_CODE': '0000', 'RESULT_MSG': '成功', 'RESULT_INFO': {'merchant':[{'oldMerchantId':'-1','merchantId':'12345678'},{'oldMerchantId':'-2','merchantId':'12345678'}]} }
+     * @param mInfoJson
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public String soMerchantMemberServiceForOrderService(JSONObject mInfoJson) throws Exception {
+
+        Assert.isNull(mInfoJson,"data","请求报文缺少 data 节点,请检查");
+
+        JSONArray merchantInfos = mInfoJson.getJSONArray("data");
+
+        Assert.isNull(merchantInfos,"请求报文中data节点,没有子节点,data子节点应该为JSONArray,merchantInfos="+merchantInfos);
+
+        JSONObject merchantInfoJ = new JSONObject();
+        JSONArray resultMerchantIdArray = new JSONArray();
+        for(int merchantInfoIndex = 0 ;merchantInfoIndex < merchantInfos.size();merchantInfoIndex ++){
+            JSONObject merchantInfoJson = merchantInfos.getJSONObject(merchantInfoIndex);
+            String soMerchantMemberServiceResult = this.soMerchantMemberService(merchantInfoJson);
+            JSONObject resultInfo = new JSONObject();
+
+            if(!ProtocolUtil.validateReturnJson(soMerchantMemberServiceResult,resultInfo)){
+                throw new RuntimeException("客户信息受理失败,原因为:"+resultInfo.getString(ProtocolUtil.RESULT_MSG));
+            }
+            if(resultInfo.getJSONObject(ProtocolUtil.RESULT_INFO) != null
+                    && resultInfo.getJSONObject(ProtocolUtil.RESULT_INFO).containsKey("merchantId")) {
+
+                String merchantIds = merchantInfoJ.getString("merchantId");
+//                merchantIds += "," + resultInfo.getJSONObject(ProtocolUtil.RESULT_INFO).getString("merchantId");
+
+//                merchantIds = merchantIds.startsWith(",") && merchantIds.length()>1 ? merchantIds.substring(1,merchantIds.length()):merchantIds;
+                //merchantInfoJ.put("merchantId", merchantIds);
+                JSONArray boMerchantMembers = merchantInfoJson.getJSONArray("boMerchantMember");
+
+                Object merchantIdObj = JSONPath.eval(merchantInfoJson,"$.boMerchantMember[merchantId < '0'][0].merchantId");
+                if(StringUtils.isNotBlank(merchantIds) && !ObjectUtils.isEmpty(merchantIdObj)) {
+
+                    String[] allNewMerchantIds = merchantIds.split(",");
+                    JSONObject newMerchantIdJson = null;
+                    for (String merchantId : allNewMerchantIds) {
+                        newMerchantIdJson = new JSONObject();
+                        newMerchantIdJson.put("oldMerchantId",merchantIdObj);
+                        newMerchantIdJson.put("merchantId",merchantId);
+                        resultMerchantIdArray.add(newMerchantIdJson);
+                    }
+
+                }
+            }
+
+        }
+
+        merchantInfoJ.put("merchant",resultMerchantIdArray);
+
+        return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_SUCCESS,"成功",merchantInfoJ);
+    }
+
+    /**
+     * {
+     *     boMerchantMember:[{},{}]
+     * }
+     * 客户信心处理
+     *
+     *
+     * @param boMerchantMembers
+     * @return 成功 会带上处理客户的客户ID
+     * {'RESULT_CODE':'0000','RESULT_MSG':'成功','RESULT_INFO':{'merchantId':'7000123,718881991'}}
+     * @throws Exception
+     */
+    public String soBoMerchantMember(String boMerchantMembers) throws Exception{
+        return soBoMerchantMember(boMerchantMembers,null);
+    }
+
+    /**
+     * 将生成的merchantId 封装在map中返回
+     * ...
+     * merchantIdKey.put("merchantId-1","710020404040");
+     *
+     * ...
+     *
+     * key 为 merchantId 加原前的值
+     *
+     * merchantIdKey 如果为空不做处理
+     * @param boMerchantMembers 客户信息
+     * @param merchantIdKey merchantIdKeymap
+     * @return
+     * @throws Exception
+     */
+    public String soBoMerchantMember(String boMerchantMembers,Map merchantIdKey) throws Exception{
+        // 将 jsonArray 转为list<BoMerchantMember> 对象
+        JSONObject jsonObject = JSONObject.parseObject(boMerchantMembers);
+
+        JSONObject resultInfo = new JSONObject();
+
+        String merchantIds = "";
+
+        List<BoMerchantMember> boMerchantMemberList = JSONObject.parseArray(jsonObject.getJSONArray("boMerchantMember").toJSONString(), BoMerchantMember.class);
+
+        //保存数据
+
+        for(BoMerchantMember boMerchantMember : boMerchantMemberList){
+
+            String merchantId = boMerchantMember.getMerchantId();
+
+
+            //保存数据至 bo_merchant 表中
+            long saveBoMerchantMemberFlag = iMerchantMemberServiceDao.saveDataToBoMerchantMember(boMerchantMember);
+
+            if(saveBoMerchantMemberFlag < 1){ // 如果没有保存成功,抛出异常,有事物 回退事物
+                throw new RuntimeException("保存过程[bo_merchant]数据失败,影响记录数为"+saveBoMerchantMemberFlag+",boMerchantMember : "+boMerchantMember);
+            }
+            //建档 处理 实例数据
+            long saveMerchantFlag = 0;
+            if(StateConstant.STATE_ADD.equals(boMerchantMember.getState())){
+                saveMerchantFlag  = iMerchantMemberServiceDao.saveDataToMerchant(boMerchantMember);
+            }else if(StateConstant.STATE_DEL.equals(boMerchantMember.getState())){
+                saveMerchantFlag = iMerchantMemberServiceDao.deleteDataToMerchant(boMerchantMember);
+            }else if(StateConstant.STATE_KIP.equals(boMerchantMember.getState())){
+                //按理这里到不了,KIP表示实例数据不变,所以这里默认写成1 认为是成功
+                saveMerchantFlag = 1;
+            }else{
+                //这里单独抛出异常,不走下面统一异常抛出,是为了说明更具体点
+                throw new RuntimeException("入参错误boMerchantMember 的 state 目前只支持 [ADD,DEL,KIP] , boMerchantMember : " +boMerchantMember);
+            }
+
+
+            if(saveMerchantFlag < 1){
+                throw new RuntimeException("保存实例[merchant]数据失败,影响记录数为"+saveMerchantFlag+", merchant : "+boMerchantMember);
+            }
+
+            merchantIds +=","+merchantId;
+
+        }
+
+        //去除第一个逗号
+        if (merchantIds.length()>0){
+            merchantIds = merchantIds.substring(1);
+        }
+
+        resultInfo.put("merchantId",merchantIds);
+
+        return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_SUCCESS,"成功",resultInfo);
+    }
+
+    /**
+     * 处理boMerchantMember 节点
+     * @throws Exception
+     */
+    public void doProcessBoMerchantMember(JSONObject merchantInfoJson,JSONObject paramJson,Map merchantIdKey, JSONObject resultInfo) throws Exception{
+
+        if(merchantInfoJson.containsKey("boMerchantMember")){
+            JSONArray boMerchantMembers = merchantInfoJson.getJSONArray("boMerchantMember");
+            JSONObject boMerchantMemberObj = new JSONObject();
+            boMerchantMemberObj.put("boMerchantMember",boMerchantMembers);
+            String returnSaveBoMerchantMember = this.soBoMerchantMember(boMerchantMemberObj.toJSONString(),merchantIdKey);
+
+            if(!ProtocolUtil.validateReturnJson(returnSaveBoMerchantMember,paramJson)){
+
+                throw new RuntimeException("保存 bo_merchant 失败:"+boMerchantMemberObj+(paramJson != null
+                        && paramJson.containsKey("RESULT_MSG")?paramJson.getString("RESULT_MSG"):"未知异常"));
+            }
+
+            resultInfo = paramJson.getJSONObject("RESULT_INFO");
+        }
+    }
+
+
     public IMerchantMemberServiceDao getiMerchantMemberServiceDao() {
         return iMerchantMemberServiceDao;
     }

+ 71 - 0
bean/src/main/java/com/java110/entity/DefaultBoEntity.java

@@ -0,0 +1,71 @@
+package com.java110.entity;
+
+import java.util.Date;
+
+/**
+ * Created by wuxw on 2017/9/8.
+ */
+public class DefaultBoEntity {
+
+    private String boId;
+
+    private Date start_dt;
+
+    private Date end_dt;
+
+    private String state;
+
+    private Date create_dt;
+
+
+    private String versionId;
+
+
+    public String getBoId() {
+        return boId;
+    }
+
+    public void setBoId(String boId) {
+        this.boId = boId;
+    }
+
+    public Date getStart_dt() {
+        return start_dt;
+    }
+
+    public void setStart_dt(Date start_dt) {
+        this.start_dt = start_dt;
+    }
+
+    public Date getEnd_dt() {
+        return end_dt;
+    }
+
+    public void setEnd_dt(Date end_dt) {
+        this.end_dt = end_dt;
+    }
+
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    public Date getCreate_dt() {
+        return create_dt;
+    }
+
+    public void setCreate_dt(Date create_dt) {
+        this.create_dt = create_dt;
+    }
+
+    public String getVersionId() {
+        return versionId;
+    }
+
+    public void setVersionId(String versionId) {
+        this.versionId = versionId;
+    }
+}

+ 10 - 0
bean/src/main/java/com/java110/entity/DefaultEntity.java

@@ -8,6 +8,9 @@ import java.util.Date;
  */
 public class DefaultEntity {
 
+
+    private String versionId;
+
     private Date start_dt;
 
     private Date create_dt;
@@ -19,6 +22,13 @@ public class DefaultEntity {
     private String status_cd;
 
 
+    public String getVersionId() {
+        return versionId;
+    }
+
+    public void setVersionId(String versionId) {
+        this.versionId = versionId;
+    }
 
     public Date getStart_dt() {
         return start_dt;

+ 3 - 48
bean/src/main/java/com/java110/entity/merchant/BoMerchantMember.java

@@ -1,6 +1,7 @@
 package com.java110.entity.merchant;
 
 import com.java110.entity.DefaultAttrEntity;
+import com.java110.entity.DefaultBoEntity;
 
 import java.util.Date;
 
@@ -8,9 +9,9 @@ import java.util.Date;
  * 商户成员过程实例
  * Created by wuxw on 2017/8/30.
  */
-public class BoMerchantMember {
+public class BoMerchantMember extends DefaultBoEntity {
+
 
-    private String boId;
 
     private String merchantId;
 
@@ -18,22 +19,6 @@ public class BoMerchantMember {
 
     private String memberType;
 
-    private Date start_dt;
-
-    private Date end_dt;
-
-    private String state;
-
-    private Date create_dt;
-
-
-    public String getBoId() {
-        return boId;
-    }
-
-    public void setBoId(String boId) {
-        this.boId = boId;
-    }
 
     public String getMerchantId() {
         return merchantId;
@@ -59,35 +44,5 @@ public class BoMerchantMember {
         this.memberType = memberType;
     }
 
-    public Date getStart_dt() {
-        return start_dt;
-    }
-
-    public void setStart_dt(Date start_dt) {
-        this.start_dt = start_dt;
-    }
 
-    public Date getEnd_dt() {
-        return end_dt;
-    }
-
-    public void setEnd_dt(Date end_dt) {
-        this.end_dt = end_dt;
-    }
-
-    public String getState() {
-        return state;
-    }
-
-    public void setState(String state) {
-        this.state = state;
-    }
-
-    public Date getCreate_dt() {
-        return create_dt;
-    }
-
-    public void setCreate_dt(Date create_dt) {
-        this.create_dt = create_dt;
-    }
 }

+ 8 - 3
config/db/merchant.db

@@ -64,22 +64,27 @@ create table merchant_member(
     id int not null auto_increment,
     merchantId varchar(20) not null comment '商户ID',
     memberId  varchar(20) not null COMMENT '成员ID',
+    versionId varchar(20) not null comment '过程表更新实例表最新的版本ID,这里可以是购物车ID',
     memberType varchar(10) not null comment '成员类型 1 产品 2 目录'
     create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     status_cd  varchar(10) default '0' COMMENT '数据状态 0 有效 1 失效',
-    start_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '开始时间',
-    end_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结束时间',
-    version_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
+    start_dt timestamp COMMENT '开始时间',
+    end_dt timestamp COMMENT '结束时间',
+    version_dt timestamp COMMENT '修改时间',
     primary key (id)
 );
 
+
+
 create table bo_merchant_member(
     boId varchar(20) not null comment '业务ID 对应的busi_order的boId',
      merchantId  varchar(20) not null COMMENT '商户ID',
     memberId  varchar(20) not null COMMENT '成员ID',
+    versionId varchar(20) not null comment '过程表更新实例表最新的版本ID,这里可以是购物车ID',
     memberType varchar(10) not null comment '成员类型 1 产品 2 目录'
     create_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     start_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '开始时间',
     end_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结束时间',
     state  varchar(10) not null COMMENT '新建 ADD ,删除DEL'
 );
+

+ 17 - 0
config/src/main/resources/mapper/merchant/MerchantMemberServiceDaoImplMapper.xml

@@ -24,6 +24,23 @@
         ]]>
     </select>
 
+    <!--  保存过程数据 add by wuxw 2017-09-08 21:48 -->
+    <insert id="saveDataToBoMerchantMember" parameterType="com.java110.entity.merchant.BoMerchantMember">
+        insert into bo_merchant_member(boId,merchantId,memberId,versionId,memberType,state,start_dt,end_dt)
+        values(#boId#,#merchantId#,#memberId#,#versionId#,#memberType#,#state#,#start_dt#,#end_dt#)
+    </insert>
+
+    <!-- 保存实例数据 add by wuxw 2017-09-08 21:58 -->
+    <insert id="saveDataToMerchant" parameterType="com.java110.entity.merchant.BoMerchantMember">
+        insert into merchant_member(merchantId,memberId,versionId,memberType,status_cd,start_dt,end_dt,version_dt)
+        values(#merchantId#,#memberId#,#versionId#,#memberType#,'0',#start_dt#,#end_dt#,now())
+    </insert>
+    <!-- 删除实例数据 add by wuxw 2017-09-08 22:02 -->
+    <update id="deleteDataToMerchant" parameterType="com.java110.entity.merchant.BoMerchantMember">
+        update merchant_member mm set mm.status_cd = '1',mm.versionId = #versionId#,mm.version_dt = now() where mm.memberId = #memberId#
+        and mm.merchantId = #merchantId#
+    </update>
+
 
 
 </mapper>

+ 151 - 0
feign/src/main/java/com/java110/feign/merchant/IMerchantMemberService.java

@@ -1,7 +1,158 @@
 package com.java110.feign.merchant;
 
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.log.LoggerEngine;
+import com.java110.common.util.Assert;
+import com.java110.common.util.ProtocolUtil;
+import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
 /**
  * Created by wuxw on 2017/8/30.
  */
+
+@FeignClient(name = "merchant-service", fallback = MerchantMemberServiceFallBack.class)
 public interface IMerchantMemberService {
+
+    /**
+     * 通过Merchant对象中数据查询用户信息
+     * 如,用户ID,名称
+     * @param data
+     * @return
+     */
+    @RequestMapping("/merchantMemberService/queryMerchantMember")
+    public String queryMerchantMember(@RequestParam("data") String data);
+
+
+    /**
+     * 商户成员信息受理
+     * 协议:
+     * {
+     *     'boMerchantMember':[{}]
+     * }
+     * @param data
+     * @return
+     */
+    @RequestMapping("/merchantMemberService/soMerchantMemberService")
+    public String soMerchantMemberService(@RequestParam("data") String data);
+
+    /**
+     * 这个接口专门用于订单服务受理用,入参为 JSONObject
+     *
+     * 支持 多个 商户成员信息 受理
+     *
+     * 请求协议:
+     *
+     * {
+     "data": [
+     {
+     "actionTypeCd": "C1",
+     "boMerchant": [
+     {
+     "merchantId": "-1",
+     "name": "S",
+     "email": "-52",
+     "cellphone": "17797173942",
+     "realName": "wuxw",
+     "sex": "1",
+     "password": "123456",
+     "lanId": "863010",
+     "merchantAdress": "青海省西宁市城中区格兰小镇",
+     "merchantType": "1",
+     "openId": "",
+     "state": "ADD"
+     },
+     {
+     "merchantId": "123",
+     "name": "S",
+     "email": "-52",
+     "cellphone": "17797173942",
+     "realName": "wuxw",
+     "sex": "1",
+     "password": "123456",
+     "lanId": "863010",
+     "merchantAdress": "青海省西宁市城中区格兰小镇",
+     "merchantType": "1",
+     "openId": "",
+     "state": "DEL"
+     }
+     ],
+     "boMerchantAttr": [
+     {
+     "merchantId": "123",
+     "prodId": "-1",
+     "attrCd": "123344",
+     "value": "1",
+     "state": "ADD"
+     },
+     {
+     "merchantId": "123",
+     "prodId": "-1",
+     "attrCd": "123345",
+     "value": "1",
+     "state": "DEL"
+     }
+     ]
+     }
+     ]
+     }
+
+     *
+     * 返回协议:
+     *
+     * {
+     'RESULT_CODE': '0000',
+     'RESULT_MSG': '成功',
+     'RESULT_INFO': {}
+     }
+     * @param data
+     * @return
+     */
+    @RequestMapping("/merchantMemberService/soMerchantMemberServiceForOrderService")
+    public String soMerchantMemberServiceForOrderService(@RequestParam("data") String data);
+
+    /**
+     * 商户成员信息处理
+     * 协议:
+     *{
+     *     boMerchant:[{},{}]
+     * }
+     * @param data
+     * @return
+     * @throws Exception
+     */
+    @RequestMapping("/merchantMemberService/soBoMerchantMember")
+    public String soBoMerchantMember(@RequestParam("data") String data ) ;
+
+
+    /**
+     * 作废订单,根据boId作废订单
+     *
+     * 接口协议:
+     *
+     * { 'data': [
+
+     {
+     'olId': '123456',
+     'boId': '222222',
+     'actionTypeCd': 'C1'
+     },
+     {
+     'olId': '123456',
+     'boId': '222222',
+     'actionTypeCd': 'C1'
+     },
+     {
+     'olId': '123456',
+     'boId': '222222',
+     'actionTypeCd': 'C1'
+     }
+     ] }
+     * @param data
+     * @return
+     */
+    @RequestMapping("/merchantMemberService/soDeleteMerchantMemberService")
+    public String soDeleteMerchantMemberService(@RequestParam("data") String data);
+
 }

+ 26 - 0
feign/src/main/java/com/java110/feign/merchant/MerchantMemberServiceFallBack.java

@@ -1,7 +1,33 @@
 package com.java110.feign.merchant;
 
+import com.java110.common.util.ProtocolUtil;
+
 /**
  * Created by wuxw on 2017/8/30.
  */
 public class MerchantMemberServiceFallBack implements IMerchantMemberService {
+    @Override
+    public String queryMerchantMember(String data) {
+        return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"调用服务超时",null);
+    }
+
+    @Override
+    public String soMerchantMemberService(String data) {
+        return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"调用服务超时",null);
+    }
+
+    @Override
+    public String soMerchantMemberServiceForOrderService(String data) {
+        return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"调用服务超时",null);
+    }
+
+    @Override
+    public String soBoMerchantMember(String data) {
+        return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"调用服务超时",null);
+    }
+
+    @Override
+    public String soDeleteMerchantMemberService(String data) {
+        return ProtocolUtil.createResultMsg(ProtocolUtil.RETURN_MSG_ERROR,"调用服务超时",null);
+    }
 }