wuxw
2020-01-13 5a6c8c10a29e688c02963375519c47f7e9198984
加入小区活动表
2个文件已修改
15个文件已添加
2027 ■■■■■ 已修改文件
CommunityService/src/main/java/com/java110/community/dao/IActivitiesServiceDao.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/dao/impl/ActivitiesServiceDaoImpl.java 134 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/activities/AbstractActivitiesBusinessServiceDataFlowListener.java 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/activities/DeleteActivitiesInfoListener.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/activities/SaveActivitiesInfoListener.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/listener/activities/UpdateActivitiesInfoListener.java 190 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/smo/impl/ActivitiesInnerServiceSMOImpl.java 112 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/document/services/acitivities/DeleteActivitiesInfo.md 114 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/document/services/acitivities/SaveActivitiesInfo.md 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/document/services/acitivities/UpdateActivitiesInfo.md 138 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-bean/src/main/java/com/java110/dto/activities/ActivitiesDto.java 158 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-code-generator/src/main/java/com/java110/ActivitiesGeneratorApplication.java 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/factory/GenerateCodeFactory.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-core/src/main/java/com/java110/core/smo/community/IActivitiesInnerServiceSMO.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/db/CommunityService/create_activities.sql 70 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-db/src/main/resources/mapper/community/ActivitiesServiceDaoImplMapper.xml 291 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
java110-utils/src/main/java/com/java110/utils/constant/BusinessTypeConstant.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CommunityService/src/main/java/com/java110/community/dao/IActivitiesServiceDao.java
New file
@@ -0,0 +1,81 @@
package com.java110.community.dao;
import com.java110.utils.exception.DAOException;
import com.java110.entity.merchant.BoMerchant;
import com.java110.entity.merchant.BoMerchantAttr;
import com.java110.entity.merchant.Merchant;
import com.java110.entity.merchant.MerchantAttr;
import java.util.List;
import java.util.Map;
/**
 * 活动组件内部之间使用,没有给外围系统提供服务能力
 * 活动服务接口类,要求全部以字符串传输,方便微服务化
 * 新建客户,修改客户,删除客户,查询客户等功能
 *
 * Created by wuxw on 2016/12/27.
 */
public interface IActivitiesServiceDao {
    /**
     * 保存 活动信息
     * @param businessActivitiesInfo 活动信息 封装
     * @throws DAOException 操作数据库异常
     */
    void saveBusinessActivitiesInfo(Map businessActivitiesInfo) throws DAOException;
    /**
     * 查询活动信息(business过程)
     * 根据bId 查询活动信息
     * @param info bId 信息
     * @return 活动信息
     * @throws DAOException DAO异常
     */
    List<Map> getBusinessActivitiesInfo(Map info) throws DAOException;
    /**
     * 保存 活动信息 Business数据到 Instance中
     * @param info
     * @throws DAOException DAO异常
     */
    void saveActivitiesInfoInstance(Map info) throws DAOException;
    /**
     * 查询活动信息(instance过程)
     * 根据bId 查询活动信息
     * @param info bId 信息
     * @return 活动信息
     * @throws DAOException DAO异常
     */
    List<Map> getActivitiesInfo(Map info) throws DAOException;
    /**
     * 修改活动信息
     * @param info 修改信息
     * @throws DAOException DAO异常
     */
    void updateActivitiesInfoInstance(Map info) throws DAOException;
    /**
     * 查询活动总数
     *
     * @param info 活动信息
     * @return 活动数量
     */
    int queryActivitiessCount(Map info);
}
CommunityService/src/main/java/com/java110/community/dao/impl/ActivitiesServiceDaoImpl.java
New file
@@ -0,0 +1,134 @@
package com.java110.community.dao.impl;
import com.alibaba.fastjson.JSONObject;
import com.java110.community.dao.IActivitiesServiceDao;
import com.java110.core.base.dao.BaseServiceDao;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.exception.DAOException;
import com.java110.utils.util.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
 * 活动服务 与数据库交互
 * Created by wuxw on 2017/4/5.
 */
@Service("activitiesServiceDaoImpl")
//@Transactional
public class ActivitiesServiceDaoImpl extends BaseServiceDao implements IActivitiesServiceDao {
    private static Logger logger = LoggerFactory.getLogger(ActivitiesServiceDaoImpl.class);
    /**
     * 活动信息封装
     *
     * @param businessActivitiesInfo 活动信息 封装
     * @throws DAOException DAO异常
     */
    @Override
    public void saveBusinessActivitiesInfo(Map businessActivitiesInfo) throws DAOException {
        businessActivitiesInfo.put("month", DateUtil.getCurrentMonth());
        // 查询business_user 数据是否已经存在
        logger.debug("保存活动信息 入参 businessActivitiesInfo : {}", businessActivitiesInfo);
        int saveFlag = sqlSessionTemplate.insert("activitiesServiceDaoImpl.saveBusinessActivitiesInfo", businessActivitiesInfo);
        if (saveFlag < 1) {
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "保存活动数据失败:" + JSONObject.toJSONString(businessActivitiesInfo));
        }
    }
    /**
     * 查询活动信息
     *
     * @param info bId 信息
     * @return 活动信息
     * @throws DAOException DAO异常
     */
    @Override
    public List<Map> getBusinessActivitiesInfo(Map info) throws DAOException {
        logger.debug("查询活动信息 入参 info : {}", info);
        List<Map> businessActivitiesInfos = sqlSessionTemplate.selectList("activitiesServiceDaoImpl.getBusinessActivitiesInfo", info);
        return businessActivitiesInfos;
    }
    /**
     * 保存活动信息 到 instance
     *
     * @param info bId 信息
     * @throws DAOException DAO异常
     */
    @Override
    public void saveActivitiesInfoInstance(Map info) throws DAOException {
        logger.debug("保存活动信息Instance 入参 info : {}", info);
        int saveFlag = sqlSessionTemplate.insert("activitiesServiceDaoImpl.saveActivitiesInfoInstance", info);
        if (saveFlag < 1) {
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "保存活动信息Instance数据失败:" + JSONObject.toJSONString(info));
        }
    }
    /**
     * 查询活动信息(instance)
     *
     * @param info bId 信息
     * @return List<Map>
     * @throws DAOException DAO异常
     */
    @Override
    public List<Map> getActivitiesInfo(Map info) throws DAOException {
        logger.debug("查询活动信息 入参 info : {}", info);
        List<Map> businessActivitiesInfos = sqlSessionTemplate.selectList("activitiesServiceDaoImpl.getActivitiesInfo", info);
        return businessActivitiesInfos;
    }
    /**
     * 修改活动信息
     *
     * @param info 修改信息
     * @throws DAOException DAO异常
     */
    @Override
    public void updateActivitiesInfoInstance(Map info) throws DAOException {
        logger.debug("修改活动信息Instance 入参 info : {}", info);
        int saveFlag = sqlSessionTemplate.update("activitiesServiceDaoImpl.updateActivitiesInfoInstance", info);
        if (saveFlag < 1) {
            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR, "修改活动信息Instance数据失败:" + JSONObject.toJSONString(info));
        }
    }
    /**
     * 查询活动数量
     *
     * @param info 活动信息
     * @return 活动数量
     */
    @Override
    public int queryActivitiessCount(Map info) {
        logger.debug("查询活动数据 入参 info : {}", info);
        List<Map> businessActivitiesInfos = sqlSessionTemplate.selectList("activitiesServiceDaoImpl.queryActivitiessCount", info);
        if (businessActivitiesInfos.size() < 1) {
            return 0;
        }
        return Integer.parseInt(businessActivitiesInfos.get(0).get("count").toString());
    }
}
CommunityService/src/main/java/com/java110/community/listener/activities/AbstractActivitiesBusinessServiceDataFlowListener.java
New file
@@ -0,0 +1,99 @@
package com.java110.community.listener.activities;
import com.alibaba.fastjson.JSONObject;
import com.java110.community.dao.IActivitiesServiceDao;
import com.java110.entity.center.Business;
import com.java110.event.service.AbstractBusinessServiceDataFlowListener;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.exception.ListenerExecuteException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 活动 服务侦听 父类
 * Created by wuxw on 2018/7/4.
 */
public abstract class AbstractActivitiesBusinessServiceDataFlowListener extends AbstractBusinessServiceDataFlowListener {
    private static Logger logger = LoggerFactory.getLogger(AbstractActivitiesBusinessServiceDataFlowListener.class);
    /**
     * 获取 DAO工具类
     *
     * @return
     */
    public abstract IActivitiesServiceDao getActivitiesServiceDaoImpl();
    /**
     * 刷新 businessActivitiesInfo 数据
     * 主要将 数据库 中字段和 接口传递字段建立关系
     *
     * @param businessActivitiesInfo
     */
    protected void flushBusinessActivitiesInfo(Map businessActivitiesInfo, String statusCd) {
        businessActivitiesInfo.put("newBId", businessActivitiesInfo.get("b_id"));
        businessActivitiesInfo.put("collectCount", businessActivitiesInfo.get("collect_count"));
        businessActivitiesInfo.put("likeCount", businessActivitiesInfo.get("like_count"));
        businessActivitiesInfo.put("title", businessActivitiesInfo.get("title"));
        businessActivitiesInfo.put("readCount", businessActivitiesInfo.get("read_count"));
        businessActivitiesInfo.put("userName", businessActivitiesInfo.get("user_name"));
        businessActivitiesInfo.put("userId", businessActivitiesInfo.get("user_id"));
        businessActivitiesInfo.put("activitiesId", businessActivitiesInfo.get("activities_id"));
        businessActivitiesInfo.put("operate", businessActivitiesInfo.get("operate"));
        businessActivitiesInfo.put("typeCd", businessActivitiesInfo.get("type_cd"));
        businessActivitiesInfo.put("context", businessActivitiesInfo.get("context"));
        businessActivitiesInfo.put("startTime", businessActivitiesInfo.get("start_time"));
        businessActivitiesInfo.put("endTime", businessActivitiesInfo.get("end_time"));
        businessActivitiesInfo.put("communityId", businessActivitiesInfo.get("community_id"));
        businessActivitiesInfo.put("headerImg", businessActivitiesInfo.get("header_img"));
        businessActivitiesInfo.remove("bId");
        businessActivitiesInfo.put("statusCd", statusCd);
    }
    /**
     * 当修改数据时,查询instance表中的数据 自动保存删除数据到business中
     *
     * @param businessActivities 活动信息
     */
    protected void autoSaveDelBusinessActivities(Business business, JSONObject businessActivities) {
//自动插入DEL
        Map info = new HashMap();
        info.put("activitiesId", businessActivities.getString("activitiesId"));
        info.put("statusCd", StatusConstant.STATUS_CD_VALID);
        List<Map> currentActivitiesInfos = getActivitiesServiceDaoImpl().getActivitiesInfo(info);
        if (currentActivitiesInfos == null || currentActivitiesInfos.size() != 1) {
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "未找到需要修改数据信息,入参错误或数据有问题,请检查" + info);
        }
        Map currentActivitiesInfo = currentActivitiesInfos.get(0);
        currentActivitiesInfo.put("bId", business.getbId());
        currentActivitiesInfo.put("collectCount", currentActivitiesInfo.get("collect_count"));
        currentActivitiesInfo.put("likeCount", currentActivitiesInfo.get("like_count"));
        currentActivitiesInfo.put("title", currentActivitiesInfo.get("title"));
        currentActivitiesInfo.put("readCount", currentActivitiesInfo.get("read_count"));
        currentActivitiesInfo.put("userName", currentActivitiesInfo.get("user_name"));
        currentActivitiesInfo.put("userId", currentActivitiesInfo.get("user_id"));
        currentActivitiesInfo.put("activitiesId", currentActivitiesInfo.get("activities_id"));
        currentActivitiesInfo.put("operate", currentActivitiesInfo.get("operate"));
        currentActivitiesInfo.put("typeCd", currentActivitiesInfo.get("type_cd"));
        currentActivitiesInfo.put("context", currentActivitiesInfo.get("context"));
        currentActivitiesInfo.put("startTime", currentActivitiesInfo.get("start_time"));
        currentActivitiesInfo.put("endTime", currentActivitiesInfo.get("end_time"));
        currentActivitiesInfo.put("communityId", currentActivitiesInfo.get("community_id"));
        currentActivitiesInfo.put("headerImg", currentActivitiesInfo.get("header_img"));
        currentActivitiesInfo.put("operate", StatusConstant.OPERATE_DEL);
        getActivitiesServiceDaoImpl().saveBusinessActivitiesInfo(currentActivitiesInfo);
    }
}
CommunityService/src/main/java/com/java110/community/listener/activities/DeleteActivitiesInfoListener.java
New file
@@ -0,0 +1,180 @@
package com.java110.community.listener.activities;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.community.dao.IActivitiesServiceDao;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.entity.center.Business;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.exception.ListenerExecuteException;
import com.java110.utils.util.Assert;
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;
/**
 * 删除活动信息 侦听
 * <p>
 * 处理节点
 * 1、businessActivities:{} 活动基本信息节点
 * 2、businessActivitiesAttr:[{}] 活动属性信息节点
 * 3、businessActivitiesPhoto:[{}] 活动照片信息节点
 * 4、businessActivitiesCerdentials:[{}] 活动证件信息节点
 * 协议地址 :https://github.com/java110/MicroCommunity/wiki/%E5%88%A0%E9%99%A4%E5%95%86%E6%88%B7%E4%BF%A1%E6%81%AF-%E5%8D%8F%E8%AE%AE
 * Created by wuxw on 2018/5/18.
 */
@Java110Listener("deleteActivitiesInfoListener")
@Transactional
public class DeleteActivitiesInfoListener extends AbstractActivitiesBusinessServiceDataFlowListener {
    private final static Logger logger = LoggerFactory.getLogger(DeleteActivitiesInfoListener.class);
    @Autowired
    IActivitiesServiceDao activitiesServiceDaoImpl;
    @Override
    public int getOrder() {
        return 3;
    }
    @Override
    public String getBusinessTypeCd() {
        return BusinessTypeConstant.BUSINESS_TYPE_DELETE_ACTIVITIES;
    }
    /**
     * 根据删除信息 查出Instance表中数据 保存至business表 (状态写DEL) 方便撤单时直接更新回去
     *
     * @param dataFlowContext 数据对象
     * @param business        当前业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data, "没有datas 节点,或没有子节点需要处理");
        //处理 businessActivities 节点
        if (data.containsKey("businessActivities")) {
            //处理 businessActivities 节点
            if (data.containsKey("businessActivities")) {
                Object _obj = data.get("businessActivities");
                JSONArray businessActivitiess = null;
                if (_obj instanceof JSONObject) {
                    businessActivitiess = new JSONArray();
                    businessActivitiess.add(_obj);
                } else {
                    businessActivitiess = (JSONArray) _obj;
                }
                //JSONObject businessActivities = data.getJSONObject("businessActivities");
                for (int _activitiesIndex = 0; _activitiesIndex < businessActivitiess.size(); _activitiesIndex++) {
                    JSONObject businessActivities = businessActivitiess.getJSONObject(_activitiesIndex);
                    doBusinessActivities(business, businessActivities);
                    if (_obj instanceof JSONObject) {
                        dataFlowContext.addParamOut("activitiesId", businessActivities.getString("activitiesId"));
                    }
                }
            }
        }
    }
    /**
     * 删除 instance数据
     *
     * @param dataFlowContext 数据对象
     * @param business        当前业务对象
     */
    @Override
    protected void doBusinessToInstance(DataFlowContext dataFlowContext, Business business) {
        String bId = business.getbId();
        //Assert.hasLength(bId,"请求报文中没有包含 bId");
        //活动信息
        Map info = new HashMap();
        info.put("bId", business.getbId());
        info.put("operate", StatusConstant.OPERATE_DEL);
        //活动信息
        List<Map> businessActivitiesInfos = activitiesServiceDaoImpl.getBusinessActivitiesInfo(info);
        if (businessActivitiesInfos != null && businessActivitiesInfos.size() > 0) {
            for (int _activitiesIndex = 0; _activitiesIndex < businessActivitiesInfos.size(); _activitiesIndex++) {
                Map businessActivitiesInfo = businessActivitiesInfos.get(_activitiesIndex);
                flushBusinessActivitiesInfo(businessActivitiesInfo, StatusConstant.STATUS_CD_INVALID);
                activitiesServiceDaoImpl.updateActivitiesInfoInstance(businessActivitiesInfo);
                dataFlowContext.addParamOut("activitiesId", businessActivitiesInfo.get("activities_id"));
            }
        }
    }
    /**
     * 撤单
     * 从business表中查询到DEL的数据 将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);
        //活动信息
        List<Map> activitiesInfo = activitiesServiceDaoImpl.getActivitiesInfo(info);
        if (activitiesInfo != null && activitiesInfo.size() > 0) {
            //活动信息
            List<Map> businessActivitiesInfos = activitiesServiceDaoImpl.getBusinessActivitiesInfo(delInfo);
            //除非程序出错了,这里不会为空
            if (businessActivitiesInfos == null || businessActivitiesInfos.size() == 0) {
                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_INNER_ERROR, "撤单失败(activities),程序内部异常,请检查! " + delInfo);
            }
            for (int _activitiesIndex = 0; _activitiesIndex < businessActivitiesInfos.size(); _activitiesIndex++) {
                Map businessActivitiesInfo = businessActivitiesInfos.get(_activitiesIndex);
                flushBusinessActivitiesInfo(businessActivitiesInfo, StatusConstant.STATUS_CD_VALID);
                activitiesServiceDaoImpl.updateActivitiesInfoInstance(businessActivitiesInfo);
            }
        }
    }
    /**
     * 处理 businessActivities 节点
     *
     * @param business           总的数据节点
     * @param businessActivities 活动节点
     */
    private void doBusinessActivities(Business business, JSONObject businessActivities) {
        Assert.jsonObjectHaveKey(businessActivities, "activitiesId", "businessActivities 节点下没有包含 activitiesId 节点");
        if (businessActivities.getString("activitiesId").startsWith("-")) {
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "activitiesId 错误,不能自动生成(必须已经存在的activitiesId)" + businessActivities);
        }
        //自动插入DEL
        autoSaveDelBusinessActivities(business, businessActivities);
    }
    public IActivitiesServiceDao getActivitiesServiceDaoImpl() {
        return activitiesServiceDaoImpl;
    }
    public void setActivitiesServiceDaoImpl(IActivitiesServiceDao activitiesServiceDaoImpl) {
        this.activitiesServiceDaoImpl = activitiesServiceDaoImpl;
    }
}
CommunityService/src/main/java/com/java110/community/listener/activities/SaveActivitiesInfoListener.java
New file
@@ -0,0 +1,175 @@
package com.java110.community.listener.activities;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.util.Assert;
import com.java110.community.dao.IActivitiesServiceDao;
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 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("saveActivitiesInfoListener")
@Transactional
public class SaveActivitiesInfoListener extends AbstractActivitiesBusinessServiceDataFlowListener{
    private static Logger logger = LoggerFactory.getLogger(SaveActivitiesInfoListener.class);
    @Autowired
    private IActivitiesServiceDao activitiesServiceDaoImpl;
    @Override
    public int getOrder() {
        return 0;
    }
    @Override
    public String getBusinessTypeCd() {
        return BusinessTypeConstant.BUSINESS_TYPE_SAVE_ACTIVITIES;
    }
    /**
     * 保存活动信息 business 表中
     * @param dataFlowContext 数据对象
     * @param business 当前业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data,"没有datas 节点,或没有子节点需要处理");
        //处理 businessActivities 节点
        if(data.containsKey("businessActivities")){
            Object bObj = data.get("businessActivities");
            JSONArray businessActivitiess = null;
            if(bObj instanceof JSONObject){
                businessActivitiess = new JSONArray();
                businessActivitiess.add(bObj);
            }else {
                businessActivitiess = (JSONArray)bObj;
            }
            //JSONObject businessActivities = data.getJSONObject("businessActivities");
            for (int bActivitiesIndex = 0; bActivitiesIndex < businessActivitiess.size();bActivitiesIndex++) {
                JSONObject businessActivities = businessActivitiess.getJSONObject(bActivitiesIndex);
                doBusinessActivities(business, businessActivities);
                if(bObj instanceof JSONObject) {
                    dataFlowContext.addParamOut("activitiesId", businessActivities.getString("activitiesId"));
                }
            }
        }
    }
    /**
     * 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);
        //活动信息
        List<Map> businessActivitiesInfo = activitiesServiceDaoImpl.getBusinessActivitiesInfo(info);
        if( businessActivitiesInfo != null && businessActivitiesInfo.size() >0) {
            reFreshShareColumn(info, businessActivitiesInfo.get(0));
            activitiesServiceDaoImpl.saveActivitiesInfoInstance(info);
            if(businessActivitiesInfo.size() == 1) {
                dataFlowContext.addParamOut("activitiesId", businessActivitiesInfo.get(0).get("activities_id"));
            }
        }
    }
    /**
     * 刷 分片字段
     *
     * @param info         查询对象
     * @param businessInfo 小区ID
     */
    private void reFreshShareColumn(Map info, Map businessInfo) {
        if (info.containsKey("communityId")) {
            return;
        }
        if (!businessInfo.containsKey("community_id")) {
            return;
        }
        info.put("communityId", businessInfo.get("community_id"));
    }
    /**
     * 撤单
     * @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 paramIn = new HashMap();
        paramIn.put("bId",bId);
        paramIn.put("statusCd",StatusConstant.STATUS_CD_INVALID);
        //活动信息
        List<Map> activitiesInfo = activitiesServiceDaoImpl.getActivitiesInfo(info);
        if(activitiesInfo != null && activitiesInfo.size() > 0){
            reFreshShareColumn(paramIn, activitiesInfo.get(0));
            activitiesServiceDaoImpl.updateActivitiesInfoInstance(paramIn);
        }
    }
    /**
     * 处理 businessActivities 节点
     * @param business 总的数据节点
     * @param businessActivities 活动节点
     */
    private void doBusinessActivities(Business business,JSONObject businessActivities){
        Assert.jsonObjectHaveKey(businessActivities,"activitiesId","businessActivities 节点下没有包含 activitiesId 节点");
        if(businessActivities.getString("activitiesId").startsWith("-")){
            //刷新缓存
            //flushActivitiesId(business.getDatas());
            businessActivities.put("activitiesId",GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_activitiesId));
        }
        businessActivities.put("bId",business.getbId());
        businessActivities.put("operate", StatusConstant.OPERATE_ADD);
        //保存活动信息
        activitiesServiceDaoImpl.saveBusinessActivitiesInfo(businessActivities);
    }
    public IActivitiesServiceDao getActivitiesServiceDaoImpl() {
        return activitiesServiceDaoImpl;
    }
    public void setActivitiesServiceDaoImpl(IActivitiesServiceDao activitiesServiceDaoImpl) {
        this.activitiesServiceDaoImpl = activitiesServiceDaoImpl;
    }
}
CommunityService/src/main/java/com/java110/community/listener/activities/UpdateActivitiesInfoListener.java
New file
@@ -0,0 +1,190 @@
package com.java110.community.listener.activities;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.community.dao.IActivitiesServiceDao;
import com.java110.core.annotation.Java110Listener;
import com.java110.core.context.DataFlowContext;
import com.java110.entity.center.Business;
import com.java110.utils.constant.BusinessTypeConstant;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.constant.StatusConstant;
import com.java110.utils.exception.ListenerExecuteException;
import com.java110.utils.util.Assert;
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;
/**
 * 修改活动信息 侦听
 * <p>
 * 处理节点
 * 1、businessActivities:{} 活动基本信息节点
 * 2、businessActivitiesAttr:[{}] 活动属性信息节点
 * 3、businessActivitiesPhoto:[{}] 活动照片信息节点
 * 4、businessActivitiesCerdentials:[{}] 活动证件信息节点
 * 协议地址 :https://github.com/java110/MicroCommunity/wiki/%E4%BF%AE%E6%94%B9%E5%95%86%E6%88%B7%E4%BF%A1%E6%81%AF-%E5%8D%8F%E8%AE%AE
 * Created by wuxw on 2018/5/18.
 */
@Java110Listener("updateActivitiesInfoListener")
@Transactional
public class UpdateActivitiesInfoListener extends AbstractActivitiesBusinessServiceDataFlowListener {
    private static Logger logger = LoggerFactory.getLogger(UpdateActivitiesInfoListener.class);
    @Autowired
    private IActivitiesServiceDao activitiesServiceDaoImpl;
    @Override
    public int getOrder() {
        return 2;
    }
    @Override
    public String getBusinessTypeCd() {
        return BusinessTypeConstant.BUSINESS_TYPE_UPDATE_ACTIVITIES;
    }
    /**
     * business过程
     *
     * @param dataFlowContext 上下文对象
     * @param business        业务对象
     */
    @Override
    protected void doSaveBusiness(DataFlowContext dataFlowContext, Business business) {
        JSONObject data = business.getDatas();
        Assert.notEmpty(data, "没有datas 节点,或没有子节点需要处理");
        //处理 businessActivities 节点
        if (data.containsKey("businessActivities")) {
            //处理 businessActivities 节点
            if (data.containsKey("businessActivities")) {
                Object _obj = data.get("businessActivities");
                JSONArray businessActivitiess = null;
                if (_obj instanceof JSONObject) {
                    businessActivitiess = new JSONArray();
                    businessActivitiess.add(_obj);
                } else {
                    businessActivitiess = (JSONArray) _obj;
                }
                //JSONObject businessActivities = data.getJSONObject("businessActivities");
                for (int _activitiesIndex = 0; _activitiesIndex < businessActivitiess.size(); _activitiesIndex++) {
                    JSONObject businessActivities = businessActivitiess.getJSONObject(_activitiesIndex);
                    doBusinessActivities(business, businessActivities);
                    if (_obj instanceof JSONObject) {
                        dataFlowContext.addParamOut("activitiesId", businessActivities.getString("activitiesId"));
                    }
                }
            }
        }
    }
    /**
     * business to 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);
        //活动信息
        List<Map> businessActivitiesInfos = activitiesServiceDaoImpl.getBusinessActivitiesInfo(info);
        if (businessActivitiesInfos != null && businessActivitiesInfos.size() > 0) {
            for (int _activitiesIndex = 0; _activitiesIndex < businessActivitiesInfos.size(); _activitiesIndex++) {
                Map businessActivitiesInfo = businessActivitiesInfos.get(_activitiesIndex);
                flushBusinessActivitiesInfo(businessActivitiesInfo, StatusConstant.STATUS_CD_VALID);
                activitiesServiceDaoImpl.updateActivitiesInfoInstance(businessActivitiesInfo);
                if (businessActivitiesInfo.size() == 1) {
                    dataFlowContext.addParamOut("activitiesId", businessActivitiesInfo.get("activities_id"));
                }
            }
        }
    }
    /**
     * 撤单
     *
     * @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);
        //活动信息
        List<Map> activitiesInfo = activitiesServiceDaoImpl.getActivitiesInfo(info);
        if (activitiesInfo != null && activitiesInfo.size() > 0) {
            //活动信息
            List<Map> businessActivitiesInfos = activitiesServiceDaoImpl.getBusinessActivitiesInfo(delInfo);
            //除非程序出错了,这里不会为空
            if (businessActivitiesInfos == null || businessActivitiesInfos.size() == 0) {
                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_INNER_ERROR, "撤单失败(activities),程序内部异常,请检查! " + delInfo);
            }
            for (int _activitiesIndex = 0; _activitiesIndex < businessActivitiesInfos.size(); _activitiesIndex++) {
                Map businessActivitiesInfo = businessActivitiesInfos.get(_activitiesIndex);
                flushBusinessActivitiesInfo(businessActivitiesInfo, StatusConstant.STATUS_CD_VALID);
                activitiesServiceDaoImpl.updateActivitiesInfoInstance(businessActivitiesInfo);
            }
        }
    }
    /**
     * 处理 businessActivities 节点
     *
     * @param business           总的数据节点
     * @param businessActivities 活动节点
     */
    private void doBusinessActivities(Business business, JSONObject businessActivities) {
        Assert.jsonObjectHaveKey(businessActivities, "activitiesId", "businessActivities 节点下没有包含 activitiesId 节点");
        if (businessActivities.getString("activitiesId").startsWith("-")) {
            throw new ListenerExecuteException(ResponseConstant.RESULT_PARAM_ERROR, "activitiesId 错误,不能自动生成(必须已经存在的activitiesId)" + businessActivities);
        }
        //自动保存DEL
        autoSaveDelBusinessActivities(business, businessActivities);
        businessActivities.put("bId", business.getbId());
        businessActivities.put("operate", StatusConstant.OPERATE_ADD);
        //保存活动信息
        activitiesServiceDaoImpl.saveBusinessActivitiesInfo(businessActivities);
    }
    public IActivitiesServiceDao getActivitiesServiceDaoImpl() {
        return activitiesServiceDaoImpl;
    }
    public void setActivitiesServiceDaoImpl(IActivitiesServiceDao activitiesServiceDaoImpl) {
        this.activitiesServiceDaoImpl = activitiesServiceDaoImpl;
    }
}
CommunityService/src/main/java/com/java110/community/smo/impl/ActivitiesInnerServiceSMOImpl.java
New file
@@ -0,0 +1,112 @@
package com.java110.community.smo.impl;
import com.java110.community.dao.IActivitiesServiceDao;
import com.java110.core.base.smo.BaseServiceSMO;
import com.java110.core.smo.community.IActivitiesInnerServiceSMO;
import com.java110.core.smo.user.IUserInnerServiceSMO;
import com.java110.dto.PageDto;
import com.java110.dto.activities.ActivitiesDto;
import com.java110.dto.user.UserDto;
import com.java110.utils.util.BeanConvertUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
/**
 * @ClassName FloorInnerServiceSMOImpl
 * @Description 活动内部服务实现类
 * @Author wuxw
 * @Date 2019/4/24 9:20
 * @Version 1.0
 * add by wuxw 2019/4/24
 **/
@RestController
public class ActivitiesInnerServiceSMOImpl extends BaseServiceSMO implements IActivitiesInnerServiceSMO {
    @Autowired
    private IActivitiesServiceDao activitiesServiceDaoImpl;
    @Autowired
    private IUserInnerServiceSMO userInnerServiceSMOImpl;
    @Override
    public List<ActivitiesDto> queryActivitiess(@RequestBody ActivitiesDto activitiesDto) {
        //校验是否传了 分页信息
        int page = activitiesDto.getPage();
        if (page != PageDto.DEFAULT_PAGE) {
            activitiesDto.setPage((page - 1) * activitiesDto.getRow());
        }
        List<ActivitiesDto> activitiess = BeanConvertUtil.covertBeanList(activitiesServiceDaoImpl.getActivitiesInfo(BeanConvertUtil.beanCovertMap(activitiesDto)), ActivitiesDto.class);
        if (activitiess == null || activitiess.size() == 0) {
            return activitiess;
        }
        String[] userIds = getUserIds(activitiess);
        //根据 userId 查询用户信息
        List<UserDto> users = userInnerServiceSMOImpl.getUserInfo(userIds);
        for (ActivitiesDto activities : activitiess) {
            refreshActivities(activities, users);
        }
        return activitiess;
    }
    /**
     * 从用户列表中查询用户,将用户中的信息 刷新到 floor对象中
     *
     * @param activities 小区活动信息
     * @param users      用户列表
     */
    private void refreshActivities(ActivitiesDto activities, List<UserDto> users) {
        for (UserDto user : users) {
            if (activities.getUserId().equals(user.getUserId())) {
                BeanConvertUtil.covertBean(user, activities);
            }
        }
    }
    /**
     * 获取批量userId
     *
     * @param activitiess 小区楼信息
     * @return 批量userIds 信息
     */
    private String[] getUserIds(List<ActivitiesDto> activitiess) {
        List<String> userIds = new ArrayList<String>();
        for (ActivitiesDto activities : activitiess) {
            userIds.add(activities.getUserId());
        }
        return userIds.toArray(new String[userIds.size()]);
    }
    @Override
    public int queryActivitiessCount(@RequestBody ActivitiesDto activitiesDto) {
        return activitiesServiceDaoImpl.queryActivitiessCount(BeanConvertUtil.beanCovertMap(activitiesDto));
    }
    public IActivitiesServiceDao getActivitiesServiceDaoImpl() {
        return activitiesServiceDaoImpl;
    }
    public void setActivitiesServiceDaoImpl(IActivitiesServiceDao activitiesServiceDaoImpl) {
        this.activitiesServiceDaoImpl = activitiesServiceDaoImpl;
    }
    public IUserInnerServiceSMO getUserInnerServiceSMOImpl() {
        return userInnerServiceSMOImpl;
    }
    public void setUserInnerServiceSMOImpl(IUserInnerServiceSMO userInnerServiceSMOImpl) {
        this.userInnerServiceSMOImpl = userInnerServiceSMOImpl;
    }
}
docs/document/services/acitivities/DeleteActivitiesInfo.md
New file
@@ -0,0 +1,114 @@
**1\. 删除活动**
###### 接口功能
> API服务做删除活动时调用该接口
###### URL
> [http://activities-service/activitiesApi/service](http://activities-service/activitiesApi/service)
###### 支持格式
> JSON
###### HTTP请求方式
> POST
###### 协议接口
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-:|
|-|orders|1|Object|-|订单节点|-|
|-|business|1|Array|-|业务节点|-|
###### orders
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|-|orders|1|Object|-|订单节点|-|
|orders|appId|1|String|10|系统ID|由中心服务提供|
|orders|transactionId|1|String|30|交互流水|appId+'00'+YYYYMMDD+10位序列|
|orders|userId|1|String|30|用户ID|已有用户ID|
|orders|orderTypeCd|1|String|4|订单类型|查看订单类型说明|
|orders|requestTime|1|String|14|请求时间|YYYYMMDDhhmmss|
|orders|remark|1|String|200|备注|备注|
|orders|sign|?|String|64|签名|查看加密说明|
|orders|attrs|?|Array|-|订单属性|-|
|attrs|specCd|1|String|12|规格编码|由中心服务提供|
|attrs|value|1|String|50|属性值|-|
|orders|response|1|Object|-|返回结果节点|-|
|response|code|1|String|4|返回状态|查看状态说明|
|response|message|1|String|200|返回状态描述|-|
###### business
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|-|business|?|Array|-|业务节点|-|
|business|businessTypeCd|1|String|12|业务类型编码|500100030002|
|business|datas|1|Object|-|数据节点|不同的服务下的节点不一样|
|datas|businessActivitiesInfo|1|Object|-|小区成员|小区成员|
|businessActivitiesInfo|activitiesId|1|String|30|-|-|
###### 返回协议
当http返回状态不为200 时请求处理失败 body内容为失败的原因
当http返回状态为200时请求处理成功,body内容为返回内容,
###### 举例
> 地址:[http://activities-service/activitiesApi/service](http://activities-service/activitiesApi/service)
``` javascript
请求头信息:
Content-Type:application/json
请求报文:
{
  "orders": {
    "appId": "外系统ID,分配得到",
    "transactionId": "100000000020180409224736000001",
    "userId": "用户ID",
    "orderTypeCd": "订单类型,查询,受理",
    "requestTime": "20180409224736",
    "remark": "备注",
    "sign": "这个服务是否要求MD5签名",
    "businessType":"I",
    "attrs": [{
      "specCd": "配置的字段ID",
      "value": "具体值"
    }]
  },
  "business": {
    "businessTypeCd": "290200050001",
    "bId":"1234567892",
    "remark": "备注",
    "datas": {
      "businessActivitiesInfo": {
                "activitiesId":"填写存在的值"
      }
    },
    "attrs": [{
      "specCd": "配置的字段ID",
      "value": "具体值"
    }]
  }
}
返回报文:
 {
    "orderTypeCd": "D",
    "response": {
        "code": "0000",
        "message": "成功"
    },
    "responseTime": "20190418102004",
    "bId": "202019041810750003",
    "businessType": "B",
    "transactionId": "3a5a411ec65a4c3f895935638aa1d2bc",
    "dataFlowId": "44fde86d39ce46f4b4aab5f6b14f3947"
}
```
docs/document/services/acitivities/SaveActivitiesInfo.md
New file
@@ -0,0 +1,138 @@
**1\. 保存活动**
###### 接口功能
> API服务做保存活动时调用该接口
###### URL
> [http://activities-service/activitiesApi/service](http://activities-service/activitiesApi/service)
###### 支持格式
> JSON
###### HTTP请求方式
> POST
###### 协议接口
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-:|
|-|orders|1|Object|-|订单节点|-|
|-|business|1|Array|-|业务节点|-|
###### orders
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|-|orders|1|Object|-|订单节点|-|
|orders|appId|1|String|10|系统ID|由中心服务提供|
|orders|transactionId|1|String|30|交互流水|appId+'00'+YYYYMMDD+10位序列|
|orders|userId|1|String|30|用户ID|已有用户ID|
|orders|orderTypeCd|1|String|4|订单类型|查看订单类型说明|
|orders|requestTime|1|String|14|请求时间|YYYYMMDDhhmmss|
|orders|remark|1|String|200|备注|备注|
|orders|sign|?|String|64|签名|查看加密说明|
|orders|attrs|?|Array|-|订单属性|-|
|attrs|specCd|1|String|12|规格编码|由中心服务提供|
|attrs|value|1|String|50|属性值|-|
|orders|response|1|Object|-|返回结果节点|-|
|response|code|1|String|4|返回状态|查看状态说明|
|response|message|1|String|200|返回状态描述|-|
###### business
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|-|business|?|Array|-|业务节点|-|
|business|businessTypeCd|1|String|12|业务类型编码|500100030002|
|business|datas|1|Object|-|数据节点|不同的服务下的节点不一样|
|datas|businessActivitiesInfo|1|Object|-|小区成员|小区成员|
|businessActivitiesInfo|collectCount|1|String|30|-|-|
|businessActivitiesInfo|likeCount|1|String|30|-|-|
|businessActivitiesInfo|title|1|String|30|-|-|
|businessActivitiesInfo|readCount|1|String|30|-|-|
|businessActivitiesInfo|userName|1|String|30|-|-|
|businessActivitiesInfo|userId|1|String|30|-|-|
|businessActivitiesInfo|activitiesId|1|String|30|-|-|
|businessActivitiesInfo|typeCd|1|String|30|-|-|
|businessActivitiesInfo|context|1|String|30|-|-|
|businessActivitiesInfo|startTime|1|String|30|-|-|
|businessActivitiesInfo|endTime|1|String|30|-|-|
|businessActivitiesInfo|communityId|1|String|30|-|-|
|businessActivitiesInfo|headerImg|1|String|30|-|-|
###### 返回协议
当http返回状态不为200 时请求处理失败 body内容为失败的原因
当http返回状态为200时请求处理成功,body内容为返回内容,
###### 举例
> 地址:[http://activities-service/activitiesApi/service](http://activities-service/activitiesApi/service)
``` javascript
请求头信息:
Content-Type:application/json
请求报文:
{
  "orders": {
    "appId": "外系统ID,分配得到",
    "transactionId": "100000000020180409224736000001",
    "userId": "用户ID",
    "orderTypeCd": "订单类型,查询,受理",
    "requestTime": "20180409224736",
    "remark": "备注",
    "sign": "这个服务是否要求MD5签名",
    "businessType":"I",
    "attrs": [{
      "specCd": "配置的字段ID",
      "value": "具体值"
    }]
  },
  "business": {
    "businessTypeCd": "290200030001",
    "bId":"1234567892",
    "remark": "备注",
    "datas": {
      "businessActivitiesInfo": {
                "collectCount":"填写具体值",
        "likeCount":"填写具体值",
        "title":"填写具体值",
        "readCount":"填写具体值",
        "userName":"填写具体值",
        "userId":"填写具体值",
        "activitiesId":"填写具体值",
        "typeCd":"填写具体值",
        "context":"填写具体值",
        "startTime":"填写具体值",
        "endTime":"填写具体值",
        "communityId":"填写具体值",
        "headerImg":"填写具体值"
      }
    },
    "attrs": [{
      "specCd": "配置的字段ID",
      "value": "具体值"
    }]
  }
}
返回报文:
 {
    "orderTypeCd": "D",
    "response": {
        "code": "0000",
        "message": "成功"
    },
    "responseTime": "20190418102004",
    "bId": "202019041810750003",
    "businessType": "B",
    "transactionId": "3a5a411ec65a4c3f895935638aa1d2bc",
    "dataFlowId": "44fde86d39ce46f4b4aab5f6b14f3947"
}
```
docs/document/services/acitivities/UpdateActivitiesInfo.md
New file
@@ -0,0 +1,138 @@
**1\. 修改活动**
###### 接口功能
> API服务做修改活动时调用该接口
###### URL
> [http://activities-service/activitiesApi/service](http://activities-service/activitiesApi/service)
###### 支持格式
> JSON
###### HTTP请求方式
> POST
###### 协议接口
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-:|
|-|orders|1|Object|-|订单节点|-|
|-|business|1|Array|-|业务节点|-|
###### orders
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|-|orders|1|Object|-|订单节点|-|
|orders|appId|1|String|10|系统ID|由中心服务提供|
|orders|transactionId|1|String|30|交互流水|appId+'00'+YYYYMMDD+10位序列|
|orders|userId|1|String|30|用户ID|已有用户ID|
|orders|orderTypeCd|1|String|4|订单类型|查看订单类型说明|
|orders|requestTime|1|String|14|请求时间|YYYYMMDDhhmmss|
|orders|remark|1|String|200|备注|备注|
|orders|sign|?|String|64|签名|查看加密说明|
|orders|attrs|?|Array|-|订单属性|-|
|attrs|specCd|1|String|12|规格编码|由中心服务提供|
|attrs|value|1|String|50|属性值|-|
|orders|response|1|Object|-|返回结果节点|-|
|response|code|1|String|4|返回状态|查看状态说明|
|response|message|1|String|200|返回状态描述|-|
###### business
|父元素名称|参数名称|约束|类型|长度|描述|取值说明|
| :-: | :-: | :-: | :-: | :-: | :-: | :-: |
|-|business|?|Array|-|业务节点|-|
|business|businessTypeCd|1|String|12|业务类型编码|500100030002|
|business|datas|1|Object|-|数据节点|不同的服务下的节点不一样|
|datas|businessActivitiesInfo|1|Object|-|小区成员|小区成员|
|businessActivitiesInfo|collectCount|1|String|30|-|-|
|businessActivitiesInfo|likeCount|1|String|30|-|-|
|businessActivitiesInfo|title|1|String|30|-|-|
|businessActivitiesInfo|readCount|1|String|30|-|-|
|businessActivitiesInfo|userName|1|String|30|-|-|
|businessActivitiesInfo|userId|1|String|30|-|-|
|businessActivitiesInfo|activitiesId|1|String|30|-|-|
|businessActivitiesInfo|typeCd|1|String|30|-|-|
|businessActivitiesInfo|context|1|String|30|-|-|
|businessActivitiesInfo|startTime|1|String|30|-|-|
|businessActivitiesInfo|endTime|1|String|30|-|-|
|businessActivitiesInfo|communityId|1|String|30|-|-|
|businessActivitiesInfo|headerImg|1|String|30|-|-|
###### 返回协议
当http返回状态不为200 时请求处理失败 body内容为失败的原因
当http返回状态为200时请求处理成功,body内容为返回内容,
###### 举例
> 地址:[http://activities-service/activitiesApi/service](http://activities-service/activitiesApi/service)
``` javascript
请求头信息:
Content-Type:application/json
请求报文:
{
  "orders": {
    "appId": "外系统ID,分配得到",
    "transactionId": "100000000020180409224736000001",
    "userId": "用户ID",
    "orderTypeCd": "订单类型,查询,受理",
    "requestTime": "20180409224736",
    "remark": "备注",
    "sign": "这个服务是否要求MD5签名",
    "businessType":"I",
    "attrs": [{
      "specCd": "配置的字段ID",
      "value": "具体值"
    }]
  },
  "business": {
    "businessTypeCd": "290200040001",
    "bId":"1234567892",
    "remark": "备注",
    "datas": {
      "businessActivitiesInfo": {
                "collectCount":"填写具体值",
        "likeCount":"填写具体值",
        "title":"填写具体值",
        "readCount":"填写具体值",
        "userName":"填写具体值",
        "userId":"填写具体值",
        "activitiesId":"填写具体值",
        "typeCd":"填写具体值",
        "context":"填写具体值",
        "startTime":"填写具体值",
        "endTime":"填写具体值",
        "communityId":"填写具体值",
        "headerImg":"填写具体值"
      }
    },
    "attrs": [{
      "specCd": "配置的字段ID",
      "value": "具体值"
    }]
  }
}
返回报文:
 {
    "orderTypeCd": "D",
    "response": {
        "code": "0000",
        "message": "成功"
    },
    "responseTime": "20190418102004",
    "bId": "202019041810750003",
    "businessType": "B",
    "transactionId": "3a5a411ec65a4c3f895935638aa1d2bc",
    "dataFlowId": "44fde86d39ce46f4b4aab5f6b14f3947"
}
```
java110-bean/src/main/java/com/java110/dto/activities/ActivitiesDto.java
New file
@@ -0,0 +1,158 @@
package com.java110.dto.activities;
import com.java110.dto.PageDto;
import java.io.Serializable;
import java.util.Date;
/**
 * @ClassName FloorDto
 * @Description 活动数据层封装
 * @Author wuxw
 * @Date 2019/4/24 8:52
 * @Version 1.0
 * add by wuxw 2019/4/24
 **/
public class ActivitiesDto extends PageDto implements Serializable {
    private String collectCount;
    private String likeCount;
    private String title;
    private String readCount;
    private String userName;
    private String userId;
    private String activitiesId;
    private String typeCd;
    private String context;
    private String startTime;
    private String endTime;
    private String communityId;
    private String headerImg;
    private Date createTime;
    private String statusCd = "0";
    public String getCollectCount() {
        return collectCount;
    }
    public void setCollectCount(String collectCount) {
        this.collectCount = collectCount;
    }
    public String getLikeCount() {
        return likeCount;
    }
    public void setLikeCount(String likeCount) {
        this.likeCount = likeCount;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getReadCount() {
        return readCount;
    }
    public void setReadCount(String readCount) {
        this.readCount = readCount;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    public String getActivitiesId() {
        return activitiesId;
    }
    public void setActivitiesId(String activitiesId) {
        this.activitiesId = activitiesId;
    }
    public String getTypeCd() {
        return typeCd;
    }
    public void setTypeCd(String typeCd) {
        this.typeCd = typeCd;
    }
    public String getContext() {
        return context;
    }
    public void setContext(String context) {
        this.context = context;
    }
    public String getStartTime() {
        return startTime;
    }
    public void setStartTime(String startTime) {
        this.startTime = startTime;
    }
    public String getEndTime() {
        return endTime;
    }
    public void setEndTime(String endTime) {
        this.endTime = endTime;
    }
    public String getCommunityId() {
        return communityId;
    }
    public void setCommunityId(String communityId) {
        this.communityId = communityId;
    }
    public String getHeaderImg() {
        return headerImg;
    }
    public void setHeaderImg(String headerImg) {
        this.headerImg = headerImg;
    }
    public Date getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }
    public String getStatusCd() {
        return statusCd;
    }
    public void setStatusCd(String statusCd) {
        this.statusCd = statusCd;
    }
}
java110-code-generator/src/main/java/com/java110/ActivitiesGeneratorApplication.java
New file
@@ -0,0 +1,89 @@
package com.java110;
import com.java110.code.*;
import java.util.HashMap;
import java.util.Map;
/**
 * Hello world!
 */
public class ActivitiesGeneratorApplication {
    protected ActivitiesGeneratorApplication() {
        // prevents calls from subclass
        throw new UnsupportedOperationException();
    }
    /**
     * 代码生成器 入口方法
     *  此处生成的mapper文件包含过程表和实例表的sql,所以要求两张表的特殊字段也要写上
     *   BusinessTypeCd
     * @param args 参数
     */
    public static void main(String[] args) {
        Data data = new Data();
        data.setId("activitiesId");
        data.setName("activities");
        data.setDesc("活动");
        data.setShareParam("communityId");
        data.setShareColumn("community_id");
        data.setNewBusinessTypeCd("BUSINESS_TYPE_SAVE_ACTIVITIES");
        data.setUpdateBusinessTypeCd("BUSINESS_TYPE_UPDATE_ACTIVITIES");
        data.setDeleteBusinessTypeCd("BUSINESS_TYPE_DELETE_ACTIVITIES");
        data.setNewBusinessTypeCdValue("290200030001");
        data.setUpdateBusinessTypeCdValue("290200040001");
        data.setDeleteBusinessTypeCdValue("290200050001");
        data.setBusinessTableName("business_activities");
        data.setTableName("activities");
        Map<String, String> param = new HashMap<String, String>();
        param.put("activitiesId", "activities_id");       //map的key为你自定义的字段名就是驼峰命名法的那个,value为数据库表的字段名
        param.put("title", "title");
        param.put("typeCd", "type_cd");
        param.put("headerImg", "header_img");
        param.put("context", "context");
        param.put("communityId", "community_id");
        param.put("readCount", "read_count");
        param.put("likeCount", "like_count");
        param.put("collectCount", "collect_count");
        param.put("userId", "user_id");
        param.put("userName", "user_name");
        param.put("startTime", "start_time");
        param.put("endTime", "end_time");
        param.put("statusCd", "status_cd");
        param.put("operate", "operate");
        param.put("bId", "b_id");
        data.setParams(param);
        GeneratorSaveInfoListener generatorSaveInfoListener = new GeneratorSaveInfoListener();
        generatorSaveInfoListener.generator(data);
        GeneratorAbstractBussiness generatorAbstractBussiness = new GeneratorAbstractBussiness();
        generatorAbstractBussiness.generator(data);
        GeneratorIServiceDaoListener generatorIServiceDaoListener = new GeneratorIServiceDaoListener();
        generatorIServiceDaoListener.generator(data);
        GeneratorServiceDaoImplListener generatorServiceDaoImplListener = new GeneratorServiceDaoImplListener();
        generatorServiceDaoImplListener.generator(data);
        GeneratorServiceDaoImplMapperListener generatorServiceDaoImplMapperListener = null;
        generatorServiceDaoImplMapperListener = new GeneratorServiceDaoImplMapperListener();
        generatorServiceDaoImplMapperListener.generator(data);
        GeneratorUpdateInfoListener generatorUpdateInfoListener = new GeneratorUpdateInfoListener();
        generatorUpdateInfoListener.generator(data);
        GeneratorDeleteInfoListener generatorDeleteInfoListener = new GeneratorDeleteInfoListener();
        generatorDeleteInfoListener.generator(data);
        GeneratorInnerServiceSMOImpl generatorInnerServiceSMOImpl = new GeneratorInnerServiceSMOImpl();
        generatorInnerServiceSMOImpl.generator(data);
        GeneratorDtoBean generatorDtoBean = new GeneratorDtoBean();
        generatorDtoBean.generator(data);
        GeneratorIInnerServiceSMO generatorIInnerServiceSMO = new GeneratorIInnerServiceSMO();
        generatorIInnerServiceSMO.generator(data);
    }
}
java110-core/src/main/java/com/java110/core/factory/GenerateCodeFactory.java
@@ -110,6 +110,7 @@
    public static final String CODE_PREFIX_advertId = "96";
    public static final String CODE_PREFIX_advertItemId = "97";
    public static final String CODE_PREFIX_appUserId = "98";
    public static final String CODE_PREFIX_activitiesId = "99";
    /**
java110-core/src/main/java/com/java110/core/smo/community/IActivitiesInnerServiceSMO.java
New file
@@ -0,0 +1,41 @@
package com.java110.core.smo.community;
import com.java110.core.feign.FeignConfiguration;
import com.java110.dto.activities.ActivitiesDto;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import java.util.List;
/**
 * @ClassName IActivitiesInnerServiceSMO
 * @Description 活动接口类
 * @Author wuxw
 * @Date 2019/4/24 9:04
 * @Version 1.0
 * add by wuxw 2019/4/24
 **/
@FeignClient(name = "community-service", configuration = {FeignConfiguration.class})
@RequestMapping("/activitiesApi")
public interface IActivitiesInnerServiceSMO {
    /**
     * <p>查询小区楼信息</p>
     *
     * @param activitiesDto 数据对象分享
     * @return ActivitiesDto 对象数据
     */
    @RequestMapping(value = "/queryActivitiess", method = RequestMethod.POST)
    List<ActivitiesDto> queryActivitiess(@RequestBody ActivitiesDto activitiesDto);
    /**
     * 查询<p>小区楼</p>总记录数
     *
     * @param activitiesDto 数据对象分享
     * @return 小区下的小区楼记录数
     */
    @RequestMapping(value = "/queryActivitiessCount", method = RequestMethod.POST)
    int queryActivitiessCount(@RequestBody ActivitiesDto activitiesDto);
}
java110-db/db/CommunityService/create_activities.sql
New file
@@ -0,0 +1,70 @@
-- 活动信息表
CREATE TABLE business_activities(
  activities_id VARCHAR(30) NOT NULL COMMENT '活动ID',
  b_id VARCHAR(30) NOT NULL COMMENT '业务Id',
  title VARCHAR(12) NOT NULL COMMENT '活动标题',
  type_cd VARCHAR(4) NOT NULL COMMENT '活动类型,详细查看t_dict 表',
  header_img varchar(200) not null comment '头部照片,照片名称',
  context longtext not null comment '活动内容',
  community_id varchar(30) not null comment '小区ID',
  read_count int not null default 0 comment '阅读数',
  like_count int not null default 0 comment '点赞数',
  collect_count int not null default 0 comment '收藏数',
  user_id VARCHAR(30) NOT NULL COMMENT '创建用户Id',
  user_name VARCHAR(30) NOT NULL COMMENT '创建用户名称',
  start_time timestamp not null default  current_timestamp comment '开始时间',
  end_time timestamp not null comment '结束时间',
  create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  operate VARCHAR(4) NOT NULL COMMENT '数据状态,添加ADD,修改MOD 删除DEL'
);
CREATE INDEX idx_business_activities_id ON business_activities(notice_id);
CREATE INDEX idx_business_activities_b_id ON business_activities(b_id);
CREATE TABLE activities(
  activities_id VARCHAR(30) NOT NULL COMMENT '活动ID',
    b_id VARCHAR(30) NOT NULL COMMENT '业务Id',
    title VARCHAR(12) NOT NULL COMMENT '活动标题',
    type_cd VARCHAR(4) NOT NULL COMMENT '活动类型,详细查看t_dict 表',
    header_img varchar(200) not null comment '头部照片,照片名称',
    context longtext not null comment '活动内容',
    community_id varchar(30) not null comment '小区ID',
    read_count int not null default 0 comment '阅读数',
    like_count int not null default 0 comment '点赞数',
    collect_count int not null default 0 comment '收藏数',
    user_id VARCHAR(30) NOT NULL COMMENT '创建用户Id',
    user_name VARCHAR(30) NOT NULL COMMENT '创建用户名称',
    start_time timestamp not null default  current_timestamp comment '开始时间',
    end_time timestamp not null comment '结束时间',
  create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,S 保存,0, 在用 1失效',
  UNIQUE KEY (activities_id)
);
CREATE INDEX idx_activities_b_id ON activities(b_id);
CREATE UNIQUE INDEX idx_activities_id ON activities(activities_id);
create table activities_event(
    event_id varchar(30) not null comment '事件ID',
    `b_id` varchar(30) NOT NULL COMMENT '业务Id',
    `activities_id` varchar(30) NOT NULL COMMENT '活动ID',
    event_type_cd varchar(12) not null comment '事件类型,999999阅读,888888 收藏 777777 点赞',
    user_id varchar(30) not null comment '人员ID',
    user_name varchar(30) not null comment '人员名称',
    `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `status_cd` varchar(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考t_dict表,0, 在用 1失效',
    KEY `idx_act_event_id` (`event_id`)
);
CREATE TABLE `business_activities_event` (
  event_id varchar(30) not null comment '事件ID',
  `b_id` varchar(30) NOT NULL COMMENT '业务Id',
  `activities_id` varchar(30) NOT NULL COMMENT '活动ID',
  event_type_cd varchar(12) not null comment '事件类型,999999阅读,888888 收藏 777777 点赞',
  user_id varchar(30) not null comment '人员ID',
  user_name varchar(30) not null comment '人员名称',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `operate` varchar(4) NOT NULL COMMENT '数据状态,添加ADD,修改MOD 删除DEL'
);
java110-db/src/main/resources/mapper/community/ActivitiesServiceDaoImplMapper.xml
New file
@@ -0,0 +1,291 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="activitiesServiceDaoImpl">
    <!-- 保存活动信息 add by wuxw 2018-07-03 -->
       <insert id="saveBusinessActivitiesInfo" parameterType="Map">
           insert into business_activities(
collect_count,like_count,title,read_count,user_name,user_id,activities_id,operate,type_cd,context,start_time,end_time,community_id,b_id,header_img
) values (
#{collectCount},#{likeCount},#{title},#{readCount},#{userName},#{userId},#{activitiesId},#{operate},#{typeCd},#{context},#{startTime},#{endTime},#{communityId},#{bId},#{headerImg}
)
       </insert>
       <!-- 查询活动信息(Business) add by wuxw 2018-07-03 -->
       <select id="getBusinessActivitiesInfo" parameterType="Map" resultType="Map">
           select  t.collect_count,t.collect_count collectCount,t.like_count,t.like_count likeCount,t.title,t.read_count,t.read_count readCount,t.user_name,t.user_name userName,t.user_id,t.user_id userId,t.activities_id,t.activities_id activitiesId,t.operate,t.type_cd,t.type_cd typeCd,t.context,t.start_time,t.start_time startTime,t.end_time,t.end_time endTime,t.community_id,t.community_id communityId,t.b_id,t.b_id bId,t.header_img,t.header_img headerImg
from business_activities t
where 1 =1
<if test="collectCount !=null and collectCount != ''">
   and t.collect_count= #{collectCount}
</if>
<if test="likeCount !=null and likeCount != ''">
   and t.like_count= #{likeCount}
</if>
<if test="title !=null and title != ''">
   and t.title= #{title}
</if>
<if test="readCount !=null and readCount != ''">
   and t.read_count= #{readCount}
</if>
<if test="userName !=null and userName != ''">
   and t.user_name= #{userName}
</if>
<if test="userId !=null and userId != ''">
   and t.user_id= #{userId}
</if>
<if test="activitiesId !=null and activitiesId != ''">
   and t.activities_id= #{activitiesId}
</if>
<if test="operate !=null and operate != ''">
   and t.operate= #{operate}
</if>
<if test="typeCd !=null and typeCd != ''">
   and t.type_cd= #{typeCd}
</if>
<if test="context !=null and context != ''">
   and t.context= #{context}
</if>
<if test="startTime !=null and startTime != ''">
   and t.start_time= #{startTime}
</if>
<if test="endTime !=null and endTime != ''">
   and t.end_time= #{endTime}
</if>
<if test="communityId !=null and communityId != ''">
   and t.community_id= #{communityId}
</if>
<if test="bId !=null and bId != ''">
   and t.b_id= #{bId}
</if>
<if test="headerImg !=null and headerImg != ''">
   and t.header_img= #{headerImg}
</if>
       </select>
    <!-- 保存活动信息至 instance表中 add by wuxw 2018-07-03 -->
    <insert id="saveActivitiesInfoInstance" parameterType="Map">
        insert into activities(
collect_count,like_count,status_cd,title,read_count,user_name,user_id,activities_id,type_cd,context,start_time,end_time,community_id,b_id,header_img
) select t.collect_count,t.like_count,'0',t.title,t.read_count,t.user_name,t.user_id,t.activities_id,t.type_cd,t.context,t.start_time,t.end_time,t.community_id,t.b_id,t.header_img from business_activities t where 1=1
<if test="collectCount !=null and collectCount != ''">
   and t.collect_count= #{collectCount}
</if>
<if test="likeCount !=null and likeCount != ''">
   and t.like_count= #{likeCount}
</if>
<if test="title !=null and title != ''">
   and t.title= #{title}
</if>
<if test="readCount !=null and readCount != ''">
   and t.read_count= #{readCount}
</if>
<if test="userName !=null and userName != ''">
   and t.user_name= #{userName}
</if>
<if test="userId !=null and userId != ''">
   and t.user_id= #{userId}
</if>
<if test="activitiesId !=null and activitiesId != ''">
   and t.activities_id= #{activitiesId}
</if>
   and t.operate= 'ADD'
<if test="typeCd !=null and typeCd != ''">
   and t.type_cd= #{typeCd}
</if>
<if test="context !=null and context != ''">
   and t.context= #{context}
</if>
<if test="startTime !=null and startTime != ''">
   and t.start_time= #{startTime}
</if>
<if test="endTime !=null and endTime != ''">
   and t.end_time= #{endTime}
</if>
<if test="communityId !=null and communityId != ''">
   and t.community_id= #{communityId}
</if>
<if test="bId !=null and bId != ''">
   and t.b_id= #{bId}
</if>
<if test="headerImg !=null and headerImg != ''">
   and t.header_img= #{headerImg}
</if>
    </insert>
    <!-- 查询活动信息 add by wuxw 2018-07-03 -->
    <select id="getActivitiesInfo" parameterType="Map" resultType="Map">
        select  t.collect_count,t.collect_count collectCount,t.like_count,t.like_count likeCount,t.status_cd,t.status_cd statusCd,t.title,t.read_count,t.read_count readCount,t.user_name,t.user_name userName,t.user_id,t.user_id userId,t.activities_id,t.activities_id activitiesId,t.type_cd,t.type_cd typeCd,t.context,t.start_time,t.start_time startTime,t.end_time,t.end_time endTime,t.community_id,t.community_id communityId,t.b_id,t.b_id bId,t.header_img,t.header_img headerImg
from activities t
where 1 =1
<if test="collectCount !=null and collectCount != ''">
   and t.collect_count= #{collectCount}
</if>
<if test="likeCount !=null and likeCount != ''">
   and t.like_count= #{likeCount}
</if>
<if test="statusCd !=null and statusCd != ''">
   and t.status_cd= #{statusCd}
</if>
<if test="title !=null and title != ''">
   and t.title= #{title}
</if>
<if test="readCount !=null and readCount != ''">
   and t.read_count= #{readCount}
</if>
<if test="userName !=null and userName != ''">
   and t.user_name= #{userName}
</if>
<if test="userId !=null and userId != ''">
   and t.user_id= #{userId}
</if>
<if test="activitiesId !=null and activitiesId != ''">
   and t.activities_id= #{activitiesId}
</if>
<if test="typeCd !=null and typeCd != ''">
   and t.type_cd= #{typeCd}
</if>
<if test="context !=null and context != ''">
   and t.context= #{context}
</if>
<if test="startTime !=null and startTime != ''">
   and t.start_time= #{startTime}
</if>
<if test="endTime !=null and endTime != ''">
   and t.end_time= #{endTime}
</if>
<if test="communityId !=null and communityId != ''">
   and t.community_id= #{communityId}
</if>
<if test="bId !=null and bId != ''">
   and t.b_id= #{bId}
</if>
<if test="headerImg !=null and headerImg != ''">
   and t.header_img= #{headerImg}
</if>
<if test="page != -1 and page != null ">
   limit #{page}, #{row}
</if>
    </select>
    <!-- 修改活动信息 add by wuxw 2018-07-03 -->
    <update id="updateActivitiesInfoInstance" parameterType="Map">
        update  activities t set t.status_cd = #{statusCd}
<if test="newBId != null and newBId != ''">
,t.b_id = #{newBId}
</if>
<if test="collectCount !=null and collectCount != ''">
, t.collect_count= #{collectCount}
</if>
<if test="likeCount !=null and likeCount != ''">
, t.like_count= #{likeCount}
</if>
<if test="title !=null and title != ''">
, t.title= #{title}
</if>
<if test="readCount !=null and readCount != ''">
, t.read_count= #{readCount}
</if>
<if test="userName !=null and userName != ''">
, t.user_name= #{userName}
</if>
<if test="userId !=null and userId != ''">
, t.user_id= #{userId}
</if>
<if test="typeCd !=null and typeCd != ''">
, t.type_cd= #{typeCd}
</if>
<if test="context !=null and context != ''">
, t.context= #{context}
</if>
<if test="startTime !=null and startTime != ''">
, t.start_time= #{startTime}
</if>
<if test="endTime !=null and endTime != ''">
, t.end_time= #{endTime}
</if>
<if test="communityId !=null and communityId != ''">
, t.community_id= #{communityId}
</if>
<if test="headerImg !=null and headerImg != ''">
, t.header_img= #{headerImg}
</if>
 where 1=1 <if test="activitiesId !=null and activitiesId != ''">
and t.activities_id= #{activitiesId}
</if>
<if test="bId !=null and bId != ''">
and t.b_id= #{bId}
</if>
    </update>
    <!-- 查询活动数量 add by wuxw 2018-07-03 -->
     <select id="queryActivitiessCount" parameterType="Map" resultType="Map">
        select  count(1) count
from activities t
where 1 =1
<if test="collectCount !=null and collectCount != ''">
   and t.collect_count= #{collectCount}
</if>
<if test="likeCount !=null and likeCount != ''">
   and t.like_count= #{likeCount}
</if>
<if test="statusCd !=null and statusCd != ''">
   and t.status_cd= #{statusCd}
</if>
<if test="title !=null and title != ''">
   and t.title= #{title}
</if>
<if test="readCount !=null and readCount != ''">
   and t.read_count= #{readCount}
</if>
<if test="userName !=null and userName != ''">
   and t.user_name= #{userName}
</if>
<if test="userId !=null and userId != ''">
   and t.user_id= #{userId}
</if>
<if test="activitiesId !=null and activitiesId != ''">
   and t.activities_id= #{activitiesId}
</if>
<if test="typeCd !=null and typeCd != ''">
   and t.type_cd= #{typeCd}
</if>
<if test="context !=null and context != ''">
   and t.context= #{context}
</if>
<if test="startTime !=null and startTime != ''">
   and t.start_time= #{startTime}
</if>
<if test="endTime !=null and endTime != ''">
   and t.end_time= #{endTime}
</if>
<if test="communityId !=null and communityId != ''">
   and t.community_id= #{communityId}
</if>
<if test="bId !=null and bId != ''">
   and t.b_id= #{bId}
</if>
<if test="headerImg !=null and headerImg != ''">
   and t.header_img= #{headerImg}
</if>
     </select>
</mapper>
java110-utils/src/main/java/com/java110/utils/constant/BusinessTypeConstant.java
@@ -732,4 +732,20 @@
     */
    public static final String BUSINESS_TYPE_DELETE_OWNER_APP_USER ="280200050001";
    /**
     *  保存活动
     * 14开头  3保存
     */
    public static final String BUSINESS_TYPE_SAVE_ACTIVITIES="290200030001";
    /**
     * 修改活动
     */
    public static final String BUSINESS_TYPE_UPDATE_ACTIVITIES="290200040001";
    /**
     *  删除活动
     */
    public static final String BUSINESS_TYPE_DELETE_ACTIVITIES ="290200050001";
}