wuxw
2018-12-08 14498c57ff64b5aebf5cf9b46041a88327d8236b
修改用户完善,停用用户,恢复用户功能实现
3个文件已修改
5个文件已添加
840 ■■■■■ 已修改文件
Api/src/main/java/com/java110/api/listener/users/DisableStaffServiceListener.java 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java 162 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/AbstractUserBusinessServiceDataFlowListener.java 109 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/ModifyUserInfoListener.java 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/RecoverUserInfoListener.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
UserService/src/main/java/com/java110/user/listener/RemoveUserInfoListener.java 136 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-common/src/main/java/com/java110/common/constant/ServiceCodeConstant.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-config/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Api/src/main/java/com/java110/api/listener/users/DisableStaffServiceListener.java
New file
@@ -0,0 +1,92 @@
package com.java110.api.listener.users;
import com.alibaba.fastjson.JSONObject;
import com.java110.api.listener.AbstractServiceApiDataFlowListener;
import com.java110.common.cache.MappingCache;
import com.java110.common.constant.CommonConstant;
import com.java110.common.constant.MappingConstant;
import com.java110.common.constant.ServiceCodeConstant;
import com.java110.common.constant.UserLevelConstant;
import com.java110.common.util.Assert;
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;
/**
 * 员工停用接口
 * @author wuxw
 * @create 2018-12-08 下午2:46
 * @desc 停用员工信息,如离职等情况 员工账号信息停用处理
 **/
@Java110Listener("disableStaffServiceListener")
public class DisableStaffServiceListener  extends AbstractServiceApiDataFlowListener {
    @Override
    public String getServiceCode() {
        return ServiceCodeConstant.SERVICE_CODE_USER_STAFF_DISABLE;
    }
    /**
     * 接口请求方法
     * @return
     */
    @Override
    public HttpMethod getHttpMethod() {
        return HttpMethod.PUT;
    }
    /**
     * 业务逻辑处理
     * 参数要求必须有员工ID
     * @param event
     */
    @Override
    public void soService(ServiceDataFlowEvent event) {
        //获取数据上下文对象
        DataFlowContext dataFlowContext = event.getDataFlowContext();
        AppService service = event.getAppService();
        String paramIn = dataFlowContext.getReqData();
        Assert.jsonObjectHaveKey(paramIn,"userId","当前请求报文中未包含userId节点");
        JSONObject business = JSONObject.parseObject("{\"datas\":{}}");
        business.put(CommonConstant.HTTP_BUSINESS_SERVICE_CODE,ServiceCodeConstant.SERVICE_CODE_SAVE_USER_INFO);
        business.put(CommonConstant.HTTP_BUSINESS_SERVICE_NAME,"用户注册");
        business.getJSONObject(CommonConstant.HTTP_BUSINESS_DATAS).put("businessUser",refreshParamIn(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();
        HttpEntity<String> httpEntity = new HttpEntity<String>(paramInObj, header);
        //http://user-service/test/sayHello
        super.doRequest(dataFlowContext, service, httpEntity);
        super.doResponse(dataFlowContext);
    }
    /**
     * 对请求报文处理
     * @param paramIn
     * @return
     */
    private JSONObject refreshParamIn(String paramIn){
        JSONObject paramObj = JSONObject.parseObject(paramIn);
        paramObj.put("userId","-1");
        paramObj.put("levelCd", UserLevelConstant.USER_LEVEL_STAFF);
        //设置默认密码
        String staffDefaultPassword = MappingCache.getValue(MappingConstant.KEY_STAFF_DEFAULT_PASSWORD);
        Assert.isNull(staffDefaultPassword,"映射表中未设置员工默认密码,请检查"+MappingConstant.KEY_STAFF_DEFAULT_PASSWORD);
        paramObj.put("password",staffDefaultPassword);
        return paramObj;
    }
    @Override
    public int getOrder() {
        return 0;
    }
}
UserService/src/main/java/com/java110/user/dao/impl/UserServiceDaoImpl.java
@@ -45,17 +45,17 @@
    @Override
    public int saveDataToBoCust(BoCust boCust) throws RuntimeException{
        LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToBoCust】保存数据入参 : " + boCust);
        LoggerEngine.debug("----【userServiceDaoImpl.saveDataToBoCust】保存数据入参 : " + boCust);
        int saveFlag = 0;
        try {
            saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveDataToBoCust",boCust);
            saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveDataToBoCust",boCust);
        }catch(RuntimeException e){
            LoggerEngine.error("----【UserServiceDAOImpl.saveDataToBoCust】保存数据异常 : " ,e);
            LoggerEngine.error("----【userServiceDaoImpl.saveDataToBoCust】保存数据异常 : " ,e);
            return saveFlag;
        }finally {
            LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToBoCust】保存数据出参 : saveFlag:" + saveFlag);
            LoggerEngine.debug("----【userServiceDaoImpl.saveDataToBoCust】保存数据出参 : saveFlag:" + saveFlag);
            return saveFlag;
        }
@@ -71,16 +71,16 @@
    @Override
    public int saveDataToBoCustAttr(BoCustAttr boCustAttr) throws RuntimeException {
        LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToBoCustAttr】保存数据入参 : " + boCustAttr);
        LoggerEngine.debug("----【userServiceDaoImpl.saveDataToBoCustAttr】保存数据入参 : " + boCustAttr);
        //为了保险起见,再测检测reqList 是否有值
        if(boCustAttr == null){
            LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToBoCustAttr】保存数据出错 : " + boCustAttr);
            LoggerEngine.debug("----【userServiceDaoImpl.saveDataToBoCustAttr】保存数据出错 : " + boCustAttr);
            return 0;
        }
        int saveFlag = 0;
        saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveDataToBoCustAttr",boCustAttr);
        LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToBoCustAttr】保存数据出参 :saveFlag " + saveFlag);
        saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveDataToBoCustAttr",boCustAttr);
        LoggerEngine.debug("----【userServiceDaoImpl.saveDataToBoCustAttr】保存数据出参 :saveFlag " + saveFlag);
        return saveFlag;
@@ -94,16 +94,16 @@
     */
    @Override
    public int saveDataToCust(Cust cust) throws RuntimeException {
        LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToCust】保存数据入参 : " + cust);
        LoggerEngine.debug("----【userServiceDaoImpl.saveDataToCust】保存数据入参 : " + cust);
        //为了保险起见,再测检测reqList 是否有值
        if(cust == null){
            LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToCust】保存数据出错 : " + cust);
            LoggerEngine.debug("----【userServiceDaoImpl.saveDataToCust】保存数据出错 : " + cust);
            throw new IllegalArgumentException("请求参数错误,cust : " + cust);
        }
        int saveFlag = 0;
        saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveDataToCust",cust);
        LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToCust】保存数据出参 :saveFlag " + saveFlag);
        saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveDataToCust",cust);
        LoggerEngine.debug("----【userServiceDaoImpl.saveDataToCust】保存数据出参 :saveFlag " + saveFlag);
        return saveFlag;
    }
@@ -116,16 +116,16 @@
     */
    @Override
    public int saveDataToCustAttr(CustAttr custAttr) throws RuntimeException {
        LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToCust】保存数据入参 : " + custAttr);
        LoggerEngine.debug("----【userServiceDaoImpl.saveDataToCust】保存数据入参 : " + custAttr);
        //为了保险起见,再测检测reqList 是否有值
        if(custAttr == null){
            LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToCust】保存数据出错 : " + custAttr);
            LoggerEngine.debug("----【userServiceDaoImpl.saveDataToCust】保存数据出错 : " + custAttr);
            throw new IllegalArgumentException("请求参数错误,custAttr : " + custAttr);
        }
        int saveFlag = 0;
        saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveDataToCustAttr",custAttr);
        LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToCust】保存数据出参 :saveFlag " + saveFlag);
        saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveDataToCustAttr",custAttr);
        LoggerEngine.debug("----【userServiceDaoImpl.saveDataToCust】保存数据出参 :saveFlag " + saveFlag);
        return saveFlag;
    }
@@ -137,16 +137,16 @@
     * @throws RuntimeException
     */
    public int deleteDataToCust(Cust cust) throws RuntimeException{
        LoggerEngine.debug("----【UserServiceDAOImpl.deleteDataToCust】保存数据入参 : " + cust);
        LoggerEngine.debug("----【userServiceDaoImpl.deleteDataToCust】保存数据入参 : " + cust);
        //为了保险起见,再测检测reqList 是否有值
        if(cust == null){
            LoggerEngine.debug("----【UserServiceDAOImpl.deleteDataToCust】保存数据出错 : " + cust);
            LoggerEngine.debug("----【userServiceDaoImpl.deleteDataToCust】保存数据出错 : " + cust);
            throw new IllegalArgumentException("请求参数错误,cust : " + cust);
        }
        int saveFlag = 0;
        saveFlag = sqlSessionTemplate.update("userServiceDAOImpl.deleteDataToCust",cust);
        LoggerEngine.debug("----【UserServiceDAOImpl.deleteDataToCust】保存数据出参 :saveFlag " + saveFlag);
        saveFlag = sqlSessionTemplate.update("userServiceDaoImpl.deleteDataToCust",cust);
        LoggerEngine.debug("----【userServiceDaoImpl.deleteDataToCust】保存数据出参 :saveFlag " + saveFlag);
        return saveFlag;
    }
@@ -158,16 +158,16 @@
     * @throws RuntimeException
     */
    public int deleteDataToCustAttr(CustAttr custAttr) throws RuntimeException{
        LoggerEngine.debug("----【UserServiceDAOImpl.deleteDataToCustAttr】保存数据入参 : " + custAttr);
        LoggerEngine.debug("----【userServiceDaoImpl.deleteDataToCustAttr】保存数据入参 : " + custAttr);
        //为了保险起见,再测检测reqList 是否有值
        if(custAttr == null){
            LoggerEngine.debug("----【UserServiceDAOImpl.deleteDataToCustAttr】保存数据出错 : " + custAttr);
            LoggerEngine.debug("----【userServiceDaoImpl.deleteDataToCustAttr】保存数据出错 : " + custAttr);
            throw new IllegalArgumentException("请求参数错误,custAttr : " + custAttr);
        }
        int saveFlag = 0;
        saveFlag = sqlSessionTemplate.update("userServiceDAOImpl.deleteDataToCustAttr",custAttr);
        LoggerEngine.debug("----【UserServiceDAOImpl.deleteDataToCustAttr】保存数据出参 :saveFlag " + saveFlag);
        saveFlag = sqlSessionTemplate.update("userServiceDaoImpl.deleteDataToCustAttr",custAttr);
        LoggerEngine.debug("----【userServiceDaoImpl.deleteDataToCustAttr】保存数据出参 :saveFlag " + saveFlag);
        return saveFlag;
    }
@@ -183,7 +183,7 @@
    @Override
    public String saveDataToBoCustAndBoCustAttr(String boCustInfo) throws RuntimeException {
        LoggerEngine.debug("----【UserServiceDAOImpl.saveDataToBoCustAndBoCustAttr】保存数据入参"+boCustInfo);
        LoggerEngine.debug("----【userServiceDaoImpl.saveDataToBoCustAndBoCustAttr】保存数据入参"+boCustInfo);
        return null;
    }
@@ -216,16 +216,16 @@
     */
    @Override
    public Cust queryDataToCust(Cust cust) throws RuntimeException {
        LoggerEngine.debug("----【UserServiceDAOImpl.queryDataToCust】保存数据入参 : " + cust);
        LoggerEngine.debug("----【userServiceDaoImpl.queryDataToCust】保存数据入参 : " + cust);
        //为了保险起见,再测检测reqList 是否有值
        if(cust == null){
            LoggerEngine.debug("----【UserServiceDAOImpl.queryDataToCust】保存数据出错 : " + cust);
            LoggerEngine.debug("----【userServiceDaoImpl.queryDataToCust】保存数据出错 : " + cust);
            throw new IllegalArgumentException("请求参数错误,cust : " + cust);
        }
        Cust newCust  = sqlSessionTemplate.selectOne("userServiceDAOImpl.queryDataToCust",cust);
        Cust newCust  = sqlSessionTemplate.selectOne("userServiceDaoImpl.queryDataToCust",cust);
        LoggerEngine.debug("----【UserServiceDAOImpl.queryDataToCust】保存数据出参 :newCust " + newCust);
        LoggerEngine.debug("----【userServiceDaoImpl.queryDataToCust】保存数据出参 :newCust " + newCust);
        return newCust;
    }
@@ -239,16 +239,16 @@
     */
    @Override
    public List<CustAttr> queryDataToCustAttr(CustAttr custAttr) throws RuntimeException {
        LoggerEngine.debug("----【UserServiceDAOImpl.queryDataToCustAttr】保存数据入参 : " + custAttr);
        LoggerEngine.debug("----【userServiceDaoImpl.queryDataToCustAttr】保存数据入参 : " + custAttr);
        //为了保险起见,再测检测reqList 是否有值
        if(custAttr == null){
            LoggerEngine.debug("----【UserServiceDAOImpl.queryDataToCust】保存数据出错 : " + custAttr);
            LoggerEngine.debug("----【userServiceDaoImpl.queryDataToCust】保存数据出错 : " + custAttr);
            throw new IllegalArgumentException("请求参数错误,CustAttr : " + custAttr);
        }
        List<CustAttr> custAttrs  = sqlSessionTemplate.selectList("userServiceDAOImpl.queryDataToCustAttr",custAttr);
        List<CustAttr> custAttrs  = sqlSessionTemplate.selectList("userServiceDaoImpl.queryDataToCustAttr",custAttr);
        LoggerEngine.debug("----【UserServiceDAOImpl.queryDataToCust】保存数据出参 :custAttrs " + custAttrs);
        LoggerEngine.debug("----【userServiceDaoImpl.queryDataToCust】保存数据出参 :custAttrs " + custAttrs);
        return custAttrs;
    }
@@ -267,11 +267,11 @@
     * @throws Exception
     */
    public List<BoCust> queryBoCust(BoCust boCust) throws Exception{
        LoggerEngine.debug("----【UserServiceDAOImpl.queryBoCustAttr】:"+boCust);
        LoggerEngine.debug("----【userServiceDaoImpl.queryBoCustAttr】:"+boCust);
        Assert.isNull(boCust,"查询bo_cust 入参为空");
        return sqlSessionTemplate.selectList("userServiceDAOImpl.queryBoCust",boCust);
        return sqlSessionTemplate.selectList("userServiceDaoImpl.queryBoCust",boCust);
    }
    /**
@@ -284,11 +284,11 @@
     */
    public List<BoCustAttr> queryBoCustAttr(BoCustAttr boCustAttr) throws Exception{
        LoggerEngine.debug("【userServiceDAOImpl.queryBoCustAttr】:"+boCustAttr);
        LoggerEngine.debug("【userServiceDaoImpl.queryBoCustAttr】:"+boCustAttr);
        Assert.isNull(boCustAttr,"查询bo_cust_attr 入参为空");
        return sqlSessionTemplate.selectList("userServiceDAOImpl.queryBoCustAttr",boCustAttr);
        return sqlSessionTemplate.selectList("userServiceDaoImpl.queryBoCustAttr",boCustAttr);
    }
@@ -299,11 +299,11 @@
     */
    @Override
    public void saveBusinessUserInfo(Map userInfo) throws DAOException {
        LoggerEngine.debug("----【UserServiceDAOImpl.saveBusinessUserInfo】保存数据入参 : " + JSONObject.toJSONString(userInfo));
        LoggerEngine.debug("----【userServiceDaoImpl.saveBusinessUserInfo】保存数据入参 : " + JSONObject.toJSONString(userInfo));
        // 查询business_user 数据是否已经存在
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveBusinessUserInfo",userInfo);
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveBusinessUserInfo",userInfo);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户数据失败:"+JSONObject.toJSONString(userInfo));
@@ -316,9 +316,9 @@
     */
    @Override
    public void saveBusinessUserAttr(Map userAttr) throws DAOException {
        LoggerEngine.debug("----【UserServiceDAOImpl.saveBusinessUserAttr】保存数据入参 : " + JSONObject.toJSONString(userAttr));
        LoggerEngine.debug("----【userServiceDaoImpl.saveBusinessUserAttr】保存数据入参 : " + JSONObject.toJSONString(userAttr));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveBusinessUserAttr",userAttr);
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveBusinessUserAttr",userAttr);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户属性数据失败:"+JSONObject.toJSONString(userAttr));
@@ -327,8 +327,8 @@
    @Override
    public void saveUserInfoInstance(Map businessUser) {
        LoggerEngine.debug("----【UserServiceDAOImpl.saveUserInfoInstance】保存数据入参 : " + JSONObject.toJSONString(businessUser));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveUserInfoInstance",businessUser);
        LoggerEngine.debug("----【userServiceDaoImpl.saveUserInfoInstance】保存数据入参 : " + JSONObject.toJSONString(businessUser));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveUserInfoInstance",businessUser);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户Instance数据失败:"+JSONObject.toJSONString(businessUser));
@@ -337,8 +337,8 @@
    @Override
    public void saveUserAttrInstance(Map attrInstance) {
        LoggerEngine.debug("----【UserServiceDAOImpl.saveUserAttrInstance】保存数据入参 : " + JSONObject.toJSONString(attrInstance));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveUserAttrInstance",attrInstance);
        LoggerEngine.debug("----【userServiceDaoImpl.saveUserAttrInstance】保存数据入参 : " + JSONObject.toJSONString(attrInstance));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveUserAttrInstance",attrInstance);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户Instance数据失败:"+JSONObject.toJSONString(attrInstance));
@@ -347,8 +347,8 @@
    @Override
    public void updateUserInfoInstance(Map businessUser) {
        LoggerEngine.debug("----【UserServiceDAOImpl.updateUserInfoInstance】保存数据入参 : " + JSONObject.toJSONString(businessUser));
        int saveFlag = sqlSessionTemplate.update("userServiceDAOImpl.updateUserInfoInstance",businessUser);
        LoggerEngine.debug("----【userServiceDaoImpl.updateUserInfoInstance】保存数据入参 : " + JSONObject.toJSONString(businessUser));
        int saveFlag = sqlSessionTemplate.update("userServiceDaoImpl.updateUserInfoInstance",businessUser);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"修改用户Instance数据失败:"+JSONObject.toJSONString(businessUser));
@@ -357,8 +357,8 @@
    @Override
    public void updateUserAttrInstance(Map attrInstance) {
        LoggerEngine.debug("----【UserServiceDAOImpl.updateUserAttrInstance】保存数据入参 : " + JSONObject.toJSONString(attrInstance));
        int saveFlag = sqlSessionTemplate.update("userServiceDAOImpl.updateUserAttrInstance",attrInstance);
        LoggerEngine.debug("----【userServiceDaoImpl.updateUserAttrInstance】保存数据入参 : " + JSONObject.toJSONString(attrInstance));
        int saveFlag = sqlSessionTemplate.update("userServiceDaoImpl.updateUserAttrInstance",attrInstance);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"修改用户Instance数据失败:"+JSONObject.toJSONString(attrInstance));
@@ -375,8 +375,8 @@
     */
    public Map queryBusinessUserInfo(Map info) throws DAOException{
        Assert.notNull(info,"queryBusinessUserInfo 的参数不能为空");
        LoggerEngine.debug("----【UserServiceDAOImpl.queryBusinessUserInfo】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDAOImpl.queryBusinessUserInfo",info);
        LoggerEngine.debug("----【userServiceDaoImpl.queryBusinessUserInfo】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDaoImpl.queryBusinessUserInfo",info);
        if(users == null || users.size() == 0){
            return null;
        }
@@ -391,8 +391,8 @@
     */
    public List<Map> queryBusinessUserInfoAttrs(Map info) throws DAOException{
        Assert.notNull(info,"queryBusinessUserInfoAttrs 的参数不能为空");
        LoggerEngine.debug("----【UserServiceDAOImpl.queryBusinessUserInfoAttrs】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> userAttrs = sqlSessionTemplate.selectList("userServiceDAOImpl.queryBusinessUserInfoAttrs",info);
        LoggerEngine.debug("----【userServiceDaoImpl.queryBusinessUserInfoAttrs】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> userAttrs = sqlSessionTemplate.selectList("userServiceDaoImpl.queryBusinessUserInfoAttrs",info);
        return userAttrs;
    }
@@ -405,8 +405,8 @@
    @Override
    public Map queryUserInfo(Map info) throws DAOException{
        Assert.notNull(info,"queryUserInfo 的参数不能为空");
        LoggerEngine.debug("----【UserServiceDAOImpl.queryUserInfo】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDAOImpl.queryUserInfo",info);
        LoggerEngine.debug("----【userServiceDaoImpl.queryUserInfo】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDaoImpl.queryUserInfo",info);
        if(users == null || users.size() == 0){
            return null;
        }
@@ -422,8 +422,8 @@
    @Override
    public List<Map> queryUserInfoAttrs(Map info) throws DAOException{
        Assert.notNull(info,"queryUserInfo 的参数不能为空");
        LoggerEngine.debug("----【UserServiceDAOImpl.updateUserAttrInstance】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> userAttrs = sqlSessionTemplate.selectList("userServiceDAOImpl.queryUserInfoAttrs",info);
        LoggerEngine.debug("----【userServiceDaoImpl.updateUserAttrInstance】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> userAttrs = sqlSessionTemplate.selectList("userServiceDaoImpl.queryUserInfoAttrs",info);
        return userAttrs;
    }
@@ -434,8 +434,8 @@
     * @throws DAOException
     */
    public void saveBusinessUserAddress(Map userAddress) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.saveBusinessUserAddress】保存数据入参 : " + JSONObject.toJSONString(userAddress));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveBusinessUserAddress",userAddress);
        LoggerEngine.debug("----【userServiceDaoImpl.saveBusinessUserAddress】保存数据入参 : " + JSONObject.toJSONString(userAddress));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveBusinessUserAddress",userAddress);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户地址数据失败:"+JSONObject.toJSONString(userAddress));
@@ -451,8 +451,8 @@
     */
    public Map queryBusinessUserAddress(Map info) throws DAOException{
        Assert.notNull(info,"queryBusinessUserAddress 的参数不能为空");
        LoggerEngine.debug("----【UserServiceDAOImpl.queryBusinessUserAddress】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDAOImpl.queryBusinessUserAddress",info);
        LoggerEngine.debug("----【userServiceDaoImpl.queryBusinessUserAddress】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDaoImpl.queryBusinessUserAddress",info);
        if(users == null || users.size() == 0){
            return null;
        }
@@ -465,8 +465,8 @@
     * @throws DAOException 数据处理异常
     */
    public void saveUserAddressInstance(Map businessUserAddress) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.saveUserAddressInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserAddress));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveUserAddressInstance",businessUserAddress);
        LoggerEngine.debug("----【userServiceDaoImpl.saveUserAddressInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserAddress));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveUserAddressInstance",businessUserAddress);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户地址Instance数据失败:"+JSONObject.toJSONString(businessUserAddress));
@@ -479,8 +479,8 @@
     * @throws DAOException 数据处理异常
     */
    public void updateUserAddressInstance(Map businessUserAddress) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.updateUserAddressInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserAddress));
        int saveFlag = sqlSessionTemplate.update("userServiceDAOImpl.updateUserAddressInstance",businessUserAddress);
        LoggerEngine.debug("----【userServiceDaoImpl.updateUserAddressInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserAddress));
        int saveFlag = sqlSessionTemplate.update("userServiceDaoImpl.updateUserAddressInstance",businessUserAddress);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"修改用户Instance数据失败:"+JSONObject.toJSONString(businessUserAddress));
@@ -495,8 +495,8 @@
     * @throws DAOException
     */
    public void saveBusinessUserTag(Map userTag) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.saveBusinessUserTag】保存数据入参 : " + JSONObject.toJSONString(userTag));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveBusinessUserTag",userTag);
        LoggerEngine.debug("----【userServiceDaoImpl.saveBusinessUserTag】保存数据入参 : " + JSONObject.toJSONString(userTag));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveBusinessUserTag",userTag);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户打标数据失败:"+JSONObject.toJSONString(userTag));
@@ -513,8 +513,8 @@
     */
    public Map queryBusinessUserTag(Map info) throws DAOException{
        Assert.notNull(info,"queryBusinessUserTag 的参数不能为空");
        LoggerEngine.debug("----【UserServiceDAOImpl.queryBusinessUserTag】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDAOImpl.queryBusinessUserTag",info);
        LoggerEngine.debug("----【userServiceDaoImpl.queryBusinessUserTag】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDaoImpl.queryBusinessUserTag",info);
        if(users == null || users.size() == 0){
            return null;
        }
@@ -527,8 +527,8 @@
     * @throws DAOException 数据处理异常
     */
    public void saveUserTagInstance(Map businessUserTag) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.saveUserTagInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserTag));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveUserTagInstance",businessUserTag);
        LoggerEngine.debug("----【userServiceDaoImpl.saveUserTagInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserTag));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveUserTagInstance",businessUserTag);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户打标Instance数据失败:"+JSONObject.toJSONString(businessUserTag));
@@ -542,8 +542,8 @@
     * @throws DAOException 数据处理异常
     */
    public void updateUserTagInstance(Map businessUserTag) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.updateUserTagInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserTag));
        int saveFlag = sqlSessionTemplate.update("userServiceDAOImpl.updateUserTagInstance",businessUserTag);
        LoggerEngine.debug("----【userServiceDaoImpl.updateUserTagInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserTag));
        int saveFlag = sqlSessionTemplate.update("userServiceDaoImpl.updateUserTagInstance",businessUserTag);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"修改用户Instance数据失败:"+JSONObject.toJSONString(businessUserTag));
@@ -558,8 +558,8 @@
     * @throws DAOException
     */
    public void saveBusinessUserCredentials(Map userCredentials) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.saveBusinessUserCredentials】保存数据入参 : " + JSONObject.toJSONString(userCredentials));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveBusinessUserCredentials",userCredentials);
        LoggerEngine.debug("----【userServiceDaoImpl.saveBusinessUserCredentials】保存数据入参 : " + JSONObject.toJSONString(userCredentials));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveBusinessUserCredentials",userCredentials);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户打标数据失败:"+JSONObject.toJSONString(userCredentials));
@@ -576,8 +576,8 @@
     */
    public Map queryBusinessUserCredentials(Map info) throws DAOException{
        Assert.notNull(info,"queryBusinessUserCredentials 的参数不能为空");
        LoggerEngine.debug("----【UserServiceDAOImpl.queryBusinessUserCredentials】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDAOImpl.queryBusinessUserCredentials",info);
        LoggerEngine.debug("----【userServiceDaoImpl.queryBusinessUserCredentials】保存数据入参 : " + JSONObject.toJSONString(info));
        List<Map> users = sqlSessionTemplate.selectList("userServiceDaoImpl.queryBusinessUserCredentials",info);
        if(users == null || users.size() == 0){
            return null;
        }
@@ -590,8 +590,8 @@
     * @throws DAOException 数据处理异常
     */
    public void saveUserCredentialsInstance(Map businessUserCredentials) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.saveUserCredentialsInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserCredentials));
        int saveFlag = sqlSessionTemplate.insert("userServiceDAOImpl.saveUserCredentialsInstance",businessUserCredentials);
        LoggerEngine.debug("----【userServiceDaoImpl.saveUserCredentialsInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserCredentials));
        int saveFlag = sqlSessionTemplate.insert("userServiceDaoImpl.saveUserCredentialsInstance",businessUserCredentials);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"保存用户打标Instance数据失败:"+JSONObject.toJSONString(businessUserCredentials));
@@ -605,8 +605,8 @@
     * @throws DAOException 数据处理异常
     */
    public void updateUserCredentialsInstance(Map businessUserCredentials) throws DAOException{
        LoggerEngine.debug("----【UserServiceDAOImpl.updateUserCredentialsInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserCredentials));
        int saveFlag = sqlSessionTemplate.update("userServiceDAOImpl.updateUserCredentialsInstance",businessUserCredentials);
        LoggerEngine.debug("----【userServiceDaoImpl.updateUserCredentialsInstance】保存数据入参 : " + JSONObject.toJSONString(businessUserCredentials));
        int saveFlag = sqlSessionTemplate.update("userServiceDaoImpl.updateUserCredentialsInstance",businessUserCredentials);
        if(saveFlag < 1){
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"修改用户Instance数据失败:"+JSONObject.toJSONString(businessUserCredentials));
UserService/src/main/java/com/java110/user/listener/AbstractUserBusinessServiceDataFlowListener.java
New file
@@ -0,0 +1,109 @@
package com.java110.user.listener;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.constant.StatusConstant;
import com.java110.common.exception.ListenerExecuteException;
import com.java110.entity.center.Business;
import com.java110.event.service.AbstractBusinessServiceDataFlowListener;
import com.java110.user.dao.IUserServiceDao;
import java.util.HashMap;
import java.util.Map;
/**
 * @author wux
 * @create 2018-12-08 下午3:15
 * @desc 用户服务抽象类
 **/
public abstract class AbstractUserBusinessServiceDataFlowListener extends AbstractBusinessServiceDataFlowListener {
    /**
     * 获取 DAO工具类
     * @return
     */
    public abstract IUserServiceDao getUserServiceDaoImpl();
    /**
     * 当修改数据时,查询instance表中的数据 自动保存删除数据到business中
     * @param businessUser 商户信息
     */
    protected void autoSaveDelBusinessUser(Business business, JSONObject businessUser){
        //自动插入DEL
        Map info = new HashMap();
        info.put("userId",businessUser.getString("userId"));
        info.put("statusCd", StatusConstant.STATUS_CD_VALID);
        Map currentUserInfo = getUserServiceDaoImpl().queryUserInfo(info);
        if(currentUserInfo == null || currentUserInfo.isEmpty()){
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR,"未找到需要修改数据信息,入参错误或数据有问题,请检查"+info);
        }
        currentUserInfo.put("bId",business.getbId());
        currentUserInfo.put("userId",currentUserInfo.get("user_id"));
        currentUserInfo.put("name",currentUserInfo.get("name"));
        currentUserInfo.put("email",currentUserInfo.get("email"));
        currentUserInfo.put("address",currentUserInfo.get("address"));
        currentUserInfo.put("password",currentUserInfo.get("password"));
        currentUserInfo.put("locationCd",currentUserInfo.get("location_cd"));
        currentUserInfo.put("age",currentUserInfo.get("age"));
        currentUserInfo.put("sex",currentUserInfo.get("sex"));
        currentUserInfo.put("tel",currentUserInfo.get("tel"));
        currentUserInfo.put("levelCd",currentUserInfo.get("level_cd"));
        currentUserInfo.put("operate",StatusConstant.OPERATE_DEL);
        getUserServiceDaoImpl().saveBusinessUserInfo(currentUserInfo);
    }
    /**
     * 刷新 businessUserInfo 数据
     * 主要将 数据库 中字段和 接口传递字段建立关系
     * @param businessUserInfo
     */
    protected void flushBusinessUserInfo(Map businessUserInfo,String statusCd){
        businessUserInfo.put("newBId",businessUserInfo.get("b_id"));
        businessUserInfo.put("userId",businessUserInfo.get("user_id"));
        businessUserInfo.put("name",businessUserInfo.get("name"));
        businessUserInfo.put("email",businessUserInfo.get("email"));
        businessUserInfo.put("address",businessUserInfo.get("address"));
        businessUserInfo.put("password",businessUserInfo.get("password"));
        businessUserInfo.put("locationCd",businessUserInfo.get("location_cd"));
        businessUserInfo.put("age",businessUserInfo.get("age"));
        businessUserInfo.put("sex",businessUserInfo.get("sex"));
        businessUserInfo.put("tel",businessUserInfo.get("tel"));
        businessUserInfo.put("levelCd",businessUserInfo.get("level_cd"));
        businessUserInfo.put("statusCd", statusCd);
    }
    /**
     * 当修改数据时,查询instance表中的数据 自动保存删除数据到business中
     * @param businessUser 商户信息
     */
    protected void autoSaveAddBusinessUser(Business business, JSONObject businessUser){
        //自动插入DEL
        Map info = new HashMap();
        info.put("userId",businessUser.getString("userId"));
        info.put("statusCd", StatusConstant.STATUS_CD_INVALID);
        Map currentUserInfo = getUserServiceDaoImpl().queryUserInfo(info);
        if(currentUserInfo == null || currentUserInfo.isEmpty()){
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR,"未找到需要修改数据信息,入参错误或数据有问题,请检查"+info);
        }
        currentUserInfo.put("bId",business.getbId());
        currentUserInfo.put("userId",currentUserInfo.get("user_id"));
        currentUserInfo.put("name",currentUserInfo.get("name"));
        currentUserInfo.put("email",currentUserInfo.get("email"));
        currentUserInfo.put("address",currentUserInfo.get("address"));
        currentUserInfo.put("password",currentUserInfo.get("password"));
        currentUserInfo.put("locationCd",currentUserInfo.get("location_cd"));
        currentUserInfo.put("age",currentUserInfo.get("age"));
        currentUserInfo.put("sex",currentUserInfo.get("sex"));
        currentUserInfo.put("tel",currentUserInfo.get("tel"));
        currentUserInfo.put("levelCd",currentUserInfo.get("level_cd"));
        currentUserInfo.put("operate",StatusConstant.OPERATE_ADD);
        getUserServiceDaoImpl().saveBusinessUserInfo(currentUserInfo);
    }
}
UserService/src/main/java/com/java110/user/listener/ModifyUserInfoListener.java
New file
@@ -0,0 +1,143 @@
package com.java110.user.listener;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.constant.ServiceCodeConstant;
import com.java110.common.constant.StatusConstant;
import com.java110.common.exception.ListenerExecuteException;
import com.java110.common.util.Assert;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.core.factory.GenerateCodeFactory;
import com.java110.entity.center.Business;
import com.java110.user.dao.IUserServiceDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 修改 用户信息 侦听
 * Created by wuxw on 2018/5/18.
 */
@Java110Listener("modifyUserInfoListener")
@Transactional
public class ModifyUserInfoListener extends AbstractUserBusinessServiceDataFlowListener {
    private final static Logger logger = LoggerFactory.getLogger(ModifyUserInfoListener.class);
    @Autowired
    IUserServiceDao userServiceDaoImpl;
    @Override
    public int getOrder() {
        return 0;
    }
    /**
     * 修改用户信息
     * @return
     */
    @Override
    public String getServiceCode() {
        return ServiceCodeConstant.SERVICE_CODE_MODIFY_USER_INFO;
    }
    /**
     * 修改用户信息至 business表中
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data,"没有datas 节点,或没有子节点需要处理");
        Assert.jsonObjectHaveKey(data,"businessUser","datas 节点下没有包含 businessUser 节点");
        JSONObject businessUser = data.getJSONObject("businessUser");
        Assert.jsonObjectHaveKey(businessUser,"userId","businessUser 节点下没有包含 userId 节点");
        if(businessUser.getString("userId").startsWith("-")){
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR,"userId 错误,不能自动生成(必须已经存在的userId)"+businessUser);
        }
        //自动保存DEL
        autoSaveDelBusinessUser(business,businessUser);
        businessUser.put("bId",business.getbId());
        businessUser.put("operate", StatusConstant.OPERATE_ADD);
        //保存商户信息
        userServiceDaoImpl.saveBusinessUserInfo(businessUser);
    }
    /**
     * 将 business的用户信息 保存至 instance表中
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Map info = new HashMap();
        info.put("bId",business.getbId());
        info.put("operate",StatusConstant.OPERATE_ADD);
        //商户信息
        Map businessUserInfo = userServiceDaoImpl.queryBusinessUserInfo(info);
        if( businessUserInfo != null && !businessUserInfo.isEmpty()) {
            flushBusinessUserInfo(businessUserInfo,StatusConstant.STATUS_CD_VALID);
            userServiceDaoImpl.updateUserInfoInstance(businessUserInfo);
            dataFlowContext.addParamOut("userId",businessUserInfo.get("user_id"));
        }
    }
    /**
     * 将instance 作废
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doRecover(DataFlowContext dataFlowContext, Business business) {
        String bId = business.getbId();
        //Assert.hasLength(bId,"请求报文中没有包含 bId");
        Map info = new HashMap();
        info.put("bId",bId);
        info.put("statusCd",StatusConstant.STATUS_CD_VALID);
        Map delInfo = new HashMap();
        delInfo.put("bId",business.getbId());
        delInfo.put("operate",StatusConstant.OPERATE_DEL);
        //用户信息
        Map userInfo = userServiceDaoImpl.queryUserInfo(info);
        if(userInfo != null && !userInfo.isEmpty()){
            //商户信息
            Map businessUserInfo = userServiceDaoImpl.queryBusinessUserInfo(delInfo);
            //除非程序出错了,这里不会为空
            if(businessUserInfo == null || businessUserInfo.isEmpty()){
                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_INNER_ERROR,"撤单失败(user),程序内部异常,请检查! "+delInfo);
            }
            flushBusinessUserInfo(businessUserInfo,StatusConstant.STATUS_CD_VALID);
            userServiceDaoImpl.updateUserInfoInstance(businessUserInfo);
            dataFlowContext.addParamOut("userId",userInfo.get("user_id"));
        }
    }
    public IUserServiceDao getUserServiceDaoImpl() {
        return userServiceDaoImpl;
    }
    public void setUserServiceDaoImpl(IUserServiceDao userServiceDaoImpl) {
        this.userServiceDaoImpl = userServiceDaoImpl;
    }
}
UserService/src/main/java/com/java110/user/listener/RecoverUserInfoListener.java
New file
@@ -0,0 +1,136 @@
package com.java110.user.listener;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.constant.ServiceCodeConstant;
import com.java110.common.constant.StatusConstant;
import com.java110.common.exception.ListenerExecuteException;
import com.java110.common.util.Assert;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.entity.center.Business;
import com.java110.user.dao.IUserServiceDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Map;
/**
 * 恢复 用户信息 侦听
 * Created by wuxw on 2018/5/18.
 */
@Java110Listener("recoverUserInfoListener")
@Transactional
public class RecoverUserInfoListener extends AbstractUserBusinessServiceDataFlowListener {
    private final static Logger logger = LoggerFactory.getLogger(RecoverUserInfoListener.class);
    @Autowired
    IUserServiceDao userServiceDaoImpl;
    @Override
    public int getOrder() {
        return 0;
    }
    /**
     * 恢复用户信息
     * @return
     */
    @Override
    public String getServiceCode() {
        return ServiceCodeConstant.SERVICE_CODE_RECOVER_USER_INFO;
    }
    /**
     * 修改用户信息至 business表中
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data,"没有datas 节点,或没有子节点需要处理");
        Assert.jsonObjectHaveKey(data,"businessUser","datas 节点下没有包含 businessUser 节点");
        JSONObject businessUser = data.getJSONObject("businessUser");
        Assert.jsonObjectHaveKey(businessUser,"userId","businessUser 节点下没有包含 userId 节点");
        if(businessUser.getString("userId").startsWith("-")){
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR,"userId 错误,不能自动生成(必须已经存在的userId)"+businessUser);
        }
        //自动插入ADD
        autoSaveAddBusinessUser(business,businessUser);
    }
    /**
     * 将 business的用户信息 保存至 instance表中
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Map info = new HashMap();
        info.put("bId",business.getbId());
        info.put("operate",StatusConstant.OPERATE_ADD);
        //商户信息
        Map businessUserInfo = userServiceDaoImpl.queryBusinessUserInfo(info);
        if( businessUserInfo != null && !businessUserInfo.isEmpty()) {
            flushBusinessUserInfo(businessUserInfo,StatusConstant.STATUS_CD_VALID);
            userServiceDaoImpl.updateUserInfoInstance(businessUserInfo);
            dataFlowContext.addParamOut("userId",businessUserInfo.get("user_id"));
        }
    }
    /**
     * 将instance 作废
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doRecover(DataFlowContext dataFlowContext, Business business) {
        String bId = business.getbId();
        //Assert.hasLength(bId,"请求报文中没有包含 bId");
        Map info = new HashMap();
        info.put("bId",bId);
        info.put("statusCd",StatusConstant.STATUS_CD_VALID);
        Map addInfo = new HashMap();
        addInfo.put("bId",business.getbId());
        addInfo.put("operate",StatusConstant.OPERATE_ADD);
        //商户信息
        Map userInfo = userServiceDaoImpl.queryUserInfo(info);
        if(userInfo != null && !userInfo.isEmpty()){
            //商户信息
            Map businessUserInfo = userServiceDaoImpl.queryBusinessUserInfo(addInfo);
            //除非程序出错了,这里不会为空
            if(businessUserInfo == null || businessUserInfo.isEmpty()){
                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_INNER_ERROR,"撤单失败(user),程序内部异常,请检查! "+addInfo);
            }
            flushBusinessUserInfo(businessUserInfo,StatusConstant.STATUS_CD_INVALID);
            userServiceDaoImpl.updateUserInfoInstance(businessUserInfo);
            dataFlowContext.addParamOut("userId",userInfo.get("user_id"));
        }
    }
    public IUserServiceDao getUserServiceDaoImpl() {
        return userServiceDaoImpl;
    }
    public void setUserServiceDaoImpl(IUserServiceDao userServiceDaoImpl) {
        this.userServiceDaoImpl = userServiceDaoImpl;
    }
}
UserService/src/main/java/com/java110/user/listener/RemoveUserInfoListener.java
New file
@@ -0,0 +1,136 @@
package com.java110.user.listener;
import com.alibaba.fastjson.JSONObject;
import com.java110.common.constant.ResponseConstant;
import com.java110.common.constant.ServiceCodeConstant;
import com.java110.common.constant.StatusConstant;
import com.java110.common.exception.ListenerExecuteException;
import com.java110.common.util.Assert;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.entity.center.Business;
import com.java110.user.dao.IUserServiceDao;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import java.util.HashMap;
import java.util.Map;
/**
 * 停用 用户信息 侦听
 * Created by wuxw on 2018/5/18.
 */
@Java110Listener("removeUserInfoListener")
@Transactional
public class RemoveUserInfoListener extends AbstractUserBusinessServiceDataFlowListener {
    private final static Logger logger = LoggerFactory.getLogger(RemoveUserInfoListener.class);
    @Autowired
    IUserServiceDao userServiceDaoImpl;
    @Override
    public int getOrder() {
        return 0;
    }
    /**
     * 停用用户信息
     * @return
     */
    @Override
    public String getServiceCode() {
        return ServiceCodeConstant.SERVICE_CODE_REMOVE_USER_INFO;
    }
    /**
     * 修改用户信息至 business表中
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data,"没有datas 节点,或没有子节点需要处理");
        Assert.jsonObjectHaveKey(data,"businessUser","datas 节点下没有包含 businessUser 节点");
        JSONObject businessUser = data.getJSONObject("businessUser");
        Assert.jsonObjectHaveKey(businessUser,"userId","businessUser 节点下没有包含 userId 节点");
        if(businessUser.getString("userId").startsWith("-")){
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR,"userId 错误,不能自动生成(必须已经存在的userId)"+businessUser);
        }
        //自动插入DEL
        autoSaveDelBusinessUser(business,businessUser);
    }
    /**
     * 将 business的用户信息 保存至 instance表中
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Map info = new HashMap();
        info.put("bId",business.getbId());
        info.put("operate",StatusConstant.OPERATE_DEL);
        //商户信息
        Map businessUserInfo = userServiceDaoImpl.queryBusinessUserInfo(info);
        if( businessUserInfo != null && !businessUserInfo.isEmpty()) {
            flushBusinessUserInfo(businessUserInfo,StatusConstant.STATUS_CD_INVALID);
            userServiceDaoImpl.updateUserInfoInstance(businessUserInfo);
            dataFlowContext.addParamOut("userId",businessUserInfo.get("user_id"));
        }
    }
    /**
     * 将instance 作废
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doRecover(DataFlowContext dataFlowContext, Business business) {
        String bId = business.getbId();
        //Assert.hasLength(bId,"请求报文中没有包含 bId");
        Map info = new HashMap();
        info.put("bId",bId);
        info.put("statusCd",StatusConstant.STATUS_CD_INVALID);
        Map delInfo = new HashMap();
        delInfo.put("bId",business.getbId());
        delInfo.put("operate",StatusConstant.OPERATE_DEL);
        //商户信息
        Map userInfo = userServiceDaoImpl.queryUserInfo(info);
        if(userInfo != null && !userInfo.isEmpty()){
            //商户信息
            Map businessUserInfo = userServiceDaoImpl.queryBusinessUserInfo(delInfo);
            //除非程序出错了,这里不会为空
            if(businessUserInfo == null || businessUserInfo.isEmpty()){
                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_INNER_ERROR,"撤单失败(user),程序内部异常,请检查! "+delInfo);
            }
            flushBusinessUserInfo(businessUserInfo,StatusConstant.STATUS_CD_VALID);
            userServiceDaoImpl.updateUserInfoInstance(businessUserInfo);
            dataFlowContext.addParamOut("userId",userInfo.get("user_id"));
        }
    }
    public IUserServiceDao getUserServiceDaoImpl() {
        return userServiceDaoImpl;
    }
    public void setUserServiceDaoImpl(IUserServiceDao userServiceDaoImpl) {
        this.userServiceDaoImpl = userServiceDaoImpl;
    }
}
java110-common/src/main/java/com/java110/common/constant/ServiceCodeConstant.java
@@ -70,6 +70,21 @@
    public static final String SERVICE_CODE_SAVE_USER_INFO = "save.user.info";
    /**
     * 修改用户信息
     */
    public static final String SERVICE_CODE_MODIFY_USER_INFO = "modify.user.info";
    /**
     * 停用用户信息
     */
    public static final String SERVICE_CODE_REMOVE_USER_INFO = "remove.user.info";
    /**
     * 恢复用户信息
     */
    public static final String SERVICE_CODE_RECOVER_USER_INFO = "recover.user.info";
    /**
     * 保存用户地址信息
     */
    public static final String SERVICE_CODE_SAVE_USER_ADDRESS = "save.user.address";
@@ -197,6 +212,16 @@
     */
    public static final String SERVICE_CODE_USER_STAFF_ADD = "user.staff.add";
    /**
     * 停用员工服务
     */
    public static final String SERVICE_CODE_USER_STAFF_DISABLE = "user.staff.disable";
    /**
     * 启用员工服务
     */
    public static final String SERVICE_CODE_USER_STAFF_ENABLE = "user.staff.enable";
java110-config/src/main/resources/mapper/user/UserServiceDaoImplMapper.xml
@@ -2,7 +2,7 @@
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userServiceDAOImpl">
<mapper namespace="userServiceDaoImpl">
    <resultMap type="com.java110.entity.user.Cust" id="custMap">
        <id column="custId" jdbcType="VARCHAR" property="custId"/>
@@ -171,7 +171,35 @@
    </insert>
    <update id="updateUserInfoInstance" parameterType="map">
        update u_user u set u.status_cd = #{statusCd} where 1 = 1
        update u_user u set u.status_cd = #{statusCd}
        <if test="newBId != null and newBId != ''">
            ,s.b_id = #{newBId}
        </if>
        <if test="name !=null and name != ''">
            ,s.name= #{name}
        </if>
        <if test="email !=null and email != ''">
            ,s.email= #{email}
        </if>
        <if test="address !=null and address != ''">
            ,s.address= #{address}
        </if>
        <if test="password !=null and password != ''">
            ,s.password= #{password}
        </if>
        <if test="locationCd !=null and locationCd != ''">
            ,s.location_cd= #{locationCd}
        </if>
        <if test="age !=null and age != ''">
            ,s.age= #{age}
        </if>
        <if test="sex !=null and sex != ''">
            ,s.sex= #{sex}
        </if>
        <if test="tel !=null and tel != ''">
            ,s.tel= #{tel}
        </if>
        where 1 = 1
        <if test="bId != null and bId != ''">
            and u.b_id = #{bId}
        </if>
@@ -233,13 +261,16 @@
    <select id="queryUserInfo" parameterType="map" resultType="map">
        select u.user_id,u.name,u.email,u.address,u.password,u.location_cd,
        u.age,u.sex,u.tel,u.level_cd,u.b_id
        from u_user u where u.status_cd = '0'
        from u_user u where 1= 1
        <if test="bId != null and bId !=''">
            and u.b_id = #{bId}
        </if>
        <if test="userId != null and userId != ''">
            and u.user_id = #{userId}
        </if>
        <if test="statusCd !=null statusCd != ''">
            and u.status_cd = #{statusCd}
        </if>
    </select>