Commit 6b7c0713 by huangZW

Merge branch 'developer' of http://115.159.76.241/haoban3.0/haoban-manage3.0.git into developer

parents 324e96bc f72e7612
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
/**
* Created 2020/4/10.
*
* @author hua
*/
public class DealParamMqDTO implements Serializable {
private String taskId;
private String data;
private Integer type;
public String getTaskId() {
return taskId;
}
public void setTaskId(String taskId) {
this.taskId = taskId;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
}
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
import java.util.List;
/**
* Created 2020/4/13.
*
* @author hua
*/
public class SyncCheckDTO implements Serializable {
private Integer syncStatus;
private Integer groupErrCount;
private Integer storeErrCount;
private Integer staffErrCount;
private Integer totalDeal;
private Integer hasDeal;
public Integer getSyncStatus() {
return syncStatus;
}
public void setSyncStatus(Integer syncStatus) {
this.syncStatus = syncStatus;
}
public Integer getGroupErrCount() {
return groupErrCount;
}
public void setGroupErrCount(Integer groupErrCount) {
this.groupErrCount = groupErrCount;
}
public Integer getStoreErrCount() {
return storeErrCount;
}
public void setStoreErrCount(Integer storeErrCount) {
this.storeErrCount = storeErrCount;
}
public Integer getStaffErrCount() {
return staffErrCount;
}
public void setStaffErrCount(Integer staffErrCount) {
this.staffErrCount = staffErrCount;
}
public Integer getTotalDeal() {
return totalDeal;
}
public void setTotalDeal(Integer totalDeal) {
this.totalDeal = totalDeal;
}
public Integer getHasDeal() {
return hasDeal;
}
public void setHasDeal(Integer hasDeal) {
this.hasDeal = hasDeal;
}
}
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
/**
* Created 2020/4/9.
*
* @author hua
*/
public class SyncSingleDealDTO implements Serializable {
private String departmentId;
private String departmentName;
private String parentDepartmentId;
private String relatedId;
private Integer storeFlag;
private String enterpriseId;
//0 管理员 1 分组
private Integer type;
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public String getDepartmentId() {
return departmentId;
}
public void setDepartmentId(String departmentId) {
this.departmentId = departmentId;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public String getParentDepartmentId() {
return parentDepartmentId;
}
public void setParentDepartmentId(String parentDepartmentId) {
this.parentDepartmentId = parentDepartmentId;
}
public String getRelatedId() {
return relatedId;
}
public void setRelatedId(String relatedId) {
this.relatedId = relatedId;
}
public Integer getStoreFlag() {
return storeFlag;
}
public void setStoreFlag(Integer storeFlag) {
this.storeFlag = storeFlag;
}
}
package com.gic.haoban.manage.api.enums;
/**
* Created by hua on 2020/4/10.
*/
public enum PreDealStatusEnum {
all(-1),
pre(0),
dealing(1),
computed(2),
exception(3);
private int val;
PreDealStatusEnum(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}
package com.gic.haoban.manage.api.enums;
/**
* Created by hua on 2020/4/10.
*/
public enum PreDealTypeEnum {
all(-1),
group(0),
store(1),
clerk(2);
private int val;
PreDealTypeEnum(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}
package com.gic.haoban.manage.api.enums;
/**
* Created by hua on 2020/4/10.
*/
public enum SyncTaskStatusEnum {
init(0),
group_sync(1),
store_sync(2),
clerk_sync(3),
compute(4),
exception_compute(5),
exception_close(6);
private int val;
SyncTaskStatusEnum(int val) {
this.val = val;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}
}
package com.gic.haoban.manage.api.service;
import com.gic.haoban.manage.api.dto.SyncCheckDTO;
import com.gic.haoban.manage.api.dto.SyncSingleDealDTO;
import java.util.List;
/**
* Created 2020/4/9.
*
* @author hua
*/
public interface DealSyncOperationApiService {
/**
* 部门同步处理
*
* @param params
*/
public void departmentDealMq(String params);
/**
* 处理前端数据
*
* @param addList
* @param editList
*/
public void dealDepartment(String taskId, String wxEnterpriseId, List<SyncSingleDealDTO> addList, List<SyncSingleDealDTO> editList);
/**
* 重新执行任务
*
* @param taskId
*/
public void reDealDepartment(String taskId, int dataType);
/**
* 创建任务
*
* @param taskName
* @param userId
* @param desc
*/
public String createTask(String wxEnterpriseId, String taskName, String userId, String desc);
/**
* 关闭任务
*
* @param wxEnterpriseId
* @return
*/
public boolean closeTask(String wxEnterpriseId);
/**
* 解锁
*
* @param taskId
*/
public void unlockTask(String taskId);
/**
* 校验是否锁
*
* @param wxEnterpriseId
* @return
*/
public String getTaskLock(String wxEnterpriseId);
/**
* 校验同步状态
*
* @param wxEnterpriseId
* @return
*/
public SyncCheckDTO getTaskCheck(String wxEnterpriseId);
}
......@@ -47,7 +47,7 @@ public interface DepartmentApiService {
* @param department
* @return
*/
ServiceResponse add(DepartmentDTO department);
ServiceResponse<DepartmentDTO> add(DepartmentDTO department);
/**
* 修改部门
* @param department
......
package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.api.dto.SyncCheckDTO;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface PreDealLogMapper {
/**
*/
int deleteByPrimaryKey(Integer id);
/**
*/
int insert(TabHaobanPreDealLog record);
/**
*/
int insertSelective(TabHaobanPreDealLog record);
/**
*/
TabHaobanPreDealLog selectByPrimaryKey(Integer id);
/**
*/
int updateByPrimaryKeySelective(TabHaobanPreDealLog record);
/**
*/
int updateByPrimaryKey(TabHaobanPreDealLog record);
/**
* 获取单条数据
*
* @param taskId
* @param dataId
* @return
*/
TabHaobanPreDealLog getByDataId(@Param("taskId") String taskId, @Param("dataId") String dataId, @Param("status") int status);
/**
* 获取单条数据
*
* @param taskId
* @param pDataId
* @return
*/
List<TabHaobanPreDealLog> listByPDataId(@Param("taskId") String taskId, @Param("dataId") String pDataId
, @Param("status") int status, @Param("dataType") int dataType);
/**
* 更新状态
*
* @param taskId
* @param dataId
* @param status
* @return
*/
public int updateStatusByDataId(@Param("taskId") String taskId, @Param("dataId") String dataId, @Param("status") int status);
/**
* 校验任务
*
* @param taskId
* @param dataType
* @return
*/
public int checkTask(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("status") int status);
public List<TabHaobanPreDealLog> listByTaskId(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("status") int status);
/**
* 统计任务数量
*
* @param taskId
* @return
*/
public int countByTaskId(@Param("taskId") String taskId, @Param("dataType") int dataType, @Param("status") int status);
/**
* 重试的时候 第一级部门
*
* @param taskId
* @return
*/
public List<TabHaobanPreDealLog> listRebuildDepartByTaskId(@Param("taskId") String taskId);
}
\ No newline at end of file
package com.gic.haoban.manage.service.dao.mapper;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SyncTaskMapper {
/**
*/
int deleteByPrimaryKey(String taskId);
/**
*/
int insert(TabHaobanSyncTask record);
/**
*/
int insertSelective(TabHaobanSyncTask record);
/**
*/
TabHaobanSyncTask selectByPrimaryKey(String taskId);
/**
*/
int updateByPrimaryKeySelective(TabHaobanSyncTask record);
/**
*/
int updateByPrimaryKey(TabHaobanSyncTask record);
}
\ No newline at end of file
package com.gic.haoban.manage.service.entity;
import java.io.Serializable;
import java.util.Date;
/**
* Created By MBG-GUI-EXTENSION https://github.com/spawpaw/mybatis-generator-gui-extension
* Description:
*
* @author fdh
*/
public class TabHaobanPreDealLog implements Serializable {
/**
*
*/
private Integer id;
/**
* 企业微信id
*/
private String wxEnterpriseId;
/**
* 企业id
*/
private String enterpriseId;
/**
* 数据id
*/
private String dataId;
/**
* 父dataid
*/
private String pDataId;
/**
* 任务id
*/
private String taskId;
/**
* 数据类型 0 分组 1门店 2成员
*/
private Integer dataType;
/**
* 状态 0 未同步 1同步完成 2 同步失败
*/
private Integer statusFlag;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
*/
private static final long serialVersionUID = 1L;
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.id
*
* @return the value of tab_haoban_pre_deal_log.id
*/
public Integer getId() {
return id;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.id
*
* @param id the value for tab_haoban_pre_deal_log.id
*/
public void setId(Integer id) {
this.id = id;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.wx_enterprise_id
*
* @return the value of tab_haoban_pre_deal_log.wx_enterprise_id
*/
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.wx_enterprise_id
*
* @param wxEnterpriseId the value for tab_haoban_pre_deal_log.wx_enterprise_id
*/
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.data_id
*
* @return the value of tab_haoban_pre_deal_log.data_id
*/
public String getDataId() {
return dataId;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.data_id
*
* @param dataId the value for tab_haoban_pre_deal_log.data_id
*/
public void setDataId(String dataId) {
this.dataId = dataId;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.p_data_id
*
* @return the value of tab_haoban_pre_deal_log.p_data_id
*/
public String getpDataId() {
return pDataId;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.p_data_id
*
* @param pDataId the value for tab_haoban_pre_deal_log.p_data_id
*/
public void setpDataId(String pDataId) {
this.pDataId = pDataId;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.task_id
*
* @return the value of tab_haoban_pre_deal_log.task_id
*/
public String getTaskId() {
return taskId;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.task_id
*
* @param taskId the value for tab_haoban_pre_deal_log.task_id
*/
public void setTaskId(String taskId) {
this.taskId = taskId;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.data_type
*
* @return the value of tab_haoban_pre_deal_log.data_type
*/
public Integer getDataType() {
return dataType;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.data_type
*
* @param dataType the value for tab_haoban_pre_deal_log.data_type
*/
public void setDataType(Integer dataType) {
this.dataType = dataType;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.status_flag
*
* @return the value of tab_haoban_pre_deal_log.status_flag
*/
public Integer getStatusFlag() {
return statusFlag;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.status_flag
*
* @param statusFlag the value for tab_haoban_pre_deal_log.status_flag
*/
public void setStatusFlag(Integer statusFlag) {
this.statusFlag = statusFlag;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.create_time
*
* @return the value of tab_haoban_pre_deal_log.create_time
*/
public Date getCreateTime() {
return createTime;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.create_time
*
* @param createTime the value for tab_haoban_pre_deal_log.create_time
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* This method returns the value of the database column tab_haoban_pre_deal_log.update_time
*
* @return the value of tab_haoban_pre_deal_log.update_time
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* This method sets the value of the database column tab_haoban_pre_deal_log.update_time
*
* @param updateTime the value for tab_haoban_pre_deal_log.update_time
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
\ No newline at end of file
package com.gic.haoban.manage.service.entity;
import java.io.Serializable;
import java.util.Date;
/**
* Created By MBG-GUI-EXTENSION https://github.com/spawpaw/mybatis-generator-gui-extension
* Description:
*
* @author fdh
*/
public class TabHaobanSyncTask implements Serializable {
/**
*
*/
private String taskId;
private String wxEnterpriseId;
/**
*
*/
private String taskName;
/**
* 任务创建人
*/
private String addUser;
/**
* 任务描述
*/
private String taskDesc;
/**
* 任务状态
*/
private Integer statusFlag;
/**
*
*/
private Date createTime;
/**
*
*/
private Date updateTime;
/**
*/
private static final long serialVersionUID = 1L;
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
/**
* This method returns the value of the database column tab_haoban_sync_task.task_id
*
* @return the value of tab_haoban_sync_task.task_id
*/
public String getTaskId() {
return taskId;
}
/**
* This method sets the value of the database column tab_haoban_sync_task.task_id
*
* @param taskId the value for tab_haoban_sync_task.task_id
*/
public void setTaskId(String taskId) {
this.taskId = taskId;
}
/**
* This method returns the value of the database column tab_haoban_sync_task.task_name
*
* @return the value of tab_haoban_sync_task.task_name
*/
public String getTaskName() {
return taskName;
}
/**
* This method sets the value of the database column tab_haoban_sync_task.task_name
*
* @param taskName the value for tab_haoban_sync_task.task_name
*/
public void setTaskName(String taskName) {
this.taskName = taskName;
}
/**
* This method returns the value of the database column tab_haoban_sync_task.add_user
*
* @return the value of tab_haoban_sync_task.add_user
*/
public String getAddUser() {
return addUser;
}
/**
* This method sets the value of the database column tab_haoban_sync_task.add_user
*
* @param addUser the value for tab_haoban_sync_task.add_user
*/
public void setAddUser(String addUser) {
this.addUser = addUser;
}
/**
* This method returns the value of the database column tab_haoban_sync_task.task_desc
*
* @return the value of tab_haoban_sync_task.task_desc
*/
public String getTaskDesc() {
return taskDesc;
}
/**
* This method sets the value of the database column tab_haoban_sync_task.task_desc
*
* @param taskDesc the value for tab_haoban_sync_task.task_desc
*/
public void setTaskDesc(String taskDesc) {
this.taskDesc = taskDesc;
}
/**
* This method returns the value of the database column tab_haoban_sync_task.status_flag
*
* @return the value of tab_haoban_sync_task.status_flag
*/
public Integer getStatusFlag() {
return statusFlag;
}
/**
* This method sets the value of the database column tab_haoban_sync_task.status_flag
*
* @param statusFlag the value for tab_haoban_sync_task.status_flag
*/
public void setStatusFlag(Integer statusFlag) {
this.statusFlag = statusFlag;
}
/**
* This method returns the value of the database column tab_haoban_sync_task.create_time
*
* @return the value of tab_haoban_sync_task.create_time
*/
public Date getCreateTime() {
return createTime;
}
/**
* This method sets the value of the database column tab_haoban_sync_task.create_time
*
* @param createTime the value for tab_haoban_sync_task.create_time
*/
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
/**
* This method returns the value of the database column tab_haoban_sync_task.update_time
*
* @return the value of tab_haoban_sync_task.update_time
*/
public Date getUpdateTime() {
return updateTime;
}
/**
* This method sets the value of the database column tab_haoban_sync_task.update_time
*
* @param updateTime the value for tab_haoban_sync_task.update_time
*/
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
}
\ No newline at end of file
package com.gic.haoban.manage.service.service;
import com.gic.haoban.manage.api.dto.SyncCheckDTO;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import java.util.List;
/**
* Created 2020/4/9.
*
* @author hua
*/
public interface PreDealService {
/**
* 批量新增
*
* @param list
* @return
*/
public boolean insert(List<TabHaobanPreDealLog> list);
/**
* 获取单条数据
*
* @param dataId
* @return
*/
public TabHaobanPreDealLog getByDataId(String taskId, String dataId, int status);
/**
* 根据父数据id 获取子节点
*
* @param pDataId
* @param status
* @return
*/
public List<TabHaobanPreDealLog> listByPDataId(String taskId, String pDataId, int status);
/**
* 更新单条数据状态
*
* @param dataId
* @param status
* @return
*/
public boolean updateStatusByDataId(String taskId, String dataId, int status);
/**
* 获取任务是否有在同步中
*
* @param dataType
* @return
*/
public boolean checkTask(String taskId, int dataType);
/**
* 获取任务列表
*
* @param type
* @param status
* @return
*/
public List<TabHaobanPreDealLog> listByTaskId(String taskId, int dataType, int status);
/**
* 获取任务数量
*
* @param status
* @return
*/
public int countByTaskId(String taskId, int dataType, int status);
/**
* 获取重试时 需要处理的数据
*
* @param taskId
* @return
*/
public List<TabHaobanPreDealLog> queryDepartRebuildDealLog(String taskId);
}
package com.gic.haoban.manage.service.service;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
/**
* Created 2020/4/10.
*
* @author hua
*/
public interface SyncTaskService {
/**
* 创建任务
*
* @param tabHaobanSyncTask
*/
public void createTask(TabHaobanSyncTask tabHaobanSyncTask);
/**
* 更新任务状态
*
* @param taskId
* @param status
*/
public boolean updateTaskStatus(String taskId, int status);
/**
* 获取任务
*
* @param taskId
* @return
*/
public TabHaobanSyncTask getSyncTask(String taskId);
}
package com.gic.haoban.manage.service.service.impl;
import com.gic.haoban.manage.api.dto.SyncCheckDTO;
import com.gic.haoban.manage.api.enums.PreDealStatusEnum;
import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import com.gic.haoban.manage.service.dao.mapper.PreDealLogMapper;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.service.PreDealService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* Created 2020/4/9.
*
* @author hua
*/
@Service
public class PreDealServiceImpl implements PreDealService {
@Autowired
private PreDealLogMapper preDealLogMapper;
@Override
public boolean insert(List<TabHaobanPreDealLog> list) {
for (TabHaobanPreDealLog tab : list) {
preDealLogMapper.insert(tab);
}
return true;
}
@Override
public TabHaobanPreDealLog getByDataId(String taskId, String dataId, int status) {
TabHaobanPreDealLog byDataId = preDealLogMapper.getByDataId(taskId, dataId, status);
return byDataId;
}
@Override
public List<TabHaobanPreDealLog> listByPDataId(String taskId, String pDataId, int status) {
return preDealLogMapper.listByPDataId(taskId, pDataId, status, PreDealTypeEnum.group.getVal());
}
@Override
public boolean updateStatusByDataId(String taskId, String dataId, int status) {
int i = preDealLogMapper.updateStatusByDataId(taskId, dataId, status);
return i >= 0;
}
@Override
public boolean checkTask(String taskId, int dataType) {
int i = preDealLogMapper.checkTask(taskId, dataType, PreDealStatusEnum.pre.getVal());
return i == 0;
}
@Override
public List<TabHaobanPreDealLog> listByTaskId(String taskId, int dataType, int status) {
return preDealLogMapper.listByTaskId(taskId, dataType, status);
}
@Override
public int countByTaskId(String taskId, int dataType, int status) {
return preDealLogMapper.countByTaskId(taskId, dataType, status);
}
@Override
public List<TabHaobanPreDealLog> queryDepartRebuildDealLog(String taskId) {
return preDealLogMapper.listRebuildDepartByTaskId(taskId);
}
}
package com.gic.haoban.manage.service.service.impl;
import com.gic.commons.util.ToolUtil;
import com.gic.haoban.manage.api.enums.SyncTaskStatusEnum;
import com.gic.haoban.manage.service.dao.mapper.SyncTaskMapper;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import com.gic.haoban.manage.service.service.SyncTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* Created 2020/4/10.
*
* @author hua
*/
@Service
public class SyncTaskServiceImpl implements SyncTaskService {
@Autowired
private SyncTaskMapper syncTaskMapper;
@Override
public void createTask(TabHaobanSyncTask tabHaobanSyncTask) {
tabHaobanSyncTask.setTaskId(ToolUtil.randomUUID());
tabHaobanSyncTask.setStatusFlag(SyncTaskStatusEnum.init.getVal());
syncTaskMapper.insert(tabHaobanSyncTask);
}
@Override
public boolean updateTaskStatus(String taskId, int status) {
TabHaobanSyncTask tabHaobanSyncTask = new TabHaobanSyncTask();
tabHaobanSyncTask.setTaskId(taskId);
tabHaobanSyncTask.setStatusFlag(status);
tabHaobanSyncTask.setUpdateTime(new Date());
int i = syncTaskMapper.updateByPrimaryKeySelective(tabHaobanSyncTask);
return i >= 0;
}
@Override
public TabHaobanSyncTask getSyncTask(String taskId) {
return syncTaskMapper.selectByPrimaryKey(taskId);
}
}
......@@ -88,7 +88,7 @@ public class DepartmentApiServiceImpl implements DepartmentApiService {
}
@Override
public ServiceResponse add(DepartmentDTO department) {
public ServiceResponse<DepartmentDTO> add(DepartmentDTO department) {
ServiceResponse hr = new ServiceResponse();
hr.setCode(1);
//调微信的新增接口
......
......@@ -126,6 +126,7 @@ public class MessageApiServiceImpl implements MessageApiService {
ServiceResponse response = this.departmentApiService.add(departmentDTO);
GicClerkDTO gicClerkDTO = dto.getGicClerkDTO();
if(gicClerkDTO != null){
gicClerkDTO.setPostionName("店长");
staffApiService.addGicClerk(gicClerkDTO);
}
log.info("添加结果:{}", JSON.toJSONString(response));
......
......@@ -432,6 +432,7 @@ public class StaffApiServiceImpl implements StaffApiService {
}
ClerkDTO clerkDTO= clerkService.getClerkByCodeNoStatus(enterpriseId,related.getClerkCode());
//if(!staffDTO.getPhoneNumber().equals(related.getPhoneNumber())||!staffDTO.getStaffName().equals(clerkDTO.getStaffName())){
logger.info("clerkDto:{}", JSONObject.toJSONString(clerkDTO));
String headPic = staffDTO.getHeadImg();
if(clerkDTO != null && (StringUtils.isNotBlank(staffName) && !clerkDTO.getClerkName().equals(staffName) || !staffDTO.getPhoneNumber().equals(clerkDTO.getPhoneNumber()))
|| (org.apache.commons.lang3.StringUtils.isNotBlank(headPic) && !headPic.equals(clerkDTO.getImageUrl()))
......@@ -696,6 +697,7 @@ public class StaffApiServiceImpl implements StaffApiService {
//修改
}else{
staff.setHeadImg(headPic);
staff.setSex(sex);
//staff.setPostion(postion);
// staff.setStaffName(staffName);
if(staff.getActiveFlag() != null && staff.getActiveFlag() != 1){
......
package com.gic.haoban.manage.service.task;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
/**
* Created 2020/4/13.
*
* @author hua
*/
public interface BaseSyncOperation {
/**
* 处理单条数据
*
* @param dealParamMqDTO
*/
public abstract void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre);
/**
* 单条处理异常
*
* @param taskId
* @param dataId
* @param enterpriseId
* @param reason
*/
public abstract void dealException(String taskId, String dataId, String enterpriseId, String reason);
/**
* 单条处理成功
*
* @param taskId
* @param dataId
* @param wxEnterpriseId
*/
public abstract void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId);
public void checkDepartmentTask(String taskId);
}
package com.gic.haoban.manage.service.task;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.dto.ClerkListDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.service.StoreGroupService;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.base.api.common.Constant;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.PreDealStatusEnum;
import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import com.gic.haoban.manage.api.enums.SyncTaskStatusEnum;
import com.gic.haoban.manage.api.service.DealSyncOperationApiService;
import com.gic.haoban.manage.api.service.DepartmentApiService;
import com.gic.haoban.manage.api.service.StaffApiService;
import com.gic.haoban.manage.service.entity.TabHaobanDepartment;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import com.gic.haoban.manage.service.service.DepartmentService;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.service.StaffService;
import com.gic.haoban.manage.service.service.SyncTaskService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Created 2020/4/13.
*
* @author hua
*/
@Service
public class ClerkSyncOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(ClerkSyncOperation.class);
@Autowired
private DepartmentService departmentService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private PreDealService preDealService;
@Autowired
private DepartmentApiService departmentApiService;
@Autowired
private SyncTaskService syncTaskService;
@Autowired
private StoreService storeService;
@Autowired
private ClerkService clerkService;
@Autowired
private StaffApiService staffApiService;
@Autowired
private DealSyncOperationApiService dealSyncOperationApiService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
logger.info("成员处理:{}", JSONObject.toJSONString(dealParamMqDTO));
ClerkDTO clerkDTO = clerkService.getClerkByClerkId(dealParamMqDTO.getData());
boolean dealFlag = true;
if (clerkDTO == null) {
logger.info("成员不存在:t:{},d:{}", dealParamMqDTO.getTaskId(), dealParamMqDTO.getData());
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "成员不存在");
return;
}
//处理clerk
try {
GicClerkDTO gicClerkDTO = new GicClerkDTO();
gicClerkDTO.setNationcode(clerkDTO.getNationcode());
gicClerkDTO.setClerkCode(clerkDTO.getClerkCode());
gicClerkDTO.setPostionName(clerkDTO.getPositionName());
gicClerkDTO.setHeadImgUrl(clerkDTO.getHeadImgUrl());
gicClerkDTO.setPhoneNumber(clerkDTO.getPhoneNumber());
gicClerkDTO.setStatus(clerkDTO.getStatus());
gicClerkDTO.setClerkGender(Integer.valueOf(clerkDTO.getClerkGender()));
gicClerkDTO.setClerkName(clerkDTO.getClerkName());
gicClerkDTO.setStoreId(clerkDTO.getStoreId());
gicClerkDTO.setEnterpriseId(clerkDTO.getEnterpriseId());
staffApiService.addGicClerk(gicClerkDTO);
} catch (Exception e) {
e.printStackTrace();
logger.info("同步失败:", JSONObject.toJSONString(dataPre));
dealFlag = false;
} finally {
if (!dealFlag) {
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "成员处理异常");
} else {
dealSuccess(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), dataPre.getWxEnterpriseId());
}
}
}
@Override
public void dealException(String taskId, String dataId, String enterpriseId, String reason) {
logger.info("成员处理失败:t:{},d:{}", taskId, dataId);
boolean b = preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.exception.getVal());
if (!b) {
logger.info("成员处理异常:t:{}, d:{}", taskId, dataId);
return;
}
checkDepartmentTask(taskId);
}
@Override
public void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId) {
logger.info("成员处理成功:t:{},d:{}", taskId, dataId);
boolean b = preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.computed.getVal());
if (!b) {
logger.info("成功修改错误!{}", dataId);
return;
}
checkDepartmentTask(taskId);
}
@Override
public void checkDepartmentTask(String taskId) {
boolean b = preDealService.checkTask(taskId, PreDealTypeEnum.clerk.getVal());
if (!b) {
return;
}
logger.info("店员同步成功:{}", taskId);
String key = "haoban_sync_clerk_task_" + taskId;
RedisUtil.lock(key, 3L);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
//同步成功 进入门店处理
if (syncTask.getStatusFlag().equals(SyncTaskStatusEnum.clerk_sync.getVal())) {
int errCount = preDealService.countByTaskId(taskId, -1, PreDealStatusEnum.exception.getVal());
if (errCount > 0) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.exception_compute.getVal());
} else {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.compute.getVal());
dealSyncOperationApiService.unlockTask(taskId);
}
}
RedisUtil.unlock(key);
}
}
package com.gic.haoban.manage.service.task;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.dto.StoreGroupDTO;
import com.gic.enterprise.api.service.StoreGroupService;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.base.api.common.Constant;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.api.dto.DepartmentDTO;
import com.gic.haoban.manage.api.enums.PreDealStatusEnum;
import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import com.gic.haoban.manage.api.enums.SyncTaskStatusEnum;
import com.gic.haoban.manage.api.service.DepartmentApiService;
import com.gic.haoban.manage.service.entity.TabHaobanDepartment;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import com.gic.haoban.manage.service.service.DepartmentService;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.service.SyncTaskService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Created 2020/4/13.
*
* @author hua
*/
@Service
public class GroupSyncOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(GroupSyncOperation.class);
@Autowired
private DepartmentService departmentService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private PreDealService preDealService;
@Autowired
private DepartmentApiService departmentApiService;
@Autowired
private SyncTaskService syncTaskService;
@Autowired
private StoreService storeService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
logger.info("处理单条部门分组:{}", JSONObject.toJSONString(dealParamMqDTO));
DepartmentDTO departmentDTO = departmentApiService.selectByRelatedId(dataPre.getDataId());
if (departmentDTO != null) {
logger.info("已经同步过了:{}", dataPre.getDataId());
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "该部门不存在");
return;
}
TabHaobanDepartment pParentDepartment = departmentService.selectByRelatedId(dataPre.getpDataId());
if (null == pParentDepartment) {
pParentDepartment = departmentService.selectById(dataPre.getpDataId());
}
if (null == pParentDepartment) {
logger.info("不存在该父部门:c:{},p:{}", dataPre.getDataId(), dataPre.getpDataId());
return;
}
StoreGroupDTO groupDTO = storeGroupService.getStoreGroupById(dealParamMqDTO.getData());
if (null == groupDTO) {
logger.info("该部门不存在");
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "该部门不存在");
return;
}
DepartmentDTO department = new DepartmentDTO();
department.setParentDepartmentId(pParentDepartment.getDepartmentId());
department.setWxEnterpriseId(pParentDepartment.getWxEnterpriseId());
department.setDepartmentName(groupDTO.getStoreGroupName());
department.setChainId(pParentDepartment.getChainId() + Constant.ID_SEPARATOR + dealParamMqDTO.getData());
department.setChainName(pParentDepartment.getChainName() + Constant.NAME_SEPARATOR + department.getDepartmentName());
department.setIsStore(0);
department.setLevel(pParentDepartment.getLevel() + 1);
department.setRelatedId(dealParamMqDTO.getData());
department.setSort(groupDTO.getStoreGroupSort());
//状态 处理状态
boolean resultFlag = true;
try {
ServiceResponse add = departmentApiService.add(department);
if (add.getCode() != 1) {
resultFlag = false;
logger.info("处理失败");
return;
}
} catch (Exception e) {
resultFlag = false;
e.printStackTrace();
logger.info("处理异常");
} finally {
if (!resultFlag) {
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "处理异常或失败");
} else {
dealSuccess(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), dataPre.getWxEnterpriseId());
}
}
}
@Override
public void dealException(String taskId, String dataId, String enterpriseId, String reason) {
List<String> ids = storeGroupService.getStoreGroupIdsByParentId(enterpriseId, dataId);
if (CollectionUtils.isEmpty(ids)) {
logger.info("下面层级不存在");
//todo 是否需要加锁判断
return;
}
//todo 需要优化 测试
for (String id : ids) {
preDealService.updateStatusByDataId(taskId, id, PreDealStatusEnum.exception.getVal());
}
checkDepartmentTask(taskId);
}
@Override
public void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId) {
boolean b = preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.computed.getVal());
if (!b) {
logger.info("成功修改错误!{}", dataId);
return;
}
List<StoreDTO> storeDTOS = storeService.listStoreByStoreGroupId(dataId);
//预处理门店 写入预处理表
if (CollectionUtils.isNotEmpty(storeDTOS)) {
List<TabHaobanPreDealLog> preDealLogList = storeDTOS.stream().map(storeDTO -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(storeDTO.getStoreId());
dealLog.setpDataId(dataId);
dealLog.setDataType(PreDealTypeEnum.store.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(taskId);
dealLog.setEnterpriseId(storeDTO.getEnterpriseId());
dealLog.setWxEnterpriseId(wxEnterpriseId);
dealLog.setEnterpriseId(enterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(preDealLogList);
}
List<TabHaobanPreDealLog> list = preDealService.listByPDataId(taskId, dataId, PreDealStatusEnum.pre.getVal());
if (CollectionUtils.isNotEmpty(list)) {
Set<String> mid = list.stream().map(tab -> tab.getDataId()).collect(Collectors.toSet());
dealDepartmentToMq(taskId, mid, SyncTaskStatusEnum.group_sync);
} else {
checkDepartmentTask(taskId);
}
}
@Override
public void checkDepartmentTask(String taskId) {
boolean b = preDealService.checkTask(taskId, PreDealTypeEnum.group.getVal());
if (!b) {
return;
}
logger.info("部门继续成功,开始门店同步:{}", taskId);
String key = "haoban_sync_department_task_" + taskId;
RedisUtil.lock(key, 3L);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
//同步成功 进入门店处理
if (syncTask.getStatusFlag().equals(SyncTaskStatusEnum.group_sync.getVal())) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.store_sync.getVal());
List<TabHaobanPreDealLog> dealLogs = preDealService.listByTaskId(taskId, PreDealTypeEnum.store.getVal(), PreDealStatusEnum.pre.getVal());
if (CollectionUtils.isEmpty(dealLogs)) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.compute.getVal());
} else {
logger.info("处理门店开始");
Set<String> dataIds = dealLogs.stream().map(TabHaobanPreDealLog::getDataId).collect(Collectors.toSet());
dealDepartmentToMq(taskId, dataIds, SyncTaskStatusEnum.store_sync);
}
}
RedisUtil.unlock(key);
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private void dealDepartmentToMq(String taskId, Set<String> dealList, SyncTaskStatusEnum syncTaskStatusEnum) {
//预处理分组任务
syncTaskService.updateTaskStatus(taskId, syncTaskStatusEnum.getVal());
dealList.forEach(relationId -> {
DealParamMqDTO dealParamMqDTO = new DealParamMqDTO();
dealParamMqDTO.setTaskId(taskId);
dealParamMqDTO.setData(relationId);
dealParamMqDTO.setType(syncTaskStatusEnum.getVal());
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try {
clientInstance.sendMessage("departmentSyncDealMq", JSONObject.toJSONString(dealParamMqDTO));
} catch (Exception e) {
logger.info("发送失败:{},{}", taskId, relationId);
e.printStackTrace();
}
});
}
}
package com.gic.haoban.manage.service.task;
import com.alibaba.fastjson.JSONObject;
import com.gic.clerk.api.dto.ClerkListDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.enterprise.api.dto.StoreDTO;
import com.gic.enterprise.api.dto.StoreGroupDTO;
import com.gic.enterprise.api.service.StoreGroupService;
import com.gic.enterprise.api.service.StoreService;
import com.gic.haoban.base.api.common.Constant;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.manage.api.dto.DealParamMqDTO;
import com.gic.haoban.manage.api.dto.DepartmentDTO;
import com.gic.haoban.manage.api.enums.PreDealStatusEnum;
import com.gic.haoban.manage.api.enums.PreDealTypeEnum;
import com.gic.haoban.manage.api.enums.SyncTaskStatusEnum;
import com.gic.haoban.manage.api.service.DepartmentApiService;
import com.gic.haoban.manage.service.entity.TabHaobanDepartment;
import com.gic.haoban.manage.service.entity.TabHaobanPreDealLog;
import com.gic.haoban.manage.service.entity.TabHaobanSyncTask;
import com.gic.haoban.manage.service.service.DepartmentService;
import com.gic.haoban.manage.service.service.PreDealService;
import com.gic.haoban.manage.service.service.SyncTaskService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Created 2020/4/13.
*
* @author hua
*/
@Service
public class StoreSyncOperation implements BaseSyncOperation {
private static final Logger logger = LoggerFactory.getLogger(StoreSyncOperation.class);
@Autowired
private DepartmentService departmentService;
@Autowired
private StoreGroupService storeGroupService;
@Autowired
private PreDealService preDealService;
@Autowired
private DepartmentApiService departmentApiService;
@Autowired
private SyncTaskService syncTaskService;
@Autowired
private StoreService storeService;
@Autowired
private ClerkService clerkService;
@Override
public void dealSingleByMq(DealParamMqDTO dealParamMqDTO, TabHaobanPreDealLog dataPre) {
logger.info("处理单条门店:{}", JSONObject.toJSONString(dealParamMqDTO));
DepartmentDTO departmentDTO = departmentApiService.selectByRelatedId(dataPre.getDataId());
if (departmentDTO != null) {
logger.info("已经同步过了:{}", dataPre.getDataId());
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "该部门不存在");
return;
}
TabHaobanDepartment pParentDepartment = departmentService.selectByRelatedId(dataPre.getpDataId());
if (null == pParentDepartment) {
logger.info("不存在该父部门:c:{},p:{}", dataPre.getDataId(), dataPre.getpDataId());
return;
}
StoreDTO storeDTO = storeService.getStore(dealParamMqDTO.getData());
if (null == storeDTO) {
logger.info("该部门不存在");
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "该部门不存在");
return;
}
DepartmentDTO department = new DepartmentDTO();
department.setParentDepartmentId(pParentDepartment.getDepartmentId());
department.setWxEnterpriseId(pParentDepartment.getWxEnterpriseId());
department.setDepartmentName(storeDTO.getStoreName());
department.setChainId(pParentDepartment.getChainId() + Constant.ID_SEPARATOR + dealParamMqDTO.getData());
department.setChainName(pParentDepartment.getChainName() + Constant.NAME_SEPARATOR + department.getDepartmentName());
department.setIsStore(1);
department.setLevel(pParentDepartment.getLevel() + 1);
department.setRelatedId(dealParamMqDTO.getData());
//状态 处理状态
boolean resultFlag = true;
try {
ServiceResponse add = departmentApiService.add(department);
if (add.getCode() != 1) {
resultFlag = false;
logger.info("处理失败");
return;
}
} catch (Exception e) {
resultFlag = false;
e.printStackTrace();
logger.info("处理异常");
} finally {
if (!resultFlag) {
dealException(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), "处理异常或失败");
} else {
dealSuccess(dealParamMqDTO.getTaskId(), dealParamMqDTO.getData(), dataPre.getEnterpriseId(), dataPre.getWxEnterpriseId());
}
}
}
@Override
public void dealException(String taskId, String dataId, String enterpriseId, String reason) {
//处理异常
preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.exception.getVal());
checkDepartmentTask(taskId);
}
@Override
public void dealSuccess(String taskId, String dataId, String enterpriseId, String wxEnterpriseId) {
boolean b = preDealService.updateStatusByDataId(taskId, dataId, PreDealStatusEnum.computed.getVal());
if (!b) {
logger.info("成功修改错误!{}", dataId);
return;
}
List<ClerkListDTO> clerks = clerkService.getClerkByStoreId(enterpriseId, dataId);
logger.info("导入clerk:{},{},{}", enterpriseId, dataId, JSONObject.toJSONString(clerks));
//预处理门店 写入预处理表
if (CollectionUtils.isNotEmpty(clerks)) {
List<TabHaobanPreDealLog> preDealLogList = clerks.stream().map(clerkMid -> {
TabHaobanPreDealLog dealLog = new TabHaobanPreDealLog();
dealLog.setDataId(clerkMid.getClerkId());
dealLog.setpDataId(dataId);
dealLog.setDataType(PreDealTypeEnum.clerk.getVal());
dealLog.setStatusFlag(0);
dealLog.setTaskId(taskId);
dealLog.setEnterpriseId(clerkMid.getEnterpriseId());
dealLog.setWxEnterpriseId(wxEnterpriseId);
return dealLog;
}).collect(Collectors.toList());
preDealService.insert(preDealLogList);
}
checkDepartmentTask(taskId);
}
@Override
public void checkDepartmentTask(String taskId) {
boolean b = preDealService.checkTask(taskId, PreDealTypeEnum.store.getVal());
if (!b) {
return;
}
logger.info("门店继续成功,成员同步:{}", taskId);
String key = "haoban_sync_store_task_" + taskId;
RedisUtil.lock(key, 3L);
TabHaobanSyncTask syncTask = syncTaskService.getSyncTask(taskId);
//同步成功 进入门店处理
if (syncTask.getStatusFlag().equals(SyncTaskStatusEnum.store_sync.getVal())) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.clerk_sync.getVal());
//是否有成员 需要处理
List<TabHaobanPreDealLog> dealLogs = preDealService.listByTaskId(taskId, PreDealTypeEnum.clerk.getVal(), PreDealStatusEnum.pre.getVal());
if (CollectionUtils.isEmpty(dealLogs)) {
syncTaskService.updateTaskStatus(taskId, SyncTaskStatusEnum.compute.getVal());
} else {
logger.info("处理成员开始");
Set<String> dataIds = dealLogs.stream().map(TabHaobanPreDealLog::getDataId).collect(Collectors.toSet());
dealDepartmentToMq(taskId, dataIds, SyncTaskStatusEnum.clerk_sync);
}
}
RedisUtil.unlock(key);
}
/**
* 放入mq处理部门数据
*
* @param taskId
* @param dealList
*/
private void dealDepartmentToMq(String taskId, Set<String> dealList, SyncTaskStatusEnum syncTaskStatusEnum) {
//预处理分组任务
syncTaskService.updateTaskStatus(taskId, syncTaskStatusEnum.getVal());
dealList.forEach(relationId -> {
DealParamMqDTO dealParamMqDTO = new DealParamMqDTO();
dealParamMqDTO.setTaskId(taskId);
dealParamMqDTO.setData(relationId);
dealParamMqDTO.setType(syncTaskStatusEnum.getVal());
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try {
clientInstance.sendMessage("departmentSyncDealMq", JSONObject.toJSONString(dealParamMqDTO));
} catch (Exception e) {
logger.info("发送失败:{},{}", taskId, relationId);
e.printStackTrace();
}
});
}
}
......@@ -37,6 +37,9 @@
<dubbo:service interface="com.gic.haoban.manage.api.service.DictApiService" ref="dictApiServiceImpl" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.AuditApiService" ref="auditApiServiceImpl" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.DealSyncOperationApiService"
ref="dealSyncOperationApiServiceImpl" timeout="10000"/>
<dubbo:reference interface="com.gic.enterprise.api.service.DepartmentService" id="gicDepartmentService"/>
<dubbo:reference interface="com.gic.wechat.api.service.qywx.QywxDepartmentApiService" id="qywxDepartmentApiService"/>
......
<?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="com.gic.haoban.manage.service.dao.mapper.PreDealLogMapper">
<resultMap id="BaseResultMap" type="com.gic.haoban.manage.service.entity.TabHaobanPreDealLog">
<id column="id" jdbcType="INTEGER" property="id"/>
<result column="wx_enterprise_id" jdbcType="VARCHAR" property="wxEnterpriseId"/>
<result column="enterprise_id" jdbcType="VARCHAR" property="enterpriseId"/>
<result column="data_id" jdbcType="VARCHAR" property="dataId"/>
<result column="p_data_id" jdbcType="VARCHAR" property="pDataId"/>
<result column="task_id" jdbcType="VARCHAR" property="taskId"/>
<result column="data_type" jdbcType="INTEGER" property="dataType"/>
<result column="status_flag" jdbcType="INTEGER" property="statusFlag"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
</resultMap>
<sql id="Base_Column_List">
id, wx_enterprise_id,enterprise_id, data_id, p_data_id, task_id, data_type, status_flag, create_time,
update_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_pre_deal_log
where id = #{id,jdbcType=INTEGER}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
delete from tab_haoban_pre_deal_log
where id = #{id,jdbcType=INTEGER}
</delete>
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.TabHaobanPreDealLog">
insert into tab_haoban_pre_deal_log ( wx_enterprise_id,enterprise_id, data_id,
p_data_id, task_id, data_type,
status_flag, create_time, update_time
)
values (#{wxEnterpriseId,jdbcType=VARCHAR},#{enterpriseId,jdbcType=VARCHAR}, #{dataId,jdbcType=VARCHAR},
#{pDataId,jdbcType=VARCHAR}, #{taskId,jdbcType=VARCHAR}, #{dataType,jdbcType=INTEGER},
#{statusFlag,jdbcType=INTEGER}, now(), now()
)
</insert>
<insert id="insertSelective" parameterType="com.gic.haoban.manage.service.entity.TabHaobanPreDealLog">
insert into tab_haoban_pre_deal_log
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="wxEnterpriseId != null">
wx_enterprise_id,
</if>
<if test="enterpriseId != null">
enterprise_id,
</if>
<if test="dataId != null">
data_id,
</if>
<if test="pDataId != null">
p_data_id,
</if>
<if test="taskId != null">
task_id,
</if>
<if test="dataType != null">
data_type,
</if>
<if test="statusFlag != null">
status_flag,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="wxEnterpriseId != null">
#{wxEnterpriseId,jdbcType=VARCHAR},
</if>
<if test="enterpriseId != null">
#{enterpriseId,jdbcType=VARCHAR},
</if>
<if test="dataId != null">
#{dataId,jdbcType=VARCHAR},
</if>
<if test="pDataId != null">
#{pDataId,jdbcType=VARCHAR},
</if>
<if test="taskId != null">
#{taskId,jdbcType=VARCHAR},
</if>
<if test="dataType != null">
#{dataType,jdbcType=INTEGER},
</if>
<if test="statusFlag != null">
#{statusFlag,jdbcType=INTEGER},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.haoban.manage.service.entity.TabHaobanPreDealLog">
update tab_haoban_pre_deal_log
<set>
<if test="wxEnterpriseId != null">
wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR},
</if>
<if test="enterpriseId != null">
enterprise_id = #{enterpriseId,jdbcType=VARCHAR},
</if>
<if test="dataId != null">
data_id = #{dataId,jdbcType=VARCHAR},
</if>
<if test="pDataId != null">
p_data_id = #{pDataId,jdbcType=VARCHAR},
</if>
<if test="taskId != null">
task_id = #{taskId,jdbcType=VARCHAR},
</if>
<if test="dataType != null">
data_type = #{dataType,jdbcType=INTEGER},
</if>
<if test="statusFlag != null">
status_flag = #{statusFlag,jdbcType=INTEGER},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update id="updateByPrimaryKey" parameterType="com.gic.haoban.manage.service.entity.TabHaobanPreDealLog">
update tab_haoban_pre_deal_log
set wx_enterprise_id = #{wxEnterpriseId,jdbcType=VARCHAR},
data_id = #{dataId,jdbcType=VARCHAR},
p_data_id = #{pDataId,jdbcType=VARCHAR},
task_id = #{taskId,jdbcType=VARCHAR},
data_type = #{dataType,jdbcType=INTEGER},
status_flag = #{statusFlag,jdbcType=INTEGER},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
<select id="getByDataId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_pre_deal_log
where task_id = #{taskId} and data_id=#{dataId}
<if test="status!=-1">
and status_flag=#{status}
</if>
</select>
<select id="listByPDataId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_pre_deal_log
where task_id = #{taskId} and p_data_id=#{dataId} and data_type=#{dataType}
<if test="status!=-1">
and status_flag=#{status}
</if>
</select>
<update id="updateStatusByDataId">
update tab_haoban_pre_deal_log
<set>
status_flag = #{status,jdbcType=INTEGER},
update_time = now()
</set>
where data_id = #{dataId,jdbcType=INTEGER} and task_id=#{taskId}
</update>
<select id="checkTask" resultType="Integer">
select
count(*)
from tab_haoban_pre_deal_log
where task_id = #{taskId} and data_type=#{dataType}
and status_flag=#{status}
</select>
<select id="listByTaskId" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_pre_deal_log
where task_id = #{taskId} and data_type=#{dataType}
and status_flag=#{status}
</select>
<select id="countByTaskId" resultType="Integer">
select
COUNT(*)
from tab_haoban_pre_deal_log
where task_id = #{taskId}
<if test="dataType!=-1">
and data_type=#{dataType}
</if>
<if test="status!=-1">
and status_flag=#{status}
</if>
</select>
<select id="listRebuildDepartByTaskId" resultMap="BaseResultMap">
SELECT
<include refid="Base_Column_List"/>
FROM
tab_haoban_pre_deal_log a
WHERE
a.task_id = #{taskId}
AND data_type = 0
AND status_flag = 3
AND EXISTS (
SELECT
1
FROM
tab_haoban_pre_deal_log b
WHERE
b.task_id = #{taskId}
AND data_type = 0
AND a.p_data_id = b.data_id
AND b.status_flag = 2
)
</select>
</mapper>
\ No newline at end of file
<?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="com.gic.haoban.manage.service.dao.mapper.SyncTaskMapper">
<resultMap id="BaseResultMap" type="com.gic.haoban.manage.service.entity.TabHaobanSyncTask">
<id column="task_id" jdbcType="VARCHAR" property="taskId"/>
<result column="task_name" jdbcType="VARCHAR" property="taskName"/>
<result column="add_user" jdbcType="VARCHAR" property="addUser"/>
<result column="task_desc" jdbcType="VARCHAR" property="taskDesc"/>
<result column="status_flag" jdbcType="INTEGER" property="statusFlag"/>
<result column="create_time" jdbcType="TIMESTAMP" property="createTime"/>
<result column="update_time" jdbcType="TIMESTAMP" property="updateTime"/>
</resultMap>
<sql id="Base_Column_List">
task_id, task_name, add_user, task_desc, status_flag, create_time, update_time
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from tab_haoban_sync_task
where task_id = #{taskId,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
delete from tab_haoban_sync_task
where task_id = #{taskId,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="com.gic.haoban.manage.service.entity.TabHaobanSyncTask">
insert into tab_haoban_sync_task (task_id,wx_enterprise_id, task_name, add_user,
task_desc, status_flag, create_time,
update_time)
values (#{taskId,jdbcType=VARCHAR},#{wxEnterpriseId}, #{taskName,jdbcType=VARCHAR}, #{addUser,jdbcType=VARCHAR},
#{taskDesc,jdbcType=VARCHAR}, #{statusFlag,jdbcType=INTEGER}, now(),now())
</insert>
<insert id="insertSelective" parameterType="com.gic.haoban.manage.service.entity.TabHaobanSyncTask">
insert into tab_haoban_sync_task
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="taskId != null">
task_id,
</if>
<if test="taskName != null">
task_name,
</if>
<if test="addUser != null">
add_user,
</if>
<if test="taskDesc != null">
task_desc,
</if>
<if test="statusFlag != null">
status_flag,
</if>
<if test="createTime != null">
create_time,
</if>
<if test="updateTime != null">
update_time,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="taskId != null">
#{taskId,jdbcType=VARCHAR},
</if>
<if test="taskName != null">
#{taskName,jdbcType=VARCHAR},
</if>
<if test="addUser != null">
#{addUser,jdbcType=VARCHAR},
</if>
<if test="taskDesc != null">
#{taskDesc,jdbcType=VARCHAR},
</if>
<if test="statusFlag != null">
#{statusFlag,jdbcType=INTEGER},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.gic.haoban.manage.service.entity.TabHaobanSyncTask">
update tab_haoban_sync_task
<set>
<if test="taskName != null">
task_name = #{taskName,jdbcType=VARCHAR},
</if>
<if test="addUser != null">
add_user = #{addUser,jdbcType=VARCHAR},
</if>
<if test="taskDesc != null">
task_desc = #{taskDesc,jdbcType=VARCHAR},
</if>
<if test="statusFlag != null">
status_flag = #{statusFlag,jdbcType=INTEGER},
</if>
<if test="createTime != null">
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateTime != null">
update_time = #{updateTime,jdbcType=TIMESTAMP},
</if>
</set>
where task_id = #{taskId,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.gic.haoban.manage.service.entity.TabHaobanSyncTask">
update tab_haoban_sync_task
set task_name = #{taskName,jdbcType=VARCHAR},
add_user = #{addUser,jdbcType=VARCHAR},
task_desc = #{taskDesc,jdbcType=VARCHAR},
status_flag = #{statusFlag,jdbcType=INTEGER},
create_time = #{createTime,jdbcType=TIMESTAMP},
update_time = #{updateTime,jdbcType=TIMESTAMP}
where task_id = #{taskId,jdbcType=VARCHAR}
</update>
</mapper>
\ No newline at end of file
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.JSONResponse;
import com.gic.haoban.manage.api.dto.SyncSingleDealDTO;
import com.gic.haoban.manage.api.service.DealSyncOperationApiService;
import com.gic.haoban.manage.api.service.DepartmentApiService;
import com.gic.haoban.manage.api.service.WxEnterpriseRelatedApiService;
import com.gic.wechat.api.dto.qywx.DepartmentDTO;
import com.gic.wechat.api.dto.qywx.QywxXcxSendMessageDTO;
import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxDepartmentApiService;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class DealSyncTest {
@Autowired
private DealSyncOperationApiService dealSyncOperationApiService;
@Test
public void test() {
List<SyncSingleDealDTO> add = new ArrayList<>();
List<SyncSingleDealDTO> edit = new ArrayList<>();
{
SyncSingleDealDTO dealDTO = new SyncSingleDealDTO();
dealDTO.setDepartmentId("ff80808166c3a1050166c43175d9000e");
dealDTO.setParentDepartmentId("a101b3a51cd549e79f3daec1aa628301");
dealDTO.setDepartmentName("西溪花园");
dealDTO.setRelatedId("ff80808166c3a1050166c43175d9000e");
dealDTO.setStoreFlag(0);
dealDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
add.add(dealDTO);
}
{
SyncSingleDealDTO dealDTO = new SyncSingleDealDTO();
dealDTO.setDepartmentId("100333808083");
dealDTO.setParentDepartmentId("a101b3a51cd549e79f3daec1aa628301");
dealDTO.setDepartmentName("测试门店1003338");
dealDTO.setRelatedId("100333808083");
dealDTO.setStoreFlag(1);
dealDTO.setEnterpriseId("ff8080815dacd3a2015dacd3ef5c0000");
add.add(dealDTO);
}
dealSyncOperationApiService.dealDepartment("111", "ca66a01b79474c40b3e7c7f93daf1a3b", add, edit);
}
}
//import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
//import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.JSONResponse;
import com.gic.haoban.manage.api.service.WxEnterpriseRelatedApiService;
import com.gic.wechat.api.dto.qywx.DepartmentDTO;
import com.gic.wechat.api.dto.qywx.QywxXcxSendMessageDTO;
import com.gic.wechat.api.dto.qywx.UserDTO;
import com.gic.wechat.api.service.qywx.QywxDepartmentApiService;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import org.junit.Test;
import org.junit.runner.RunWith;
//import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
//import com.gic.haoban.manage.api.service.WxEnterpriseRelatedApiService;
import com.gic.redis.data.util.RedisUtil;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
public class ServiceTest {
// @Autowired
// private WxEnterpriseRelatedApiService wxEnterpriseRelatedApiService;
@Autowired
private WxEnterpriseRelatedApiService wxEnterpriseRelatedApiService;
// @Autowired
// private QywxUserApiService qywxUserApiService;
@Autowired
private QywxUserApiService qywxUserApiService;
@Autowired
private QywxDepartmentApiService qywxDepartmentApiService;
@Autowired
private QywxSuiteApiService qywxSuiteApiService;
@Test
public void test() {
//wxEnterpriseRelatedApiService.listEnterpriseByWxEnterpriseId("073e89a37eb14acabf258e59a57359b6");
RedisUtil.delCache("haoban-sync-department-ca66a01b79474c40b3e7c7f93daf1a3b");
}
// @Test
// public void test1() {
// String corpSelfExternalUseridInfo = qywxUserApiService.getCorpSelfExternalUseridInfo("ww50d418adce14b4a9"
// , "1azg6LG5Vj_YKFO-X27to4S4x_y-f6APR0fwE9YnQd8", "wm-0J8CQAAbGIhtnLd51B97OO_0gf3zw");
// System.out.println(corpSelfExternalUseridInfo);
@Test
public void test1() {
String res = qywxUserApiService.leaveClerkExternal("ww9ede832a84b7ae5f"
, "01YQ-pcdYzF3K0So8uCFfkB5i8D5EBW7KcVB4qA8Ktk", 0, 1000);
JSONArray jsonArray = JSONArray.parseArray(res);
jsonArray.forEach(o -> {
JSONObject mid = (JSONObject) o;
qywxUserApiService.leaveClerkReTransfer("ww9ede832a84b7ae5f"
, "01YQ-pcdYzF3K0So8uCFfkB5i8D5EBW7KcVB4qA8Ktk", mid.getString("handover_userid")
, mid.getString("handover_userid"), mid.getString("external_userid"));
});
System.out.println(res);
}
@Test
public void test2() {
UserDTO userDTO = new UserDTO();
userDTO.setUserid("niweizhong");
userDTO.setName("空闻大师");
userDTO.setDepartment(new Integer[]{4});
userDTO.setMobile("17605628855");
userDTO.setCorpid("ww9ede832a84b7ae5f");
JSONResponse workWxUser = qywxUserApiService.createWorkWxUser(userDTO, "ww9ede832a84b7ae5f", "ww7d6566614055cf27");
System.out.println(JSONObject.toJSONString(workWxUser));
}
@Test
public void list() {
List<DepartmentDTO> list = qywxDepartmentApiService.listSelfDepartment("ww9ede832a84b7ae5f"
, "3aOw7jbcHlHkDmOi5TuG42Ta8NqskOhZxy5urrmaGl8", 1);
Iterator<DepartmentDTO> iterator = list.iterator();
// while (iterator.hasNext()) {
// DepartmentDTO next = iterator.next();
// if(!next.getParentid().equals("1")) {
// iterator.remove();
// }
// }
System.out.println(JSONObject.toJSONString(list));
}
@Test
public void addDepart() {
DepartmentDTO dto = new DepartmentDTO();
// dto.set
// JSONResponse department = qywxDepartmentApiService.createDepartment("ww9ede832a84b7ae5f"
// , "ww7d6566614055cf27", null);
// List<DepartmentDTO> list = (List<DepartmentDTO>) department;
// System.out.println(JSONObject.toJSONString(list));
}
@Test
public void getUser() {
DepartmentDTO dto = new DepartmentDTO();
// dto.set
UserDTO phonenumber = qywxUserApiService.getWxUserByPhonenumber("ww9ede832a84b7ae5f"
, "ww7d6566614055cf27", "13735457631");
// String phonenumber = phonenumber;
// UserDTO phonenumber = (UserDTO) useridBymobile;
System.out.println(JSONObject.toJSONString(phonenumber));
}
@Test
public void createSelfUser() {
UserDTO userDTO = new UserDTO();
userDTO.setUserid("niweizhong2");
userDTO.setName("空闻大师2");
userDTO.setDepartment(new Integer[]{5072});
userDTO.setMobile("17605628851");
userDTO.setCorpid("ww9ede832a84b7ae5f");
JSONResponse workWxUser = qywxUserApiService.createSelfWorkWxUser(userDTO, "ww9ede832a84b7ae5f",
"3aOw7jbcHlHkDmOi5TuG42Ta8NqskOhZxy5urrmaGl8");
System.out.println(JSONObject.toJSONString(workWxUser));
}
@Test
public void sendMessage() {
QywxXcxSendMessageDTO messageDTO = new QywxXcxSendMessageDTO();
messageDTO.setAppid("wx6054e7be35015afc");
ArrayList<String> userIDs = new ArrayList<>();
userIDs.add("9ae4c4f1277340a186b16a17d937c72c");
messageDTO.setUserIds(userIDs);
messageDTO.setTitle("我的测试test");
messageDTO.setDescription("我的测试test11111");
boolean ret = qywxSuiteApiService.sendMessage("ww9ede832a84b7ae5f",
"ww2c34dc56739bb105", messageDTO);
System.out.println(JSONObject.toJSONString(ret));
}
}
......@@ -186,12 +186,13 @@ public class DepartmentContoller extends WebBaseController{
department.setChainId(dto.getChainId() + Constant.ID_SEPARATOR + dto.getDepartmentId());
department.setIsStore(0);
department.setLevel(dto.getLevel() + 1);
ServiceResponse hr = departmentApiService.add(department);
ServiceResponse<DepartmentDTO> hr = departmentApiService.add(department);
if(hr.getCode() != 1){
return resultResponse(HaoBanErrCode.ERR_DEFINE, hr.getMessage(), null, hr.getMessage());
}
return resultResponse(HaoBanErrCode.ERR_1,hr.getResult());
DepartmentDTO departmentDTO = hr.getResult();
departmentDTO.setHasSonNode(false);
return resultResponse(HaoBanErrCode.ERR_1, departmentDTO);
}
......
package com.gic.haoban.manage.web.controller;
import com.gic.haoban.common.utils.HaobanResponse;
import com.gic.haoban.manage.api.dto.SyncCheckDTO;
import com.gic.haoban.manage.api.service.DealSyncOperationApiService;
import com.gic.haoban.manage.web.auth.AuthRequestUtil;
import com.gic.haoban.manage.web.errCode.HaoBanErrCode;
import com.gic.haoban.manage.web.qo.SyncDealQO;
import com.gic.haoban.manage.web.vo.LoginVO;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SyncDealContoller extends WebBaseController {
private static Logger logger = LoggerFactory.getLogger(SyncDealContoller.class);
@Autowired
private DealSyncOperationApiService dealSyncOperationApiService;
@RequestMapping("/test/department-sync")
@ResponseBody
public HaobanResponse departmentBatchSyncTest(@RequestBody SyncDealQO qo, String wxEid) {
String task = null;
if (StringUtils.isNotBlank(wxEid)) {
task = dealSyncOperationApiService.createTask(wxEid, "门店同步", "11111", "部门同步");
dealSyncOperationApiService.dealDepartment(task, wxEid, qo.getAddDepartment(), qo.getEditDepartment());
} else {
LoginVO login = (LoginVO) AuthRequestUtil.getSessionUser();
String wxEnterpriseId = login.getWxEnterpriseId();
String key = "haoban-sync-department-" + wxEnterpriseId;
if (RedisUtil.getCache(key) != null) {
return resultResponse(HaoBanErrCode.ERR_10011);
}
task = dealSyncOperationApiService.createTask(wxEnterpriseId, "门店同步", login.getStaffDTO().getStaffId(), "部门同步");
dealSyncOperationApiService.dealDepartment(task, login.getWxEnterpriseId(), qo.getAddDepartment(), qo.getEditDepartment());
}
return resultResponse(HaoBanErrCode.ERR_1, task);
}
@RequestMapping("/department-sync")
@ResponseBody
public HaobanResponse departmentBatchSync(@RequestBody SyncDealQO qo) {
String task = null;
LoginVO login = (LoginVO) AuthRequestUtil.getSessionUser();
String wxEnterpriseId = login.getWxEnterpriseId();
String taskLock = dealSyncOperationApiService.getTaskLock(wxEnterpriseId);
if (null != taskLock) {
return resultResponse(HaoBanErrCode.ERR_10011);
}
task = dealSyncOperationApiService.createTask(wxEnterpriseId, "门店同步", login.getStaffDTO().getStaffId(), "部门同步");
dealSyncOperationApiService.dealDepartment(task, login.getWxEnterpriseId(), qo.getAddDepartment(), qo.getEditDepartment());
return resultResponse(HaoBanErrCode.ERR_1, task);
}
/**
* 同步状态校验
*
* @param syncKey
* @return
*/
@RequestMapping("department-sync-check")
public HaobanResponse syncSuccess(String wxEnterpriseId) {
if (StringUtils.isBlank(wxEnterpriseId)) {
LoginVO login = (LoginVO) AuthRequestUtil.getSessionUser();
wxEnterpriseId = login.getWxEnterpriseId();
}
SyncCheckDTO taskCheck = dealSyncOperationApiService.getTaskCheck(wxEnterpriseId);
return resultResponse(HaoBanErrCode.ERR_1, taskCheck);
}
/**
* 同步状态校验
*
* @param syncKey
* @return
*/
@RequestMapping("/test/department-sync-check")
public HaobanResponse testSyncSuccess(String wxEnterpriseId) {
if (StringUtils.isBlank(wxEnterpriseId)) {
LoginVO login = (LoginVO) AuthRequestUtil.getSessionUser();
wxEnterpriseId = login.getWxEnterpriseId();
}
SyncCheckDTO taskCheck = dealSyncOperationApiService.getTaskCheck(wxEnterpriseId);
return resultResponse(HaoBanErrCode.ERR_1, taskCheck);
}
@RequestMapping("/re-sync")
@ResponseBody
public HaobanResponse clerkReSync(String taskId) {
if (StringUtils.isBlank(taskId)) {
LoginVO login = (LoginVO) AuthRequestUtil.getSessionUser();
String wxEnterpriseId = login.getWxEnterpriseId();
taskId = dealSyncOperationApiService.getTaskLock(wxEnterpriseId);
}
dealSyncOperationApiService.reDealDepartment(taskId, -1);
return resultResponse(HaoBanErrCode.ERR_1);
}
}
package com.gic.haoban.manage.web.qo;
import com.gic.haoban.manage.api.dto.SyncSingleDealDTO;
import java.io.Serializable;
import java.util.List;
public class SyncDealQO implements Serializable {
private List<SyncSingleDealDTO> editDepartment;
private List<SyncSingleDealDTO> addDepartment;
public List<SyncSingleDealDTO> getEditDepartment() {
return editDepartment;
}
public void setEditDepartment(List<SyncSingleDealDTO> editDepartment) {
this.editDepartment = editDepartment;
}
public List<SyncSingleDealDTO> getAddDepartment() {
return addDepartment;
}
public void setAddDepartment(List<SyncSingleDealDTO> addDepartment) {
this.addDepartment = addDepartment;
}
}
......@@ -52,4 +52,7 @@
<dubbo:reference interface="com.gic.wechat.token.api.service.QywxTokenManageService" id="qywxTokenManageService"/>
<dubbo:reference interface="com.gic.haoban.manage.api.service.DealSyncOperationApiService"
id="dealSyncOperationApiService"/>
</beans>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment